PostfixのメッセージIDを変更することは可能ですか? Javaアプリケーションを介してメールを送信すると、次のメッセージIDが表示されます。
message-id=<143303043.111334605578921.JavaMail.applicationanme@hostname>
だから私はメッセージIDがこのように見えることを望みます:
message-id=<[email protected]>
Linuxプログラムmail
でメールを送信した場合、理解できることは機能します。
message-id=<[email protected]>
ホスト名はpostfix-confですでに設定していますが、Javaアプリケーションでメールを送信すると機能しません。リレーホストを使用してメールを送信します。mail-idに@domain.tld
を付けずに送信されたメッセージは、スパムメールとして検出されます。
どうすればこれを修正できるかわかりますか?
postfixを使用してドメインを反映するメッセージIDを挿入する方法について誰もあなたに解決策を与えていないので、同じ問題があったので、私はpostfixでそれを行うことができた方法を共有することを考えました:
1)/etc/postfix/main.cfの最後に追加します
header_checks = regexp:/etc/postfix/header_checks
2)header_checksに置換文字列を挿入します
/Message-Id:\s+<(.*?)@hostname>/ REPLACE Message-Id: <[email protected]>
3)ポストマップを実行する
postmap /etc/postfix/header_checks
4)postfixを再起動します
service postfix restart
PostfixでメッセージIDを書き換えようとする代わりに、最初からjavamailに正しいMessageIDを生成させてはどうですか。 MimeMessage
をサブクラス化し、新しいupdateMessageID
メソッドを提供することにより、javamailがMessageIDを生成する方法を変更できます
なぜこれをしたいのですか? @BenPilbrowが指摘したように、message-idは無意味の隣にあります。これを使用するのは、ほとんどがスレッド化電子メールクライアントだけです。
@stewが指摘したように、最初は適切なメッセージIDを含む電子メールを送信するだけです。
最後に、Postfixが$ myhostname の値を変更することです。これは、PostfixがメッセージIDを作成するときに@記号の後に使用するためです。
関連するJavaプロパティはmail.Host
。アプリケーションによっては、次のように設定するプロパティファイルがある場合があります。
mail.Host=your.tld
または、コマンドラインの-Dオプションを使用します。
Java -Dmail.Host=your.tld ...
他の人が指摘したように、message-idのドメイン部分は、スパムの場合を除いて、ほぼ100%無関係です。 mail
プログラムを介して送信されたメッセージはすぐに配信されましたが、メッセージIDからTLDを省略したjavamailを介して送信されたメッセージは遅延配信のみが発生するという同様の問題がありました。この問題は、完全なTLDをメッセージIDに追加することで修正されました。