Postfix: хранение исходящей почты для POP3-клиентов на сервере

Вряде случаев необходимо сохранять исходящую почту для клиентов , использующих POP3, на сервере в IMAP-папке для того что бы в последующим иметь доступ к этим письмам через веб-интерфейс или IMAP-клиента. Предлагаемый метод основан на использовании скрытой копии письма. В postfix есть три функции управления скрытыми копиями на уровне smtp-сервиса:

always_bcc = – направляет копию всей почты проходящей через smtp-сервис на адрес bcc_adres;

sender_bcc_maps = hash:/path/to/map – позволяет направить исходящую почту (почту на основе поля From) от определенного отправителя на заданный адрес, файл /path/to/map задает файл соответсвия исходящего адресата и адресата копии;

recipient _bcc_maps = hash:/path/to/map – направляет входящую почту (почту на основе поля To) направленную определенному адресту на заданный адрес, файл /path/to/map задает файл соответсвия исходящего адресата и адресата копии.

Создаем файл sender_bcc_map в директории postfix (/etc/postfix):

>touch /etc/postfix/sender_bcc_map

В seneder_bcc_map добавляем строки вида:

<адрес отправителя> <адрес отправителя>

т.е. копия письма высылается адресату отправившему письмо. Для пведонимов так же необходимо указать пару адресов в seneder_bcc_map.

Далее необходимо выполнить клманду:

>postmap /etc/postfix/sender_bcc_map

В main.cf необходимо добавить строку:

sender_bcc_maps = hash:/etc/postfix/sender_bcc_map

Теперь отправителю будут приходить копии писем. Для того что бы переносить эти письма в IMAP-папку Отправленные или Sent необходимо задействовать фильтрацию на стороне сервера. Так как я использую cyrus в качетсве IMAP- и POP3-сервиса, а так же локального MTA, то я задействовал sieve-сервис, который позволяет осуществлять фильтрацию входящих писем на стороне сервера на основе заданных правил. Для веб-интерфейса к почте я использую SquirelMail и его расшиерение avilsieve, которое достаточно легко позволяет создавать правила sieve. Необходимо создать пару фильтров на основе полей From и X-Mailer, первое поле позволяет определить, что письмо исходящие в него мы заносим адрес отправителя, а второе позволяет отделить письма отправленые через почтовую программу и письма отправленые с веб-интерфейса.

Задаем первое правило по следующей схеме если адресом отправителя равен адресу (FROM = seneder) и почтовым агентом является MS Outlook (X-Mailer = MS Office Outlook 12) переместить письмо в папку Sent

Второе правило: если адресом отправителя равен адресу (FROM = seneder) и почтовым агентом не является MS Outlook (X-Mailer = MS Office Outlook 12), то удаляем письмо.

Второе парвило исключает появляение дубликатов исходящих писем при отправке через веб-интерфейс.

Добавить комментарий