這讓我發瘋…Linux Debian + postfix…/etc/postfix/main.cf 有以下幾行:
smtpd_recipient_restrictions =
check_recipient_access hash:/etc/postfix/access,
reject_invalid_hostname,
reject_non_fqdn_recipient,
reject_non_fqdn_sender,
reject_unauth_destination,
reject_unauth_pipelining,
reject_unknown_recipient_domain,
reject_rbl_client cbl.abuseat.org,
reject_rbl_client sbl-xbl.spamhaus.org,
check_policy_service unix:private/policyd-spf,
check_policy_service inet:127.0.0.1:10023,
permit_auth_destination,
reject
如今,postfix 正在拒絕來自一個 IP 的傳入訊息:
[email protected]
SMTP error from remote mail server after RCPT TO:<[email protected]>:
host mail.server.ext [123.123.123.123]: 554 5.7.1 Service unavailable; Client host [234.234.234.234] blocked using cbl.abuseat.org; Blocked - see http://cbl.abuseat.org/lookup.cgi?ip=234.234.234.234
出色地…http://cbl.abuseat.org/lookup.cgi?ip=234.234.234.234報告沒有將 234.234.234.234 列入黑名單(顯然 234.234.234.234 不是真的 IP)。
到目前為止,已有十幾封電子郵件因同樣的原因被阻止,但每次我手動查詢 RBL 時,該 IP 都會報告為乾淨。
postfix 是否快取對 RBL 的查詢?我缺什麼?
在此先感謝您的時間。
答案1
從頂層來看,Postfix 依賴 libc 解析器進行 DNS 查找(包括 RBL),因此行為取決於函式庫。例如,postfix 總是透過 NS 伺服器進行查找,其中定義/etc/resolv.conf.
如果NS伺服器有快取機制,那麼postfix也會得到快取結果。如果您的提供者有“DNS劫持「(轉移到他們的 NS 伺服器的 DNS 封包)。在這種情況下,您還將存取他們的快取(如果他們啟用了它)。
要檢查 DNS 查找的輸出是什麼,可以使用dig
指令。例如,檢查 cbl.abuseat.org 中是否列出了 IP 位址 216.154.195.36。
$ dig 36.195.154.216.cbl.abuseat.org
; <<>> DiG 9.10.1-P1 <<>> 36.195.154.216.cbl.abuseat.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 48609
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
如果傳回的是 NXDOMAIN,則 IP 位址未列出。
從底層來看、各smtpd
工序已緩存自己的 DNSBL 查找結果。這些結果不會與其他 Postfix 進程共用。每個smtpd
行程都會被重複使用,直到max_use
或者max_idle
到達。當smtpd
進程終止時,RBL 快取也會遺失。當守護程式smtpd
創建新進程時master
,它將拾取新的配置on main.cf
(包括max_idle
和max_use
。所以實際上不需要重新啟動 postfix。