Linux

Postfix 僅作為特定網路的中繼

  • October 15, 2012

我有一個關於 postfix 的奇怪問題,它讓我有點難以接受,因為它似乎有 50% 的時間可以工作,但沒有進行任何更改。

我想要達到的目標:

我在幾個不同的外部網路上有許多虛擬伺服器,例如 1.2.3.4/24 10.20.30.40/24 11.22.33.44/24

我已經設置了 4 個帶有輪詢 dns 的 postfix 伺服器,它們都有相同的 main.cf 配置文件。

我希望只允許那些外部子網中的伺服器通過郵件伺服器進行中繼,不需要使用者名或密碼。

我做了一些閱讀,似乎 mynetworks 選項是要走的路,但它似乎只有 50% 的時間工作,即使我將其他 3 台伺服器排除在外,讓 1 台郵件伺服器執行 50%我收到中繼被拒絕錯誤的時間。

這是正在使用的配置:

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no

append_dot_mydomain = no

readme_directory = /usr/share/doc/postfix

smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

myhostname = relay.example.co.uk
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = relay.example.co.uk, localhost.example.co.uk, , localhost
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mynetworks = 1.2.3.4/24
mynetworks = 10.20.30.40/24
mynetworks = 11.22.33.44/24
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
html_directory = /usr/share/doc/postfix/html
smtpd_error_sleep_time = 2s
smtpd_hard_error_limit = 20
smtpd_recipient_restrictions = permit_mynetworks

我懷疑我的目的地可能在這裡發揮作用,但歡迎任何幫助?

根據 postconf(5) 手冊頁:

當多次定義同一個參數時,只記住最後一個實例。

這意味著您的mynetworks變數的定義應如下所示:

mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 1.2.3.4/24 10.20.30.40/24      11.22.33.44/24

或者

mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
1.2.3.4/24
10.20.30.40/24
11.22.33.44/24

或者

mynetworks = 127.0.0.0/8, [::ffff:127.0.0.0]/104, [::1]/128,
1.2.3.4/24,
10.20.30.40/24,
11.22.33.44/24,

引用自:https://serverfault.com/questions/438403