Прежде всего, правила почтовой маршрутизации Postfix могут быть очень сложными, и ваше, по-видимому, предпочтительное решение включает в себя множество хитростей в неправильных местах. Вы не хотите случайно показывать кому-то чужие письма, не так ли? Во-вторых, хотя Postfix может делать почти все, он не должен этого делать, поскольку он является только MDA (агентом доставки почты).
Ваше решение лучше всего решить с помощью сервера POP3 или IMAP (Cyrus IMAPd, Courier и т. Д.). Серверы IMAP могут иметь «учетные записи суперпользователя», которые могут читать почту всех пользователей. Затем ваше веб-приложение может подключиться к почтовому ящику пользователя и получить заголовки и тексты.
Если вы хотите показать только строку темы, вы можете получить ее с помощью специальной команды IMAP и очень низких накладных расходов. Однако библиотека Python IMAP не самая простая для понимания API. Я приведу пример (не проверено!) На примере, взятом из стандартной библиотеки:
import imaplib
sess = imaplib.IMAP4()
sess.login('superuser', 'password')
# Honor the mailbox syntax of your server!
sess.select('INBOX/Luke') # Or something similar.
typ, data = sess.search(None, 'ALL') # All Messages.
subjectlines = []
for num in data[0].split():
typ, msgdata = sess.fetch(num, '(RFC822.SIZE BODY[HEADER.FIELDS (SUBJECT)])')
subject = msgdata[0][1].lstrip('Subject: ').strip()
subjectlines.append(subject)
Это регистрирует на сервере IMAP, выбирает почтовый ящик пользователя, выбирает все идентификаторы сообщений, затем выбирает (надеюсь) только сюжетные линии и добавляет полученные данные в список subjectlines .
Чтобы получить другие части почты, измените строку с sess.fetch . Для конкретного синтаксиса fetch посмотрите RFC 2060 (раздел 6.4.5).
Удачи!