送信したメールが、受信側で受信できなかったり、迷惑メールボックスに入ったりする原因は、受信側の判定によります。
なので、すべての対策をしたとしても必ず100%正常に受信させるという保証はありませんが、基本的には受信側に合わせた送信側の設定が必要です。
原因1:送信メールサーバがブラックリストに入っている
第三者が利用できるような設定になっていたり、短期間に宛先不明のメールを大量に送信しているなどの条件に該当しているサーバは各種のブラックリストに入ってしまっている可能性があります。
まず、ブラックリストに入っているか確認し、入ってればメールサーバのSMTPの設定を見直して、ブラックリスト解除申請をしてください。
■ブラックリスト
MX TOOL BOX
https://mxtoolbox.com/
blacklistalert.org
http://www.blacklistalert.org/
原因2.送信元のドメイン認証をしていない
なりすましでメールを送信できてしまうのは、メールのFROMを詐称することができるからです。
なので、送信元ドメインが偽装されていないことを確認するために、ドメインにサーバの情報を登録しておく技術としてSPFが、受信したメールが改ざんされていないかを電子署名を利用して確認するDKIMがあります。
少なくともSPFの対応は必須となります。
SPFの設定方法
SMTPサーバのIPもしくはドメイン名を、ドメインのDNSサーバでTXTレコードとして保存します。
受信側は、この情報とメール送信元を照合して、正しい送信元かどうかを判断します。
例:
example.com. IN TXT "v=spf1 +ip4:192.0.2.1 -all"
→IPアドレスが192.0.2.1のサーバはOK、それ以外のサーバはNGという設定
example.com. IN TXT "v=spf1 +ip4:192.0.2.1 ~all"
→IPアドレスが192.0.2.1のサーバはOK、それ以外のサーバは正当なメールであっても認証失敗することがある
「+」→正常なメールとして処理する
「-」→不正なメールとして処理する
「~」→不正なメールとして処理されるが、配信はされる。受信もとで拒否されることもある
「?」→SPF指定なしとして処理される
example.com. IN TXT "v=spf1 a:www.sample.co.jp -all"
→www.sample.co.jpのAレコードのIPと一致する場合はOK、れ以外のサーバはNGという設定
example.com. IN TXT "v=spf1 include:www.sample.co.jp -all"
→www.sample.co.jpのSPFレコードと一致する場合はOK、れ以外のサーバはNGという設定
DKIMの設定方法
送信側メールサーバの公開鍵をあらかじめドメインのDNSサーバに登録しておきます。
送信側メールサーバは自身の秘密鍵で電子署名をつけてメールを送信します。
受信側は、メールから特定したドメインのDNSサーバに問い合わせて公開鍵を取得して電子署名を検証します。
・OpenDKIMで秘密鍵と公開鍵を生成
LinuxにOpenDKIMというツールがあるので、こちらで秘密鍵と公開鍵を生成します。
$ sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
$ sudo yum install opendkim
下記でディレクトリを作成して、公開鍵と秘密鍵を作成できます。
mkdir example.com_keys
opendkim-genkey -D example.com_keys -d example.com -s default
default.private
→秘密鍵
default.txt
→公開鍵
・公開鍵をDNSサーバにレコードとして登録する
<セレクタ名>._domainkey.<ドメイン名>. IN TXT "v=DKIM1; k=rsa; p=<公開鍵データ>"
default._domainkey.example.com. IN TXT "v=DKIM1; k=rsa; p=22H33axe4MOdqcwuZ7(省略)"
・秘密鍵をSMTPサーバに登録する
→他の文献を参考にしてください。
参考文献
一般財団法人インターネット協会 有害情報対策ポータルサイト 迷惑メール対策編
https://salt.iajapan.org/wpmu/anti_spam/
postfix+opendkimでお名前.comにDKIMを設定する
https://mebee.info/2020/06/26/post-11901/