web-dev-qa-db-ja.com

postfixとopendkimを正しく構成し、受信サーバーにメール送信者署名者のすべての詳細を通知するにはどうすればよいですか?

私が達成しようとしていること-結論:メールはスパムフォルダではなく受信トレイに送られます。

Postfixを実行しているサーバー(メールサーバー)があり、3つのドメインがあります。メールサーバーは、受信メールと送信メールの両方に使用されます。

私はopendkimで署名しており、DNSレコードを用意しています。

長い間観察した結果、メール送信者と署名者の割り当てが正しくないためにメッセージがスパムになっていることに気付きました。

私のメールサーバーはmailserver.example.comであり、他の3つのドメインはexample1.com、example2.com、example3.comです。

誰かが[email protected]からメールを送信すると、次のように表示されます。

mailserver.example.com経由の[email protected]

郵送先:mailserver.example.com

署名者:example1.com

MailjetとAmazonの電子メールがスパムになることはほとんどないことを私は観察しました。実際には、発信元のホスト名/ IPリバースがmailed-byとsigned-byに解決されるためです。

構成ファイル:

/etc/opendkim/Keytable

mvs._domainkey.example1.com example1.com:selc:/etc/opendkim/keys/example1_com/selc.private
mvs._domainkey.example2.com example2.com:selc:/etc/opendkim/keys/example2_com/selc.private

/etc/opendkim.conf

Domain          example1.com
KeyFile     /etc/opendkim/keys/example1_com/selc
Selector        selc

Domain          example2.com
KeyFile     /etc/opendkim/keys/example2_com/selc
Selector        selc

Canonicalization    simple
Mode            sv
Syslog                  yes
LogWhy                  yes
UMask                   022
UserID                  opendkim:opendkim
KeyTable           /etc/opendkim/KeyTable
SigningTable       /etc/opendkim/SigningTable
ExternalIgnoreList /etc/opendkim/TrustedHosts
InternalHosts      /etc/opendkim/TrustedHosts
Socket                  inet:34562@localhost
X-Header        no

そして最後に

/etc/opendkim/SigningTable

example1.com selc._domainkey.example1.com
example2.com selc._domainkey.example2.com

どこに行方不明ですか?

2
Karma

まず、これらの値を削除してください(KeyTableを使用する場合は必要ありません)。

Domain      example1.com
KeyFile     /etc/opendkim/keys/example1_com/selc
Selector    selc

Domain      example2.com
KeyFile     /etc/opendkim/keys/example2_com/selc
Selector    selc

KeyTableを次のように設定します。

mykey1 example1.com:recordname1:/path/to/domain.key
mykey2 example2.com:recordname2:/path/to/domain.key

SigningTableをそのように設定します(ワイルドカードの一致とmykey1およびmykey2from KeyTable):

*@example1.com mykey1
*@example2.com mykey2

そして最後にopendkim.confを変更してSigningTable viarefile:プレフィックス(正規表現のサポート)::

SigningTable    refile:/etc/opendkim/SigningTable

そして、参照用のドメインレコード(注recordname1およびrecordname2from KeyTable):

recordname1._domainkey IN TXT "v=DKIM1; g=*; k=rsa; p=..."
recordname2._domainkey IN TXT "v=DKIM1; g=*; k=rsa; p=..."

さらに、InternalHostsファイルにノードのホスト名(メールの送信元)があるかどうかを確認してください。

server1.example1.com
server2.example2.com
mail.example1.com
mail.example2.com

ここでも、refile:プレフィックスを使用して、次のようなものを追加できます。

*.example1.com
*.example2.com

複数のホストがあり、それらすべてを手動で含めたくない場合。ローカルメールのみを受け入れる場合は、ここにlocalhostを追加する必要があります。

ログファイルで[〜#〜] dkim [〜#〜]ホストがInternalHostsファイルにない場合の署名のスキップに関する通知を確認する必要があります。

Opendkim.confの例:

# Set these values (Syslog, SyslogSuccess, LogWhy) for debugging and check syslog for details
Syslog      yes
SyslogSuccess   yes
LogWhy      yes

UMask       002
UserID      opendkim:opendkim

KeyTable            /etc/opendkim/KeyTable
SigningTable        refile:/etc/mail/SigningTable
InternalHosts       refile:/etc/mail/hosts
7
GeekMagus