VERP和perl后缀不起作用



所以我有一个脚本,我正在尝试让VERP正确运行。它使用MIME::Lite和postfix作为邮件服务器。这是代码:

use strict;
use MIME::Lite;
use LWP::Simple;
use Mail::Verp;
my $email = 'someuser@somesite.com';
Mail::Verp->separator('+');
my $verp_email = Mail::Verp->encode('root@somesite.net', $email);
my $content = '<html><body>Hi!</body></html>';
my $msg = MIME::Lite->new(
    Subject => 'Hi',
    From => 'root@somesite.net',
    To => $email,
    'Return-Path' => $verp_email,
    Type => 'text/html',
    Data => $content
);
$msg->send('smtp', 'XXX.XXX.XXX.XXX');

当消息被反弹时,postfix没有将其路由到root@somesite.net电子邮件收件箱。如何路由消息,使反弹的发件人为$verp_email值?

我正在尝试创建一个包含电子邮件地址的所有反弹电子邮件的日志,以便将其发送到文件或数据库中。

如果有人能为我指明正确的方向,我将不胜感激。谢谢

Return Path不是VERP地址的正确位置,将被忽略和/或重写。您需要将其作为实际的、对$dmr诚实的、真实的SMTP信封发件人(MAIL FROM:<>)地址。

这个问题有点老了,但希望我的回答能帮助那些在谷歌搜索时发现这个问题的人。我也遇到了同样的问题,根本原因是在与目标服务器交换smtp时必须使用"MAIL FROM:"。在MIME::Header中设置返回路径会被smtp服务器本身完全基于MAIL FROM smtp命令覆盖。因此,您可以拥有一个包含发件人的邮件信封:root@somesite.net但请确保smtp MAIL FROM使用$verp_email例如,这就是我所做的:

my $msg = MIME::Entity->build(
    'Return-Path'   => 'bounce+user=user-domain.com@my-server.com',
    'From'      => 'admin@my-server.com',
    'To'        => 'user@user-domain.com',
    'Subject'   => $subject,
    'Errors-To' => 'bounce+user=user-domain.com@my-server.com'
);
## Then some more handling with MIME::Entity
## and finally send it over smtp
my @rcpt = $msg->smtpsend(
    ## Make it verbose for debugging
    'Debug'     => DEBUG,
    'Hello'     => 'mx1.my-server.com',
    'Host'      => 'mx.user-domain.com,
    'MailFrom'  => 'bounce+user=user-domain.com@my-server.com',
    'To'        => 'user@user-domain.com',
    'Port'      => 25,
);

相关内容

  • 没有找到相关文章

最新更新