2020年8月2日

さくらVPSでメール設定あれこれ

これまでは受信できていたメールが迷惑メールに振り分けられたり、受信自体ができないとの問い合わせがあり、さくらVPSのメール設定を見直すことになりました。世の中にスパムメールが無ければこのようなトラブルも起こらないと思うのですが、嘆いても始まりません。私もスパムメールなんか見たくないので、受信側でのスパム対策が日進月歩で進むのは当然です。ただ、開発する立場では以前は問題無かったメール設定を変更する必要に迫られることもあり、ある種イタチごっこのような状況になっているのには辟易します。というのも、利用者や管理者からちょっと見てくれと言われてもメール設定には色々な要素が含まれるのでどれを改善すればいいのかが判然としませんし、不特定多数のメール受信環境に全て対応するのはほぼ不可能だからです。とはいえ、「迷惑フォルダに入っているかもしれません」だけで対応するのは開発者として不誠実ですし、メール設定でやれることはやったうえで後は利用者側で適宜設定してもらうという形にできればお互い納得いくと思います。SMSやLINEなどAPIを用いたプッシュ通知でスパムとは無縁の通信もありますが、コストもかかるし導入準備なども考慮すると1000人規模の大施設内での連絡手段としてはやはり既存のメールを使うのが便利だと思われます。(今後gmailもプッシュ通知が使えるようになるらしいので将来的にはどうなるか分かりませんが。)今回調査したシステムは2013年頃から運用している古いものです。迷惑メールにならない対策として主なものは

1.SPFレコードの設定
2.DKIM設定
3.Return-Path設定

があります。このあたりの情報は以下のURL

https://sakuravps.hajimete-guide.com/entry/do_not_spam
https://www.php-factory.net/trivia/21.php

がとても参考になりました。

まず、SPFレコードの設定ですが、これは以前にも行っていました。

https://help.sakura.ad.jp/206206521/

などが参考になります。サブドメインを使って複数のシステムを運用している場合はそれぞれについて設定する必要があります。SPFレコードの確認は例えば

https://www.kitterman.com/spf/validate.html
https://mxtoolbox.com/spf.aspx

で行ってください。

次に、DKIM設定について。参考になったサイトは

https://qiita.com/taku1201/items/3b2dffd950340b9726d0
https://kantaro-cgi.com/blog/etc-server/opendkim_setup.html

です。こちらも以前に設定していましたが1つのサブドメインだけにしか対応していなかったので2つ目の方も同様に設定しました。複数のサブドメインの設定方法は上記2番目のURLに詳説されていたのでとても参考になりました。DKIM設定の確認は例えば

https://dmarcian.com/dkim-inspector/
https://dkimcore.org/tools/keycheck.html

で行えます。無事OKだったのでメール送信したところなんとメールが届きません!!ログを調べたところ

can't load key from /etc/opendkim/keys/**selectorName**.private: Permission denied

となっていました。指示通り

chown -R opendkim:opendkim /etc/opendkim/keys/*

とするのを忘れていたためです。/etc/opendkim/keys/フォルダにはsu権限でログインしないと編集できない(sudoではダメ)なのでうっかり忘れていました。気を取り直して再度メールすると今度はログに

 connect to aspmx.l.google.com[2404:6800:4008:c03::1b]:25: Network is unreachable

と出ていました。送信先が私のgmailなのですがどうやらPostfixでipv6がデフォルトで有効になっている為にgmailに送信できなかったようです。こちらのサイト


を参考にしてpostfixの設定ファイル/etc/postfix/main.cfのinet_protocolsを
inet_protocols = all 
から
inet_protocols = ipv4
と変更するとエラーログは消えました。

最後にReturn-Path設定について。このサーバでは複数のサブドメインがあり開発当初に使っていたドメインがReturn-Pathに設定されていました。このドメインについてもSPFレコードを設定しておけば問題ないはずですが、運用しているサブドメインとは違うのでもしかしたらスパム判定されるかもしれません。とはいえ2つのサブドメインを運用しているのでそれぞれについてReturn-Pathを設定した方がよさそうです。


を参考に安直にCakePHPのemail.phpから強制的に設定しましたが反映されませんでした。そういえば、SSL化した時バーチャルホストのconfファイルでServerAdminを設定していなかったのでそこに追記すればいいかと思いVirtualHost *:80とVirtualHost *:443それぞれのconfファイルを編集しhttpdを再起動しましたがこれでも反映されませんでした。結局、/etc/postfix/main.cf で myhostname と mydomain を編集してReturn-Pathを変更しました。サブドメインで場合分けも可能でしょうがよく分からなかったので今回は問い合わせのあった方のサブドメインでmyhostnameを設定しました。メール送信はどちらも問題なかったのでOKということにします。これで迷惑メールに振り分けられるトラブルもだいぶ減るのではないでしょうか。というか、減らなきゃ困る!

0 件のコメント: