Php

smtpd_recipient_restrictions 有效,但並非總是如此

  • January 30, 2019

我已POSTFIX設置過濾某些電子郵件地址。該main.cf文件包含:

smtpd_recipient_restrictions =
   check_recipient_access hash:/etc/postfix/blacklist,
   permit_mynetworks,
   permit_sasl_authenticated,
   reject_unauth_destination,
   permit

當我嘗試向黑名單上的某個地址發送電子郵件時,我收到了應有的錯誤554 5.7.1 Access denied.。此外,當我嘗試使用 telnet 發送消息時,消息會被阻止。但是,該伺服器安裝了一個php基於 swiftmailer 並使用 swiftmailer 發送消息的郵件軟體。當我嘗試使用此軟體發送消息時,任何發往被阻止地址之一的消息都會通過。

這可能是什麼原因?我怎樣才能追踪它並調試它?

如果本地機器執行 smtp 伺服器,則有兩種發送郵件的方法。

您可以使用 smtp 協議(就像任何其他遠端客戶端一樣),連接到 localhost 埠 25 並進行整個 smtp 通話。在這種情況下,smtpd 客戶端限制確實適用。

或者您只需sendmail使用適當的參數執行二進製文件。在這種情況下,您不使用 smtp 協議,因此不會強制執行這些限制。

例如 linux 上的 php mail() 函式將使用第二種方法,使用作為預設sendmail -t -i命令,或者任何配置php.inisendmail_path

Swiftmailer 支持這兩種方法,因此您可以更改程式碼以使用 smtp 而不是 sendmail。見這裡http://swiftmailer.org/docs/sending.html

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