後綴 NOQUEUE:拒絕:來自未知的 RCPT
我建構了一個基於 Web 的應用程序,但是當它嘗試發送電子郵件時它失敗了。Postfix 在其 mail.log 中記錄以下內容:
postfix/smtpd[22261]: warning: hostname srv.eastinc.nl does not resolve to address 192.168.3.101 postfix/smtpd[22261]: connect from unknown[192.168.3.101] postfix/smtpd[22261]: NOQUEUE: reject: RCPT from unknown[192.168.3.101]: 554 5.7.1 <someaddress@gmail.com>: Relay access denied; from=<Domain@eastinc.nl> to=<someaddress@gmail.com> proto=ESMTP helo=<domain.eastinc.nl> postfix/smtpd[22261]: disconnect from unknown[192.168.3.101]
我很確定 srv.eastinc.nl 解析為 192.168.3.101,因為 nslookup 是這樣說的。後綴配置:
alias_database = hash:/etc/aliases alias_maps = hash:/etc/aliases append_dot_mydomain = no biff = no config_directory = /etc/postfix delay_warning_time = 2h home_mailbox = Maildir/ inet_interfaces = all mailbox_size_limit = 0 mydestination = eastinc.nl, mail.eastinc.nl, srv.eastinc.nl, localhost.eastinc.nl, localhost myhostname = mail.eastinc.nl mynetworks = localhost 192.168.3.101 127.0.0.1 srv.eastinc.nl myorigin = /etc/mailname readme_directory = no recipient_delimiter = + relayhost = smtp.ziggo.nl:25 smtp_always_send_ehlo = yes smtp_sasl_auth_enable = no smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu) smtpd_recipient_restrictions = permit_sasl_authenticated, reject_unauth_destination smtpd_sender_restrictions = reject_unknown_sender_domain smtpd_tls_cert_file = /etc/ssl/certs/mailcert.pem smtpd_tls_key_file = /etc/ssl/private/mail.key smtpd_tls_protocols = !SSLv2, !SSLv3 smtpd_tls_security_level = may smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache smtpd_use_tls = yes
如果我理解正確的話,192.168.3.101 和 srv.eastinc.nl 都應該能夠通過 Postfix 中繼郵件。關於如何讓它發揮作用的任何想法?
您的配置中有以下限制:
smtpd_recipient_restrictions = permit_sasl_authenticated, reject_unauth_destination smtpd_sender_restrictions = reject_unknown_sender_domain
當客戶端通過 RFC 4954 (AUTH) 協議成功驗證時,允許該請求。
除非滿足以下條件之一,否則拒絕請求:
- Postfix 是郵件轉發器:解析的 RCPT TO 域匹配 $relay_domains 或其子域,並且不包含發件人指定的路由(user@elsewhere@domain),
- Postfix 是最終目的地:已解析的 RCPT TO 域匹配 $ mydestination, $ inet_interfaces, $ proxy_interfaces, $ virtual_alias_domains 或 $virtual_mailbox_domains,並且不包含發件人指定的路由 (user@elsewhere@domain)。
如果 Postfix 不是發件人地址的最終目的地,並且 MAIL FROM 域具有 1) 沒有 DNS MX 和 DNS A 記錄,或 2) 格式錯誤的 MX 記錄,例如具有零長度 MX 主機名的記錄 ( Postfix 版本 2.3 及更高版本)。
回復由 unknown_address_reject_code 參數(預設值:450)、unknown_address_tempfail_action(預設值:defer_if_permit)或 550(nullmx,Postfix 3.0 及更高版本)指定。詳見各參數說明。
所以,我的猜測是:從 192.168.3.101 主機連接的人(它是伺服器本身嗎?)在沒有身份驗證的情況下發送郵件(日誌中沒有關於身份驗證的內容)。因此,您需要以下限制才能這樣做:
當客戶端 IP 地址與 $mynetworks 中列出的任何網路或網路地址匹配時,允許請求。
前面
smtpd_recipient_restrictions
加上permit_mynetworks
.smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
UDP
有時它真的很糟糕,
permit_mynetworks
因為任何主機$mynetworks
都可以在沒有身份驗證的情況下送出郵件。因此,最好通過 smtp 送出郵件,並使用您的應用程序中的身份驗證,不要使用
sendmail()/mail()
函式