postfix smtp_bind_address 指令不起作用

postfix smtp_bind_address 指令不起作用

我最近遷移到一個新伺服器(運行 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

但這並不靈活,我只會將其作為最後的手段(例如,您沒有修改後綴設定的權限)。

相關內容