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