2023.11月、弊社アカウントからGmailアカウントへ送信したメールが、Gmailサーバに弾かれてエラーで戻ってくるようになりました。2023.8月は送信できていました。その調査結果を記録しておきます。
1. 弊社メール環境
弊方の環境は以下のとおりです。
メールサーバ | レンタルサーバ |
ドメイン1 | 独自ドメイン |
ドメイン2 | レンタルサーバ初期ドメイン |
SPFレコード | 独自ドメイン側で設定 |
使用メールアカウント | ユーザ名@レンタルサーバ初期ドメイン |
メールサーバホスト名 | ドメイン1とドメイン2とは異なる。 |
メールクライアントソフト | Thunderbird |
プロトコル | IMAP |
暗号化 | SSL/TLS |
サーバはレンタルで、独自ドメインを取得しています。このようなケースは割と多いのかなと思います。SPFレコードは設定していますが、レンタルサーバ側の仕様で設定先は、独自ドメイン側のみです。
2. 試したこと1
まずSPFレコードに、ドメイン1 と ドメイン2 を含めてみました。
v=spf1 a:メールサーバホスト名 include=ドメイン1 include=ドメイン2 mx ~all
理屈的にはよいのかと思いましたがダメでした。一応ダメ元で以下もためします。
v=spf1 a:ドメイン1 mx ~all
更に一応ダメ元で以下もためします。ダメでした。
v=spf1 a:ドメイン2 mx ~all
何分、設定がDNS伝播しおわるまで、タイムラグがあるためTRY&ERRがしにくくて困ります。
3. 証明書について
Gmailの受信をWEB上で確認してみると、届いていめメールは証明書がついています。弊方は未対応です。
他の届いているメールをみると証明書はついていないものもありますね。暗号化も必須ではないようです。
しかしながら署名付きメールも業務用では結構一般的のようですね。Gmailからの送信では標準で署名は付与されています。近いうちに準備が必要そうです。
4. 試したこと2
ドメイン1、ドメイン2、メールサーバホスト もpingは通ります。DNS的はOKですね。
サーバ上から直接送信すると、うまくいきます。そこで、Thunderbirdの自動設定で設定されたリアルサーバのメールアカウント「ユーザ名@レンタルサーバ初期ドメイン」を、「ユーザ名@独自ドメイン」に変更してみました。するとGmailアカウントへの送信は受付けられました。ドメイン1 と ドメイン2 は、DNSエイリアスで同意と解釈していましたが、この場合は異なるようですね。
5. 具体的メカニズム
SPFによるドメイン照合は各種サイトで説明されていますが、具体的にメールのどの部分がどうなのか説明が良く分かりません。失敗したメールのテキストヘッダ部は、
smtp.mailfrom=ユーザ名@レンタルサーバ初期ドメイン Return-Path: <ユーザ名@レンタルサーバ初期ドメイン> Received: from メールサーバホスト名 To: 宛先@gmail.com From: ユーザ名@レンタルサーバ初期ドメイン
成功したメールのテキストヘッダ部は、
smtp.mailfrom=ユーザ名@独自ドメイン Return-Path: <ユーザ名@独自ドメイン> Received: from メールサーバホスト名 To: 宛先@gmail.com From: ユーザ名@独自ドメイン
以上のことからGmailサーバの動作は、以下のとおりとなるようですね。
(a) メールのfrom句のドメイン名からDNSを探索する。DNSエイリアスは見ない。
(b) 探索したドメインのSPFレコードからメールサーバホスト名を取得する。
(c) 取得したメールサーバホスト名を、メールのReceived句と照合する。
また、
(d) 証明書と暗号化は必ずしも必要ではない。