Фильтр Python для постфикса - PullRequest
       7

Фильтр Python для постфикса

3 голосов
/ 23 августа 2011

Я пытаюсь создать простой Python-фильтр для постфикса, чтобы добавить заголовок «Ответить на» к определенным сообщениям.

Что я сделал до сих пор, так это забрал письмо из stdin,и разобрать его в объект электронной почты, например, так:

raw = sys.stdin.readlines()
msg = email.message_from_string(''.join(raw))

Затем я поиграл с заголовками и т. д.

msg.add_header('Reply-to', 'foo@bar.com')

И теперь хочу повторно вставить это обратно в postfix.Читая фильтр readme , связанный с postfix, я должен передать его обратно с помощью команды sendmail.Однако я не уверен, как передать объект электронной почты в sendmail, например, используя подпрограмму 'call ()' или я должен использовать smtplib 'smtplib.SMTP ()'?

Что бы«правильный» метод?

Спасибо

1 Ответ

4 голосов
/ 23 августа 2011

Вы можете использовать оба метода, но smtplib.SMTP () более гибок и облегчает обработку ошибок.

Если вам нужен пример, взгляните на мою инфраструктуру для фильтров Python : https://github.com/gryphius/fuglu/blob/master/fuglu/src/fuglu/connectors/smtpconnector.py#L67

метод re_inject делает именно это (FUSMTPClient является подклассом smtplib.SMTP), поэтому в основном это сводится к:

client = smtplib.SMTP('127.0.0.1',<yourportnumber for the receiving postfix instance>)
client.sendmail(<envelope from>, <envelope to>, <yourmessageobject>.as_string())
...