У меня Postfix настроен для фильтрации почты с помощью демона SpamAssassin. Недавно я заметил, что некоторые спам-сообщения будут доставляться в мой почтовый ящик без добавления заголовков SpamAssassin. Я отследил это до того факта, что у меня была ежедневная работа cron по обновлению SpamAssassin с помощью sa-update
и перезапустите spamd. Когда Postfix получает письмо во время перезапуска spamd, он доставляет его без фильтрации.
Мое решение состояло в том, чтобы изменить задание cron, чтобы остановить Postfix перед перезапуском spamd и перезапустить его после. Это лучшее решение? Могу ли я как-нибудь сказать Postfix приостановить всю доставку? Могу ли я изменить вызов на spamd, чтобы он блокировался до тех пор, пока spamd не вернется?
Вот строка SpamAssassin из моего /etc/postfix/master.cf
:
spamassassin unix - n n - - pipe user=nobody argv=/usr/bin/spamc -u ${user} -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}
Я нашел ссылки на использование postsuper -h ALL
для приостановки доставки, но это только кажется, что сообщения в настоящее время находятся в очереди Postfix. Новые сообщения, которые приходят после того, как я отправляю postsuper -h ALL
по-прежнему доставляются нормально.
Это не ошибка Postfix, а плохое поведение при рассылке спама. Что касается спама документация (см. Коды выхода) при возникновении ошибки код выхода не создается. А отсутствующий spamd - это ошибка (в моих глазах).
А из-за Postfix труба документация Postfix будет рассматривать код выхода 0 как успешную доставку.
Поэтому вам следует (как указано в документе spamc) установить -x
флаг в вызове трубы. Затем Postfix ставит почту в очередь для последующей доставки (и более позднего сканирования, если спам снова готов).
Нет необходимости приостанавливать или останавливать Postfix. Просто проблема конфигурации.