После года разработки и спустя 12 лет с момента появления (http://www.opennet.me/opennews/art.shtml?num=1892) ветки 2.0 представлен (http://permalink.gmane.org/gmane.mail.postfix.announce/151) релиз новой стабильной ветки почтового сервера Postfix (http://www.postfix.org) - 3.0.0. Одновременно с выходом новой ветки, объявлено о прекращении поддержки ветки Postfix 2.8, выпущенной (http://www.opennet.me/opennews/art.shtml?num=29334) в начале 2011 года. Ветка 3.0 примечательна измененим настроек по умолчанию и некоторыми изменениями, нарушающими обратную совместимость.
Postfix является одним из редких проектов, сочетающих одновременно высокую безопасность, надёжность и производительность, чего удалось добиться благодаря продуманной архитектуре (http://www.postfix.org/OVERVIEW.html) и достаточно жесткой политике оформления кода и аудита патчей. В соответствии с данными, полученными (http://www.securityspace.com/s_survey/data/man.201501/mxsurv...) в результате автоматизированного опроса около двух миллионов почтовых серверов, Postfix используется на 28.01% почтовых серверов, доля Exim составляет 50.65%, Sendmail - 9.22%, Microsoft Exchange - 5.47%.
Из особенностей (ftp://ftp.porcupine.org/mirrors/postfix-release/official/pos...) новой ветки можно отметить:- Поддержка расширения SMTPUTF8 (RFC 6531 (http://tools.ietf.org/html/rfc6531)), позволяющего использовать символы национальных алфавитов в адресах электронной почты, именах хостов, названиях почтовых ящиков и SMTP-заголовках. В версии 3.0 полностью реализована (http://www.postfix.org/SMTPUTF8_README.html) поддержка SMTP-заголовков и адресов в кодировке UTF-8, но ещё остаётся реализовать средства для авторматического преобразования доменных имён в кодировках ASCII ("xn-") и UTF-8 (в myhostname и mydomain имена должны быть заданы в ASCII, а в mydestination, relay_domains и других директивах продублированы в обеих формах);
- Поддержка (http://www.postfix.org/INSTALL.html#build_dll) сборки с динамическим связыванием библиотек и плагинов доступа к БД. При сборке также добавлена возможность формирования исполняемых файлов в формате PIE (Position-Independent Executables), предоставляющих дополнительные механизмы защиты от атак, благодаря включению техники рандомизации адресного пространства (ASLR).
- Представлен новый набор настроек по умолчанию. Изменения активируются только для новых установок, при обновлении ранее существующих конфигураций прежний набор настроек по умолчанию будет сохранён (http://www.postfix.org/COMPATIBILITY_README.html), а для перехода к новым настройкам потребуется явное участие администратора. Информация об изменившихся настройках по умолчанию отображается в логе. Среди изменившихся настроек можно отметить append_dot_mydomain=no, chroot=no, smtputf8_enable=yes, mynetworks_style=host (было subnet), relay_domains="" (было $mydestination). Для управления обратной совместимостью представлена директива compatibility_level, установка значения "2" подразумевает использование конфигурации Postfix 3;- Возможность выполнения операций одновременно над несколькими таблицами. Для обращения к нескольким таблицам представлены два новых новых типа БД: "pipemap:{map1,map2...}" для последовательного перебора таблиц одна за другой (если элемент не найден в таблице 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.
URL: http://permalink.gmane.org/gmane.mail.postfix.announce/151
Новость: http://www.opennet.me/opennews/art.shtml?num=41636
Для почтовых шлюзов лучше и не придумаешь. Удивляет процент использования Exim, никогда бы и не подумал, что кто-то им пользуется.
Его cPanel по умолчанию тащит. Очень неплохо может влиять на долю.
Если под шлюзом подразумевается просто получить почту и передать ее дальше, то postfix действительно достаточен. Но не у всех почтовых серверов задачи настолько стандартны.
А с чем нестандартным постфикс не справляется?
> А с чем нестандартным постфикс не справляется?ни с чем, он то и со стандартным с большим трудом.
Вот недавно столкнулся с казалось бы тривиальной задачей. Ограничить отправку почты, которая отправляется по non smtp протоколу, например через командную строку. И вот postfix не умеет этого
It is because smtpd_*_restrictions only apply to the mails received by smtpd daemon through an SMTP transaction. The mails submitted using sendmail command is queued in maildrop queue by postdrop command, which is picked up by pickup and fed to cleanup directly.
You can't restrict recipients for the mails submitted through sendmail command.
в итоге оказалось таки можно, но через костыли. И таких примеров можно найти вагон и целую тележку. Чего только стоит rate limit per domain/mailbox, которых в postfix до сих пор нет, только через сторонние policy сервисы и то криво.
Ээээ ... ну скажем так: идивиды забивающие гвозди микроскопом и обязаны мучиться.
Для отправки "например через командную строку" есть куча хороших утилей типа ssmtp.
Если это тащить в постфикс (а оно же вроде надо, так?) получится как с сендмэйлом, который умеет UUCP ... и которое не уперлось 99.9999% нынешнего интернета :)Не настаиваю, но мнение имею.
> Ээээ ... ну скажем так: идивиды забивающие гвозди микроскопом и обязаны мучиться.расскажи это 90% php кодерам, отправляющим мыло через функцию mail ;)
> Для отправки "например через командную строку" есть куча хороших утилей типа ssmtp.да, это один из костылей, но в exim для этого есть специальные acl
acl_not_smtp ACL for non-SMTP messages
acl_not_smtp_mime ACL for non-SMTP MIME parts
acl_not_smtp_start ACL for start of non-SMTP messageмелочь а приятно. И таких вот мелочей у exim очень много. Чего только стоит их debug, например, exim -d -bhс 192.168.127.1
> мелочь а приятно. И таких вот мелочей у exim очень много.Для меня они все однозначно и гарантированно перечёркнуты его дырами.
>> мелочь а приятно. И таких вот мелочей у exim очень много.
> Для меня они все однозначно и гарантированно перечёркнуты его дырами.Ну дык я к чему и клонил :) А ALex_hha возьми и PHP-шнегов приплети. Прям игра в поддавки :)
>> мелочь а приятно. И таких вот мелочей у exim очень много.
> Для меня они все однозначно и гарантированно перечёркнуты его дырами.Ну это как и в случае с proftpd. По функционалу и гибкости особых конкурентов нет, но в нем чаще чем в других ftp серверах находят баги.
Так что каждый сам решает для себя, что ему нужно.
> Ну это как и в случае с proftpd.Весьма удачное сравнение, кстати...
>> Ээээ ... ну скажем так: идивиды забивающие гвозди микроскопом и обязаны мучиться.
> расскажи это 90% php кодерам, отправляющим мыло через функцию mail ;)а мне лично хочется им рассказать про "smtpd_tls_security_level = encrypt
", что приводит к тому, что "530 5.7.0 Must issue a STARTTLS command first".
Казалось бы aliexpress - такие звери, но шлют почту через что-то подобное а именно php + команда mail, вернее пытаются слать почту, но у них ничего не выходит :)
> идивиды забивающие гвозди микроскопом и обязаны мучитьсяКаким нафиг микроскопом? Скорее бревном. Постфикс настолько деревянный после exim'а, что хочется поскорее забыть о нем.
>Чего только стоит rate limit per
> domain/mailbox, которых в postfix до сих пор нет, только через сторонние
> policy сервисы и то криво.рейт лимит на что?
>>Чего только стоит rate limit per
>> domain/mailbox, которых в postfix до сих пор нет, только через сторонние
>> policy сервисы и то криво.
> рейт лимит на что?отправку/прием, ваш КО
Например 200 писем в день на домен gmail.com или не более 100 Мб
>>>Чего только стоит rate limit per
>>> domain/mailbox, которых в postfix до сих пор нет, только через сторонние
>>> policy сервисы и то криво.
>> рейт лимит на что?
> отправку/прием, ваш КО
> Например 200 писем в день на домен gmail.com или не более 100
> Мбну ладно там отправку (штатно, средствами postfix, по условиям выше оно не реализуемо, насколько я знаю, да). из коробки можно по доменно/по маскам настраивать кол-во одновременных подключений, таймауты и тд.
но прием-то зачем лимитить?:) постфикс вполне справляется с принять - положить на диск/отфутболить в др. машину ;-)
>[оверквотинг удален]
>>>> policy сервисы и то криво.
>>> рейт лимит на что?
>> отправку/прием, ваш КО
>> Например 200 писем в день на домен gmail.com или не более 100
>> Мб
> ну ладно там отправку (штатно, средствами postfix, по условиям выше оно не
> реализуемо, насколько я знаю, да). из коробки можно по доменно/по маскам
> настраивать кол-во одновременных подключений, таймауты и тд.
> но прием-то зачем лимитить?:) постфикс вполне справляется с принять - положить на
> диск/отфутболить в др. машину ;-)Ну разные задачи бывают. Вот спросите у того же gmail, зачем они на прием лимитят ;)
> Ну разные задачи бывают. Вот спросите у того же gmail, зачем они
> на прием лимитят ;)ну по личному опыту, мейлру несколько бОльшие ненатуралы ;-) и именно на postfix именно под них приходилось лимитить _отправку_. ибо как это сделать на exim я не знаю, аналог smtp постфиксового smtp_destionation_concurrency_limit= для опред. destionation
> но прием-то зачем лимитить?:) постфикс вполне справляется с принять - положить на
> диск/отфутболить в др. машину ;-)Я пользую. На приём. А то некоторые меры не знают, а есть придурки (пехепешники - почти все) которые имея 10 писем на меня не будут их пайплайнить ... Ну и вот ...
Все остальное должен выполнять внутренний почтовик с поддержкой коллективной работы.
Действительно, кто может использовать очень производительный и удобный МТА, в то время как ты фанат постфикса.. Ну только глупые люди да?
Уж очень у него много проблем с безопасностью.
Подскажите, как реализовать хотя-бы такое на Postfix:
acl_check_rcpt:
warn !verify = reverse_host_lookup
set acl_c_spamscore = ${eval:$acl_c_spamscore+30}
set acl_c_bouncemessage = $acl_c_bouncemessage Reverse host lookup failed;warn condition = ${if eq {$acl_c_reverse_zone}{}}
set acl_c_spamscore = ${eval:$acl_c_spamscore+50}
set acl_c_bouncemessage = $acl_c_bouncemessage No DNS PTR record found;acl_check_data:
deny message = This message scored $spam_score spam points. \
Details: $spam_report.
spam = exim:true
condition = ${if >{$spam_score_int}{70}{true}{false}}
> Подскажите, как реализовать хотя-бы такое на Postfix:Не взрывай мозг пользователям postfix :)
>> Подскажите, как реализовать хотя-бы такое на Postfix:
> Не взрывай мозг пользователям postfix :)Они не заметят разницы.
amavisd?
> amavisd?А dkim через dkim-milter? )
К счастью в Postfixе нет таких диких костылей. Фича Postfixа в безопасности и модульности, а не решете под названием exim. Поэтому энтерпрайз выбирает постфикс, например в Zimbra, Kolab и других хороших, открытых решениях.
SpamAssassin - прекрасно справляется со спамом если его раз настроить, а не заниматься рукоблудием, как это делают "админы" с exim.
> SpamAssassin - прекрасно справляется со спамом если его раз настроитьАдмин локалхоста детектед
> К счастью в Postfixе нет таких диких костылей. Фича Postfixа в безопасности
> и модульности, а не решете под названием exim.в postfix их нет лишь по той простой причине, что он прямой как бревно и функционала у него очень мало, хотя свои основные функции МТА он выполняет на ура. Отсюда и ды в нем мало.
> Поэтому энтерпрайз выбирает постфикс, например в Zimbra, Kolab и других хороших, открытых решениях.
Ынтерпайз выбирает Exchange/Lotus/GoogleApps. Смотря у кого и на что хватает денег ;)
> SpamAssassin - прекрасно справляется со спамом если его раз настроить, а не заниматься рукоблудием, как это делают "админы" с exim.
сразу видно, что с почтой не работал
P.S.
предлагаю сравнивать корявость/дырявость postfix vs exim после ухода с проекта Wietse Venema. Я конечно не то, чтобы очень пристально слижу за новостями Exim, но при Хазеле такой фигни не было :)
> Я конечно не то, чтобы очень пристально слижу за новостями Exim,
> но при Хазеле такой фигни не было :)Первого попавшегося CVE-2003-0743 тоже не помните?
Есть хорошая черта для админа: не спешить ставить или "защищать" то, [про] что знаешь недостаточно по собственной оценке.
>> Я конечно не то, чтобы очень пристально слижу за новостями Exim,
>> но при Хазеле такой фигни не было :)
> Первого попавшегося CVE-2003-0743 тоже не помните?
> Есть хорошая черта для админа: не спешить ставить или "защищать" то, [про]
> что знаешь недостаточно по собственной оценке.Heap-based buffer overflow in smtp_in.c for Exim 3 (exim3) before 3.36 and Exim 4 (exim4) before 4.21
нее, я такую древность не застал. Начал работать с exim 4.5x. Единственное что помнится из последнего - в Debian мейнтейнеры чего то намутили и получалась бага, но тут как бы exim особо и не виновен
> нее, я такую древность не застал. Начал работать с exim 4.5x.http://www.opennet.me/opennews/art.shtml?num=39877
http://www.opennet.me/opennews/art.shtml?num=35181
...
>> нее, я такую древность не застал. Начал работать с exim 4.5x.
> http://www.opennet.me/opennews/art.shtml?num=39877Проблема проявляется только в ветке Exim 4.82 при сборке с опцией EXPERIMENTAL_DMARC, которая не применяется умолчанию.
так что не считается
> http://www.opennet.me/opennews/art.shtml?num=35181
тоже аффектило только свежие дистры, например в CentOS 5 уязвимость не проявлялась.
перлячим policyd-weight. много чего через сторонние приблуды решается быстро и комфортно.
> перлячим policyd-weight. много чего через сторонние приблуды решается быстро и комфортно.могу ща пару тройку примеров привести, который твой policyd, как собственно у другие policy сервисы не решат. Так что про много чего лучше молчать.
Хоть как то острые углы в плачевной функциональности postfix сглаживает http://postfwd.org/. Это лучшее что я встречал для postfix
а вы вообще правильно все понимаете что тут написано ?
Не будете ли так любезно объяснить нам что тут написано "своими словами", так сказать "на пальцах" ?
> а вы вообще правильно все понимаете что тут написано ?
> Не будете ли так любезно объяснить нам что тут написано "своими словами",
> так сказать "на пальцах" ?Если мне - то этот крепячий кусок кода без еще одного условия работать не будет. точнее, результат его работы всегда будет меньше воретмарка.
> а вы вообще правильно все понимаете что тут написано ?
> Не будете ли так любезно объяснить нам что тут написано "своими словами",
> так сказать "на пальцах" ?Все достаточно просто - в зависимости от результатов проверок сообщению присваиваются или отнимаются "спаммовые" баллы. Как заметил комметатор выше - конфиг далеко не полный. Полный приводить не стал - ибо порвет ленту.
> Для обращения к нескольким таблицам представлены два новых новых типа БД: "pipemap:{map1,map2...}" для последовательного перебора таблиц одна за другой (если элемент не найден в таблице map1, выполняется запрос map2 и т.д.).Я может что то пропустил, но разве сейчас postfix не так работает?
mydomain = domain.com, hash:/etc/postfix/domains, mysql:/etc/postfix/domains.sql
будут последовательно проверенны все таблицы, одна за другой
> Для почтовых шлюзов лучше и не придумаешь. Удивляет процент использования Exim, никогда бы и не подумал, что кто-то им пользуется.
альтернатив просто нет. И да, postfix не альтернатива exim, ни разу
> Улучшен синтаксис файла конфигурации, в котором теперь допускается использование тройных условных операторов "${name?{iftrue}:{iffalse}}" и операторов сравнения "${{expr1}==${expr2}?{iftrue}:{iffalse}}".
не прошло и 10 лет, такими темпами лет через 20 postfix по функционалу приблизится к текущему exim :)
Просто sendmail в RHEL по дефолту был даже в 6ой версии, поэтому его и оставляли в несложных случаях. Ну и олдскул товарищи ещё остались.
балабол же, postfix там по-умолчанию, а иной раз и exim пытается в зависимостях пролезть
Сам ты балабол, postfix там только в свежих инсталляциях начиная где-то с 6.4-6.5. Если ты ставил 6.2 или 6.3, то там был sendmail, к-й так и оставался даже при обновлении до 6.5. Балабол ты.
Пользуюсь RHEL 6, начиная с 6.0. Всегда по умолчанию postfix, sendmail опционален.
Имхо это зависит от клона и версии. Т.е. в centos/rhel/sl 6 были различные дефолты. В актуальных версиях уже ничего такого нет.
> Я может что то пропустил, но разве сейчас postfix не так работает?
> mydomain = domain.com, hash:/etc/postfix/domains, mysql:/etc/postfix/domains.sql
> будут последовательно проверенны все таблицы, одна за другойПоправил текст новости.
Использую в связке iredMail. Проблем нет.
Exim конечно же гибче, но к postfix у меня "особая любовь". Первый MTA который сам настроил. Можно сказать с него и начал изучать почтовые системы. После настройки в связке с Dovecot и ActiveDirectory стал лучше разбираться в тонкостях электронной почты и перешел к изучению Exim.
и в этот момент тьма поглотила sendmail
Моя первая связка не считая FIDO и uucp c RELCOM, были sendmail и cyrus-imapd... Эх...
Но любовь прошла :) Потом были exim+dbmail. А сейчас всем подавай только postfix+dovecot+posfixadmin+roundcube+rDNS+SPF+DMARC+DKIM+IP rotation :)