ある時からメールが届かなくなった。
ログを調べてみたら、届くメールがことごとくspamhaus.orgにブロックされていた。 先に結論から言うと、postfixでspamhause.orgの設定は以下の5行目ように指定するのが良さそうだということが分かった。
smtpd_client_restrictions =
permit_mynetworks,
reject_rbl_client all.rbl.jp,
reject_rbl_client bl.spamcop.net,
reject_rbl_client zen.spamhaus.org=127.0.0.[2..11],
reject_unknown_sender_domain,
reject_non_fqdn_sender,
check_client_access hash:/usr/local/etc/postfix/reject_client,
permit
理由
あるIPアドレス(aaa.bbb.ccc.ddd)がspamhaus.org にスパム認定されているかどうかは、彼らのドメイン名のホスト(ddd.ccc.bbb.aaa.pbl.spamhaus.org)のIPアドレスを調べてみることで分かる。 もしスパム認定されていれば127.0.0.2~127.0.0.11を返してくる。登録が無ければ”server can’t find”を返してくる。
もしこの時、リゾルバが参照するDNSが俗にいうパブリックDNSだった場合、”server can’t find”にはならずに”127.255.255.254″を返してくる。
つまり、
reject_rbl_client zen.spamhaus.org,
このように設定してあって、かつ /etc/resolv.conf に 1.1.1.1 などのパブリックDNSが設定されていた場合、届くメールはすべてスパムとみなされてしまう。
リゾルバが自前のDNSの時のnslookupの結果例
# nslookup 4.4.8.8.pbl.spamhaus.org Server: 127.0.0.1 Address: 127.0.0.1#53 ** server can't find 4.4.8.8.pbl.spamhaus.org: NXDOMAIN #
リゾルバがパブリックDNS(1.1.1.1)の時のnslookupの結果例
# nslookup 4.4.8.8.pbl.spamhaus.org 1.1.1.1 Server: 1.1.1.1 Address: 1.1.1.1#53 Non-authoritative answer: Name: 4.4.8.8.pbl.spamhaus.org Address: 127.255.255.254 #
結論
リゾルバにパブリックDNSは使わないようにできるならそうした方が良いどうしてもパブリックDNSを使いたいあるいは使う可能性があるなら設定にば”=127.0.0.[2..11]”を付け足さないとハマることになる。