Новая версия Postfix 3.10.0: улучшения безопасности и производительности почтового сервера

17 февраля 2025 года был выпущен новая стабильная версия почтового сервера Postfix 3.10.0. В то же время разработчики подтвердили, что поддержка версии Postfix 3.6, выпущенной в 2021 году, прекращается. Исходный код данного проекта написан на языке C и доступен на GitHub под лицензиями EPL 2.0 (Eclipse Public License) и IPL 1.0 (IBM Public License). Напомним, что версия Postfix 3.0 появилась в марте 2015 года.

Postfix является одним из немногих стабильных и востребованных открытых проектов, которые успешно сочетают высокие уровни безопасности, надежности и производительности. Команде разработчиков удалось достигнуть этого благодаря многопроцессной архитектуре, которая изолирует отдельные обработчики, а также строгой политике кодирования и аудита патчей.

Согласно данным OpenNET, согласно февральскому автоматизированному исследованию, Postfix используется на 37,64% (в прошлом году 36,81%) почтовых серверов, в то время как Exim занимает 56,03% (по сравнению с 56,61% годом ранее), Sendmail — 3,39% (ранее 3,60%), MailEnable – 1,80% (1,82%), MDaemon – 0,39% (0,40%), Microsoft Exchange – 0,19% (без изменений), OpenSMTPD – 0,10% (0,09%).

Основные нововведения и изменения в версии Postfix 3.10.0:

а) Введена поддержка криптоалгоритмов TLS, устойчивых к атакам на квантовом компьютере. Для применения этих алгоритмов необходимо использовать библиотеку OpenSSL 3.5, которая пока находится на стадии разработки. Новый синтаксис для постквантовых алгоритмов не вводится; вместо этого используются настройки OpenSSL при установке параметров «tls_eecdh_auto_curves» и «tls_ffdhe_auto_groups», установленных в пустые значения.

б) Добавлена поддержка заголовка «TLS‑Required: no» (RFC 8689), который позволяет доставку сообщений даже при невозможности следовать заданной политике безопасности TLS. В присутствии этого заголовка SMTP‑клиент работает с уровнем безопасности «smtp_tls_security_level = may», что означает, что проверка сертификата сервера не осуществляется, и возможно отклонение на соединение с передачей данных в открытом виде. В последующих версиях Postfix планируется внедрение SMTP‑расширения REQUIRETLS.

в) Введена поддержка протокола TLS‑RPT (Transport Layer Security Reporting), который обеспечивает отслеживание сбоев доставки сообщений, происходящих из-за невозможности установить требуемое шифрованное соединение, установленных с помощью расширений DANE (DNS‑based Authentication of Named Entities) или MTA‑STS (MTA Strict Transport Security). Владелец почтового домена устанавливает параметры для TLS‑RPT в DNS, после чего почтовые серверы начинают отправлять отчеты с результатами успешных и провалившихся TLS‑соединений к MX‑серверам, обслуживающим домен. Реализация базируется на библиотеке libtlsrpt.

г) Введен параметр «smtpd_hide_client_session = yes», который отключает добавление информации о клиентской сессии в заголовок «Received:», что приводит к более сжато формированным заголовкам.

д) Реализована возможность MIME‑кодирования (RFC 2047) имен в заголовках «From:», которые содержат не ASCII‑символы. Это позволяет избежать применения расширения SMTPUTF8 (RFC 6531), которое поддерживается не всеми средствами. Результаты такого кодирования выглядят как ‘»=?charset?Q?gibberish?=:’. Для определения кодировки имен добавлен параметр «full_name_encoding_charset», по умолчанию настроенный на utf8.

е) Изменена логика обработки ошибок соединений при указании в конфигурации «mysql:» или «pgsql:» только одного сервера. Теперь этот сервер воспринимается как балансировщик нагрузки, и при его сбое повторный запрос выполняется немедленно, без ожидания 60 секунд.

ж) В Milter добавлена функциональность для логирования причины перемещения сообщений в карантин.

з) В SMTP‑сервере теперь выводится в лог идентификатор очереди или «NOQUEUE» при завершении соединения из-за таймаута или превышения лимита ошибок. В процессе очистки логируется сообщение «queueid: canceled» для тех сообщений, на которые транзакция была запущена, но не завершена.

и) В клиенте Dovecot SASL при вывода сообщений «Invalid authentication mechanism» теперь указывается конкретный механизм аутентификации, который не удалось задействовать. При запись в лог SMTP‑сервера ‘reject’ теперь отображаются настройки sasl_method, sasl_username и sasl_sender.

к) В связи с изменением внутреннего протокола, использующегося в агенте доставки, после обновления версии Postfix необходимо выполнить перезапуск командой «postfix reload» или с помощью команд «postfix stop» и «postfix start». В противном случае в лог может появиться предупреждение «unexpected attribute smtputf8 from xxx socket (expecting: sendopts)».