概要
Googleのメールポリシー厳密化によりDKIM対応をしてみました。メールサーバーの運用は面倒なのでさくらインターネットさんのメールサーバーを借りています。
利用サーバー
ブログ自体はValue Domainさんのコアサーバーを利用しているのですが、ここのメールサーバーは若干届きにくいです。過去いろいろ実験したのですがniftyさんは比較的細かいチェックをしていて、私の使っているサーバーからは送信ができませんでした。共有サーバーなのでIPアドレスなどですでにブラックリストに入っていたかもしれません。
そこで、さくらインターネットさんの「さくらのメールボックス」を利用しています。

こちら年間契約で1,048円とかなりやすいです。
コアサーバーとの違い
IPが汚れていない以外は基本的にコアサーバーの方が高性能な気がします。ただ、IPが汚れているとそもそも届かないので機能が良くてもメールサーバーとしてはだめなんですよね、、、
比較的客層が良い
こちらも共有サーバータイプですが、コアサーバーと比べると客層が良さそうでniftyにも送信可能でした。送受信数が多い場合にはGoogle Workspaceとか、WebArenaとかいろいろありますがとりあえず不便はしていません。
キャッチオールに対応していない
設定していないアカウント宛のメールをすべて受け取る機能がさくらのメールボックスにはありません。未設定のメールアドレスはすべて宛先不明でエラーになります。
ドメイン別ユーザーを作成できない
ドメイン別にユーザーを作成するのではなく、複数のドメインを設定するとすべて共通のユーザーとして受信する形になります。infoなどの共通アカウントを個別に管理することはできませんので、個別管理する場合には契約ごとわける必要があります。
設定方法
さくらのメールボックスの場合には、Webサーバーの契約がありません。そのためドメインをすでにもっていて、別のサーバーでサービスを提供している環境となります。
本当はメールとWebを同じサーバーにして、ドメインの管理もさくらさんに移す方がDNS設定などが楽だと思います。

基本は上記の流れのとおりで問題がありません。ただし、他社DNSサーバーの場合にはDNS設定を自分で作る必要があります。

手順を見るとDKIMレコードとDMARCレコードを利用するのチェックを外せとありますが、こちらはつけたほうが楽です。

なぜなら、設定方法はRFCを確認して自分で書いてねという手順だからです、、、

上記のチェックをしておくと、ドメインのレコード確認画面で設定すべきTXTレコードが表示されます。この情報をもとに自分で利用しているDNSサーバーに設定するのが楽だと思います。
レポート情報の収集と閲覧
DKIMとDMARCを設定することで、各種メールサーバーからレポートが送付されるようになると思います。このメールはそのまま目で見ても管理できないので、DBに保存してツールで確認したいと思います。
dmarcts-report-parser
Perlで作られたレポート収集ツールです。IMAPでメールを確認をしてXMLで送付されてきたレポートファイルをMySQLかPostgreSQLに保存します。
ただし、コアサーバーで動かすためにはPerlのモジュールが足りません。SSHでログインをしてからモジュールを追加する必要があります。
perl -MCPAN -e 'install Mail::IMAPClient'
perl -MCPAN -e 'install Mail::Mbox::MessageParser'
perl -MCPAN -e 'install File::MimeInfo'
何を入れたか覚えていませんが、ひたすらエラーがでたモジュールを追加していきます。
#!/bin/bash
source ~/.bashrc
cronからだと自分でいれたモジュールがパスに追加されていませんので、sourceを使って追加させました。これでスクリプトが実行されてDBに保存されるようになるはずです。
dmarcts-report-viewer
こちらがDBに保存されたデータを閲覧するツールになります。PHPですので比較的すんなり動くと思います。
結果

動きました。しかし、エラーがでています。

エラーの場所をみてみるとDKIMがエラーになっています。

Gmailでソースを表示するとDKIMの結果がわかります。失敗していますね。

ヘッダーをみてみると「dkim=neutral (body hash did not verify)」でDKIM署名がおかしいです。

ただし、DKIMをPASSしているメールもあります。どちらもWordPressから自動送信されているメールなんですよね。そしてDKIM署名はメールサーバー側の責務なので、利用者側はあまり関係ないはず。。。
まとめ
DKIMがメールによって失敗していますが、おそらくメールサーバー側が悪いはず。。。その内治ると嬉しいですが、現状ほぼWordPressからの通知にしか使っていないので様子をみてみたいと思います。
メール送信元が同じIPなので、同一メールサーバー経由で、同じアプリから送信なので送るときの文字コードとか改行コードが違っているとかで署名ミスっている気がするんですよね。
コメント