ARC (Authenticated Received Chain)の導入

あわせて読みたい
「Google社・米国Yahoo社が2024年2月よりメール受信の厳格化」に対応するためのまとめ 【SPF、DKIM、DMA... 迷惑メールや不正行為の対応するための手段として、SPF、DKIM、DMARC等の技術が使われてきました。今までは、比較的容易に対応可能なSPFだけ対応していれば問題なく利用...

ARC (Authenticated Received Chain) とは、電子メールの認証結果を伝搬させるために設計された技術です。具体的には、DMARC や DKIM といった認証方法で得られた結果を、メールの転送過程で維持する目的で開発されました。

メールが配信される際、複数のサーバーを経由して宛先に届きます。このプロセスでは、一部のアクション(例えばリストサーバーやメール転送エージェントなど)が電子メールのコンテンツやヘッダーを変更し、これによって認証が失敗することがあります。

ARC の主な目的は、前述の認証メカニズムで行われたチェックの結果を保持し、メールが他のサーバーに渡されるたびにその情報を追加することです。最終的な受信者のサーバーは、それらの ARC 情報を検証して、メールが途中で改ざんされていないことを確認できます。

これにより、正当なメールが転送やリストサーバーの仲介によって認証に失敗するリスクを減らすことができ、電子メールの信頼性とセキュリティを向上させます。

目次

前提条件

すでに、Postfix, DKIM, DMARC が導入済みという前提です。
AlmaLinux9.2の環境で検証しています。

あわせて読みたい
Postfix, PostfixAdmin, Dovecot の導入 (MariaDB連携, SMTP-Auth, Sieve) https://int-design.jp/content/spf-dkim-dmarc-arc-gmail/ Postfixは、オープンソースの高速かつセキュアなSMTPサーバーです。主にメールの送信機能(MTA:Mail Transf...
あわせて読みたい
DKIM (DomainKeys Identified Mail) の導入 + 転送メール強制DKIM再署名の実験 https://int-design.jp/content/spf-dkim-dmarc-arc-gmail/ DKIM (DomainKeys Identified Mail) は、電子メールの送信者がメールの内容を改ざんされないよう保護し...
あわせて読みたい
DMARC の導入 https://int-design.jp/content/spf-dkim-dmarc-arc-gmail/ DMARC(Domain-based Message Authentication, Reporting & Conformance) は、電子メールのセキュ...

 OpenARC の導入

必要なパッケージをインストールします。

sudo yum -y install epel-release
sudo yum -y install openarc 

OpenARC の設定

OpenARC の設定ファイルを作成します。

sudo vi /etc/openarc.conf

設定例

PidFile /var/run/openarc/openarc.pid
Socket  inet:8892@localhost
Mode     sv

AuthservID example.net
Selector   default
Domain     example.net
KeyFile /etc/openarc/keys/example.net/default.private
#

SignHeaders to,subject,message-id,date,from,mime-version,dkim-signature
PeerList /etc/openarc/PeerList
MilterDebug 6
EnableCoredumps yes

設定ファイルを保存し、example.net と Selector の値を適切なものに置き換えてください。

次に、秘密鍵を作成します。

mkdir /etc/ssl/private/
openssl genrsa -out /etc/ssl/private/arc.key.pem 2048

Postfix の設定

Postfix に OpenARC を連携させます。
Postfix の設定ファイル /etc/postfix/main.cf を編集し、以下の設定を追加します。

sudo vi /etc/postfix/main.cf
# OpenDKIM:8891 & OpenDMARC:8893 & OpenARC:8892
milter_protocol = 6
milter_default_action = accept
smtpd_milters = inet:localhost:8891,inet:localhost:8892,inet:localhost:8893
non_smtpd_milters = inet:localhost:8891,inet:localhost:8892,inet:localhost:8893

これにより、メール送信時にローカルホストの 8893 ポートにある OpenARC milter に接続します。

ARC 鍵ペアの用意

鍵ペアは、OpenDKIMで生成したものを使用します。

sudo cp -r /etc/opendkim/keys/ /etc/openarc
sudo chown -R openarc.openarc /etc/openarc/keys

ファイルの所有者とグループを openarc に変更しておきます。

DKIM/ARCレコードをDNSに追加

公開鍵をDNSに追加するため、 以下のレコードを追加します。(<selector> と <your_public_key> は実際の値に置き換えてください)。
すでに、DKIMを導入している場合は、登録されているはずです。

<selector>._domainkey IN TXT "v=DKIM1; k=rsa; p=<your_public_key>"

OpenARCの設定の確認

rootアカウントで1行で実行する場合は、sudosuコマンドを組み合わせて使用します。以下のコマンドで、openarcユーザーとしてopenarc -nを実行できます。

sudo su -s /bin/bash openarc -c "openarc -n"

このコマンドでは、-sオプションを使用して/bin/shシェルを指定し、-cオプションでopenarc -nコマンドを実行しています。

 サービスの起動と有効化

OpenARC サービスを起動し、自動起動設定を有効にします。

4. OpenARC サービスの起動と有効化

sudo systemctl enable openarc
sudo systemctl start openarc

これで ARC 対応のメールサーバーが構築されました。テストメールを送信して、セットアップが正常に完了したことを確認してください。メールヘッダー内に ARC 署名が追加されているはずです。

OpenARCの動作確認

ARC署名が正しく動作しているかどうかを受信したメールヘッダーで確認することができます。メールヘッダには、ARC-Authentication-ResultsARC-Message-Signature, および ARC-Seal といった項目が含まれています。これらの内容を確認することで、ARC署名の動作状況を判断することができます。

以下は、メールヘッダーのサンプルです。

ARC-Authentication-Results: i=1; mx.example.com;
    spf=pass (example.com: domain of example-spf@example.com designates 1.2.3.4 as permitted sender) smtp.mailfrom=example-spf@example.com;
    dkim=pass (1024-bit key; unprotected) header.d=example.com header.i=@example.com header.b="aBcDeFgH";
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=example.com; s=selector;
ARC-Seal: i=1; a=rsa-sha256; s=selector; d=example.com; t=1234567890; cv=none

メールヘッダーで次の項目を確認してください

Authentication-Results

この行が存在し、SPFやDKIMの結果が表示されているか確認してください。
このヘッダーには、ARC(Authenticated Received Chain)の検証結果が含まれています。arc=passが含まれている場合、メールは正常に検証され、送信されました。

Authentication-Results: example.com; arc=pass (example.net)

このヘッダーには以下の検証結果が含まれています。

  • ARC: arc=passとあれば、ARC署名は有効です。
  • DKIMdkim=passとあれば、DKIM署名は有効です。
  • SPFspf=passとあれば、SPFレコードも有効です。
  • DMARCdmarc=passとあれば、DMARCポリシーも遵守されています。

RC-Message-Signature

このヘッダーは、openarcによって生成され、メールの署名情報が含まれています。これはARCチェーンの一部です。
署名されたメールを示すためにこのフィールドが存在していることを確認してください。また、正しいドメイン(d=)とセレクタ(s=)が指定されていることも重要です。

ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=example.net;
s=test; t=1612005887;
h=from:message-id:date:mime-version:dkim-signature:dkim-signature;
bh=aa2cwT1Vd/S5MpJptBktWXfPvxKt9w7Rt6Y3NsFuO4I=;
b=rUcIVlpp+m76IQEHBkbTKucNG1vdbZORpa0lDff21eZpMaAQnqLSE/dz8OiDRPfbkB
acnNwQDYzBnzvhLfauG1MJ0f+rnk4oHlgw6ogonmO+N0bzpojxztv/c9DQLLKFC3NY
MgEgIyRni0fB1xQ8dqn68qGz6fnAyhXsrX2Bq46A=

ARC-Seal

これはARCチェーンをシールするために使用されます。cv=none が表示されていれば、これが最初のARCシグニングエージェントであることを示します。以降のメール転送時に cv=pass が表示されることを期待します。

ARC-Seal: i=1; a=rsa-sha256; t=1686651959; cv=none;

これらの項目がすべて正しく設定されていれば、ARC署名が正常に動作していることがわかります。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次