Linux
Postfix 拒絕來自一些 4.7.25 的(好)伺服器的傳入郵件,但它們具有正確的反向 DNS
設想:
這是一個 4 年以來的生產郵件伺服器,在大約 50 個域上有大約 2000 個郵箱,並且幾乎可以與任何其他郵件伺服器配合使用。日誌不斷受到關注,最近出現了以下問題。
編輯 1:Ubutntu 16.04.6 - 後綴(3.1.0-3ubuntu0.3)
問題:
有一個郵件伺服器似乎無法將郵件傳遞到該系統。
它失敗,4.7.25 客戶端主機被拒絕。
NOQUEUE: reject: RCPT from unknown[159.135.224.3]: 450 4.7.25 Client host rejected: cannot find your hostname, [159.135.224.3]
這就是我配置後綴的方式,因為我想避免沒有反向 dns 記錄的中繼器。
root@mail:~# grep restrictions /etc/postfix/main.cf smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, reject_rbl_client zen.spamhaus.org, check_recipient_access mysql:/etc/postfix/mysql-virtual_recipient.cf, check_recipient_access mysql:/etc/postfix/mysql-virtual_policy_greylist.cf, check_policy_service unix:private/policy-spf smtpd_helo_restrictions = permit_sasl_authenticated, permit_mynetworks, check_helo_access regexp:/etc/postfix/helo_access, reject_invalid_hostname, reject_non_fqdn_hostname, reject_invalid_helo_hostname, reject_unknown_helo_hostname, check_helo_access regexp:/etc/postfix/blacklist_helo smtpd_sender_restrictions = check_sender_access regexp:/etc/postfix/tag_as_originating.re , permit_mynetworks, permit_sasl_authenticated, check_sender_access mysql:/etc/postfix/mysql-virtual_sender.cf, check_sender_access regexp:/etc/postfix/tag_as_foreign.re, reject_unknown_sender_domain, reject_unknown_reverse_client_hostname, check_client_access hash:/etc/postfix/client_access, reject_unknown_client_hostname smtpd_client_restrictions = check_client_access mysql:/etc/postfix/mysql-virtual_client.cf
但它有一個有效的,在郵件伺服器上本地執行的測試:
159.135.224.3 上的 DNS 測試
root@mail:~# nslookup 159.135.224.3 Server: 1.1.1.1 Address: 1.1.1.1#53 Non-authoritative answer: 3.224.135.159.in-addr.arpa name = relay.teamgioia.it. Authoritative answers can be found from: root@mail:~# dig 159.135.224.3 ; <<>> DiG 9.10.3-P4-Ubuntu <<>> 159.135.224.3 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 23656 ;; flags: qr rd ra ad; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1452 ;; QUESTION SECTION: ;159.135.224.3. IN A ;; AUTHORITY SECTION: . 10165 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2019083000 1800 900 604800 86400 ;; Query time: 6 msec ;; SERVER: 1.1.1.1#53(1.1.1.1) ;; WHEN: Fri Aug 30 12:18:21 CEST 2019 ;; MSG SIZE rcvd: 117
在 resolv.conf 中:
nameserver 1.1.1.1 nameserver 1.0.0.1
問題:
為什麼沒有
reject_unknown_client_hostname
按我的預期工作?如果這不是這台伺服器的錯,而是發件人的錯,我怎樣才能將一些發件人列入白名單以避免他們的郵件被拒絕?
你能否解釋或推測他們的錯是什麼?
IP 地址與域查找不匹配。
從文件中引用:
reject_unknown_client_hostname
在以下情況拒絕請求:1)客戶端IP地址->名稱映射失敗,或2)名稱->地址映射失敗,或3)名稱->地址映射與客戶端IP地址不匹配。
如果您查找客戶端 IP 地址,則再次查找解析的 DNS 名稱並進行比較:
$ nslookup 159.135.224.3 3.224.135.159.in-addr.arpa name = relay.teamgioia.it. $ nslookup relay.teamgioia.it. Non-authoritative answer: relay.teamgioia.it canonical name = mailgun.org. Name: mailgun.org Address: 52.2.180.207 Name: mailgun.org Address: 52.4.250.90
您會看到,原始 IP 地址與 DNS 解析地址不匹配。這就是它無法通過檢查的原因。