web-dev-qa-db-ja.com

DKIM-単一ホスト-複数のIP

複数の弾力性のあるIPSを持つ単一のEC2にDKIMを実装するためのベストプラクティスを理解しようとしています。

# /etc/opendkim.conf
...
Mode                    sv
Canonicalization        relaxed/simple
ExternalIgnoreList      refile:/etc/opendkim/TrustedHosts
InternalHosts           refile:/etc/opendkim/TrustedHosts
KeyTable                refile:/etc/opendkim/KeyTable
SigningTable            refile:/etc/opendkim/SigningTable
SignatureAlgorithm      rsa-sha256
...

# /etc/opendkim/KeyTable
default._domainkey.example.com example.com:hp-hv-1:/etc/opendkim/keys/default.private
default._domainkey.example.com example.com:hp-hv-2:/etc/opendkim/keys/default.private

# /etc/opendkim/SigningTable
*@example.com default._domainkey.example.com

次に、2つのDNSレコードがあります。

hp-hv-1._domainkey.example.com TXT "v=DKIM1;k=rsa;p=default.txt_key_goes_here"

hp-hv-2._domainkey.example.com TXT "v=DKIM1;k=rsa;p=default.txt_key_goes_here"

同じEC2インスタンス上の両方のポストフィックスインスタンスについて、それぞれに次の$ myhostnameがあります。

# postfixmulti instance #1
myhostname = hp-hv-1

# postfixmulti instance #2
myhostname = hp-hv-2

両方の接尾辞インスタンスは同じEC2インスタンス上にあるため、両方とも同じdefault.private/default.txt秘密鍵と公開鍵のペアを共有します。したがって、KeyTableとSigningTableに行を追加する必要はありません。私が知る限り、複数のドメインを実装したい場合(私はしません)、KeyTableとSigningTableに行を追加するだけで済みます。

しかし、DKIM設定をテストすると、「pass:neutral」という応答が返され、電子メールは署名されていませんが、署名されていると、ログファイルで確認できます。

# snippet from /var/log/maillog
Sep 25 15:15:31 service-a-4 opendkim[27420]: 5B4A3625F0: DKIM-Signature field added (s=hp-hv-1, d=example.com)

何が足りないのですか?

バージョン:

CentOS 6.5
Postfix v2.6.6
Opendkim v2.9
2
Mike Purcell

わかりました、私は明らかに混乱していました。DKIM署名フィールドの「s」はpostfix設定から$ myhostnameを識別することになっていると思い続けましたが、実際にはそうではありません。 DKIMキーローテーション について詳しく読んだ後、ついに私に身に付けました。「s」は、KeyTable、SigningTable、およびDNSから使用するセレクターです。

これをチェックして:

# /etc/opendkim/KeyTable
#  Format: selector(1) domain:selector(2):/path/to/key
#    selector(1) is used in the /etc/opendkim/SigningTable
#    selector(2) is built into the DKIM signature for every email sent, which is used to lookup the DNS TXT entry: mail-1_r-1._domainkey.example.com
mail-1_r-1._domainkey.example.com example.com:mail-1_r-1:/etc/opendkim/keys/mail-1_r-1.private

そして今、私がキーを回転させたいなら、私はこれをするでしょう:

# /etc/opendkim/KeyTable
#  Generate new private/public key pair, and rename accordingly
mail-1_r-1._domainkey.example.com example.com:mail-1_r-1:/etc/opendkim/keys/mail-1_r-1.private
mail-1_r-2._domainkey.example.com example.com:mail-1_r-2:/etc/opendkim/keys/mail-1_r-2.private

次に、署名テーブルで:

# /etc/opendkim/SigningTable
*@shouttag.com mail_r-1._domainkey.example.com
*@shouttag.com mail_r-2._domainkey.example.com

次に、DNSエントリの場合、次のようになります

mail_r-1.domainkey.example.com "v=DKIM1;k=rsa;p=mail_r-1.txt_key_goes_here"
mail_r-2.domainkey.example.com "v=DKIM1;k=rsa;p=mail_r-2.txt_key_goes_here"

これらのDNSエントリは、電子メールが本当にドメインから送信されたことを検証するために使用されます(したがって、ドメインキーIDメール)。その後、7日ほど後に、mail_r-1.domainkey.example.comを削除できます。

1
Mike Purcell