Debian sidでexim 4.82を使用しています。送信メールに署名するようにeximを設定する方法についていくつかのチュートリアルを実行しましたが、何かが本来あるべき動作をしていないようです。
私の診断では、電子メールメッセージの$sender_address_domain
フィールドの内容に関係なく、/etc/hostname
は常にサーバーのホスト名(From:
)に設定されています。
/etc/exim4/conf.d/transport/00_exim4-config_header
で次のマクロを定義しました:
DKIM_Canon = relaxed
DKIM_DOMAIN = ${sender_address_domain}
DKIM_SELECTOR = dkim
DKIM_PRIVATE_KEY = /etc/exim4/dkim.private.key
この現在の設定では送信メールに署名しますが、DKIM署名のドメインは、euvps.rolisoft.net
フィールドに関係なく、常にFrom:
に設定されます。 $sender_address_domain
をeuvps.rolisoft.net
に設定すると、From:
フィールドでメールアドレスのドメインに設定する必要があります。
このため、検証はbad version
メッセージで失敗します。
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
d=euvps.rolisoft.net; s=dkim; // <- d= should be set to whatever is in From
h=Date:Message-Id:From:Subject:To; bh=...; b=...;
Authentication-Results: mx.google.com;
spf=pass (google.com: domain of [email protected] designates 188.226.159.108 as permitted sender) [email protected];
dkim=neutral (bad version) [email protected];
dmarc=fail (p=NONE dis=NONE) header.from=seriesinfos.com
DKIM_DOMAIN
をメッセージを送信するドメイン名に手動で設定すると、これが解決し、DKIM署名が有効になります。ただし、私は複数のドメイン名を使用しているので、DKIM_DOMAIN
を、メッセージの送信元の電子メールに自動的に設定するのが最適です。
いくつかのチュートリアルで示唆されているように、カスタムルーターとトランスポートを設定していません。 (ある時点で実行しましたが、同じ結果が得られたため、削除しました。)
DKIM_DOMAIN
を${lookup{$sender_address}lsearch*@{/etc/exim4/dkim_senders}}
に設定すると(dkim_senders
が正しく設定されている場合)、メッセージに署名されないだけですが、dkim_senders
にはeuvps.rolisoft.net
が含まれていないため、ここでは$sender_address
もeuvps.rolisoft.net
に設定されていると思います。これが署名の欠如です。
$sender_address_domain
が何に設定されているかをデバッグする方法が正確にわかりません。
なぜ$sender_address
が正しく入力されないのかはまだわかりませんが、別の変数を使用して問題の回避策を見つけました:
DKIM_DOMAIN = ${lc:${domain:$h_from:}}
これにより、DKIM署名にドメイン名が正しく設定されます。
キーのないドメインへの署名を停止するために、他に2つのマクロを設定しました。
DKIM_FILE = /etc/exim4/keys/${lc:${domain:$h_from:}}.pem
DKIM_PRIVATE_KEY = ${if exists{DKIM_FILE}{DKIM_FILE}{0}}
これらは基本的に/etc/exim4/keys/*domain*.pem
で秘密鍵を探し、それが存在しない場合は署名しません。