Опубликован почтовый сервер Postfix 3.10.0

После почти года разработки опубликован релиз новой стабильной ветки почтового сервера Postfix — 3.10.0. В то же время объявлено о прекращении поддержки ветки Postfix 3.6, выпущенной в начале 2021 года. Код проекта написан на языке Си и распространяется под лицензиями EPL 2.0 (Eclipse Public license) и IPL 1.0 (IBM Public License).

Postfix является одним из редких проектов, сочетающих одновременно высокую безопасность, надёжность и производительность, чего удалось добиться благодаря многопроцессой архитектуре, изолирующей отдельные обработчики, а также жёсткой политике оформления кода и аудита патчей. Для защиты от ошибок при работе с памятью в проекте используются защищённые варианты функции для выделения и освобождения памяти, а также набор абстрактных функций-обвязок для работы с буферами (проверяется выход за границы буфера и обращения к освобождённой памяти), файловыми операциями, форматирования вывода, буферизированного ввода/вывода и манипуляций со строками (включая возможности для работы со строками произвольного размера и автоматического изменения размера строк).

В соответствии с февральским автоматизированным опросом около 550 тысяч почтовых серверов, 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% (0.19%), OpenSMTPD — 0.10% (0.09%).

Основные новшества:

  • Добавлена возможность использования в TLS криптоалгоирмов, стойких к подбору на квантовом компьютере. Для использования данных алгоритмов требуется использование ветки OpenSSL 3.5, которая пока не вышла из стадии разработки. Для выбора постквантовых алгоритмов в Postfix не стали вводить новый синтаксис TLS-групп, а положились на настройки 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). Владелец почтового домена определяет в DNS параметры для TLS-RPT, после чего почтовые серверы будут отправлять отчёты с информацией об успешных и сбойных TLS-соединениях к MX-серверам, обслуживающим домен. Реализация основана на библиотеке libtlsrpt.
  • Добавлена настройка «smtpd_hide_client_session = yes», отключающая вставку информации о сеансе клиента при подстановке SMTP-сервером заголовка «Received:».
    Пример урезанного заголовка» «Received: by mail.example.com (Postfix) id postfix-queue-id for ‹user@example.com›; Day, dd Mon yyyy hh:mm:ss tz-offset (zone)».

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

  • Изменена логика обработки сбойных соединений при указании в настройках «mysql:» или «pgsql:» только одного сервера. Подобный сервер теперь воспринимается как балансировщик нагрузки и в случае единичного сбоя, повторный запрос отправляется сразу, без задержки в 60 секунд.
  • В Milter реализовано отражение в логе информации с причиной помещения сообщения к карантин.
  • В SMTP-сервере обеспечен вывод в лог идентификатора очереди или значения «NOQUEUE» при завершении соединения по таймауту, обрыву или превышению лимита на число ошибок. Процесс cleanup при этом выдаёт в лог «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)».

Источник: http://www.opennet.ru/opennews/art.shtml?num=62741