Постфикс: как создать отказов
Есть ли способ генерировать отскок программно? Единственное, что я нашел, это флаг "-N" в оболочке sendmail и параметр конфигурации bounce_template_file:
/usr/sbin/sendmail -N failure
Но по какой-то причине он генерирует обычное сообщение. Даже не используя шаблон отказов.
Вот сценарий: postfix принял сообщение извне и отправил его во внешний фильтр через SMTP. Опираясь на политику, мы решили отклонить сообщение. Теперь нам нужно сгенерировать отчет о недоставке. Как это сделать с постфиксом?
Спасибо!
1 ответ
Вы просто создадите новое электронное письмо и отправите его отправителю.
Один из способов сделать это - перенаправить его в сценарий - например, с помощью транспортной таблицы для перехвата электронной почты и основной таблицы для передачи выходных данных в сценарий, чтобы сгенерировать ответ отказов.
Запись в главной таблице может выглядеть примерно так
bouncer
unix - n n - - pipe flags=Rq
user=nobody argv=/path/to/bounce.script ${sender} ${recipient}
Вместо того, чтобы отправлять отправку сообщения в REJECT, вы отправляете его "баунсеру". Не уверен, как ты это отвергаешь, поэтому не уверен, как сказать ему, чтобы он вместо этого прыгал. Я думаю, вы могли бы использовать для этого транспортную таблицу или таблицу header_checks с целью FILTER.
Простой PHP-скрипт для отправки отказов (непроверенный) может выглядеть следующим образом:
#! /usr/bin/php
<?php
# Make sure phpmailer is installed ! (apt-get install phpmailer
# or download from source and adjust path)
include phpmailer/class.phpmailer.php
$from=$argv[1];
$to=$argv[2];
$tz=date_default_timezone_get();
date_default_timezone_set($tz);
$message="Bounce Message text here";
$msg=new PHPMailer();
$msg->From=$to;
$msg->FromName=$from;
$msg->Subject="Bounce Notification Subject Line";
$msg->Body="Bounce Notification Message";
$msg->AddAddresses($from);
$msg->send();
?>