Postfix 配置檢查收件人
我已經在 Ubuntu 16 上設置了我的 Posfix 電子郵件 SMTP 伺服器並且它正在工作。我曾經使用託管公司的 SMTP 伺服器,但我更願意使用自己的。
我正在使用 Java Mail 發送電子郵件,但不同之處在於,當我通過託管公司發送並且收件人地址錯誤時,我得到:
com.sun.mail.smtp.SMTPAddressFailedException:450 4.1.2:收件人地址被拒絕:找不到域
但是當我使用 Postfix 發送時,不會拋出異常。我檢查 Postfix 日誌,消息是:
行動:失敗狀態:5.4.4 診斷程式碼:X-Postfix;未找到主機或域名。name=somebod@ggmail.com type=AAAA 的名稱服務錯誤:找不到主機
但這永遠不會作為 java 異常傳播。
任何人都知道如何設置 Postfix 以使其行為相同?
謝謝,雨果
在
reject_unknown_recipient_domain
,和/或smtpd_recipient_restrictions
.permit_mynetworks``permit_sasl_authenticated``permit_tls_clientcerts
如果
reject_unknown_sender_domain
配置中缺少,或者如果permit_*
出現在此之前,reject_unknown_sender_domain
則 postfix 將允許所有匹配允許規則的客戶端發件人發送電子郵件,而無需檢查收件人域。Postfix 將接受傳入的郵件,將其排隊,並且僅在嘗試投遞時才注意到域不存在……然後退回郵件。如果
reject_unknown_sender_domain
首先出現,則檢查所有客戶端,無論它們是否符合permit_*
規則,並使用 5xx 程式碼拒絕電子郵件。在 postfix 中,規則的順序總是很重要的。
例子:
如果您有以下內容
main.cf
:smtpd_recipient_restrictions = check_sender_access hash:/etc/postfix/junk, check_client_access hash:/etc/postfix/junk, check_helo_access hash:/etc/postfix/junk, reject_unauth_pipelining, permit_tls_clientcerts, permit_sasl_authenticated, permit_mynetworks
在行前添加
reject_unknown_recipient_domain
某處permit
,例如:smtpd_recipient_restrictions = check_sender_access hash:/etc/postfix/junk, check_client_access hash:/etc/postfix/junk, check_helo_access hash:/etc/postfix/junk, reject_unauth_pipelining, reject_unknown_recipient_domain, permit_tls_clientcerts, permit_sasl_authenticated, permit_mynetworks
如果您還沒有
smtpd_recipient_restrictions
規則,請添加如下規則:smtpd_recipient_restrictions = reject_unauth_pipelining, reject_unknown_recipient_domain, permit_mynetworks
但是,您應該對配置後綴進行更多研究。