Linux
Postfix 僅作為特定網路的中繼
我有一個關於 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,