私はPostfixをDebian9マシンで実行していて、opendkimをインストールしています(両方ともDebianリポジトリから)。 milterソケット/接続はinet:localhost:8892であり、iptablesファイアウォールはその接続を許可します(_telnet localhost 8892
_は成功します)。
ただし、コンソールから(_mail -s "testing DKIM" my-address@not-the-same-domain
_を使用して)電子メールを送信した場合にのみ署名されたメッセージを受け取りますが、Thunderbirdから送信した場合は受け取りません。 Thunderbirdでは、sshトンネリングを使用しているため、メールサーバーは接続がローカルホストから発信されていると見なします。 (つまり、デスクトップで_ssh -Llocalhost:2525:my-server:25 tunnel@my-server
_を実行し、送信メールサーバーがローカルホストのポート2525であることをThunderbirdに伝えます。
これは、コンソールから送信するときに取得する署名の例です。
_DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=[omitted -- but it shows the correct domain];
s=mail; t=1557228588;
bh=slJTHzrIw+6TkIIPpFmGER34xtLwMLZ2md99gvHoFTE=;
h=To:Subject:Date:From:From;
b=jtOM5OOM83l [ ··· several lines of "gibberish" ··· ] 4qdpSt4l86DEA==
_
この問題の原因について何か考えはありますか?
[[EDIT]]問題はさらに不可解になります。ログを調べていると、_external Host XXXX.my-service-provider.com
_が_my-domain.com
_として送信しようとしたという警告に気づきました。
_/etc/hosts
_、_/etc/hostname
_を調整しました...最後に、DNSの逆引き参照を調整する必要があることに気づきました。これで、コマンドhostname
はFQDN(DKIMを構成している正しいドメイン)で応答します。
さて、_/var/log/syslog
_で電子メールを送信すると、_external Host *the-correct-FQDN* attempted to send as *the-correct-FQDN*
_というメッセージが表示されます。また、送信されたメッセージにはDKIM署名が含まれていません。
_telnet localhost 25
_を実行し、SMTPサーバーに_helo the-correct-FQDN
_で挨拶すると、メッセージはDKIM署名されます。ログは、localhost (127.0.0.1)
からの接続が送信の原因であったことを示しています。
何か案は?
[[END EDIT]]
この問題は、InternalHostsパラメーターの欠如が原因であることが判明しました。 Debian 9(2.11)のopendkimの現在のバージョンでは、次のように解決しました。
ファイル/etc/opendkim.conf
を編集し、次の行を追加しました。
InternalHosts file:/etc/opendkim-trustedhosts.conf
次に、ファイル/etc/opendkim-trustedhosts.conf
には次のものが含まれます。
127.0.0.1
x.x.x.x (the actual public IP of the server)
そしてvoilà---再起動すると問題が解決しました!
私が気づいたいくつかの違いw.r.t.私がそこで見つけた他の情報---私が見ることができたものから、CentOS(古いバージョンかまだこれが好きかどうかはわかりません)では、デフォルトの構成は次のとおりです:ディレクトリetc/opendkim
があり、そのディレクトリ内にあります、とりわけ、ファイルTrustedHosts.conf
;ファイル/etc/opendkim.conf
には、TrustedHostsファイルを指すInternalHosts
ディレクティブがすでに含まれています。 Debian 9では、手動で作成する必要があります。
同様の問題とコンテキスト:認証されたメールユーザーエージェント(MUA)のみのリレーであるMTAとしてPostfixでopenDKIMを使用し、後で特にSMTP + POPまたはSMTP + IMAP接続で構成されたMS-OutlookクライアントをTLS経由でPostfixMTAにカウントします私の場合、ポート587を介した/ SSL + SASL(ログインとパスワードによる認証)。
ローカルコンソールの「mailx」または「sendmail」が使用されている場合、openDKIM統合はpostfix/main.cfのnon_smtpd_miltersオプションを介して制御されますが、smtpd_miltersオプションは、認証されたMUAからのSMTPD電子メールの受信のケースを制御します。したがって、最初に両方のオプションが揃っていることを確認する必要があるかもしれません。お気に入り
smtpd_milters = inet:127.0.0.1:8891
non_smtpd_milters = $smtpd_milters
次に、有効なDKIM署名が(「mailx」または「sendmail」を介して)ローカル電子メールに対して生成され、認証されたMUAからの電子メールでは生成されない場合、メッセージの送信者を特定して防止することに問題がある可能性があります。 openDKIMは、署名が設定されている「From:」ドメインにクロールします。次のような痕跡が見つかる可能性があります。
opendkim[9530]: E3B6A13CBED: can't determine message sender;
私の場合、これはPostfixのheader_checksオプションとの干渉によるものでした。 main.cfまたはmaster.cf(main.cfのオプションをオーバーライドできます)のいずれかでそれを探します。
-o header_checks=regexp:/etc/postfix/submission_header_cleanup
関連付けられたヘッダークリーンアップルールが[〜#〜] not [〜#〜]次のような正規表現を含むことを確認します。
/^Received:/ IGNORE
その後、コメントアウトまたは削除する必要があります。
最後に、postfix/main.cfがPostfixに、次のようなオプションを使用してmilterプロトコルを介してopendkimに十分なデータを渡すように指示することを確認します。
milter_mail_macros = i {mail_addr} {client_addr} {client_name} {auth_type} {auth_authen}