VERP 和 perl 后缀不起作用

Posted

技术标签:

【中文标题】VERP 和 perl 后缀不起作用【英文标题】:VERP and perl postfix not working 【发布时间】:2012-07-11 12:47:10 【问题描述】:

所以我有一个脚本,我正在尝试让 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 值?

我正在尝试创建包含电子邮件地址的所有退回电子邮件的日志,以便随后可以将其发送到文件或数据库。

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

【问题讨论】:

您有什么具体问题吗? 如何让它正确反弹?原样的代码似乎没有正确发送标头信息。 “似乎没有”只是“它不起作用”的另一个版本。如果您需要帮助,请提出具体问题并附上具体的错误消息和/或行为(或缺乏)。 【参考方案1】:

这个问题有点老了,但希望我的回答能对在谷歌搜索时发现这个问题的人有所帮助。 我遇到了同样的问题,根本原因是在与目标服务器进行 smtp 交换期间,您必须使用“MAIL FROM:”。 根据 MA​​IL FROM smtp 命令,在 MIME::Header 中设置返回路径会被 smtp 服务器本身覆盖。 所以你可以有一个包含 From: 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,
);

【讨论】:

【参考方案2】:

返回路径不是 VERP 地址的正确位置,将被忽略和/或覆盖。您需要将其作为真实的、诚实的 $dmr、真正的 SMTP 信封发件人 (MAIL FROM:&lt;&gt;) 地址。

【讨论】:

以上是关于VERP 和 perl 后缀不起作用的主要内容,如果未能解决你的问题,请参考以下文章

使用系统命令将stdout和stderr输出重定向到文件在perl中不起作用[重复]

perl Openssh ConnectionTimeout 不起作用

Perl 控制台:基本命令和 fe_sendauth:没有密码不起作用

打印 Perl 目录中的所有文件 - 不起作用

通过 perl 服务器提供 ionic vue 构建不起作用

超时在 perl Net::Telnet 上不起作用