Как вручную запустить 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 и выход с кодом ошибки)