После почти года разработки состоялся релиз новой стабильной ветки почтового сервера Postfix — 3.9.0. В то же время объявлено о прекращении поддержки ветки Postfix 3.5, выпущенной в начале 2020 года. Postfix является одним из редких проектов, сочетающих одновременно высокую безопасность, надёжность и производительность, чего удалось добиться благодаря продуманной архитектуре и достаточно жёсткой политике оформления кода и аудита патчей. Код проекта написан на языке Си и распространяется под лицензиями EPL 2.0 (Eclipse Public license) и IPL 1.0 (IBM Public License).
В соответствии с январским автоматизированным опросом около 400 тысяч почтовых серверов, Postfix используется на 36.81% (год назад 33.18%) почтовых серверов, доля Exim составляет 56.61% (год назад 60.27%), Sendmail — 3.60% (3.62%), MailEnable — 1.82% (1.86%), MDaemon — 0.40% (0.39%), Microsoft Exchange — 0.19% (0.19%), OpenSMTPD — 0.09% (0.06%).
Основные новшества:
- Добавлен клиент для MongoDB, позволяющий хранить в данной СУБД базу виртуальных пользователей, псевдонимы, списки сопоставления адресов и различные проверочные таблицы. Для настройки обращения к MongoDB добавлен тип таблиц «mongodb«. Например, «alias_maps = proxy:mongodb:/etc/postfix/mongo.cf», где mongo.cf — файл с настройками подключения к MongoDB и фильтром запросов.
- В агент локальной доставки добавлено экспортирование идентификатора пересылки, преданного во время SMTP-сеанса через параметр ENVID (Envelope ID) в команде ESMTP MAIL (RFC 3461). Идентификатор записывается в переменную окружения ENVID и передаётся в агент доставки pipe через параметр командной строки «${envid}».
- В клиенты для хранения данных в MySQL («mysql:«) и PostgreSQL («pgsql:«) добавлены параметры: «idle_interval» для определения времени неактивности перед закрытием соединения и «retry_interval» для выставления таймера повторной отправки запросов. По умолчанию параметрам выставлено значение 60 секунд. Значение «retry_interval» можно уменьшить, например, для сокращения времени восстановления после ошибок, в случае использования только одного сервера в атрибуте «hosts».
- В клиент для MySQL добавлена настойка «charset» для указания кодировки символов по умолчанию. По умолчанию используется значение «utf8mb4», соответствующее настройкам по умолчанию в MySQL 8.0 (в более ранних выпусках использовалось значение «latin1»). Прекращена поддержка версий старше MySQL 4.0 (т.е. версий, выпущенных до 2003 года).
- Предоставлена опциональная возможность запроса самоподписанного (raw) открытого ключа для TLS, не завязанного на удостоверяющий центр, вместо сертификата X.509. Использование raw-ключей для аутентификации клиентов и серверов включается через параметры «smtpd_tls_enable_rpk = yes» и «smtp_tls_enable_rpk = yes«, но поведение при проверке сильно зависит от выставленного уровня безопасности и поддержке raw-ключей в локальной реализации TLS (см. документацию).
- Добавлена начальная поддержка файлов конфигурации OpenSSL. Для указания ссылки на файл с настройками TLS предложен параметр tls_config_file, а для указания имени секции с настройками из файла конфигурации — параметр «tls_config_name«. Привязку к файлам конфигурации OpenSSL можно использовать для снижения зависимости от настроек дистрибутивов, изменение уровня безопасности в которых может привести к увеличению доли сообщений, отправляемых без шифрования.
- В заголовках сообщений изменено форматирование номеров дней в датах — дни с 1 по 9 теперь дополняются нулём, а не пробелом (т.е. «01», «02» и т.п.). Изменение произведено так как RFC 5322 рекомендует использовать в качестве разделителя единичные пробелы в датах.
- Добавлена защита от некоторых видов атак «Blind» (SSRF-атаки на web-клиентов, нацеленные на обращение к серверу по SMTP), которая применяется при выставленной настройке «smtpd_forbid_unauth_pipelining = yes» (по умолчанию).
- По умолчанию включена настройка «smtpd_forbid_bare_newline = normalize», обеспечивающая защиту сервера от атак класса «SMTP smuggling«, позволяющих расщепить одно сообщение на несколько разных сообщений через использование нестандартной последовательности для разделения писем. Также добавлена защита от осуществления исходящих атак SMTP smuggling, при которых атакующий пользуется сервером на базе Postfix для атаки на другой SMTP-сервер. По умолчанию включена настройка «cleanup_replace_stray_cr_lf = yes», заменяющая лишние символы ‹CR› и ‹LF› на пробел.
- В реализации DNS-клиента размер возвращаемых результатов DNS-запроса теперь ограничен 100 записями, что в 20 раз больше, чем поддерживаемое в SMTP-клиенте максимальное число IP-адресов для одного сервера.
- В разряд устаревших переведены параметры «disable_dns_lookup» и «permit_mx_backup», а также некоторые параметры настройки TLS.
- Прекращена поддержка настроек, которые были объявлены устаревшими около 20 лет назад: «permit_naked_ip_address», «check_relay_domains» и
«reject_maps_rbl».
Источник: http://www.opennet.ru/opennews/art.shtml?num=60749