CentOS(7.6)サーバーからmailコマンドで、自分に機械的に送っているメール(ログイン時、yum-cron等)が、Gmail(G Suite無償版※)で迷惑メールとしてはねられないようにする。
※初期ベータ時の登録のまま無償版で使っているが、有償にしないと以下のSMTPリレーが使えない。だんだん無償版の扱いが厳しくなってきたが、できる限り無償で頑張ってみる。
https://support.google.com/a/answer/2956491
迷惑メールに入るだけでなく、最悪送信が受け付けられない。
(Googleサーバーからのメッセージ)
XXXXX@XXXXX.com: host aspmx.l.google.com[2404:6800:4008:c04::1b] said:
550-5.7.1 This message does not have authentication information or fails to
pass 550-5.7.1 authentication checks. To best protect our users from spam,
the 550-5.7.1 message has been blocked. Please visit 550-5.7.1
メッセージが受け付けられないということで、以下サイトを見ろとなる。
https://support.google.com/mail/answer/81126#authentication
その対策として、とりあえず、サーバー追加時にやること。
1.SPFレコードにサーバー登録
対象ドメインDNSのTXTレコードを修正(追記)する。
v=spf1 ip4:XXX.XXX.XXX.XXX include:_spf.google.com ~all
GSuiteのツールで、DNSをチェックできるので、こちらから設定されたことを確認する。
(G Suite Toolbox Check MX )
https://toolbox.googleapps.com/apps/checkmx/
上記設定後に、サーバーからのメールを「メッセージのソース」で見ると、SPFが「PASS」となる。
SPF: PASS(IP: XXX.XXX.XXX.XXX)。詳細
2.Postfixの設定
CentOS7から、標準がPostfixになったらしい。
2.1 TLS通信設定
以前はSendmailでTLSが有効だったけど、Postfixでは標準ではTLSは無効になっている。以下を参考にして設定を変更した。
https://qiita.com/tak-onda/items/b585841e03e4619ec367
/etc/postfix/main.cfに以下を追加。
smtp_tls_security_level = may
smtp_tls_CAfile = /etc/pki/tls/cert.pem
smtp_tls_loglevel = 1
ちなみに、CAファイルが無効(あるいはsmtp_tls_CAfileを設定しない場合)でも、送信自体はできた。
(maillog)
postfix/smtp[11228]: Untrusted TLS connection established to aspmx.l.google.com[64.233.189.27]:25: TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)
2.2 DKIMとDMARC設定
とりあえず、TODOということで備忘録
DKIMとDMARCはまだ設定していないが、ある特定のサーバー1台を除けば問題なく受信できる。最後に追加したサーバー1台だけが頻繁にメールエラーになる。IPアドレスをブラックリスト確認したら、一部サイトではブラックリスト登録されていた。とりあえず、ブラックリストの解除の依頼を出したが、どうなることやら。