Postfix

Postfix 配置檢查收件人

  • January 11, 2018

我已經在 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

但是,您應該對配置後綴進行更多研究。

引用自:https://unix.stackexchange.com/questions/416271