送ったはずのメールが相手に届いていない。あるいは、届いてはいるけど迷惑メールフォルダに入ってしまう。これ、地味にきついですよね。
特に困るのは、自分のところでは何も起きていないように見えることです。送信済みには入っている、エラーも返ってこない。それなのに相手には届いていない。何を直せばいいのかも分からない。
原因はいろいろあり得るのですが、独自ドメインでメールを出している場合、かなりの割合が「差出人が本物だと示す設定」の不足です。ここ数年でGmailなどの受け取り側がこの検査を厳しくしたので、昔は届いていたものが急に届かなくなった、というのもよくあります。
受け取る側は3つのことを確かめている
メールには、差出人を好きに書けてしまうという昔からの弱点があります。封筒の差出人欄に他人の名前を書くのと同じで、書くだけなら誰にでもできてしまう。そこで受け取る側は、DNSに置かれた情報を見て、その差出人が本当かどうかを確かめています。
SPF —「このサーバーから出していい」の一覧
そのドメインの名前でメールを出してよいサーバーを、あらかじめDNSに書いておくものです。受け取る側は、実際に送ってきたサーバーがその一覧に載っているかを見ます。メール配信サービスやグループウェアを追加したのにSPFを更新していない、というのがいちばんよくある抜けです。
DKIM — メールに付ける電子署名
メールに署名を付けて出し、受け取る側がDNSに置かれた公開鍵で検算します。途中で誰かが中身を書き換えていれば、そこで分かります。SPFが「どこから来たか」を見るのに対し、こちらは「中身が無傷か」を見ています。
DMARC — 落ちたときにどうするか
上の2つに通らなかったメールをどう扱ってほしいか、という指示です。`p=none`(何もしない)、`p=quarantine`(迷惑メール扱い)、`p=reject`(受け取らない)の3段階があります。ここが無いと、受け取る側は自分の判断で決めることになり、結果として迷惑メールに入りやすくなります。
いま自分がどうなっているかを見る
3つとも、実体はDNSに置かれた文字列なので、外から見えます。このサイトのDNS検索で「メール設定」を選んでドメインを入れると、SPF・DKIM・DMARCがまとめて出ます。入っていないものは「見つかりません」と出るので、どれが抜けているかがその場で分かります。
ひとつ注意があって、DKIMだけはセレクタという名前が分からないと引けません。送信サービスごとに違っていて(Googleなら`google`、Microsoftなら`selector1`が既定)、当てずっぽうでは出ません。実際に届いたメールのソースを表示して、`DKIM-Signature`の中の`s=`を見るのが確実です。
それでも届かないとき
- 送信元のIPアドレスが評価を落としている — 共用のサーバーだと、同居している他の利用者の影響を受けることがあります。
- 本文や件名が引っかかっている — 短すぎる本文、URLだけのメール、大量の画像は不利に働きます。
- 相手側で拒否されている — 特に企業のフィルタは独自に強く、こちらの設定が完璧でも弾かれることがあります。心当たりがあるなら、電話などで直接確認するのが早いです。
- そもそも宛先が間違っている — 恥ずかしいですが、意外とあります。エラーが返らない設定になっている受信側もあります。
メールが届かないのは、原因が自分の側にあるのか相手の側にあるのかすら分からないのが一番つらいところです。まず3つの設定を見て、抜けが無いことを確かめる。そこがはっきりすれば、少なくとも「こちらはやることをやった」と言えるようになります。
この記事で紹介したステム分離は、ブラウザで無料で試せます(登録不要・音源は端末から出ません)。