開発者ドキュメント

DebianWheezyにPostfixを使用してDKIMをインストールおよび設定する方法

序章

スパマーとして誤ってフラグが立てられることへの欲求不満は、ほとんどのメールサーバー管理者にとって奇妙なことではありません。 サーバーが危険にさらされる可能性を排除することにより、通常、次のいずれかによって偽のフラグが発生します。

これらは、プロプライエタリおよびオープンソースのスパムフィルター(SpamAssassinを含む)の大部分によってチェックされている基本的なプロパティの一部です。 これらのテストに合格することは、適切に構成されたメールサーバーにとって非常に重要です。

このチュートリアルでは、DKIM送信者認証システムのオープンソース実装であるOpenDKIM]のインストールと構成に焦点を当てます。

リーダーはSSH経由でサーバーにアクセスする方法を知っていると想定され、PostfixとDovecotはすでにインストールおよび構成されており( tutorial )、ホスト名とFQDNが設定されています( tutorial )。 、 tutorial )であり、SPFレコードが配置されています( tutorial )。

DKIMについて

DKIMは、個人または組織がドメイン名を電子メールメッセージに関連付けることを可能にするインターネット標準です。 これは、事実上、メッセージの責任を主張する方法として機能します。 基本的に、DKIMは非対称暗号化を利用しています。 送信者のメール転送エージェント(MTA)は、すべての送信メッセージに秘密鍵で署名します。 受信者は送信者のDNSレコードから公開鍵を取得し、メッセージの署名が行われてからメッセージ本文と一部のヘッダーフィールドが変更されていないかどうかを確認します。

OpenDKIMをインストールします

インストールを開始する前に、システムアップデートをお勧めします。

sudo apt-get update
sudo apt-get dist-upgrade

OpenDKIMとその依存関係をインストールします。

sudo apt-get install opendkim opendkim-tools

追加のパッケージは依存関係としてリストされ、タイプ yes を押して Enter 続ける。

OpenDKIMを構成する

OpenDKIMを構成するには、いくつかのファイルを作成および編集する必要があります。

Nano は、デフォルトでDigitalOceanドロップレットにインストールされ、操作が簡単なため、エディターとして使用されます。

重要:すべてのコマンドと構成ファイルで、example.comのすべてのインスタンスを独自のドメインに置き換えてください。 編集後にファイルを保存することを忘れないでください。

メインの設定ファイルから始めましょう:

sudo nano /etc/opendkim.conf

confファイルの最後に次の行を追加します(各パラメーターについては以下で説明します)。 オプションで、カスタムポート番号を選択できます Socket. 別のアプリケーションで使用されていないことを確認してください。

AutoRestart             Yes
AutoRestartRate         10/1h
UMask                   002
Syslog                  yes
SyslogSuccess           Yes
LogWhy                  Yes

Canonicalization        relaxed/simple

ExternalIgnoreList      refile:/etc/opendkim/TrustedHosts
InternalHosts           refile:/etc/opendkim/TrustedHosts
KeyTable                refile:/etc/opendkim/KeyTable
SigningTable            refile:/etc/opendkim/SigningTable

Mode                    sv
PidFile                 /var/run/opendkim/opendkim.pid
SignatureAlgorithm      rsa-sha256

UserID                  opendkim:opendkim

Socket                  inet:12301@localhost

この単純な構成は、1つ以上のドメインのメッセージ署名を可能にすることを目的としています。他のオプションについては、こちらにアクセスしてください。

ミルターをPostfixに接続します。

sudo nano /etc/default/opendkim

次の行を追加し、カスタムポート番号を使用する場合にのみポート番号を編集します。

SOCKET="inet:12301@localhost"

このmilterを使用するようにpostfixを設定します:

sudo nano /etc/postfix/main.cf

これらの2行がPostfix設定ファイルに存在し、コメントアウトされていないことを確認してください。

milter_protocol = 2
milter_default_action = accept

フィルタ(SpamAssasin、Clamavなど)がPostfixによってすでに使用されている可能性があります。 次のパラメーターが存在する場合は、opendkimミルターをそれらに追加するだけです(ミルターはコンマで区切られます)。ポート番号は次のパラメーターと同じである必要があります。 opendkim.conf:

smtpd_milters = unix:/spamass/spamass.sock, inet:localhost:12301
non_smtpd_milters = unix:/spamass/spamass.sock, inet:localhost:12301

パラメータが欠落している場合は、次のように定義します。

smtpd_milters = inet:localhost:12301
non_smtpd_milters = inet:localhost:12301

信頼できるホスト、キーテーブル、署名テーブル、および暗号キーを保持するディレクトリ構造を作成します。

sudo mkdir /etc/opendkim
sudo mkdir /etc/opendkim/keys

信頼できるホストを指定します。

sudo nano /etc/opendkim/TrustedHosts

このファイルを使用して両方を定義します ExternalIgnoreListInternalHosts、これらのホスト、ドメイン、およびIPアドレスから発信されたメッセージは信頼され、署名されます。

メインの構成ファイルが宣言しているため TrustedHosts 正規表現ファイルとして(refile)、ワイルドカードパターンを使用できます。 *.example.com これは、ルートドメインから送信されたメッセージだけでなく、example.comのサブドメインからのメッセージも信頼されることを意味します。

新しく作成したファイルをカスタマイズして、次の行を追加します。 複数のドメインを指定できます。最初の3行は編集しないでください。

127.0.0.1
localhost
192.168.0.1/24

*.example.com

#*.example.net
#*.example.org

キーテーブルを作成します。

sudo nano /etc/opendkim/KeyTable

鍵テーブルには、各セレクター/ドメインのペアとそれらの秘密鍵へのパスが含まれています。 この例では、任意の英数字の文字列をセレクターとして使用できます。 mail が使用され、変更する必要はありません。

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

#mail._domainkey.example.net example.net:mail:/etc/opendkim/keys/example.net/mail.private
#mail._domainkey.example.org example.org:mail:/etc/opendkim/keys/example.org/mail.private

署名テーブルを作成します。

sudo nano /etc/opendkim/SigningTable

このファイルは、ドメイン/メールアドレスとそのセレクターを宣言するために使用されます。

*@example.com mail._domainkey.example.com

#*@example.net mail._domainkey.example.net
#*@example.org mail._domainkey.example.org

公開鍵と秘密鍵を生成する

キーディレクトリに移動します。

cd /etc/opendkim/keys

ドメインがキーを保持するための別のフォルダを作成します。

sudo mkdir example.com
cd example.com

キーを生成します。

sudo opendkim-genkey -s mail -d example.com

-s セレクターを指定し、 -d ドメインの場合、このコマンドは2つのファイルを作成します。 mail.private 私たちの秘密鍵であり、 mail.txt 公開鍵が含まれています。

秘密鍵の所有者をに変更します opendkim:

sudo chown opendkim:opendkim mail.private

ドメインのDNSレコードに公開鍵を追加します

開ける mail.txt:

sudo nano -$ mail.txt

公開鍵は、 p パラメータ。 以下のサンプルキーは使用しないでください。これは単なる説明であり、サーバーでは機能しません。

mail._domainkey IN TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC5N3lnvvrYgPCRSoqn+awTpE+iGYcKBPpo8HHbcFfCIIV10Hwo4PhCoGZSaKVHOjDm4yefKXhQjM7iKzEPuBatE7O47hAx1CJpNuIdLxhILSbEmbMxJrJAG0HZVn8z6EAoOHZNaPHmK2h4UUrjOG8zA5BHfzJf7tGwI+K619fFUwIDAQAB" ; ----- DKIM key mail for example.com

そのキーをコピーして、ドメインのDNSエントリにTXTレコードを追加します。

Name: mail._domainkey.example.com.

Text: "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC5N3lnvvrYgPCRSoqn+awTpE+iGYcKBPpo8HHbcFfCIIV10Hwo4PhCoGZSaKVHOjDm4yefKXhQjM7iKzEPuBatE7O47hAx1CJpNuIdLxhILSbEmbMxJrJAG0HZVn8z6EAoOHZNaPHmK2h4UUrjOG8zA5BHfzJf7tGwI+K619fFUwIDAQAB"

DNSの変更が反映されるまでに数時間かかる場合があることに注意してください。

PostfixとOpenDKIMを再起動します:

sudo service postfix restart
sudo service opendkim restart

おめでとう! メールサーバーのDKIMが正常に構成されました。

空の電子メールをに送信することにより、構成をテストできます。 check-auth@verifier.port25.com 返信が届きます。 すべてが正しく機能する場合は、 DKIM check: passSummary of Results.

==========================================================
Summary of Results
==========================================================
SPF check:          pass
DomainKeys check:   neutral
DKIM check:         pass
Sender-ID check:    pass
SpamAssassin check: ham

または、管理しているGmailアドレスにメッセージを送信し、Gmailの受信トレイで受信したメールのヘッダーを表示することもできます。 dkim=pass に存在する必要があります Authentication-Results ヘッダーフィールド。

Authentication-Results: mx.google.com;
       spf=pass (google.com: domain of contact@example.com designates --- as permitted sender) smtp.mail=contact@example.com;
       dkim=pass header.i=@example.com;
提出者:P。 セバスチャン
モバイルバージョンを終了