是否有可能改变后缀的消息ID?

是否有可能改变后缀中的消息ID? 如果我通过Java应用程序发送邮件,我得到以下message-id:

message-id=<143303043.111334605578921.JavaMail.applicationanme@hostname> 

所以我希望这个消息ID看起来像这样:

 message-id=<[email protected]> 

我可以理解,如果我发送邮件的Linux程序mail它的工作原理:

 message-id=<[email protected]> 

我已经在postfix-conf中设置了我的主机名,但是当我用java-application发送一个邮件时,它不起作用。 我们使用中继主机来发送电子邮件,任何邮件中没有@domain.tld的邮件都会被检测为垃圾邮件。

你有什么想法我可以解决这个问题吗?

为什么不用javamail从一开始就生成正确的MessageID,而不是试图在Postfix中重写消息ID。 您可以通过updateMessageID MimeMessage并提供新的updateMessageID方法来更改javamail如何生成MessageID

由于没有人给你一个解决scheme,如何让后缀插入一个反映你的域的消息ID,我有同样的问题,我想我会分享我如何能够有后缀这样做:

1)添加到/etc/postfix/main.cf的末尾

 header_checks = regexp:/etc/postfix/header_checks 

2)在header_checks中插入replacestring

 /Message-Id:\s+<(.*?)@hostname>/ REPLACE Message-Id: <[email protected]> 

3)运行postmap

 postmap /etc/postfix/header_checks 

4)重新启动后缀

 service postfix restart 
  1. 你为什么要这样做? 正如@BenPilbrow指出的那样,message-id是无意义的。 几乎所有将使用它的是线程电子邮件客户端。

  2. 正如@stew所指出的那样,您可以首先发出一个带有正确消息ID的电子邮件。

  3. 最后,后缀解决scheme是更改$ myhostname的值,因为这是postfix在创build消息标识时使用的@符号后面的值。

相关的java属性是mail.host 。 根据您的应用程序,您可能有一个属性文件,您可以将其设置为:

 mail.host=your.tld 

或者使用命令行-D选项:

 java -Dmail.host=your.tld ... 

正如其他人所指出的,除了垃圾邮件的情况,message-id中的域名部分几乎是100%不相关的。 我有一个类似的问题,通过mail程序发送的消息立即交付,但通过javamail发送的,从消息id中省略TLD的只有延迟交付。 通过将全部TLD添加到消息ID来解决问题。