Php
smtpd_recipient_restrictions 有效,但並非總是如此
我已
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.ini
為sendmail_path
Swiftmailer 支持這兩種方法,因此您可以更改程式碼以使用 smtp 而不是 sendmail。見這裡http://swiftmailer.org/docs/sending.html