OpenDKIMを使用してPostfixサーバーでメールに署名しています。 Originドメイン(たとえばexample.com
)からSMTPSで送信すると、意図したとおりに機能します。ただし、LAN上のSMTPクライアントから送信されたメールは署名されていません。上記のクライアントは、同じオリジンドメイン(たとえば、client1.lan
)からのものではありませんが、smtp_generic_maps
で同じオリジン(具体的には[email protected]
)に変換されます。理想的には、その送信メールに署名したいと思います。
/etc/postfix/main.cfに私は持っています:
smtpd_milters = unix:/var/run/opendkim/opendkim.sock
non_smtpd_milters = unix:/var/run/opendkim/opendkim.sock
/etc/opendkim.confに私は持っています:
ExternalIgnoreList refile:/etc/opendkim/TrustedHosts
InternalHosts refile:/etc/opendkim/TrustedHosts
/ etc/opendkim/TrustedHostsには次のものがあります:
::1
127.0.0.1
localhost
ip6-localhost
ip6-loopback
mail
10.0.0.0/24
*.lan
Postfixで、/etc/postfix/main.conf
に次のものが含まれていることを確認してください。
milter_mail_macros = i {mail_addr} {client_addr} {client_name} {auth_authen} {auth_type}
これにより、認証されたユーザーからのメールがOpenDKIMによって署名されるようになります。ドキュメントによると:
メッセージは、次の署名基準に準拠していない限り検証されます。(1)From:アドレスのドメイン(存在する場合)は、-dコマンドラインスイッチまたはドメイン構成ファイル設定によってリストされている必要があります。(2) )(a)MTAに接続するクライアントは認証済みである必要があります、または(b)MTAに接続するクライアントは、InternalHosts構成ファイル設定によって参照されるファイルにリストされている必要があります(またはデフォルトである必要があります)そのオプションのリスト)、または(c)クライアントがMTA構成ファイル設定で指定されたデーモンポートに接続されている必要があります。または(d)MTAがMacroList構成ファイル設定で設定された基準に一致する1つ以上のマクロを設定している必要があります。 。
上記(a)の場合、テストはMTAマクロ "{auth_type}"が設定されており、空でない値が含まれているかどうかです。つまり、MTAは、その値をテストするために、ヘッダーの終わり(EOH)フェーズの前または最中にそのマクロの値をフィルターに渡す必要があります。
(From:
ヘッダーに基づいて)他のドメインに中継および署名する場合は、opendkimでSigningTable
構成を使用してこれらの他のドメインをマップする必要があります。別のドメインを割り当てることもできます。キーとセレクターをKeyTable
で照合することにより、どちらも異なるマッピングファイルを指します。
同様の問題が発生しましたが、メールヘッダーを確認することでデバッグできました。ここで、リレーサーバーが使用している正確なホスト名とIPアドレスを確認できます。例:
Received: from client1.lan (client1.localdomain [10.0.0.2]) by example.com
(Postfix) with ESMTPS id 71B8D10C1A68 for <[email protected]>;
Sun, 12 Feb 2017 13:19:33 +0000 (UTC)
次に、中継サーバーが内部ネットワークを使用しているかどうか、使用しているホスト名、および電子メールの送信元のドメインを確認できます。
同じ問題がありました:リモートホストから送信されているメールが署名されませんでした。
解決策は簡単でした。リモート送信者のIPを/ etc/opendkim/TrustedHostsに追加するだけです。