PR

Ubuntu Server 22.04 LTS に OpenARC をインストール

stamping セキュリティ
この記事は約7分で読めます。

※ この記事は 2024/03/26 に投稿され、 2024/03/26 に内容が更新されています

ARC (Authenticated Received Chain) とは

規格

ARC は、RFC 8617 で定義されている、メール転送パスを保護規格となります。

伝統的なメールの転送では、メールが中間サーバを経由すると、SPF や DKIM などの認証情報が失われてしまうことがあります。
ARCは、この問題を解決するため、メール転送の途中で認証情報を保持するための仕組みを提供します。
メールの各中間ホストがメールの認証状態を記録し、その情報をヘッダーに追加することで機能します。

具体的には、メールが送信元から受信者に転送される際に、中間ホストは自身の認証情報をARCヘッダーに追加します。
これにより、メールが途中で改ざんされていないことを確認し、受信者がメールの信頼性を評価する際に役立ちます。

MTA 間でのメール転送で認証情報が失なわれる典型的な例

  1. hoge@smtp.exsample.com から fuga@mail.exsample.com へメールを送信する
    • この時 smtp.exsample.com の SPF 認証は Pass している
  2. mail.exsample.com がメールを受信する
    • fuga@mail.exsample.com は foo@mx.exsample.jp に転送するように設定されているとする
    • この時 FROM が fuga@mail.exsample.com となり、 smtp.exsample.com のメールサーバ IP アドレスではないので SPF 認証を Pass できない場合がある
  3. mx.exsample.com は mail.exsample.com から転送されたメールが、 SPF を Pass していないので、不正なメールとみなして受信拒否する場合がある

せっかく SPF や DKIM などを設定していても、中間サーバにより認証情報が失なわれてしまうということになります。
ML を利用している場合、 DKIM で Subject に署名しても、「ML: 連番」のような余計なものが追加されてしまうと認証情報が失なわれてしまいます。

そこで特に複数の中間サーバを経由する場合や、メールが転送される途中で認証情報が失われないように、中間ホストは自身の認証情報を ヘッダに追加して保持するのが ARC となります。

設定方法

今までと違って、 DNS や Web サーバどうこうなる話ではないです。
ARC ヘッダを付与するのは送信メールサーバなので、自前で送信メールサーバを立てるか、利用しているサービスが対応してかしか対応方法はありません

  1. oprenarc のインストール
  2. openarc の設定
  3. 署名の設定 ※ DKIM 署名の流用化
  4. 自動起動設定
  5. テストメール送信

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-1
arc-2
arc-3

ちゃんと ARC ヘッダの表示がありますね。
こうなっていれば問題ないです。

強々な送信メールサーバができました。

まとめ

いかがだったでしょうか。
実は Gmail の送信者ガイドラインには ARC に関する記載もあります。

ARC は、転送されたメールの以前の認証ステータスを確認します。転送されたメールが SPF または DKIM による認証に合格しても、ARC で以前に認証に失敗したと表示される場合、そのメールは Gmail で未認証として扱われます。

送信者は、メールを定期的に転送する場合は特に、ARC 認証を使用することが推奨されます。詳しくは、ARC 認証についての記事をご覧ください。

メール送信者のガイドライン – Google Workspace 管理者ヘルプ

ML を運用していたり、メール転送を利用している場合は必須になりそうですね。

かくいう私は、 ML を運営しているわけでもないし、メールを転送することもないのですが、勢いで対応してみました。

コメント