Почтовые серверы
Свободные MTA Postfix и Exim: общее
Почтовый сервер фактически является агентом пересылки почты (mail transfer agent, MTA). Говоря техническим языком, задача MTA — быть доступным на 25 порту и осуществлять приём писем своего домена от других почтовых серверов и передачу им писем в рамках протокола Simple Mail Transfer Protocol (SMTP).
MTA — всего лишь один из кирпичиков в вашем будущем здании. Дело в том, что по умолчанию Postfix и Exim (EXperimental Internet Mailer) доставляют почту только локальным системным пользователям, что в современных реалиях обычно не устраивает администраторов. Традиционно многочисленные почтовые учётные записи пользователей создают в реляционных базах данных типа MySQL, PostgreSQL или хранят в каталоге LDAP.
И тут же возникает вопрос, а как выделить администраторам интерфейс для удобного управления учётными записями и дополнительный веб-интерфейс к почте для пользователей? Администраторы обычно устанавливают себе что-то типа PostfixAdmin, если выбрали MTA Postfix и что-то типа Virtual Exim 2, если выбран Exim.
Пример архитектуры готового решения на базе Postfix
Для работы веб-интерфейса нужно поставить и настроить один из популярных веб-серверов Apache или Nginx и разобраться с версиями и модулями языков программирования PHP и Perl, на которых обычно создают веб-проекты. Веб-интерфейс для пользователей делают опционально, но если вы решитесь, то придётся настроить что-то типа Roundcube, SquirrelMail и т.д.
На этом всё? Современные реалии сурового Интернета требуют от администратора защиты от спама в лице свободных проектов Amavis, SpamAssassin, Rspamd и свободное антивирусное решение ClamAV или любое купленное вами. Идеально, если вся готовая система будет подписывать исходящие почтовые сообщения через DomainKeys Identified Mail (DKIM) и проверять через Sender Policy Framework (SPF).
Уф, на этом всё? К сожалению, нет. Пользователь должен иметь возможность обычной почтовой программой (mail user agent, MUA) забрать свои сообщения с почтового сервера. Но как? Обычно используется свободный сервер Dovecot (Local Delivery Agent, LDA), который реализует протоколы Internet Message Access Protocol (IMAP) и Post Office Protocol Version 3 (POP3).
Различия MTA Postfix и Exim
Безопасность
Самое серьёзное отличие Postfix от Exim состоит в том, что Postfix архитектурно грамотно заложил безопасность в свой фундамент со дня первого релиза. Дело в том, что в любой операционной системе для открытия программой на прослушивание (bind) портов с номером меньше 1024 требуются права администратора (root в Linux системе), что автоматически подразумевает открытие порта 25 SMTP (<1024) потребует высоких привилегий.
Postfix для открытия 25 порта использует отдельный с минимальным количеством кода модуль, в то время как остальные программные части проекта работают от других не привилегированных системных учётных записей. Такая внутренняя архитектура резко повышает безопасность проекта.
Exim в своей порочной архитектуре продолжал следовать печально известному своими дырами Sendmail. Единый бинарник, работающий от root’а, контролирует все аспекты работы MTA. Такая мина замедленного действия не могла не сработать. Печально знаменитая критическая уязвимость под номером CVE-2019-10149 разрешает удалённо выполнять код на сервере с правами root. Массовая волна заражений по Интернету изрядно попортила кровь тем админам, кто выбрал Exim в качестве основного почтового сервера.
История проблем с безопасностью Exim
Производительность
Exim может обрабатывать огромное количество писем, но он архитектурно спроектирован своим автором Филиппом Хейзелом (Philip Hazel) на доставку писем немедленно, желательно без использования очередей. Производительность обработки очереди в целом очень низка, что спасает в обычных малонагруженных условиях, но может просаживаться на высоконагруженных почтовых серверах.
Сам автор Филипп Хейзел как-то сказал: «Суть в том, что Exim не особенно хорошо работает в тех средах, где очередь регулярно становится очень большой. Он не был никогда спроектирован для таких задач. Доставка из очереди всегда рассматривалась как исключение, а не норма».
Без центрального менеджера очередей, по аналогии с qmgr у Postfix, невозможно организовать балансировку нагрузки, что приводит к непропорционально большим затратам времени на многократную обработку одних и тех же записей в очереди и не позволит параллелизм в масштабе всей системы. Без грамотной реализации очередей, Exim подвержен проблеме «thundering herd problem», когда несколько сообщений, адресованных одному домену, отправляются одновременно.
Как контр-пример, почтовый сервер Postfix может обслуживать тысячи запросов, но в редких случаях нужно, чтобы Postfix открыл одномоментно тысячи SMTP сессий. Менеджер очередей отправляет небольшое количество сообщений и постепенно наращивает параллелизм (concurrency).
Проприетарные MS Exchange и CommuniGate Pro
CommuniGate Pro
CommuniGate Pro (CGP) — яркий представитель концепции единой коммуникационной платформы в противовес вышеописанной схеме с самостоятельной интеграцией различных решений между собой. Перед вами не просто почтовый сервер: платформа CGP предлагает вам доступ к электронной почте (SMTP, IMAP, POP3, MAPI, AirSync) + веб-интерфейс, VoIP-телефония (SIP), коллективная работа пользователей (WebDAV, FTP), чат мгновенных сообщений (XMPP, SMPP), календари (CalDAV) и многое другое.
Плюсом CommuniGate Pro является его наличие в реестре российского ПО, что необходимо организациям, осуществляющим переход в рамках импортозамещения. Архитектурно CommuniGate Pro создан легко масштабируемым под растущие нагрузки, неизбежно возникающие с увеличением компании.
Microsoft Exchange
Microsoft Exchange с каждой новой версией стремится стать системой управления всей организацией, своего рода «виртуальным рабочим кабинетом». Как система корпоративного класса, она стремится помочь в организации коллективной работы пользователей и дать максимально возможный функционал. Само собой, MS Exchange выполняет функции почтового сервера (SMTP, IMAP, POP3, MAPI), есть поддержка календарей и адресных книг, VoIP-телефония, голосовая почта, возможности для совместной работы.
Самое главное достоинство MS Exchange — логичная и родная интеграция со всей экосистемой Microsoft. Пользователь может отправить документ Word, электронную таблицу Excel или презентацию PowerPoint другому пользователю, и не обязательно в виде вложения внутри письма: это может быть ссылка на облачный диск OneDrive для бизнеса или локальный корпоративный сервер SharePoint. Пользователи могут совместно работать над документами в локальной среде прямо в почтовом клиенте MS Outlook.
Интеграция со Skype даёт пользователям видеть присутствие нужного пользователя в онлайн, вызвать абонента или ответить на звонок, видеть расписание и присоединяться к онлайн-встречам и т.д.
Системные администраторы знают и ценят такие возможности, как заложенная в архитектуру Высокая Доступность (High availability). Данные пользователя бесценны и для корпораций недопустимы потери и простои. Фундаментальный элемент инфраструктуры, встроенный в MS Exchange — это группа серверов (database availability group, DAG), обеспечивающая автоматическое восстановление при сбоях базы данных, сети и серверов. Транспортная служба создаёт избыточность всех сообщений (shadow redundancy) и копии доставленных сообщений (Safety Net).
MS Exchange обладает высокой связностью и требует для своей работы службу каталогов Active Directory, что первоначально выглядит сложно, но нужно понимать, что надёжные и отказоустойчивые комплексы уровня предприятия не могут быть простыми по определению. Один из способов облегчить себе жизнь с MS Exchange — задействовать виртуализацию уровня предприятия VMware и создать базовую инфраструктуру MS Exchange, которая затем будет динамически масштабироваться с ростом вашей компании и нагрузок. Как было сказано выше, DAG поможет при авариях и сбоях аппаратуры, но никто не мешает вам объединить технологии Microsoft с возможностями VMware High Availability и Distributed Resource Scheduler. Вы можете упростить аварийное восстановление за счет VMware Site Recovery Manager.
Итог
Два чисто почтовых сервера Postfix и Exim ярко представляют парадигму свободного мира open source — «возьми и построй вместе с другими свободными продуктами, что желаешь». По умолчанию, вы на базе Postfix и Exim получаете почтовый сервер, который принимает для локальных пользователей письма и кладёт в локальную папку. И всё! Требуется опытный администратор, который сможет добавить других «кирпичиков» из мира свободного программного обеспечения и построить итоговое почтовое решение. Но помните, что собранное итоговое решение-конструктор, как ни крути, будет всего лишь почтой, ограниченной протоколами SMTP, IMAP, POP3.
Перед вами представители другого класса программного обеспечения уровня корпораций. Необидное слово «комбайн» чётко формулирует мысль, что вы получаете колоссальный дополнительный функционал для пользователя, который поможет в работе и взаимодействии людей.