VERP и perl postfix не работают

Итак, у меня есть сценарий, на котором я пытаюсь правильно запустить VERP. Он использует MIME :: Lite и postfix в качестве почтового сервера. Вот код:

use strict;
use MIME::Lite;
use LWP::Simple;
use Mail::Verp;

my $email = '[email protected]';
Mail::Verp->separator('+');
my $verp_email = Mail::Verp->encode('[email protected]', $email);
my $content = '<html><body>Hi!</body></html>';
my $msg = MIME::Lite->new(
    Subject => 'Hi',
    From => '[email protected]',
    To => $email,
    'Return-Path' => $verp_email,
    Type => 'text/html',
    Data => $content
);
$msg->send('smtp', 'XXX.XXX.XXX.XXX');

Когда сообщение отброшено, postfix не направляет его в почтовый ящик [email protected]. Как мне направить сообщение так, чтобы отправителем отказа было значение $ verp_email?

Я пытаюсь создать журнал всех отклоненных писем с включенными адресами электронной почты, чтобы затем его можно было отправить в файл или базу данных.

Если кто-нибудь может указать мне в этом правильном направлении, я был бы чрезвычайно признателен. Спасибо.


person Paul Stoneking    schedule 11.07.2012    source источник
comment
У вас есть конкретный вопрос?   -  person TLP    schedule 12.07.2012
comment
Как сделать так, чтобы он отскакивал правильно? Код как есть, похоже, неправильно отправляет информацию заголовка.   -  person Paul Stoneking    schedule 12.07.2012
comment
не похоже это просто другая версия не работает. Если вам нужна помощь, задавайте конкретные вопросы и включайте конкретные сообщения об ошибках и / или поведение (или его отсутствие).   -  person TLP    schedule 12.07.2012


Ответы (2)


Обратный путь не является правильным местом для адреса VERP и будет проигнорирован и / или переопределен. Вы должны указать его как реальный, честный для $dmr, реальный адрес отправителя конверта SMTP (MAIL FROM:<>).

person tripleee    schedule 11.07.2012

Вопрос немного устарел, но, надеюсь, мой ответ поможет тем, кто найдет это во время поиска в Google. У меня была та же проблема, и основная причина в том, что вы должны использовать «MAIL FROM:» во время обмена smtp с целевым сервером. Установка обратного пути в MIME :: Header перезаписывается самим smtp-сервером именно на основе команды MAIL FROM smtp. Таким образом, у вас может быть почтовый конверт, содержащий From: [email protected], но убедитесь, что smtp MAIL FROM использует $ verp_email. Например, вот что я сделал:

my $msg = MIME::Entity->build(
    'Return-Path'   => '[email protected]',
    'From'      => '[email protected]',
    'To'        => '[email protected]',
    'Subject'   => $subject,
    'Errors-To' => '[email protected]'
);
## 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'  => '[email protected]',
    'To'        => '[email protected]',
    'Port'      => 25,
);
person Jacques    schedule 02.06.2015