VERP与JavaMail和Postfix,如何?

时间:2012-03-06 17:32:56

标签: java javamail postfix-mta verp

首先,问候!

我即将使用Javax.mail API在Java中开发自定义新闻稿应用程序。 所以我需要开发一个Verp技术来跟踪反弹。

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

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

所以这似乎适用于我设置的任何标题,除了Return-Path。

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

导致VERP失败。我在调用

之前和之后跟踪此标题的值
...
Transport.send(message);
...

似乎该值与我设置的相同。然而,在收到的邮件中,返回路径被更改为发件人地址(From :)。与其他标题不同的是它们的设置。因此退回通知会发送给发件人而不是我的bounce+usermail=host@mydomain.com。

我认为这次失败发生在postfix网站上。

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

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

Thx in Advance&干杯!

1 个答案:

答案 0 :(得分:2)

Return-Path标头由接收方设置,而不是发送方。

您想要设置“信封来自”地址。有关要设置的属性,请参阅javadocs for the com.sun.mail.smtp package,并将SMTPMessage类视为另一种设置此信息的方法。

另请注意,您不需要将MimeMessage子类化以设置自定义标头。您可以直接调用setHeader方法,并在发送消息之前调用updateHeaders。 (并且updateHeaders无论如何都不会对这些自定义标题做任何事情。)