メール設定 · 1 min read · Oct 14, 2025

CentOSでPostfixとOpenDKIMを使用してDKIM(DomainKeys Identified Mail)を設定する

CentOSでPostfixとOpenDKIMを使用してDKIM(DomainKeys Identified Mail)を設定する

Version 1.0
Author: Eladio Martinez < [email protected] >
http://twitter.com/mafecsllc

このチュートリアルでは、OpenDKIMを使用してPostfixを実行しているCentOSボックスでDKIMを動作させる方法を示します。また、いくつかの簡単なトラブルシューティングのヒントと、OpenDKIMインストールの将来のアップグレードに関するアドバイスもカバーします。

1 要件

このチュートリアルでは、以下のサービスを実行している完全に機能するCentOSインストールがあることを前提としています:

  • Postfix 2.3.3以上が現在動作していること。
  • Sendmailはオフになっていること。

2 前提条件

このチュートリアルのすべてのステップは、root権限で実行しています。現在、CentOS 6.3をOpenDKIMバージョン2.4.2で実行しており、このチュートリアルの主なドメインとしてexample.comを使用します。

3 OpenDKIMのダウンロードとインストール

OpenDKIMを動作させるために必要な「ライブラリ」を含むOpenSSLおよびSendmail開発パッケージもインストールする必要があります。

yum install sendmail-devel openssl-devel

OpenDKIMを/usr/local/srcディレクトリにダウンロードします:

cd /usr/local/src
wget http://sourceforge.net/projects/opendkim/files/opendkim-2.4.2.tar.gz

OpenDKIMを抽出、構成、コンパイル、インストールします:

tar zxvf opendkim-2.4.2.tar.gz
cd opendkim-2.4.2
./configure –sysconfdir=/etc –prefix=/usr/local –localstatedir=/var
make
make install

./configureコマンドには、構成コマンドが実行されるときに作成される起動スクリプトに渡されるいくつかの非常に重要なフラグが含まれています。最初のフラグはOpenDKIMのconfファイルの場所をシステムに指示し、2番目のフラグは他の重要なファイルの場所のための好ましいプレフィックスを設定し、最後のフラグはOpenDKIMのPIDファイルが保存されるディレクトリを制御します。

4 新しいユーザーの作成

DKIM用の新しいユーザーopendkimを次のオプションで追加します:

useradd -r -U -s /sbin/nologin opendkim

このコマンドは、新しいシステムアカウント(-r)とグループ(-g)opendkimを作成し、このユーザーにシェルアクセスを割り当てません(-s)。

5 作業ディレクトリの作成

OpenDKIM用の新しいディレクトリを作成し、適切な所有権と権限を付与します:

mkdir -p /etc/opendkim/keys
chown -R opendkim:opendkim /etc/opendkim
chmod -R go-wrx /etc/opendkim/keys

6 /etc/init.d/に起動スクリプトをコピー

OpenDKIMのソースパッケージには、FedoraやCentOSを含むすべてのRedHat互換システムで使用するためのカスタムinitスクリプトを含むcontribディレクトリがあります。これを/etc/init.d/ディレクトリにコピーして、OpenDKIMの起動、停止、再起動、再読み込みを簡単にします:

cp /usr/local/src/opendkim-2.4.2/contrib/init/redhat/opendkim /etc/init.d/

次に、initスクリプトの正しい権限を設定します:

chmod 755 /etc/init.d/opendkim

7 署名用のキーを生成

メールに署名するために、各ドメイン用にプライベートキーとパブリックキーを生成する必要があります。プライベートキーはサーバーに保存され、パブリックキーは受信メールサーバーがDKIM署名付きメールを検証できるように、ドメインのDNSレコードに公開されます。

今、セレクターの名前を決定する必要があります。セレクターは、両方のキー(公開およびプライベート)に関連付けられ、すべての署名に含まれ、DNSレコードに公開されるユニークなキーワードです。簡単のために、私はデフォルトセレクターとしてdefaultという言葉を使用します。異なる名前を選んでも構いませんが、その場合は設定全体で一貫して使用する必要があります。また、言うまでもなく、以下の手順ではexample.comの代わりに自分のメールドメインを使用する必要があります。

キーを作成します:

mkdir /etc/opendkim/keys/example.com
/usr/local/bin/opendkim-genkey -D /etc/opendkim/keys/example.com/ -d example.com -s default
chown -R opendkim:opendkim /etc/opendkim/keys/example.com
mv /etc/opendkim/keys/example.com/default.private /etc/opendkim/keys/example.com/default

この例では、-D(ディレクトリ)オプション、-d(ドメイン)オプション、および-s(セレクター)オプションを使用しました。これで進めるために必要なすべてです。

8 設定ファイルの編集

4つのファイルを作成または編集する必要があります:

  • 1 /etc/opendkim.conf –- OpenDKIMのメイン設定ファイル
  • 2 /etc/opendkim/KeyTable –- 署名用のキーのリスト
  • 3 /etc/opendkim/SigningTable – 署名を許可されたドメインとアカウントのリスト
  • 4 /etc/opendkim/TrustedHosts –- 署名または検証時に「信頼」するサーバーのリスト

ファイル/etc/opendkim.confを作成します:

vi /etc/opendkim.conf

ファイルが次のようになっていることを確認します:

##
## opendkim.conf -- OpenDKIMフィルターの設定ファイル
##
AutoRestart             Yes
AutoRestartRate         10/1h
Canonicalization        relaxed/simple
ExternalIgnoreList      refile:/etc/opendkim/TrustedHosts
InternalHosts           refile:/etc/opendkim/TrustedHosts
KeyTable                refile:/etc/opendkim/KeyTable
LogWhy                  Yes
Mode                    sv
PidFile                 /var/run/opendkim/opendkim.pid
SignatureAlgorithm      rsa-sha256
SigningTable            refile:/etc/opendkim/SigningTable
Socket                  inet:8891@localhost
Syslog                  Yes
SyslogSuccess           Yes
TemporaryDirectory      /var/tmp
UMask                   022
UserID                  opendkim:opendkim

ファイル/etc/opendkim/KeyTableを作成します:

vi /etc/opendkim/KeyTable

ファイルが次のようになっていることを確認します:

default._domainkey.example.com example.com:default:/etc/opendkim/keys/example.com/default

KeyTableファイルはOpenDKIMにキーの場所を指示します。KeyTableファイルの各エントリは、各キーの場所のための単一行です(たとえば、上記の例のすべてのテキストはファイル内の単一行にする必要があります)。複数のキーを使用する場合(異なるキーで仮想ドメインのメールに署名するため)、KeyTableファイルに各ドメインのための別の行を作成する必要があります。

ファイル/etc/opendkim/SigningTableを作成します:

vi /etc/opendkim/SigningTable

ファイルが次のようになっていることを確認します:

*@example.com default._domainkey.example.com

SigningTableファイルはOpenDKIMにキーの使用方法を指示します。上記の例では、サーバー「example.com」からメールを送信するすべての人()が「default」という名前のセレクターを使用するべきであると述べています。重要な点は、ワイルドカードシンボルは、SigningTableオプションがファイル名の前にrefile:プレフィックスを使用する場合にのみ機能することです。

ファイル/etc/opendkim/TrustedHostsを作成します:

vi /etc/opendkim/TrustedHosts

ファイルが次のようになっていることを確認します:

127.0.0.1
hostname1.example1.com
example1.com
hostname1.example2.com
example2.com

TrustedHostsファイルはOpenDKIMにキーを使用することを許可する相手を指示します。これは、confファイル内のExternalIgnoreListディレクティブによって参照されるため、OpenDKIMは受信メールを検証する際にこのホストのリストを無視します。また、InternalHostsディレクティブによっても参照されるため、この同じホストのリストは「内部」と見なされ、OpenDKIMはその送信メールに署名します。

重要:TrustedHostsファイルにlocalhost(127.0.0.1)のIPアドレスをリストすることを確認してください。そうしないと、OpenDKIMはこのサーバーから送信されたメールに署名しません。このサーバーを通じてメールを中継する同じネットワーク上に複数のサーバーがあり、それらのメールにも署名したい場合は、TrustedHostsファイルにリストする必要があります。各エントリは独自の行に配置してください。エントリはホスト名、ドメイン名(例:「example.com」)、IPアドレス、IPv6アドレス(IPv4マッピングアドレスを含む)、またはCIDRスタイルのIP仕様(例:「192.168.1.0/24」)であることができます。

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。