Новая версия почтового сервера Exim 4.99

Опубликован релиз почтового сервера Exim 4.99, в который внесены накопившиеся исправления и добавлены новые возможности. Код проекта написан на языке Си и распространяется под лицензией GPLv2+. В соответствии с автоматизированным опросом около 500 тысяч почтовых серверов, доля Exim составляет 56% (год назад 59.06%), Postfix используется на 37.45% (34.68%) почтовых серверов, Sendmail – 3.53% (3.42%), MailEnable – 1.84% (1.81%), MDaemon – 0.40% (0.37%), Microsoft Exchange – 0.20% (0.17%).

Основные изменения:

  • Добавлена поддержка ESMTP-команды “ATRN” (Authenticated TURN), позволяющей менять роли сервера и клиента в процессе доставки сообщений. Команду можно использовать для организации доставки писем на системы с динамическими IP-адресами или с непостоянным интернет-доступом. Подобная система может подключиться к SMTP-серверу в роли клиента, а затем при помощи команды ATRN взять на себя роль сервера для приёма накопившихся сообщений. Команду можно использовать только после успешного прохождения аутентификации и при наличии разрешающего ACL (acl_smtp_atrn).
  • Большинство компонентов Exim теперь могут быть собраны в форме загружаемых модулей. Например, в виде загружаемых модулей могут быть оформлены lookup-движки JSON и LDAP, фильтры, драйверы аутентификации и маршрутизации, компоненты PAM, RADIUS, perl, SPF, DKIM, DMARC и ARC, а также все виды транспорта, за исключением SMTP.
  • Реализована возможность отключения поддержки фильтров Exim и Sieve на стадии сборки.
  • Добавлена поддержка DNS-записей SRV (Service Location Record) для определения поддержки TLS (Transport Layer Security) почтовыми серверами получателей.
  • Добавлена экспериментальная сборочная опция “EXPERIMENTAL_SPF_PERL”, включающая альтернативную реализацию механизма аутентификации SPF (Sender Policy Framework), использующую Perl-модуль Perl Mail::SPF вместо библиотеки libspf2, у которой наблюдаются проблемы с сопровождением.
  • Добавлена экспериментальная сборочная опция “EXPERIMENTAL_NMH” с реализация lookup-движка для проверки IP-адресов в хранилище NMH (Net-Masked Hero).
  • В файл конфигурации добавлена настройка “tls_early_banner_hosts” для определения хостов, к которым будет применяться механизм “TLS Early Data” (0-RTT) для отправки SMTP-баннера на стадии до завершения согласования соединения TLS.
  • Добавлена опция “sieve_inbox” для задания имени mailbox-файла, в который будут сохранены сообщения, перенаправляемые при помощи настройки “redirect_router” в фильтры на языке Sieve.
  • Добавлена переменная “connection_id”, содержащая идентификатор принятого соединения. Переменную можно использовать при настройке формата вывода в лог.
  • Реализованы события smtp:fail:protocol и smtp:fail:syntax, позволяющие отслеживать ошибки, связанные с протоколом и синтаксисом команд SMTP.
  • Транспорт “socks_proxy” теперь может принимать значение пустой строки, что будет восприниматься как отсутствие проксирования.
  • Добавлены переменные $dmarc_alignment_spf и $dmarc_alignment_dkim, отражающие результаты проверок SPF и DKIM.
  • Добавлена возможность использования соединений IPv6 при обращении к СУБД MySQL и PostgreSQL.
  • Разрешено использовать адрес отправителя (envelope-from), заданный в параметрах транспорта, для прямых доставок (cutthrough deliveries) и проверок существования получателей.
  • Добавлена возможность использования использования переменных и выражений для динамического формирования опций “hosts_randomize” в маршрутизаторе “manualroute” и транспорте “smtp”. Аналогично добавлена поддержка динамического формирования опций “fallback_hosts” во всех маршрутизаторах и транспорте “smtp”.
  • В файл конфигурации добавлена опция “log_ports” для фильтрации отражаемых в логах номеров портов. Например, при указании “log_ports = !25 : !587” в лог будут выводиться записи outgoing_port и incoming_interface, не связанные с портами 25 и 587.
  • Добавлена возможность отражения в логе доставки информации о командах и ответах, переданных при установке SMTP-соединения, а также сведений об использовании TLS при соединении (метка “tls_on_connect”).
  • Добавлена опция “no_wr”, отключающая запись в кэш результатов выполнения lookup-операций.
  • Добавлена опция командной строки “-dS” для вывода отладочной информации на стадии до разбора файла конфигурации.
  • В связанные со сбоем аутентификации сообщения в логе добавлены теги “H=” и “U=”, отражающие хост и имя пользователя.
Release. Ссылка here.