После года разработки представлен релиз новой стабильной ветки почтового сервера Postfix - 2.9.0.
Из особенностей новой ветки можно отметить:
- Поддержка длинных, не повторяющихся, идентификаторов элементов очереди сообщений, используемых в качестве имён файлов для сообщений, находящихся в очереди. Наиболее важным достоинством не повторяющихся идентификаторов является упрощение анализа лог-файлов. Например, вместо идентификатора виде "0FCEE9247A9" будет использоваться более изощрённый вариант "3Ps0FS1Zhtz1PFjb", включающий все буквы алфавита и делающий различия в регистре символов. По умолчанию длинные идентификаторы отключены, для их активации следует использовать опцию "enable_long_queue_ids".
- Поддержка системы кэширования в памяти Memcached для хранения кэшей систем verify и postscreen, получающих доступ к данным через сервер proxymap. При использовании Memcached возможно создание конфигураций, при которых несколько серверов совместно используют единый кэш при проверке валидности email-адресов или списков рассылающих спам зомби-машин. Memcached также можно использовать для хранения баз для проверки по серым спискам. Настройка осуществляется через директиву memcache_table;
- Обеспечение максимально возможной живучести. Если какая-то база данных недоступна, например, невозможно открыть файл, наблюдаются ошибки записи/чтения или возникли проблемы в сети, отныне Postfix экстренно не завершает работу, а продолжает выполнение операций, не связанных с вышедшей из строя базой. Возможность работает для любых типов баз, как локальных (файлы), так и внешних (LDAP, *SQL и memcached), а также для сетевых протоколов (например, когда невозможно открыть сокет IPv6). Для мгновенного завершения работы при проблемах с открытием баз следует использовать опцию "daemon_table_open_error_is_fatal = yes";
- Переработана команда postconf: добавлен вывод предупреждений о неиспользуемых параметрах "name=value" в конфигурационных файлах main.cf и master.cf, что позволяет выявить опечатки в именах параметров; реализована поддержка динамических имён параметров, таких как имена. зависящие от элементов master.cf; вывод настроек из main.cf и master.cf теперь оформлен в более дружественном для восприятия формате (postconf -nf, postconf -Mf); в "postconf -M" добавлена поддержка фильтрации вывода, например, "postconf -M inet";
- Реализована поддержка установки предельного времени обработки операций записи и чтения для клиента и сервера, что позволяет защититься от DoS-атак, манипулирующих большим числом вялотекущих соединений, при которых данные передаются очень медленно или читаются по одному байту. Если раньше таймаут задавался для системного вызова, то теперь его можно задать в привязке ко времени чтения/передачи отдельной записи, такой как сообщение с ответом SMTP-сервера. Настройка новых таймаутов осуществляется через директивы smtpd_per_record_deadline, smtp_per_record_deadline и lmtp_per_record_deadline;
- В postscreen, выступающем в роли легковесного межсетевого экрана, предназначенного для первичного блокирования соединений от рассылающих спам зомби-машин, и в сервисе verify, используемом для обратной проверки валидности адресов, добавлена поддержка совместного использования баз блокировки между несколькими Postfix-серверами. Для организации доступа к единой базе с нескольких хостов можно будет использовать схему proxymap-over-TCP, которая будет доведена до конца в ветке Postfix 2.10. В настоящее время можно использовать только memcached;
- Для ограничения размера сообщений и почтовых ящиков через директивы message_size_limit, mailbox_size_limit virtual_mailbox_limit отныне используются целые числа типа "long", что позволяет указывать лимиты, размером до 2 Гб;
- По умолчанию директива inet_protocols установлена в значение "all" (до этого было "ipv4"), что подразумевает поддержку работы с IPv4 и IPv6. При выполнении "make upgrade" и "postfix upgrade-configuration" для текущих конфигураций сохраняет старое значение "ipv4".