我最近遷移到一個新伺服器(運行 postfix 3.3.0)並注意到smtp_bind_address
中的設置大師.cf沒有效果。相關伺服器有 10 個 ipv4 位址,因此透過正確的位址路由外發郵件非常重要。這是我所擁有的片段(192.168.100.1 只是一個範例 - 實際 IP 是真正的 WAN 位址):
smtp inet n - y - - smtpd
-o smtp_bind_address=192.168.100.1
smtps inet n - y - - smtpd
-o smtp_bind_address=192.168.100.1
我還讓 amavis 和 postsrsd 與該郵件伺服器一起運行,因此郵件從一個服務傳遞到下一個服務,說實話,我對事件鏈有點困惑,但以前此配置運行良好。
我嘗試smtp_bind_address
搬到主文件它確實有效,但由於 amavis 和 postsrsd 都希望透過 127.0.0.1 傳遞郵件,因此出現了其他問題。
如何結合我的內容過濾器將外發郵件綁定到特定地址?
答案1
傳出 smtp/中繼連接由這些線路控制master.conf
smtp unix - - y - - smtp
relay unix - - y - - smtp
因此,您可以添加-o smtp_bind_address=192.168.100.1
到您需要的內容中。
另外,您可以在以下位置使用此組合main.conf
inet_interfaces = 127.0.0.1 192.168.100.1
smtp_bind_address = 192.168.100.1
這允許應用程式連接到 127.0.0.1,同時預設將傳出 smtp 綁定到特定位址。
不要忘記防火牆可能會覆蓋所有這些配置,例如這個簡單的規則:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
將把任何傳出連接的來源位址(從介面 eth0)轉換為該介面的主(預設)位址。從另一個角度來看,您可以使用防火牆設定smtp連線來源位址(無需設定postfix):
iptables -t nat -A POSTROUTING -o eth0 -p tcp --dport 25 -j SNAT --to-source 192.168.100.1
但這並不靈活,我只會將其作為最後的手段(例如,您沒有修改後綴設定的權限)。