Postfix

如何說服遠端 Postfix 允許從我的 ISP 分配的 IP 地址進行中繼?

  • October 16, 2022

場景:我正在本地網路上測試 SMTP 伺服器,我現在需要檢查它是否可以將電子郵件發送到網路。當然,問題是我通過我的 ISP 出去,而我的 ISP 分配的固定 IP 地址不在 DNS 上(我當然可以把它放在 DNS 上,但我無法設置反向查找,所以它不會有幫助)。

為了解決這個問題,我在遠端伺服器上設置了 Postfix,我試圖通過這個伺服器將我的傳出消息中繼到該伺服器上的本地收件人。這看起來應該很簡單,但我顯然遺漏了一些東西。這是一個新的 Postfix 3.6.4 設置,main.cf包含:

mynetworks = 127.0.0.0/8, 93.184.216.34/32
smtpd_helo_restrictions = permit_mynetworks, ...
smtpd_client_restrictions = permit_mynetworks, ...

93.184.216.34是我的 ISP 分配的地址,我的本地網路是dummy-domain.com. 當我嘗試向伺服器發送電子郵件時出現故障,伺服器日誌文件顯示:

Oct 16 13:24:42 titan postfix/smtpd[19103]: connect from my-isp[93.184.216.34]
Oct 16 13:24:42 titan postfix/smtpd[19103]: NOQUEUE: reject: RCPT from my-isp[93.184.216.34]: 450 4.1.8 <me@sub.dummy-domain.com>: Sender address rejected: Domain not found; from=<me@dummy-domain.com> to=<a-local-recipient-address> proto=ESMTP helo=<dummy-domain.com>
Oct 16 13:24:42 titan postfix/smtpd[19103]: lost connection after RCPT from my-isp[93.184.216.34]

postconf確認mynetworks,但它也這樣說:

compatibility_level = 0
smtpd_relay_restrictions = ${{$compatibility_level} <level {1} ? {} : {permit_mynetworks, permit_sasl_authenticated, defer_unauth_destination}}

我的理解可能是錯誤的,說預設smtpd_relay_restrictions不包括,與文件相反。所以我明確地將其設置為:permit_mynetworks``main.cf

smtpd_relay_restrictions = permit_mynetworks

重新啟動,postconf現在準確地報告上面的行。但是,它仍然不起作用,伺服器日誌文件仍然顯示相同的消息。有任何想法嗎?以及如何postconf向我展示目前的真實設置,而不必擔心兼容性級別?謝謝。

編輯

根據 anx 的回答,事實證明smtpd_client_restrictions = permit_mynetworks(“當客戶端 IP 地址與 $mynetworks 中列出的任何網路或網路地址匹配時允許請求”)是不夠的。你還需要

smtpd_sender_restrictions = permit_mynetworks

permit_mynetworks之前reject_unknown_sender_domain。這一切都可以正常工作,無需對 DNS 進行任何更改/etc/hosts,也無需向 DNS 添加任何內容。

發件人地址被拒絕:未找到域

這與您的郵件伺服器發送 IP 或其缺少的反向關聯無關。您使用的發件人地址帶有無法找到的域。reject_unknown_sender_domain在您的 smtpd_*_restrictions 中查找類似的語句,並根據您的需要添加一些可以解除此限制的內容。您可能smtpd_sender_restrictions需要對其進行編輯才能繼續處理此消息。或者只是將地址配置為實際上可以在 DNS 中找到的發件人(同樣,這與發送消息的伺服器的主機名是否可以在 DNS 中找到無關)。

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