Mailmanで運用されているメーリングリストをGmailで利用したときに、自分が送信したメールが自分に届かなかったり、Gmailで受信した時に何度も何度も迷惑メールフォルダに振り分けられてしまう問題が発生することがあった。
環境は、さくらVPSでCentOS6。
自分が送信したメールが自分にこない
メールのmessage idがユニークになっていないためらしい。
/usr/local/mailman/Mailman/mm_cfg.py で下記を設定して、Mailman側でmessage idを管理すればオッケー。
1 | USE_MAILMAN_MESSAGE_ID = Yes |
Mailmanの再起動を忘れずに
1 | service mailman restart |
何度も迷惑メールフォルダに入ってしまう
最初は、FromをMailmanが書き換えているから不正なメールと扱われているのかな?と思ったので、Fromを書き換えない設定にしてみたけど、それでも迷惑メールフォルダに入ってしまっていた。
そこでGmailの一括送信ガイドラインを読んでみた(最初に読めっ)。
どうやらDKIMやSPFを設定すると解決するっぽい?
つまり、迷惑メールフォルダに振り分けられてしまう理由はMailmanとは関係なくて、smtpの設定が未熟だったみたい。
SPFの設定
まずは簡単に対応できるSPFを試してみた。
これはドメインにSPFレコードを追加して、逆引きを登録するだけで良い。
ドメイン設定
ドメインのレコードにTXTで下記を設定。当然、この記事に書いてあるドメイン(ml.example.com)は適宜自分のものに置き換える必要がある。
1 | v=spf1 +a:ml.example.com ~all |
逆引き設定
逆引きの設定方法は場合によるけれども、自分の場合はさくらVPSを使っていたのでサーバのコントロールパネルで簡単に設定できた。
これでSPFの設定は終わりなんだけれど、SPFを設定しただけでは解消されなかった・・。
しょうがないのでDKIMも設定することにする。
DKIMの設定
ドメイン側とサーバ(smtp)側で設定が必要で少し面倒、サーバのサービスも増えるし。
まずサーバに opendkimを入れる必要があるのでyumでインストールする。
1 2 3 | yum install opendkim # EPELリポジトリが必要 chkconfig —add opendkim chkconfig opendkim on |
鍵の作成
1 2 3 | mkdir /etc/opendkim/keys/ml.example.com opendkim-genkey -D /etc/opendkim/keys/ml.example.com -d ml.example.com -s mymailman chown opendkim:opendkim /etc/opendkim/keys/ml.example.com/mymailman.* |
/etc/opendkim.confの設定
自分の場合は送信にしか使っていないので、Modeはsにした。
1 2 3 4 5 | Mode s KeyTable refile:/etc/opendkim/KeyTable SigningTable refile:/etc/opendkim/SigningTable ExternalIgnoreList refile:/etc/opendkim/TrustedHosts InternalHosts refile:/etc/opendkim/TrustedHosts |
/etc/opendkim/KeyTableの設定
1 | mymailman._domainkey.ml.example.com ml.example.com:mymailman:/etc/opendkim/keys/ml.example.com/mymailman.private |
/etc/opendkim/SigningTableの設定
1 | *@ml.example.com mymailman._domainkey.ml.example.com |
/etc/postfix/main.cfの設定
1 2 3 | smtpd_milters = inet:127.0.0.1:8891 non_smtpd_milters = $smtpd_milters milter_default_action = accept |
opendkimの起動、postfixの再起動
1 2 | service opendkim start service postfix restart |
ドメインにレコードを2つ登録する。
1.mymailman._domainkey.mlというエントリにTXTで/etc/opendkim/keys/ml.example.com/mymailman.txtの内容を書く。
2._adsp._domainkey.mlというエントリにTXTでdkim=unknownを書く。
ここまででDKIMの設定が終了。
Gmailでメーリングリストの送受信を試してみると、迷惑メールフォルダに振り分けられることは無くなったっぽい。
送信されたメールのヘッダをみると、Authentication-Resultsにdkim=passがあるのを確認できる。