最新の Self-hosted mail-receiver update following Let's Encrypt root certificate change の mail-receiver アップデートでは、IP アドレスがホスト名に解決されなくなったようです。これにより、以前は正常に動作していた Postfix のクライアントアクセス制限に問題が発生しています。この制限は、mail-receiver.yml に以下の行を追加することで有効化されています。
POSTCONF_smtpd_client_restrictions: 'regexp:/etc/postfix/shared/client_access_regex'
以下は、受信接続を示す mail-receiver ログのスニペットです。
Oct 01 17:38:11 discourse-mail-receiver postfix/master[1]: reload -- version 3.5.6, configuration /etc/postfix
Oct 01 17:41:58 discourse-mail-receiver postfix/smtpd[151]: connect from unknown[167.71.160.115]
Oct 01 17:41:59 discourse-mail-receiver postfix/smtpd[151]: disconnect from unknown[167.71.160.115] ehlo=2 starttls=1 mail=1 quit=1 commands=5
以前は送信元クライアントのホスト名 www11-do.checktls.com[167.71.160.115] に解決されていたものが、現在は解決されず unknown[167.71.160.115] としてマークされています。
これにより、client_access_regex ファイル内の正規表現エントリと競合が発生しています。このファイルは、有効な PTR レコードを持たないすべてのホスト(これらは基本的にすべてのスパムリレーです)と、動的 IP 範囲からのすべてのホスト(主に仮想ホストであり、これも基本的にすべてのスパムリレーです)を拒否するように設計されています。
IP アドレスがホスト名に解決されないため、どのルールも機能しなくなりました。さらに深刻なことに、/unknown/ REJECT 行がすべての受信メールをブロックしてしまいます。受信接続を可能にするために一時的にこのルールを無効にせざるを得ませんでした。また、解決の問題により他のすべてのルールも無効化されているため、サーバーが再びスパムに晒される状態になっています(これらのルールを実装する前に私のフォーラムはスパムで溢れていましたが、実装後はスパムを受け取った記憶がありません)。
Let’s Encrypt の問題があるため、回避策として古いバージョンに戻すことはできません。一方、新しいバージョンではスパムの洪水が再び発生してしまいます。そのため、修正をお願いできれば非常に助かります(Docker イメージ内で DNS 解決を手動で有効化する方法を検討しましたが、うまくいきませんでした)。
同じようなスパム問題に直面し、試してみたい方のために、参考となる client_access_regex ファイルを以下に示します(/etc/postfix/shared と mail-receiver.yml の設定については Customize direct-delivery Postfix configuration を参照してください)。
# regex dns: ([a-zA-Z0-9]+(-[a-zA-Z0-9]+)*\\.)+[a-zA-Z]{2,}
# regex ip: ((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)
#
# dyn-ip-dns:
/((\\.|-|x)(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){2}((\\.|-)[a-zA-Z0-9]+)+\\.[a-zA-Z]{2,}/ REJECT
/unknown/ REJECT
/sample-spam\\.domain\\.com/ REJECT