※ この記事は 2024/03/26 に投稿され、 2024/03/26 に内容が更新されています
ARC のことを忘れてた
一連の送信メール対応の中で、 ARC のことをすっかり忘れていたので対応した。
Rockey Linux 8 の情報は結構あるが、 Ubuntu 22.04 の情報は少ないので苦戦しつつ対応した備忘録。
ARC (Authenticated Received Chain) とは
規格
ARC は、RFC 8617 で定義されている、メール転送パスを保護規格となります。
伝統的なメールの転送では、メールが中間サーバを経由すると、SPF や DKIM などの認証情報が失われてしまうことがあります。
ARCは、この問題を解決するため、メール転送の途中で認証情報を保持するための仕組みを提供します。
メールの各中間ホストがメールの認証状態を記録し、その情報をヘッダーに追加することで機能します。
具体的には、メールが送信元から受信者に転送される際に、中間ホストは自身の認証情報をARCヘッダーに追加します。
これにより、メールが途中で改ざんされていないことを確認し、受信者がメールの信頼性を評価する際に役立ちます。
せっかく SPF や DKIM などを設定していても、中間サーバにより認証情報が失なわれてしまうということになります。
ML を利用している場合、 DKIM で Subject に署名しても、「ML: 連番」のような余計なものが追加されてしまうと認証情報が失なわれてしまいます。
そこで特に複数の中間サーバを経由する場合や、メールが転送される途中で認証情報が失われないように、中間ホストは自身の認証情報を ヘッダに追加して保持するのが ARC となります。
設定方法
今までと違って、 DNS や Web サーバどうこうなる話ではないです。
ARC ヘッダを付与するのは送信メールサーバなので、自前で送信メールサーバを立てるか、利用しているサービスが対応してかしか対応方法はありません。
openarc インストール
冒頭にも挙げたように、 Rockey Linux 8 などでは EPEL リポジトリから dnf で簡単にインストールできるようですが、 Rockey 環境は持ってないですね。
Ubuntu 22.04 環境で何とかします。
前提パッケージインストール
ビルドに必要なパッケージをインストールします。
sudo apt update
sudo apt install build-essential git make automake pkg-config libtool m4 libbsd-dev libssl-dev libmilter-dev
git clone
ソースコードを pull
cd /usr/loca/src
git clone 'https://github.com/trusteddomainproject/OpenARC.git'
ビルド
ソースコードから build
cd OpenARC
./configure
make -j$(($(grep cpu.cores /proc/cpuinfo | sort -u | sed 's/[^0-9]//g') + 1))
sudo make install
cd contrib/systemd
make
sudo make install
openarc.conf 編集
OpenARC の conf ファイルを作成
sudo vim /usr/local/etc/openarc.conf
内容
AuthservID [ドメイン名]
Domain [ドメイン名]
KeyFile /etc/opendkim/keys/[ドメイン名]/[DKIM 署名のセレクタ].private
Selector [DKIM 署名のセレクタ]
SignHeaders Date,From,To,Subject,Date,Message-Id,DKIM-Signature
Canonicalization relaxed/relaxed
Mode s
# 受信メールサーバとしても利用したい場合は以下
Mode sv
Socket inet:8892@localhost
# OpenARC ヘッダは消す
SoftwareHeader no
Syslog Yes
# opendkim ユーザを流用
UserID opendkim
AutoRestart yes
PidFile /var/run/opendkim/openarc.pid
自動起動設定
# 設定ファイルのチェック
openarc -n
# 起動、自動起動オン、確認
sudo systemctl daemon-reload
sudo systemctl start openarc
sudo systemctl enable openarc
sudo systemctl status openarc
Postfix 連携
milter が使えれば何でもいいですが、需要が高いであろう Postfix の設定例です。
sudo vim /etc/postfix/main.cf
OpenARC の inet:127.0.0.1:8892 を追記。
環境により DKIM や DMARC が設定されていると思うので、順番に注意。
milter は記載順に実行されます。
# milter
milter_default_action = accept
non_smtpd_milters = $smtpd_milters
# milters
smtpd_milters = inet:127.0.0.1:8891,inet:127.0.0.1:8893,inet:127.0.0.1:8892
テストメール受信
ARC ヘッダが追加されるかテストメールを送信して確認します。
MUA は何でもいいですが、手っ取り早く mail コマンドで。
mail -s "SMTP Test" -r [FROMメールアドレス] [TOメールアドレス] <<< "ARC Test"
受信確認
BIMI のように視覚的にわかるようなものではないので、古典的なメールヘッダ確認。



ちゃんと ARC ヘッダの表示がありますね。
こうなっていれば問題ないです。
強々な送信メールサーバができました。
まとめ
いかがだったでしょうか。
実は Gmail の送信者ガイドラインには ARC に関する記載もあります。
ARC は、転送されたメールの以前の認証ステータスを確認します。転送されたメールが SPF または DKIM による認証に合格しても、ARC で以前に認証に失敗したと表示される場合、そのメールは Gmail で未認証として扱われます。
送信者は、メールを定期的に転送する場合は特に、ARC 認証を使用することが推奨されます。詳しくは、ARC 認証についての記事をご覧ください。
メール送信者のガイドライン – Google Workspace 管理者ヘルプ
ML を運用していたり、メール転送を利用している場合は必須になりそうですね。
かくいう私は、 ML を運営しているわけでもないし、メールを転送することもないのですが、勢いで対応してみました。
コメント