Увидел свет почтовый сервер Postfix 3.0.0После года разработки и спустя 12 лет с момента появления ветки 2.0 представлен релиз новой стабильной ветки почтового сервера Postfix - 3.0.0. Одновременно с выходом новой ветки, объявлено о прекращении поддержки ветки Postfix 2.8, выпущенной в начале 2011 года. Ветка 3.0 примечательна изменением настроек по умолчанию, поддержкой в адресах национальных алфавитов, расширением синтаксиса конфигурации и появлением новых типов таблиц. Postfix является одним из редких проектов, сочетающих одновременно высокую безопасность, надёжность и производительность, чего удалось добиться благодаря продуманной архитектуре и достаточно жесткой политике оформления кода и аудита патчей. В соответствии с данными, полученными в результате автоматизированного опроса около двух миллионов почтовых серверов, Postfix используется на 28.01% почтовых серверов, доля Exim составляет 50.65%, Sendmail - 9.22%, Microsoft Exchange - 5.47%. Из особенностей новой ветки можно отметить: Поддержка расширения SMTPUTF8 (RFC 6531), позволяющего использовать символы национальных алфавитов в адресах электронной почты, именах хостов, названиях почтовых ящиков и SMTP-заголовках. В версии 3.0 полностью реализована поддержка SMTP-заголовков и адресов в кодировке UTF-8, но ещё остаётся реализовать средства для автоматического преобразования доменных имён в кодировках ASCII ("xn-*") и UTF-8 (в myhostname и mydomain имена должны быть заданы в ASCII, а в mydestination, relay_domains и других директивах продублированы в обеих формах); Представлен новый набор настроек по умолчанию. Изменения активируются только для новых установок, при обновлении ранее существующих конфигураций прежний набор настроек по умолчанию будет сохранён, а для перехода к новым настройкам потребуется явное участие администратора. Информация об изменившихся настройках по умолчанию отображается в логе. Среди изменившихся настроек можно отметить append_dot_mydomain=no, chroot=no, smtputf8_enable=yes, mynetworks_style=host (было subnet), relay_domains="" (было $mydestination). Для управления обратной совместимостью представлена директива compatibility_level, установка значения "2" подразумевает использование конфигурации Postfix 3; Возможность выполнения операций одновременно над несколькими таблицами. Для обращения к нескольким таблицам представлены два новых новых типа БД: "pipemap:{map1,map2...}" для последовательного перебора таблиц по цепочке так, что результат запроса первой таблицы используется в качестве ключа для запроса к следующей таблице. Второй тип "unionmap:{map1,map2,...}" подразумевает отправку запросов сразу всем указанным таблицам с последующим объединением результатов выборки; Поддержка псевдо-таблиц, позволяющих быстро определить БД на основе перечисления значений непосредственно в месте определения таблицы. Например, указав "inline:{key1=value1,key2=value2,...}" можно избежать необходимости создания отдельной БД в файле. Также добавлен новый тип таблиц "randmap{value1,value2,...}", при обращении к которым элемент из таблицы выбирается случайным образом (например, для балансировки нагрузки); Возможность преобразования DNS-обращений и кодов/сообщений статуса доставки при помощи таблиц. Для задания масок преобразования в таблицах типа PCRE задаются регулярные выражения и связанные с ними замены. При помощи данной техники появляется возможность исправления проблемных DNS-ответов, приводящих к ошибкам при доставке сообщений. Подключение фильтров производится через smtp_dns_reply_filter, smtp_delivery_status_filter и подобные директивы; Улучшен синтаксис файла конфигурации, в котором теперь допускается использование тройных условных операторов "${name?{iftrue}:{iffalse}}" и операторов сравнения "${{expr1}==${expr2}?{iftrue}:{iffalse}}". Возможна привязка отдельных таймаутов к Milter и policy-серверам. В параметрах master.cf, настройках import/export_environment и результатах выборки из таблиц теперь можно использовать пробелы. В Postfix 3.1 ожидается поддержка возвращения множественных результатов выборки в таблицах access и header/body_checks; Привязка профилей команд к отдельным SMTP-сеансам, позволившая организовать запись в лог в конце каждого входящего сеанса, а не по мере поступления запросов, снабдив запись необходимой диагностической информацией. В итоге значительно упростился процесс диагностики проблем, а администраторы получили возможность обойтись без включения расширенных логов и запуска сниффера при разборе неоднозначных инцидентов. Например, активность бота, подбирающего пароли, теперь отражается в логе как "disconnect from name[addr"> ehlo=1 auth=0/1 commands=1/2", показывая, что клиент отправил одну успешную команду EHLO, одну команду AUTH, которая завершилась неудачей, после чего оборвал соединение без передачи команды QUIT; Поддержка обработки BCC в header/body_checks и milter_header_checks. В таблицы access добавлено новое действие INFO. Новые директивы check_client_a_access, check_reverse_client_a_access, check_sender_a_access, check_helo_a_access и check_recipient_a_access для проверки по IP-адресам, вычисленным на основе резолвинга хоста клиента, параметров заголовка HELO, домена отправителя или домена получателя; Новый параметр smtp_address_verify_target, определяющий стадию принятия решения о валидности получателя. По умолчанию решение принимается при получении заголовка "rcpt". Установив значение "data" можно организовать отсеивание некорректных получателей при поступлении команды DATA; Поддержка сборки с динамическим связыванием библиотек и динамической загрузки плагинов доступа к БД. Из поддерживающих динамическую загрузку плагинов отмечены CDB, LDAP, LMDB, MYSQL, PCRE, PGSQL, SDBM и SQLITE. При сборке также добавлена возможность формирования исполняемых файлов в формате PIE (Position-Independent Executables), предоставляющих дополнительные механизмы защиты от атак, благодаря включению техники рандомизации адресного пространства (ASLR).
Распечатано с HostDB.ru.
|