Skip to Content
 Русский Русский    English English   

 

Архитектура почтовой системы на базе Postfix

Архитектура почтовой системы на базе Postfix

Мне была поставлена задача построить безопасную корпоративную почтовую систему с возможностью хранения почтовых ящиков и сообщений в базе данных, осуществив при этом фильтрацию почтовых сообщений на спам и вирусы. Должна присутствовать возможность отправки сообщений сотрудниками вне локальной сети, например, находящихся в отпуске.

В качестве почтовой системы я выбрала Postfix. Такая система характеризуется устойчивость, надежностью и безопасностью. Проект постоянно развивается, следовательно возможные сбои в работе в разумные сроки могут быть устранены.
Надежная работа Postfix достигается благодаря следованию основной задаче – передаче почты, а когда требуется доп. действия, позволяет подключать внешние программы. Модульная структура обеспечивает высокий уровень безопасности, т. к. каждая программа работает с минимальным набором привилегий. Postfix тесно интегрирован с UNIX - это повышает производительность системы.

Определив ПО и связи всех компонентов, которые буду использовать, я нарисовала архитектуру почтовой системы на базе Postfix:

Архитектура почтовой системы на базе Postfix

1. Во главе всего стоит демон master, который запускается командой postfix при старте системы. Осуществляет контроль над всеми остальными демонами Postfix. Ожидает поступления входящих заданий для передачи их подчиненным демонам. Может вызвать несколько экземпляров демона.

2. Далее почтовое сообщение попадает демону smtpd. Проводит ряд проверок для защиты остальной части системы Postfix; вызывает демоны tlsmgr, anvil, модуль пакета cyrus sasl(Simple Authentication and Security Layer) для smtp аутентификации, trivial-rewrite и cleanup.

3. Демон tlsmgr обслуживает кэш ключей сеансов TLS. Генерирует случайные числа в системах, не обладающих соответствующей встроенной поддержкой и удаляет ключи с истекшим сроком действия из базы данных кэша сеансов в соответствии со значением параметра smtpd_tls_session_ cache_timeout.

4. Anvil защищает от DoS-атак путем ведения статистики соединений. Предусмотрена возможность отмены ограничений для авторизованных клиентов.

5. SMTP-аутентификация позволяет клиенту пересылать сообщения через почтовый сервер только после авторизации. Аутентификацию я буду осуществлять с помощью пакета Cyrus SASL.

Cyrus SASL осуществляет обращение к базе данных mysql для проверки пароля с помощью демона авторизации Saslauthd, который позволяет верифицировать пароли с помощью PAM(Pluggable Authentication Modules).

6. Демон trivial-rewrite резолвит и переписывает нестандартный адрес к виду user@mydomain.ru. В разных источниках пишут, что демона trivial-rewrite вызывает cleanup, однако smtpd также к нему обращается.

7. Демон Cleanup проводит первоначальные проверки на правильность оформления и формат входящего сообщения, позволяя защитить остальную систему от многих атак, рассчитанных на переполнение буфера. С помощью процесса trivial-rewrite производит проверку адреса. Помещает результат в очередь incoming, затем уведомляет диспетчер очередей qmgr о прибытии нового сообщения.

Очереди

8. Демон qmgr (queue manager) управляет очередями и распределяет задачи доставки между агентами доставки почты. Использует демон bounce для отказа в доставке сообщений. Очереди хранятся на диске в папке /var/spool/postfix.

9. Получив от cleanup уведомление о поступлении новой почты, qmgr перекладывает письма готовые к отправке в очередь active. Маленький размер очереди позволяет предотвратить нехватку памяти при загруженности системы. Когда предельное количество сообщений в очереди active достигнуто, диспетчер очередей прекращает просмотр очередей incoming и deferred.

10. Qmgr помещает письмо в очередь deferred в случае неудачной доставки.

11. Corrupt содержит поврежденные файлы очередей для того, чтобы администратор мог исследовать их с помощью postcat.

12. В очередь hold попадают сообщения, не прошедшие политики администратора (проверка тела, заголовка и др).

Доставка почтовых сообщений

13. Демон local отвечает за доставку в локальные почтовые ящики и локальному агенту доставки maildrop. Доступ к базе данных осуществляется с помощью dbmail-lmtp.

14. Демон lmtp client доставляет письма на локальный или удаленный сервер, например выделенный для хранения почтовых ящиков, по протоколу lmtp. Доступ к базе данных осуществляется с помощью dbmail-lmtp.

15. Демон smtp client передает сообщения службе clamsmtpd, взаимодействующей с антивирусом ClamAV.

16. После проверки сообщения антивирусом ClamAV сообщение снова передается демону smtpd и далее по цепочке демону cleanup.

17. Демон virtual работает с почтовыми ящиками только в формате mailbox. Может доставляет почту для нескольких доменов.

18. Демон error всегда вызывает возврат сообщения. Информирует bounce о невозможности доставки сообщения.

19. Демон pipe служит интерфейсом к другим почтовым транспортным механизмам. В моем случае сообщение передается системе антиспам SpamAssassin, который передает сообщение демону sendmail.

Локальная доставка почты из ОС

20. Демон sendmail служит для замены системного MTA sendmail. Необходимо для поддержки работы программ, которые все еще используют sendmail.

21. Демон sendmail взаимодействует с программой postdrop для помещения сообщений в очередь maildrop, которая находится в /var/spool/postfix/maildrop.

22. Демон pickup забирает почту из очереди maildrop и передает демону cleanup.

Продолжение. Часть 2. Почтовая система Postfix + DBmail + Tls + Cyrus SASL + Saslauthd + Pam-mysql + ClamAV + ClamSMTP + SpamAssassin + STunnel

Ваша оценка: Нет Средняя: 4.7 (18 голосов)