2026年にPostfixのDKIMを設定する方法(OpenDKIMとRspamd)

最終更新日:
13 読了時間:13分
2026年にPostfixのDKIMを設定する方法(OpenDKIMとRspamd)

主なポイント

  • PostfixにはDKIM署名機能が組み込まれていないため、サーバーから送信される前にすべての送信メッセージに署名を行うミルター(OpenDKIMまたはRspamd)を接続します。
  • OpenDKIMは署名機能としては依然として動作しますが、近年はアップストリームでの活動が乏しくなっています。現在のディストリビューションでのサポート状況を確認できる、単純な単一ドメインの環境ではOpenDKIMを選択し、マルチドメイン環境や本番環境のメールではRspamdを優先してください。
  • 最低でも2048ビットのRSA鍵を使用してください。1024ビットの鍵はRFC 8301により非推奨となっています。MTA/milterとDNSプロバイダの双方がEd25519をサポートしている場合は、Ed25519を優先してください。
  • 「署名なし」エラーのほとんどは、ソケットや権限の不一致に起因しています。Postfix が smtpd を chroot 環境で実行している場合(一部の Debian/Ubuntu パッケージでは一般的です)、OpenDKIM のソケットを Postfix のスプールディレクトリ内に配置し、postfix ユーザーがそれにアクセスできるようにしてください(例:postfix ユーザーを opendkim グループに追加するなど)。
  • DKIMの検証に合格するだけでは不十分です。DMARCでは整合性が求められるため、署名ドメインは「From:」ヘッダーと一致している必要があり、鍵は少なくとも年に1回は更新する必要があります。

Postfix の DKIM とは、送信メールに添付される暗号署名のことで、これにより受信サーバーは、そのメッセージが実際にあなたのドメインから送信されたものであり、転送中に改ざんされていないことを確認できます。 

Postfixはこれ自体ではこの処理を行いません。サーバーから送信されるすべてのメッセージに署名を行う「milter」(メールフィルター)を組み込む必要があります。

このガイドでは、2026年におけるPostfixのDKIM設定を最初から最後まで解説します。ミルターの選択や最新の鍵の生成から、Postfixへの組み込み、そして鍵がセキュリティ上のリスクとなる前にローテーションを行う方法までを網羅しています。

OpenDKIM 対 Rspamd:2026年にはどちらを使うべきか?

メッセージに署名を行うには、まず署名を行うミルターを選択する必要があります。2026年現在、PostfixでのDKIM運用において、OpenDKIMとRspamdが最も一般的な選択肢となっています。

どちらも送信メールを正しく認証します。ただし、実行するためにユーザーに求められる作業量や、今後どれほど安心して頼れるかという点では違いがあります。

基準OpenDKIMRspamd
保守状況アップストリームでの活動は乏しい。最新の安定版リリースは 2.10.3(2015年5月)。2.11.0 ブランチはベータ版である。Debian testing では、libmemcached の依存関係に関するバグのため、自動削除対象(2026年6月)としてマークされている。積極的に開発が進められ、頻繁にリリースされている
その機能DKIMの署名・検証のみDKIM署名と包括的なスパムフィルタリング
セットアップの複雑さシンプルで、単一の目的を持つフロント部分に可動部品が増えた
Postfixとの連携ミルター(ソケット)Milter(プロキシソケット)
Web UIなし組み込み型ダッシュボード

OpenDKIMはメールに正しく署名を行っており、現在、数百万台のサーバーがこれに依存しています。しかし、これを基盤としてシステムを構築する前に、そのメンテナンスに関するリスクを慎重に検討する必要があります。 

アップストリームでの最新の安定版リリースは、2015年5月12日の2.10.3でした。Ed25519のサポートを追加した2.11.0ブランチは、ベータ版から脱却することはありませんでした。 OpenDKIMは依然として確実にメールに署名を行っており、主要なディストリビューションにもパッケージとして含まれていますが、Debian testingでは、libmemcachedとの推移的依存関係の問題(アップストリームによる開発中止そのものではありません)を理由に、バージョン2.11.0~beta2を自動削除対象として指定しています(現在の予定では2026年6月)。OpenDKIMを長期的な本番環境での使用に導入する前に、お使いのディストリビューションにおける現在のパッケージの状態を確認してください。

今日から運用することは可能ですが、その基盤となっているソフトウェアのアップストリームでは、ここ10年間安定版がリリースされていません。この点を、長期的なリスクとして慎重に検討する必要があります。 

Rspamd は、現在も活発にメンテナンスされている代替ツールです。DKIM の署名を行い、単一のミルターからスパムをフィルタリングするため、受信側の保護も必要であれば、2つのサービスではなく1つのサービスだけで済みます。 Postfixは、Rspamdと組み合わせて使用される最も一般的なMTAです であり、Mailcow のようなスタックでは、DKIM 署名に OpenDKIM ではなく Postfix に依存しています。 

選び方は以下の通りです:

  • OpenDKIM を選択してください 単一のドメインを運用しており、DKIM署名のみを行い、それ以外の設定は一切行わないという、可能な限りシンプルな設定を希望する場合。
  • Rspamd を選択する 複数のドメインを管理している場合、本番環境のメールを送信する場合、またはMailcowやiRedMailのようなスタック上で構築している場合は、Rspamdを選択してください。

いずれにせよ、以下の説明では両方の方法について解説しています。ご自身で選んだ方法の項目までスキップしてください。

おすすめ記事: DKIMとは?

開始前の準備事項

鍵を生成したり、設定ファイルを編集したりする前に、以下の4つの事項がすでに整っていることを確認してください 

  • すでにメールを送信できる状態のPostfix環境: DKIMはサーバーが送信するメールに署名を行うため、まずサーバーが正常にメールを送信できている必要があります。Postfixがまだ設定されていない場合は、先にその設定を済ませてから、次の手順に進んでください。
  • ドメインのDNSアクセス: AレコードとMXレコードはすでに公開されているはずですが、公開鍵を格納する場所となるため、TXTレコードを追加できる必要があります。
  • メールサーバーでのrootまたはsudoアクセス権: システム設定ファイルの編集やサービスの再起動を行うことになります。
  • 長いTXTレコードを受け付けるDNSプロバイダー: 2048ビットの鍵は、1つのTXT文字列の制限である255文字を超えるため、一部のプロバイダーでは、引用符で囲んだ2つの文字列に分割するよう求められます。鍵を生成する前に、ご利用のプロバイダーがこれに対応しているか確認してください。

まず、鍵の長さを選択してください。2048ビットのRSA、あるいはMTA/milterとDNSプロバイダーの両方が対応している場合はEd25519を選択してください。ただし、1024ビットは絶対に使用しないでください。 RFC 8301ではSHA-1の使用が禁止されており(rsa-sha1は「MUST NOT」)、2048ビットRSAが「SHOULD」レベルの最低基準として推奨されていますが、プロトコルの最低要件としては1024ビットが維持されています(少なくとも1024ビットを「MUST」使用)。鍵の強度が低いと、受信者があなたのメールを信用できなくなる理由となります。

OpenDKIM を使用して Postfix の DKIM を設定する方法

OpenDKIMは、単一ドメインのPostfixサーバーにDKIM署名を追加する最も直接的な方法です。デーモンは1つ、鍵も1つで済み、余計な構成要素は一切必要ありません。以下の5つの手順に従うことで、署名のないメールを送信していたサーバーを、受信側が検証可能な鍵を使ってすべての送信メッセージに署名を行うサーバーへと変更できます。各手順は前の手順を基盤としているため、順番通りに実行してください。 

手順 1: OpenDKIM をインストールする

2つのパッケージをインストールします: opendkim (署名デーモン本体)と opendkim-tools (鍵の生成に使用するユーティリティ)の2つのパッケージをインストールしてください。

Ubuntu 24.04 / Debian 12:

bash

sudo apt update

sudo apt install opendkim opendkim-tools

RHEL / Rocky 9(OpenDKIM は EPEL リポジトリに含まれています):

bash

sudo dnf install epel-release

sudo dnf install opendkim opendkim-tools

起動時にサービスが開始されるように設定します:

bash

sudo systemctl enable opendkim

注: ディストリビューションによっては 、サービス名やユーザー/グループ名が異なる場合があります(例:opendkim 対 opendkim-daemon、opendkim:opendkim 対 opendkim:postfix)。コマンドが一致しない場合は、パッケージのドキュメントや systemd ユニットを確認してください。

ステップ 2: DKIM 鍵ペアを生成する

ドメインの鍵を格納するディレクトリを作成し、2048ビットの鍵ペアを生成します:

bash

sudo mkdir -p /etc/opendkim/keys/example.com

sudo opendkim-genkey -b 2048 -d example.com -s selector2026 \

  -D /etc/opendkim/keys/example.com/

各フラグの機能:

意味
-b 2048鍵の長さ(ビット単位) - 2048ビットRSA
-d example.com署名対象のドメイン
-s selector2026セレクタ名(以下の注を参照)
-D /etc/opendkim/keys/example.com/出力ファイルの保存先

セレクタについて: the -s 値は、最終的にDNSレコードに反映されるラベルとなります。 selector2026のような年を基にした名前を使用してください。今のところコストはかからず、将来的なローテーションもスムーズに行えます。来年は selector2027 を生成すれば、切り替え期間中も古いレコードは有効なまま維持されます。

このコマンドを実行すると、2つのファイルが生成されます:

ファイル概要規則
selector2026.privateあなたの秘密鍵決して共有しないでください。OpenDKIMのみが読み取れるようにしてください。
selector2026.txtDNS用にフォーマットされた公開鍵ステップ5で公開するのはこれです

それでは、所有権を設定しましょう。ここでの権限設定の誤りは、OpenDKIMによる署名処理が失敗する最も一般的な原因ですので、この手順は絶対に飛ばさないでください:

bash

sudo chown -R opendkim:opendkim /etc/opendkim/keys

sudo chmod 600 /etc/opendkim/keys/example.com/selector2026.private

お使いのディストリビューションで異なる名前が使用されている場合は、ユーザー/グループを調整してください(例:opendkim:postfix)。パッケージのドキュメントまたはsystemdユニットを確認してください。

ステップ 3: OpenDKIM の設定

OpenDKIM は、主な設定を /etc/opendkim.confから読み込み、3つの小さな参照ファイルを用いて、何をどの鍵で署名するかを決定します。まず、中核となるディレクティブを設定します:

Syslogはい
UMask2
モードs
正規化リラックスした/リラックスした
ソケットlocal:/var/spool/postfix/opendkim/opendkim.sock
PidFile/run/opendkim/opendkim.pid
ヘッダーの過剰署名から
KeyTable/etc/opendkim/key.table
署名表refile:/etc/opendkim/signing.table
外部無視リスト/etc/opendkim/trusted.hosts
InternalHosts/etc/opendkim/trusted.hosts

重要な指令の内容:

指令制御対象
モード s署名のみ。受信メールの検証もOpenDKIMに行わせたい場合は、svを使用してください。
正規化の緩和/緩和転送中の些細な空白の変更を許容するため、署名の有効性が維持されます。注:正規化は DMARC の整合性を制御しません。DMARC の整合性は、正規化の設定ではなく、DKIM 署名内の d= ドメインが From: ヘッダーのドメインと一致しているかどうかに依存します。
ソケットOpenDKIMがPostfixの通信を待機する場所です。このパスは、後でPostfixで設定する内容と一致している必要があります。
OversignHeaders 出典:「From」ヘッダーに署名を行うことで、攻撃者が2つ目のヘッダーを追加できないようにします。これはささやかながらも、確実ななりすまし防止策です。
KeyTable / SigningTableドメイン、セレクタ、キーを関連付ける2つのルックアップファイル(以下)。

次に、3つのルックアップファイルを作成します。それぞれのファイルには、1つの役割があります:

ファイル求人例となる行
signing.table送信者をセレクタにマッピングする*@example.com selector2026._domainkey.example.com
key.tableそのセレクタをディスク上の秘密鍵に関連付けるselector2026._domainkey.example.com example.com:selector2026:/etc/opendkim/keys/example.com/selector2026.private
trusted.hosts送信メールに署名が必要となるホストの一覧127.0.0.1 / localhost / ::1 / example.com

ステップ 4: OpenDKIM を Postfix に接続する

多くの場合、セットアップがここで失敗しますが、その原因はほぼ常にソケットにあります。OpenDKIMは、Postfixと通信するためにソケットファイルを作成します。Postfixがchroot環境内でsmtpdを実行している場合(これはDebian/Ubuntuパッケージのデフォルト設定ですが、アップストリームのPostfixやRHEL/Rockyのデフォルト設定ではありません)、smtpdは/var/spool/postfix内に閉じ込められており、そのディレクトリ外のソケットを認識できません。 その結果、両者は接続できず、メールは署名なしのまま送信されてしまいます。

この問題を解決するには、ソケットを Postfixのスプールディレクトリ内に配置し、 postfix ユーザーにそのソケットへのアクセス権限を与えることです。以下の手順を順に実行してください:

1. Postfixのスプール内にソケットディレクトリを作成します:

bash

sudo mkdir -p /var/spool/postfix/opendkim

sudo chown opendkim:postfix /var/spool/postfix/opendkim

お使いのディストリビューションで「opendkim:opendkim」が使用されている場合は、グループを調整してください。

2. 以下の postfix ユーザーを opendkim グループにpostfixユーザーを追加し、 に追加し、ソケットを読み込めるようにします:

bash

sudo gpasswd -a postfix opendkim

3. ランタイムソケットのパスを確認するopendkim.confと一致していることを確認してください。Ubuntu/Debian では、 /etc/default/opendkim (または systemd のオーバーライド)で設定します:

  SOCKET=”local:/var/spool/postfix/opendkim/opendkim.sock”

4. Postfix を milter に向ける/etc/postfix/main.cf:

milter_default_action = accept

   milter_protocol = 6

   smtpd_milters = local:opendkim/opendkim.sock

   non_smtpd_milters = $smtpd_milters

これら4つのPostfixディレクティブの意味は次のとおりです:

指令目的
milter_default_action = acceptミルターがダウンしていても、メールは引き続き配信されます。署名者がダウンしても、キューが黙ってブラックホール化されることはありません。
milter_protocol = 6現在の OpenDKIM が使用している milter プロトコルのバージョン。
smtpd_miltersSMTP経由で受信したメール(送信されたメール)に対して、ミルターを適用します。
non_smtpd_miltersSMTP経由で受信されていないメール(例:ローカルで生成されたメールなど)にこれを適用します。

main.cf 内のソケットパス main.cf 内のソケットパスは相対パスであり、 local:opendkim/opendkim.sockであり、完全なファイルシステムパスではありません。これは、Postfixがchroot環境内からこのパスを読み取っているためです。

すべての設定を反映させるには、両方のサービスを再起動してください:

bash

sudo systemctl restart opendkim

sudo systemctl restart postfix

ステップ 5: DKIM DNS TXT レコードを公開する

手順 2 で生成した公開鍵ファイルを開きます:

bash

sudo cat /etc/opendkim/keys/example.com/selector2026.txt

その内容を、ご利用のDNSプロバイダーで新しいレコードとして登録してください:

フィールド価値
レコード名selector2026._domainkey.example.com
タイプTXT
価値括弧内のすべて(v=DKIM1; k=rsa; p=... という文字列)

これは 2048 ビットの鍵であるため、その値は単一の TXT 文字列の制限である 255 文字を超えてしまいます。ほとんどの DNS プロバイダでは自動的に分割されます。お使いのプロバイダで拒否される場合は、公開鍵を 2 つの引用符で囲まれた文字列に分割し、 .txt ファイルには、分割箇所がすでに示されています。

セットアップ時には、TTLを300秒に設定しておくと、万が一ミスがあっても修正の負担が軽くなります。署名が正常に機能することを確認したら、3600に引き上げてください。

ステップ6:送信前に確認する

DNSの反映には時間がかかります。また、2048ビットの鍵を誤って分割してしまうと、ゾーンエディタ上では問題ないように見えても、受信側がそれを読み取った瞬間にエラーが発生してしまいます。 

単一のドメインを超える場合や、本番環境のメール運用を行う場合には、Rspamd の方が優れた選択肢となります。Rspamd は DKIM 署名を行い、 スパムを をフィルタリングするため、2つのサービスを管理する代わりに1つのサービスで済みます。

また、ドメインごとにキーを自動的に検索するため、新しいドメインを追加する際も、一から設定し直す必要はなく、たった1行の変更で済みます。Postfixでの設定手順を、5つのステップに分けて以下に示します。

手順 1: Rspamd をインストールする

ディストリビューションのベースリポジトリにあるバージョンは通常、古くなっているため、Rspamdの公式安定版リポジトリからインストールしてください。

bash

sudo apt install -y lsb-release wget gpg

sudo mkdir -p /etc/apt/keyrings

wget -O- https://rspamd.com/apt-stable/gpg.key | \

  gpg –dearmor | sudo tee /etc/apt/keyrings/rspamd.gpg > /dev/null

echo “deb [signed-by=/etc/apt/keyrings/rspamd.gpg] \

  http://rspamd.com/apt-stable/ $(lsb_release -cs) main” | \

  sudo tee /etc/apt/sources.list.d/rspamd.list

sudo apt update && sudo apt install rspamd

起動時に自動的に実行されるように設定します:

bash

sudo systemctl enable rspamd

リポジトリのURLやGPGキーの設定手順は時折変更されるため、最新のインストール手順については必ずrspamd.comで確認してください。

ステップ 2: DKIM キーを生成する

Rspamd には独自の鍵生成ツール、 rspamadm dkim_keygen を同梱しており、別途ツールパッケージをインストールする必要はありません。このツールは秘密鍵をファイルに書き出し、公開鍵(DNSレコード)を画面に表示します。これを .pub ファイルとして保存します。

bash

sudo mkdir -p /var/lib/rspamd/dkim

sudo rspamadm dkim_keygen -s selector2026 -b 2048 -d example.com \

  -k /var/lib/rspamd/dkim/example.com.selector2026.key | \

  sudo tee /var/lib/rspamd/dkim/example.com.selector2026.pub

sudo chown -R _rspamd:_rspamd /var/lib/rspamd/dkim

お使いのディストリビューションで _rspamd:_rspamd ではなく rspamd:rspamd が使用されている場合は、ユーザー/グループを調整してください。確認するには、パッケージの systemd ユニットを確認してください。
フラグは OpenDKIM のものと共通です: -s セレクタ、 -b 2048 鍵サイズ、 -d ドメイン、 -k 秘密鍵の出力ファイル。最終的に以下の2つのファイルが生成されます:

ファイル概要
example.com.selector2026.keyRspamd が使用する秘密署名鍵です。所有者を _rspamd ユーザーのままにしておいてください。
example.com.selector2026.pubDNS用にフォーマットされた公開鍵は、ステップ5で公開します。

ステップ 3: DKIM 署名を有効にする

Rspamd は、その dkim_signing モジュールを通じてDKIMを処理します。これを有効にし、鍵が保存されている場所を /etc/rspamd/local.d/dkim_signing.confにキーの保存場所を指定します: 

selector = “selector2026”;

path = “/var/lib/rspamd/dkim/$domain.$selector.key”;

allow_username_mismatch = true;

use_domain = “header”;

各設定の機能:

設定制御対象
セレクタセレクタ名は、キーのファイル名およびDNSレコードと一致している必要があります
パスRspamd が秘密鍵を検出する場所。$domain および $selector は自動的に入力されます。
allow_username_mismatch認証されたユーザー名が「From」ドメインと一致しない場合でも署名される
use_domain = "header"メッセージの「From」ヘッダーから署名ドメインを取得します

それ パス 行こそが、Rspamdを複数のドメインに対応させる強みとなっています。これは $domain および $selectorをファイル名で解決するため、別のドメインを追加する際は、そのキーを同じフォルダに配置するだけで済み、新しい設定ブロックや2つ目のデー をファイル名で解決するため、別のドメインを追加する場合、新しい設定ブロックや2つ目のデーモンを用意することなく、同じフォルダにそのドメインのキーを配置するだけで済みます。

ステップ 4: Rspamd を Postfix に接続する

Postfix を、 /etc/postfix/main.cfで、PostfixをRspamdのmilterに向けるように設定します。ディレクティブはOpenDKIMの設定と同一で、ソケットのみが異なります:

milter_default_action = accept

milter_protocol = 6

smtpd_milters = inet:localhost:11332

non_smtpd_milters = $smtpd_milters

Rspamd は、TCP ポート 11332 でリスニングします。これはネットワークソケットであるため、OpenDKIMで問題となる chroot 環境におけるソケット権限の問題を回避できます。2つのミルター間で異なる行は、以下の1行のみです:

ミルターmain.cf 内のソケット行
OpenDKIMsmtpd_milters = local:opendkim/opendkim.sock
Rspamdsmtpd_milters = inet:localhost:11332

ステップ 5: DNS レコードを公開する

公開鍵を開き、OpenDKIMのステップ5とまったく同じレコード名形式で、 TXT タイプ、および2048ビット鍵に対する255文字の分割ルールに従って、公開鍵を開き、公開してください:

bash

sudo cat /var/lib/rspamd/dkim/example.com.selector2026.pub

必要に応じて、 /etc/rspamd/local.d/worker-controller.inc 

これにより、署名やスパムに関する動向をリアルタイムで確認できます。その後、両方のサービスを再起動してください:

bash

sudo systemctl restart rspamd postfix

公開されたレコードを信頼する前に、OpenDKIMの設定後と同じように、DKIMチェッカーで検証してください。

Rspamdは、OpenDKIM および SpamAssassinの両方を置き換えます。これまで別のスパムフィルターを実行していた場合は、ここでそれを廃止することで、サービス数を減らし、設定対象範囲を縮小し、署名とフィルタリングの両方を一元管理できるようになります。

複数のドメインに対するPostfixのDKIM設定

1台のPostfixサーバーで複数のドメインを運用することは一般的ですが、 DKIM は、この点において手抜きをしません。送信元となる各ドメインには、それぞれ独自の鍵ペアとDNSレコードが必要です。これは、各ドメインが個別に認証されるためであり、すべてのドメインを網羅する共通の鍵は存在しないからです。スケーリングの方法は、選択したミルターによって異なります。

OpenDKIM を使用すると、すでに作成済みのテーブルを拡張できます。 新しいドメインごとに鍵を生成し、各ルックアップファイルにそのドメイン用の行を1行追加します。

signing.table:

*@example.com selector2026._domainkey.example.com

*@example.net selector2026._domainkey.example.net

In key.table:

selector2026._domainkey.example.com example.com:selector2026:/etc/opendkim/keys/example.com/selector2026.private

selector2026._domainkey.example.net example.net:selector2026:/etc/opendkim/keys/example.net/selector2026.private

新しいドメインが1つ増えるごとに、キーが1つ、行が2つ増える。手作業ではあるが、予測可能だ。

Rspamd を使えば、その作業はすでに完了しています: 以下の path 設定では $domain 変数を使用しているため、Rspamdはファイル名から各ドメインのキーを自動的に特定します。 example.net.selector2026.key を同じディレクトリに配置するだけで、設定変更なしでそのドメインに対しても署名が行われます。よりきめ細かな制御が必要な場合は、 dkim_signing.confにドメインごとのブロックを追加することも可能です。

マルチドメインの署名作業を管理しやすくするための習慣は2つあります:

  1. すべてのドメインで同じセレクタを使用してください、 selector2026 をどこでも使用することで、ローテーション処理を複数のプロセスではなく1つのプロセスにまとめることができます。 
  2. ドメインごとに個別のDNSレコードを設定してください。1つでも設定を忘れると、そのドメインのメールはローカルでは署名されますが、受信側での検証に失敗してしまいます。

PostfixのDKIM設定をテストおよび検証する方法

メールに署名することと、その署名が正しく行われていることを確認することは、別物です。送信側からはすべて問題ないように見えても、受信側が密かにその署名を拒否している可能性があり、配信に失敗するまでそのことに気づかないでしょう。 

以下の5つの確認手順により、DKIMが実際に機能していることを、自社のログから実際の受信者へと順を追って確認できます。以下の順序に従ってください:

確認事項 1:まずメールログを確認してください

メールログは最も迅速な確認手段であり、ローカルで利用できます。ログをリアルタイムで監視し、テストメッセージを送信して、署名エントリが表示されるのを確認してください:

bash

  sudo tail -f /var/log/mail.log

RHEL/Rocky では、そのファイルは /var/log/maillogにあります。メッセージがあなたのセレクタで署名されたことを示す行を探してください。その行があれば、milterは正常に動作しています。

チェック 2: DNS に対してキーの有効性を検証する (OpenDKIM)

検証の結果、ディスク上の秘密鍵が公開した公開鍵と一致していることが確認されました:

bash

  opendkim-testkey -d example.com -s selector2026 -vvv

key OK は、2つの部分が一致していることを意味します。それ以外の場合は、DNSの入力ミスまたはキーの不一致が考えられます。先に進む前に、これらを修正する必要があります。

確認項目 3:実際のテストを送信する

受信者があなたの署名を受け入れたことを証明できるのは、この確認方法だけです。Gmailアカウントにメールを送信し、メッセージを開いて、「オリジナルを表示」を選択してください。 DKIM:「PASS」 という文字列を探してください。これは、受信サーバーがあなたの署名が検証済みであることを確認していることを意味します。

チェック 4:外部チェッカーを実行する

DKIMチェッカーは、受信サーバーと同じ方法で公開されたレコードを取得・解析し、鍵が有効かつ完全であることを確認します

お試しください PowerDMARCの無料DKIMチェッカー。その後、mail-tester.comにメッセージを送信して、DKIMに加え、SPF、DMARC、スパムシグナルも考慮した、より包括的な配信可能性スコアを確認してください。 

チェック 5:DKIMは合格するがDMARCは不合格となる落とし穴に注意する

署名が完全に検証されていても、DMARCが失敗する場合があります。これは、DMARCにはアラインメントが必要だからです。つまり、DKIMの d= タグ内のドメインが、表示されるFrom:ヘッダー内のドメインと一致している必要があります。 

署名として mail.example.com として署名し、Fromには example.com で送信する場合、relaxedアライメントなら問題ありませんが、strictでは失敗します。DKIMが合格しているにもかかわらずDMARCが失敗する場合は、署名テーブルが正しいドメインに紐付けられているか確認してください。

チェック6:3つすべてを一度に監査する

DKIMチェックに合格すれば、認証の一部が機能していることは確認できますが、配信率やなりすまし対策の成否は、 DKIM、SPF、DMARC が連携して機能しているかどうかにかかっています。 

PowerDMARCの無料 ドメインアナライザー は、これら3つすべてを一度にスキャンし、A~Fのスコアを返します。そのため、1回のスキャンで、ドメインが実際にエンドツーエンドで保護されているのか、それとも部分的にしかカバーされていないのかがわかります。 

「DKIMは通過するがDMARCは失敗する」といった問題に直面した際は、無料の 「Email Header Analyzer」DKIM 判定結果と整合性の結果を並べて表示してくれるため、生のヘッダーを凝視することなく、数秒で不一致の箇所を正確に特定できます。 

Postfix の DKIM キーのローテーション

サーバー上に何年も放置されたままの秘密鍵は、漏洩するリスクが徐々に高まっている鍵です。万が一漏洩した場合、あなたがそれに気づくまで、攻撃者はあなたのドメイン名を使ってメールに署名することが可能になります。

スケジュールに従って、少なくとも年に1回はローテーションを行うことで、その期間を短く抑えることができます。年単位のセレクタを使用することで、切り替えをスムーズに行うことができます。

回転のプロセス:

  1. 新しいセレクタを使用して新しいキーを生成する – selector2027
  2. 新しい公開鍵を新しいDNS TXTレコードとして公開し、古いレコードはそのまま残しておきます。
  3. 新しいセレクタを使用して署名を行うよう、設定を更新してください。
  4. ミルターを再起動し、DNSのTTLが反映されるまで待ちます。
  5. 古いレコードは、TTLおよび送信中のメールの量に応じて、少なくとも前回のTTLに24~48時間を加えた期間(通常は合計48~72時間)は有効にしておいてください。古い鍵で署名され、すでに送信中のメールについては、引き続き検証が必要です。
  6. 古いセレクターを廃止し、そのDNSレコードを削除してください。

手順 5 と 6 の重複する部分は、決して急いではいけない部分です。古いレコードを早すぎるタイミングで削除してしまうと、そのレコードとの照合がまだ進行中のメッセージはすべて検証に失敗してしまいます。これはまさに、DKIM が防ぐべきである「サイレントな認証失敗」そのものです。

OpenDKIMもRspamdも、鍵の生成、DNSへの公開、あるいは鍵の有効期間の重複管理を自動化しません。ドメインが1つの場合は、年に1回のカレンダーリマインダーで済みますが、5つ以上になると、見落としがちな定期的なタスクとなります。そして、気づかないうちに鍵のローテーションが行われないまま放置されると、誰かに証明を求められて初めて気づくようなコンプライアンス上の不備につながります。

PostfixにおけるDKIMのよくあるエラーとその解決方法

PostfixにおけるDKIMの問題は、多くの場合、ソケットの権限、鍵のパス、ドメインの整合性など、いくつかの予測可能な原因に集約されます。以下の表では、発生している症状と、その最も可能性の高い原因および解決策を対にして掲載していますので、ご自身の状況に該当する項目にすぐに目を通すことができます。 

エラー考えられる原因修正
ヘッダーにDKIM署名がないMilterが接続されていないか、ソケットが一致していませんopendkim.conf および main.cf 内のソケットのパスが一致していることを確認してください。また、postfix ユーザーが opendkim グループに所属しているか確認してください。
Milter サービスに接続中... 接続が拒否されましたOpenDKIM デーモンが実行されていませんsystemctl start opendkim; スプールディレクトリにソケットファイルが実際に存在することを確認する
opendkim: 鍵の取得に失敗しましたキーテーブルのパスが間違っているか、権限に問題がありますkey.table 内の .private のパスを確認し、そのキーに対して chown opendkim:opendkim を実行してください。
DKIMは合格したが、DMARCは不合格となった位置合わせのずれ署名ドメイン(d=)は、From: ヘッダーのドメインと一致している必要があります。緩やかな整合性を適用してください。
DNSによって2048ビットの鍵が拒否されたプロバイダーのTXTレコードの文字数制限(255文字)同じTXTレコード内で、公開鍵を2つの引用符で囲まれた文字列に分割する

手動によるPostfix DKIMから移行すべきタイミング

ドメインが1つだけの場合は、Postfixでの自己管理型DKIMが最適な選択肢です。一度設定すれば自動的に機能しますが、送信量が増えるにつれて、その背後にある手作業は、管理手段というよりもむしろリスク要因となってしまいます。 

その段階に達したことを示すいくつかの兆候:

  • 3つ以上のドメインを登録されます。
  • メールは、ESP、トランザクションメール、アプリなど、複数の送信元から送信され、それぞれに独自の鍵が必要です。
  • コンプライアンスの期限が迫っており、ローテーションを1回でも逃すわけにはいきません。
  • DKIMに関する知識はたった1人の人物がすべて把握しており、その人物が退職すれば、その知識も失われてしまう。

もしこうした課題に直面しているなら、 ホスト型DKIM管理 を利用すれば、手動での作業を完全に排除することで、こうした課題を解決できます。手動によるDKIM管理とホスト型DKIM管理の違いは以下の通りです:

タスクマニュアル(OpenDKIM / Rspamd)ホスティングされたDKIM
鍵のローテーション各サイクルごとに手動で:生成、公開、オーバーラップ、廃止自動、サイクルごとのDNS編集は不要
複数のドメインドメインごとにキー、レコード、設定を個別に管理する一元的に管理される
キーサイズ2048ビット(またはEd25519)最大4096ビット
セレクタの管理手動で追跡主要なESPに対応した自動検出機能
DNSのメンテナンス毎回のローテーションで編集される1つのCNAMEを1回公開する

複数のドメインにわたってDKIMを管理している場合や、信頼性の高いコンプライアンス基準を満たすローテーションが必要な場合は、PowerDMARCの「Hosted DKIM」をご利用ください。これにより、手作業による負担と、それに伴うリスクを解消できます。 

15日間の無料トライアルを開始する

よくあるご質問

Postfix DKIM とは何ですか?

Postfix DKIM とは、Postfix サーバー上で送信メールに暗号署名を行う仕組みであり、これにより受信側は、そのメールが変更されることなく送信元のドメインから送信されたものであることを確認できます。Postfix には署名機能が組み込まれていないため、各メッセージを OpenDKIM や Rspamd といったミルターに渡して、そこで署名を追加させます。

OpenDKIMとは何ですか?

OpenDKIMは、Postfixやその他のMTA向けにDKIMの署名および検証を行うスタンドアロンのミルターであり、それ以外の機能は一切備えていません。シンプルで広く導入されていますが、2021年以降、安定版がリリースされていないため、長期的な運用を計画する場合は、そのメンテナンスリスクを十分に考慮してください。

Rspamdとは何ですか?

Rspamdは、活発にメンテナンスされているスパムフィルタリングシステムであり、そのDKIM署名モジュールはPostfixのメールに署名を行うことができます。フィルタリングと署名を1つのミルターで処理するため、OpenDKIMとSpamAssassinの両方に取って代わるものであり、マルチドメイン環境や本番サーバーにおいて、2026年を見据えたより強力な選択肢となります。

Postfixとは何ですか?

Postfixは、Unix系サーバー上で電子メールのルーティングと配信を行う、広く利用されているオープンソースのメール転送エージェント(MTA)です。メールの送受信は行いますが、それ自体ではDKIMの署名を行うことはできず、そのためにはOpenDKIMやRspamdのような別のミルターが必要です。

2026年には、Postfixと組み合わせてOpenDKIMとRspamdのどちらを使うべきでしょうか?

単一ドメインのシンプルな環境であれば、OpenDKIMでも問題なく動作します。複数のドメインや本番環境のサーバーの場合は、Rspamdの方が適しています。Rspamdは活発にメンテナンスされており、DKIM署名とスパムフィルタリングを1つのミルターに統合しています。

送信メールにDKIM署名が行われていることを確認するにはどうすればよいですか?

確認 /var/log/mail.log で署名エントリを確認し、 opendkim-testkeyを実行し、Gmailにテストメールを送信して、生のヘッダーで DKIM: PASSがあるか確認するか、無料のDKIMチェッカーでドメインを検査してください。

CTA