
2011年の終わりに、dkim-milterプロジェクトの開発者はサポートと開発を停止しました 。 幸いなことに、OpenDKIMはdkim-milter プロジェクトを置き換えるようになりました。これにより、電子メールにDKIM署名を簡単に追加できます。
tl; dr:最近では、DKIM署名なし
DKIM署名は、送信者サーバーによってメッセージヘッダーに追加されるデジタル署名です。これにより、受信者サーバーは、メッセージの送信者がメッセージヘッダーのFromフィールドと一致することを確認できます。 受信者のサーバーがこの署名を検証すると、検証結果に基づいて、サーバーはレターの処理方法を決定できます。承認、スパムフォルダーへの送信、追加検証のための送信、または受信の拒否。 DKIM署名は、YandexやMail.ruを含むすべての主要な電子メールサービスによって検証および使用されます。 後者では、DKIMを使用して署名する必要があります。
PostfixおよびOpenDKIMの構成手順
これを行うには、Postfix自体とOpenDKIMパッケージが必要です。 パッケージマネージャーを使用して、必要なすべてのコンポーネントをインストールします。
aptitude install opendkim opendkim-tools
次に、文字の署名に使用するキーを取得する必要があります。
署名用のキー
サーバードメインとセレクターのキーを取得します。これは、ドメインのないサーバーの名前に等しいため、何も思いつかないようにします。
mkdir /etc/opendkim/ opendkim-genkey -D /etc/opendkim/ -d $(hostname -d) -s $(hostname)
これが
mail.example.com
サーバーで発生した場合、最後のコマンドは、それぞれ秘密鍵と公開鍵を使用して
/etc/opendkim/mail.txt
と
/etc/opendkim/mail.txt
を作成し
/etc/opendkim/mail.txt
。 公開キーは 、ドメインの対応するTXTレコードに追加する必要があります。
キーファイルには、OpenDKIMが機能するグループの読み取りアクセス権を付与する必要があります。また、ソケットを介してOpenDKIMデーモンに接続するときに文字に署名できるように、
postfix
自体を同じグループに追加する必要があります。
chgrp opendkim /etc/opendkim/* chmod g+r /etc/opendkim/* gpasswd -a postfix opendkim
キーを探す場所は?
/etc/opendkim.conf
、設定を追加し
/etc/opendkim.conf
。
tee -a /etc/opendkim.conf <<EOF Canonicalization relaxed/relaxed SyslogSuccess yes KeyTable file:/etc/opendkim/keytable SigningTable file:/etc/opendkim/signingtable X-Header yes # : LogWhy yes # : #ExternalIgnoreList file:/etc/opendkim/trusted # , : #InternalHosts file:/etc/opendkim/internal EOF
すべてのディレクティブの詳細な説明については 、ドキュメントを参照してください。
署名するキー
ファイル
/etc/opendkim/keytable
に使用可能なキーを「
::///
」の形式でリストします。 上記のコマンドでキーを作成した場合、次のようにこのファイルにサーバーのFQDNに従ってキーを登録できます。
echo $(hostname -f | sed s/\\./._domainkey./) $(hostname -d):$(hostname):$(ls /etc/opendkim/*.private) | tee -a /etc/opendkim/keytable
mail.example.com
場合、ファイルには次の行が含まれます。
mail._domainkey.example.com example.com:mail:/etc/opendkim/mail.private
このファイルのキーは、任意の数のドメインに対して任意の数にすることができます。 キーはデータベースに保存することもできます-詳細はドキュメントにあります。
署名するメールは誰ですか?
ここで、
/etc/opendkim/signingtable
に、「
-
」の形式で、
/etc/opendkim/signingtable
に署名するキーを含むドメインメールを説明します。
echo $(hostname -d) $(hostname -f | sed s/\\./._domainkey./) | tee -a /etc/opendkim/signingtable
ホスト
mail.example.com
場合、ファイルは
example.com mail._domainkey.example.com
なり
example.com mail._domainkey.example.com
。 すべての送信メールに署名する場合は、ドメインの代わりに
*
を指定できます。
ExternalIgnoreList
および
InternalHosts
ディレクティブで指定された他のファイルには、ホストおよび/またはIPアドレスのリストがそれぞれ新しい行に含まれているだけで、文字の署名は無視または追加されます。 唯一のサーバーがメールを担当している場合は、サーバーで何もする必要はありません。
Postfixを構成する
最後に、Postfixにすべての署名を送信するよう依頼します。
postconf -e milter_default_action=accept postconf -e milter_protocol=2 postconf -e smtpd_milters=unix:/var/run/opendkim/opendkim.sock postconf -e non_smtpd_milters=unix:/var/run/opendkim/opendkim.sock
chrootにPostfixがある場合...
chrootなしでPostfixを使用する場合、設定するために何もする必要はありません。 それ以外の場合は、ほとんどの場合、ソケットを作成し、すべてに適切な権限を付与する場所をOpenDKIMに説明する必要があります。
echo 'SOCKET="local:/var/spool/postfix/var/run/opendkim/opendkim.sock"' | tee -a /etc/default/opendkim mkdir -p /var/spool/postfix/var/run/opendkim chown opendkim:opendkim /var/spool/postfix/var/run/opendkim
できた!
PostfixとOpenDKIMを通常の方法で再起動し、テストレターをYandexに送信し、署名検証の成功結果を楽しみます:

TXTレコードを追加し、それが所定の位置にあることを確認することを忘れないでください。
dig txt mail._domainkey.example.com
署名を検証する別の方法は、
check-auth@verifier.port25.com
電子メールを送信すること
check-auth@verifier.port25.com
。
署名のない手紙を拒否する
検証が成功した場合、 ADSPエントリを追加して、他のサーバーがあなたのドメインの手紙を受け入れることを正式に禁止する価値がありますが、署名はありません:
_adsp._domainkey IN TXT "dkim=all"
終わり
最後まで読んでください、しかしもっと欲しいですか? 1つのドメインと正しく構成されたホスト名でOpenDKIMを構成する方法に関するはるかに短い指示 。