gmailへの転送問題
1)外部からのメール
↓
2)自サーバー(管理サーバー)に到着
↓
3)gmailに転送
という場合、1)の「To:」(宛先)は、「自サーバーのドメイン」です。
2)で、「gmail.com」宛てに転送されます。
この転送がやっかいで、gmail.com側に到着すればいいのですが、「迷惑メール」扱いで、
エラーになる場合があります。この場合、エラーは、1)の、外部のメールに戻る。
外部の方は、「エラーになった」「もう一度送ってみる」「電話で聞いてみる」
など、混乱状態になります。
そして、2)の受信者は、「エラーになったことを知りません」
(なぜ、そんなに転送が好きなの?・・・(笑))
gmailの転送エラーを回避する方法
A)転送をやめる
そして、gmail側で、2)のメールを受信するようにする。
B)DKIM、DMARC、ARC の設定をして、gmail側でエラーにならないようにする。
上記、B)ですが、「絶対にエラーにならない」という保証はないです・・・
今回、B)に関連した「arc認証」の設定についてのメモです。
gmail側、arc認証がない場合
ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=(外部からのメールのFQDN) header.s=(外部からのメールのセレクタ) header.b=fIncgzmu; spf=softfail (google.com: domain of transitioning (外部からのメール) does not designate (送信元IP) as permitted sender) smtp.mailfrom=(外部からのメール); dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=(外部からのメールのFQDN)
↑「ARC-Authentication-Results」というブロックに注目します。
arc認証が有効でないと、上記のようになります。「dkim」「spf」「dmarc」の記述はありますが、「arc」の記述はありません。
arc認証 rspamd設定
rspamdでは、arc認証が、標準で組み込まれていて、有効になっています。
設定ファイルを置いてあげれば、arc認証がなされます。
公式サイトは、
です。
上記、ページには、
The configuration of this module is similar to the dkim and dkim_signing modules.
と、書かれており、同じように設定をすることができます(設定を流用することができます)。
その1)dkimの「秘密鍵」「公開鍵」を利用
dkimの「秘密鍵」「公開鍵」が利用可能です。
DNSの変更もしなくてもいいです。
/etc/rspamd/local.d/
のフォルダに、「arc.conf」というファイルを作成して、
dkimで、設定した記述をそのまま書きます。「domain」セクションのみです。
domain { (ドメイン) { selector = "(セレクタ)"; path = "/etc/opendkim/keys/(ドメイン)/(セレクタ).private"; } }
と、記述します。
その2)arc専用の「秘密鍵」「公開鍵」を作成
# mkdir /var/lib/rspamd/arc # cd /var/lib/rspamd/arc # rspamadm dkim_keygen -s '(セレクタ)' -b 2048 -d (ドメイン) -k (ドメイン).private > (ドメイン).txt # chown -R _rspamd._rspamd /var/lib/rspamd/arc
↑上記のコマンドを実行します。
「セレクタ」は、dkimと同じように、YYYYMMDDの数字で設定しておりますが、我流です(笑)。
上記のコマンドで、
drwxr-xr-x 2 _rspamd _rspamd 52 XXX XX XX:XX . drwxr-xr-x 3 _rspamd _rspamd 24576 XXX XX XX:XX .. -rw-r----- 1 _rspamd _rspamd 1708 XXX XX XX:XX (ドメイン).private -rw-r--r-- 1 _rspamd _rspamd 455 XXX XX XX:XX (ドメイン).txt
↑というファイルが作成されます。
/etc/rspamd/local.d/
のフォルダに、「arc.conf」というファイルを作成して、
dkimで、設定した記述をそのまま書きます。「domain」セクションのみです。
domain { (ドメイン) { selector = "(セレクタ)"; path = "/var/lib/rspamd/arc/(ドメイン).private"; } }
と記述します。
「(ドメイン).txt」の内容をDNSに反映させます。
(セレクタ)._domainkey IN TXT ( "v=DKIM1; k=rsa; " "(英数字)" "(英数字)" ) ;
↑「(ドメイン).txt」は、上記のような内容になっています。
rspamd デバック
rspamdの動作をチェックするため、一時的に、ログにデバック情報を出力します。
/etc/rspamd/local.d/logging.inc
というファイルを作成して、
level = "debug";
と記述します。
# systemctl restart rspamd
再起動します。
メールのテスト
外部から、自社サーバー(今回、変更されたサーバー)にメールを送り、gmail.com側に自動転送をしてみます。
自社サーバーのログ
# grep arc /var/log/rspamd/rspamd.log|grep -v dmarc
2023-XX-XX XX:XX:XX #XXXXXX(normal) <XXXXXX>; arc; arc.lua:572: update signature with header: arc-message-signature:i=1; a=rsa-sha256; c=relaxed/relaxed; d=(ドメイン); s=(セレクタ);
というように、ログが記述されます。
gmail.com側のログ
受信したメールの「ソース」を見てみます。
Authentication-Results: mx.google.com; dkim=pass header.i=@(ドメイン) header.s=(セレクタ) header.b=XOdL7Lbi; arc=pass (i=1 spf=pass spfdomain=(ドメイン) dkim=pass dkdomain=(ドメイン) dmarc=pass fromdomain=(ドメイン)); spf=softfail (google.com: domain of transitioning (メール) does not designate (送信元IP) as permitted sender)
↑「Authentication-Results」のブロックを見てみます。
「arc=pass」と表示されました。
これで、arcが、「認証成功」となります。
ARC-Seal: i=2; a=rsa-sha256; t=1697002528; cv=pass;
というところも、注目点で、「cv=pass」となっています。
上記、arcの認証が、「成功」となります。