VERP и Perl Postfix не работает
Итак, у меня есть скрипт, на котором я пытаюсь правильно запустить 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?
Я пытаюсь создать журнал всех отклоненных писем с включенными адресами электронной почты, чтобы его можно было затем отправить в файл или базу данных.
Если кто-то может указать мне правильное направление с этим, я был бы очень признателен. Благодарю.
2 ответа
Вопрос немного старый, но, надеюсь, мой ответ поможет кому-то, кто найдет это, пока гуглит. У меня была такая же проблема, и основная причина в том, что вы должны использовать "MAIL FROM: " во время обмена smtp с целевым сервером. Задание пути возврата в заголовке MIME::Header перезаписывается самим сервером smtp точно на основе команды smilp MAIL FROM. Таким образом, у вас может быть почтовый конверт, содержащий 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,
);
Return-Path не является правильным местом для адреса VERP, и будет игнорироваться и / или переопределяться. Вы должны поместить это как фактическое, честное $dmr
, реальный отправитель SMTP-конверта (MAIL FROM:<>
) адрес.