Как вручную запустить exim4 для обработки и локальной доставки уже полученных сообщений

У меня есть куча сообщений, которые были сброшены spamassasin из-за ошибок. (формат mbox, т.е. все заголовки конверта присутствуют, начиная с "From xxx...")

Как я могу получить exim для их доставки (в локальные файлы спула)?

Спасибо

(exim 4.69 в Debian Linux)

2 ответа

Решение

Была ли ошибка в конфиге SpamAssassin, или сообщения как-то испорчены?

Вы можете просто разбить файл на отдельные сообщения и повторно отправить их для обычной доставки, отправив их по адресу sendmail -t (псевдоним Exim в системе с exim, настроенным в качестве основного MTA). Однако, если сообщения каким-то образом проблематичны, это никуда не приведет. Кроме того, если сообщения первоначально отправлялись в список рассылки или тому подобное, это пересылает их в сеть, что нежелательно.

Другой вариант заключается в использовании Python mailbox модуль для чтения в файле mbox, а затем вручную помещать сообщения в соответствующие катушки; он поддерживает большинство распространенных форматов. Учитывая достаточные детали, я мог бы отредактировать несколько приличных примеров кода здесь.

(Python также будет работать, чтобы разделить сообщения для отправки, хотя я уверен, что поиск найдет несколько десятков достаточно надежных сценариев для такого рода задач.)

Я закончил тем, что сделал это:

for f in *; do if exim4 -bm -t -i -oep <$f; then mv $f ../sent/; else mv $f ../errors/; fi; sleep 2; done

и кажется, что работает до сих пор... есть около месяца сообщений или больше, чтобы пройти:). (-bm означает локальную доставку, -t означает получить получателя из заголовков сообщения, -i означает не останавливаться на ".", и -oep означает печать ошибок в stderr и выход с кодом ошибки)

Другие вопросы по тегам