java - VERP 与 JavaMail 和 Postfix,如何操作?

标签 java jakarta-mail postfix-mta verp

首先,您好!

我即将使用 Javax.mail 在 Java 中开发自定义新闻通讯应用程序API。 所以我需要开发一种 Verp 技术来跟踪跳出。

到目前为止,我已经覆盖了javax.mail.internet.MimeMessage只是为了处理我自己的邮件 header 。

class CustomMailMessage extends MimeMessage
...
public void setCustomHeader(key, value)
{
    setHeader(key, value);
    updateHeaders();
}
...

所以这似乎适用于我设置的除 Return-Path 之外的任何 header 。

...
setCustomHeader("Return-Path",verpAddr);
...

导致 VERP 失败。我在调用之前和之后跟踪了此 header 的值

...
Transport.send(message);
...

看起来这个值和我设置的值是一样的。然而,在收到邮件时,返回路径会更改为发件人地址(发件人:)。与其他标题不同的是,它们是设置的。因此,退回通知将发送给发件人,而不是我的bounce+usermail=host@mydomain.com。

我认为此故障发生在 postfix 站点上。

请注意,服务器是由 Plesk 设置的,并且我的 domain.com 在我的服务器上共享。

所以我请任何可以帮助我的人。或者可以为我提供有关如何以不同方式实现 Verp 技术的更多信息。

提前致谢并干杯!

最佳答案

Return-Path header 由接收方而不是发送方设置。

您想要设置“信封发件人”地址。请参阅javadocs for the com.sun.mail.smtp package要设置的属性,请参阅 SMTPMessage类作为设置此信息的另一种方式。

另请注意,您不需要仅仅为了设置自定义 header 而子类化 MimeMessage。您可以直接调用setHeader方法,updateHeaders将在消息发送之前被调用。 (无论如何,updateHeaders 不会对这些自定义 header 执行任何操作。)

关于java - VERP 与 JavaMail 和 Postfix,如何操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9588875/

相关文章:

java - 将指定区域的长纪元时间转换为 UTC 长纪元时间

java - 具有非唯一键的排序映射

Tomcat 内部的 javamail 附加 "noname"

java - 使用 JavaMail 的表

java - 使用 Intent putExtra 的空指针异常

java - 如何在 Eclipse 自动格式化中删除注释后的空格?

java - 从 java 应用程序发送邮件而不使用外部 SMTP 服务器

linux - "mail command in linux"是即发即弃还是等待邮件发送?

mysql - 如何删除 MariaDB 并为 Postfix 安装 MySQL?

php - 如何避免从 PHP mail() 发送的邮件被标记为垃圾邮件?