Я пытаюсь создать простой фильтр Python для постфикса, чтобы добавить в заголовок «Ответ на» для определенных сообщений.Python filter for postfix
Что я сделал до сих пор принимать электронную почту от стандартного ввода, и разобрать его в объект электронной почты как так:
raw = sys.stdin.readlines()
msg = email.message_from_string(''.join(raw))
Затем я играл с заголовками и т.д.
msg.add_header('Reply-to', '[email protected]')
И теперь хочу повторно вставить это обратно в постфикс. Чтение filter readme, связанное с postfix, я должен передать его с помощью команды sendmail. Однако я не уверен, как передать объект электронной почты sendmail, например, используя «вызов»()() для подпроцесса или я должен использовать smtplib «smtplib.SMTP()»?
Какой был бы «правильный» метод?
Благодаря
Если вы повторно введете порт 25, вы вызовете цикл (сообщение будет отправлено на ваш фильтр снова). поэтому вам нужен дополнительный экземпляр на другом порту, таком как 10026. Например: http://sourceforge.net/apps/trac/fuglu/wiki/FugluInstall (блок, который начинается с localhost: 10026 inet n ...) – Gryphius
Ah спасибо за ответ - теперь я прочитал фуглу, это имеет смысл. Могу ли я повторно ввести 10026, хотя я беру с stdin? Документы Postfix, похоже, говорят о повторной инъекции 10026 только в контексте службы прослушивания (например, Fuglu)? – jvc26
AFAIK не имеет значения, как сообщение попадает в ваш фильтр (stdin/smtp/....). Дополнительный экземпляр postfix на 10026 ничего не знает о исходном сообщении, он просто выглядит как новое сообщение (он получает новый идентификатор очереди и т. Д.). – Gryphius