Назад | Перейти на главную страницу

Скажите Postfix не доставлять почту, когда SpamAssassin не запущен

У меня 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. Просто проблема конфигурации.