После года разработки состоялся релиз новой стабильной ветки почтового сервера Postfix - 3.6.0. В то же время объявлено о прекращении поддержки ветки Postfix 3.2, выпущенной в начале 2017 года. Postfix является одним из редких проектов, сочетающих одновременно высокую безопасность, надёжность и производительность, чего удалось добиться благодаря продуманной архитектуре и достаточно жёсткой политике оформления кода и аудита патчей. Код проекта распространяется под лицензиями EPL 2.0 (Eclipse Public license) и IPL 1.0 (IBM Public License).
В соответствии с апрельским автоматизированным опросом около 600 тысяч почтовых серверов, Postfix используется на 33.66% (год назад 34.29%) почтовых серверов, доля Exim составляет 59.14% (57.77%), Sendmail - 3.6% (3.83%), MailEnable - 2.02% (2.12%), MDaemon - 0.60% (0.77%), Microsoft Exchange - 0.32% (0.47%).
Основные новшества:
Источник статьи: https://www.opennet.ru/opennews/art.shtml?num=55058
В соответствии с апрельским автоматизированным опросом около 600 тысяч почтовых серверов, Postfix используется на 33.66% (год назад 34.29%) почтовых серверов, доля Exim составляет 59.14% (57.77%), Sendmail - 3.6% (3.83%), MailEnable - 2.02% (2.12%), MDaemon - 0.60% (0.77%), Microsoft Exchange - 0.32% (0.47%).
Основные новшества:
- В связи с изменением внутренних протоколов, используемых для взаимодействия между компонентами Postfix, перед обновлением обязательно требуется остановка почтового сервера командой "postfix stop". В противном случае могут наблюдаться сбои при взаимодействии с процессами pickup, qmgr, verify, tlsproxy и postscreen, которые могут привести к задержке отправки писем до перезапуска Postfix.
- Проведена чистка упоминаний слов "white" и "black", воспринимаемых некоторыми представителями сообщества, как расовая дискриминация. Вместо "whitelist" и "blacklist" теперь следует использовать "allowlist" и "denylist" (например, параметры postscreen_allowlist_interfaces, postscreen_denylist_action и postscreen_dnsbl_allowlist_threshold). Изменения затрагивают документацию, настройки процесса postscreen (встроенный межсетевой экран) и отражение информации в логах.
postfix/postscreen[pid]: ALLOWLIST VETO [address]ort
postfix/postscreen[pid]: ALLOWLISTED [address]ort
postfix/postscreen[pid]: DENYLISTED [address]ort
Для сохранения прежних терминов в логах предусмотрен параметр "respectful_logging = no", который следует указывать в main.cf перед "compatibility_level = 3.6". Поддержка старых имён настроек postscreen сохранена для обеспечения обратной совместимости. Так же пока неизменным остался файл конфигурации "master.cf". - В режиме "compatibility_level = 3.6" осуществлён переход по умолчанию на использование хэш-функции SHA256 вместо MD5. При выставлении более ранней версии в параметре compatibility_level продолжает применяться MD5, но для связанных с применением хэшей настроек, в которых явно не определён алгоритм, в лог будет выводиться предупреждение. Прекращена поддержка экспортного варианта протокола обмена ключами Диффи-Хеллмана (значение параметра tlsproxy_tls_dh512_param_file теперь игнорируется).
- Упрощена диагностика проблем, связанных с указанием в master.cf некорректной программы-обработчика. Для выявления подобных ошибок каждый внутренний сервис, включая postdrop, теперь анонсирует имя протокола до начала обмена данными, а каждый клиентский процесс, включая sendmail, проверяет соответствие заявленного имени протокола поддерживаемому варианту.
- Добавлен новый тип сопоставлений "local_login_sender_maps" для гибкого управления назначением envelope-адреса отправителя (предаётся в команде "MAIL FROM" во время SMTP-сеанса) в процессы sendmail и postdrop. Например, для разрешения локальным пользователям, за исключением root и postfix, указания в sendmail только своих логинов, используя привязку UID к имени, можно использовать следующие настройки:
/etc/postfix/main.cf:
local_login_sender_maps =
inline:{ { root = *}, { postfix = * } },
pcre:/etc/postfix/login_senders
/etc/postfix/login_senders:
# Разрешено указание как логинов, так и формы логин@домен.
/(.+)/ $1 $1...@example.com
- Добавлена и по умолчанию активирована настройка "smtpd_relay_before_recipient_restrictions=yes", при которой SMTP-сервер будет проверять ограничения smtpd_relay_restrictions до smtpd_recipient_restrictions, а не наоборот, как раньше.
- Добавлен параметр "smtpd_sasl_mechanism_list", по умолчанию установленный в значение "!external, static:rest" для предотвращения вызывающих замешательство ошибок, в случае, когда бэкенд SASL заявляет о поддержке режима "EXTERNAL", который не поддерживается в Postfix.
- При определении имён в DNS по умолчанию задействован новый API, поддерживающий многопоточность (threadsafe). Для сборки со старым API следует указать при сборке "make makefiles CCARGS="-DNO_RES_NCALLS...".
- Добавлен режим "enable_threaded_bounces = yes" для подстановки уведомлений о проблемах с доставкой, задержанной доставке или подтверждении доставки с тем же идентификатором обсуждения (уведомление будет показано почтовым клиентом в той же нити, вместе с остальными сообщениями переписки).
- По умолчанию прекращено использование системной БД /etc/services для определения номеров TCP-портов для SMTP и LMTP. Вместо этого номера портов настраивается через параметр known_tcp_ports (по умолчанию lmtp=24, smtp=25, smtps=submissions=465, submission=587). В случае, если какой-то сервис пропущен в known_tcp_ports, продолжает использоваться /etc/services.
- Уровень совместимости ("compatibility_level") поднят до значения "3.6" (в прошлом параметр менялся два раза, кроме 3.6 поддерживаются значения 0 (по умолчанию), 1 и 2). Отныне "compatibility_level" будет меняться на номер версии, в которой внесены изменения, нарушающие совместимость. Для проверки уровней совместимости в main.cf и master.cf добавлены отдельные операторы сравнения, такие как "<=level" и "< level" (штатные операторы сравнения не подходят, так как посчитают 3.10 меньше 3.9).
Источник статьи: https://www.opennet.ru/opennews/art.shtml?num=55058