是否可以更改后缀消息 ID?

Mar*_*cus 8 postfix domain tld

是否可以更改 postfix 中的消息 ID?如果我通过 Java 应用程序发送邮件,我会得到以下消息 ID:

message-id=<143303043.111334605578921.JavaMail.applicationanme@hostname>
Run Code Online (Sandbox Code Playgroud)

所以我希望 message-id 看起来像这样:

message-id=<143303043.111334605578921.JavaMail.applicationanme@domain.tld>
Run Code Online (Sandbox Code Playgroud)

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

message-id=<10213429251967.C2D74C1A8D@domain.tld>
Run Code Online (Sandbox Code Playgroud)

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

你知道我该如何解决这个问题吗?

小智 11

由于没有人为您提供有关如何让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: <$1...@domain.tld>

  3. 运行 postmap

    postmap /etc/postfix/header_checks

  4. 重启后缀

    service postfix restart


ste*_*tew 9

与其尝试在 postfix 中重写消息 ID,不如让 javamail 从一开始就生成正确的 MessageID。您可以通过子类化MimeMessage并提供新updateMessageID方法来更改 javamail 生成 MessageID 的方式

  • @Flimzy 那不是真的。变量“always_add_missing_headers”默认为“no”。您必须明确设置它。如果存在 Message-ID,则它不会更改它(因为它不允许更改)。如您所见,JavaMail 已经设置了 ID。 (2认同)

Fli*_*mzy 5

  1. 你为什么要这样做?正如@BenPilbrow 指出的那样,消息 ID 几乎毫无意义。几乎唯一会使用它的是线程电子邮件客户端。

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

  3. 最后,postfix 解决方案是更改 $ myhostname的值,因为这是 postfix 在创建消息 ID 时在 @ 符号之后使用的。