Релиз почтового сервера Postfix 3.6.0

После года разработки состоялся релиз новой стабильной ветки почтового сервера Postfix – 3.6.0. В то же время объявлено о прекращении поддержки ветки Postfix 3.2, выпущенной в начале 2017 года. Postfix является одним из редких проектов, сочетающих одновременно высокую безопасность, надёжность и производительность, чего удалось добиться благодаря продуманной архитектуре и достаточно жёсткой политике оформления кода и аудита патчей. Код проекта распространяется под лицензиями EPL 2.0 (Eclipse Public license) и IPL 1.0 (IBM Public License).

Advertisements

В соответствии с апрельским автоматизированным опросом около 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%).

Advertisements

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

  • В связи с изменением внутренних протоколов, используемых для взаимодействия между компонентами 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]:port
        postfix/postscreen[pid]: ALLOWLISTED [address]:port
        postfix/postscreen[pid]: DENYLISTED [address]:port
    

    Для сохранения прежних терминов в логах предусмотрен параметр “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).

Источник: OpenNET

%d такие блоггеры, как: