После года разработки состоялся (https://www.mail-archive.com/postfix-announce@postfix.o...) релиз новой стабильной ветки почтового сервера Postfix - 3.4.0 (http://www.postfix.org). В то же время объявлено о прекращении поддержки ветки Postfix 3.0 (https://www.opennet.me/opennews/art.shtml?num=41636), выпущенной в начале 2015 года. Postfix является одним из редких проектов, сочетающих одновременно высокую безопасность, надёжность и производительность, чего удалось добиться благодаря продуманной архитектуре (http://www.postfix.org/OVERVIEW.html) и достаточно жесткой политике оформления кода и аудита патчей. Код проекта распространяется под лицензиями EPL 2.0 (Eclipse Public license) и IPL 1.0 (IBM Public License).
В соответствии с февральским автоматизированным опросом (http://www.securityspace.com/s_survey/data/man.201901/mxsurv...) более двух миллионов почтовых серверов, доля Exim составляет 56.91% (год назад 56.56%), Postfix используется на 34.42% (33.79%) почтовых серверов, Sendmail - 4.16% (4.59%), Microsoft Exchange - 0.61% (0.85%).
Основные новшества (ftp://ftp.porcupine.org/mirrors/postfix-release/official/pos...):- Поддержка сохранения лога в произвольный файл или стандартных выходной поток (stdout), помимо ведения логов через syslog. Прямое сохранение лога в файл позволяет упростить настройку почтового сервера в macOS и решить ряд проблем при запуске при помощи systemd. Вывод лога в stdout позволяет исключить syslogd из зависимостей при выполнении Postfix в изолированном контейнере. Для ведения логов добавлен новый процесс postlogd, активация которого производится через сервис 'postlog' в master.cf;
- В коде сервера SMTP, клиента SMTP и прокси TLS (tlsproxy) добавлена поддержка SNI (Server Name Indication), которая позволяет обеспечить доступ через шифрованное соединение к разным виртуальным хостам на одном IP-адресе;
- В реализацию SMTP-клиента добавлена возможность выполнение сразу нескольких доставок в рамках одного шифрованного TLS-соединения, что положительно отражается на производительности, особенно при подключении к серверам, применяющим ограничения для клиентов, передающих большое число запросов, каждый раз разрывая и устанавливая соединение;
- В SMTP-сервере (smtpd) и межсетевом экране (postscreen) добавлена поддержка расширения "CHUNKING ESMTP" (без BINARYMIME), определённого в RFC 3030 (https://www.ietf.org/rfc/rfc3030.txt) и реализующего поддержку команды "BDAT", предназначенной для кусочной передачи тела письма вместо передачи неделимым блоком при помощи команды DATA. Применение "CHUNKING ESMTP" приводит к небольшому росту производительности и снижению сетевой нагрузки;- Поддержка файлов конфигурации для TLS, в которых можно определить сразу несколько разных наборов ключей и сертификатов. Файлы могут подключаться в качестве lookup-таблиц для SNI (tls_server_sni_maps) и позволяют обойтись без создания отдельный файлов для разных ключей/сертификатов на базе RSA, DSA, Elliptic Curve и т.п.
- Прекращена поддержка OpenSSL 1.0.1 (разработчики OpenSSL прекратили поддержку данной ветки ещё в 2016 году) и более ранних выпусков.
URL: https://www.mail-archive.com/postfix-announce@postfix.o...
Новость: https://www.opennet.me/opennews/art.shtml?num=50219
> В коде сервера SMTP, клиента SMTP и прокси TLS (tlsproxy) добавлена поддержка SNI (Server Name Indication)Накотец-то.
А в чём смысл? SNI позволяет клиенту сообщить, к какому серверу он подключается.
Postfix же не web-сервер, там нету виртуальных сайтов.
> А в чём смысл? SNI позволяет клиенту сообщить, к какому серверу он
> подключается.
> Postfix же не web-сервер, там нету виртуальных сайтов.Это Ж криптография! ...позволяет клиенту сообщить серверу, который из _кучи_ его, сервера, сертификаов/ключей шифрования ему будет "приятно" видеть.
В канальном уровне должно быть больше.... выбора, приятностей [для никому невидимых библиотек] и нипанятных протоколов. Б - Безопасность.
смысл что раньше не палили какому домену адресована почта, а теперь я все вижу!> Postfix же не web-сервер, там нету виртуальных сайтов.
почтовый сервер, внезапно, может поддерживать миллионы доменов. А то что там некому, нечем и незачем валидировать сертификаты, кроме ограниченного числа сугубо внутренних серверков, где в принципе можно гвоздем прибить их к аутентификации (хотя тоже низачем не нужно) - это никого не колышет.
SNI в почте нужен не всем, но там, где нужен, там нет другого нормального решения.
Кто уверен, что это не так - ну, вы можете жить дальше в своём уютном мирке, это дело ваше.
> SNI в почте нужен не всем, но там, где нужен, там нет другого нормального решения.да. А то как же я увижу, какому домену вы на самом деле адресовали почту, и кого надо вечером "брать".
кто уверен что sni решает какие-то другие проблемы кроме слива мне информации - может жить дальше в своем уютном мирке, пока мы за ним тоже не придем.
Ух, прям представилось: сидит себе такой Венема, и тут подошедший из ниоткуда майор ласковым голосом, приставив к голове беретт... в смысле наган: "дружок, шоб к утру SNI было сделано -- и как следует!".
Михаил, ну вам-то стыдно не знать, что мы так грубо не работаем. Оставьте все эти шпили-вили конкурирующим конторам.Попросили хорошего человека-повара, по совместительству владельца небольшой фабрички в Питере, чуваку запулили пару сотен фич-реквестов, с разных адресов, по разным каналам, и под разным соусом, сам он в криптографии в общем не то чтобы очень (да и в остальное не так офигенен как принято думать у глупеньких фанов), а тут надо-то было один вызов поменять и один параметр добавить, не то чтобы к утру, но в следующей же версии - вот, напёк, кушайте, не обляпайтесь.
И, заметьте - добровольно и с песней - есть что в changelog написать!
Вижу проблему в нерадивых админах.
Если каждый админ станет радивым, заставит SMTP-сервера чекать сертификаты других SMTP-серверов, интернет немедленно улучшится [чуточку].
интернет от этого безусловно улучшится - почта ходить перестанет, освободит каналы для нужного и полезного cp.
> там нету виртуальных сайтов.там по-идее есть виртуальные почтовые домены, каждый со своим сертификатом
Смысл как всегда в деньгах. Чем больше заработаешь, тем лучше!
SNI позволяет клиенту не плеваться сообщением "подлинность стервера не может быть проверена"...
именно - то есть позволяет скрыть тот факт, что сервер не принадлежит конторе, которой выдан сертификат, и сами сертификаты она раздает вместе с закрытым ключом кому попало, или вовсе принимает вашу почту на массхостинге.
Правильная технология, все как я заказывал.
> там нету виртуальных сайтовУ вас нету. А у меня, как у хостера, пара тысяч доменов.
> Microsoft Exchange - 0.61% (0.85%).Очень сомнительно. У корпорастов почти сплошь Exchange.
они стыдливо прячутся за sendmail postfix qmail exim
>они стыдливо прячутся за sendmail postfix qmail eximБредишь. Мы прячемся за каким-нибудь ironport.
...которого почему-то не видно в статистике?
>которого почему-то не видно в статистикеИ что? На 100500 постфиксов/экзимов на пустой как барабан VPSочке приходится один ironport, а за ним exchange с десятками или сотнями терабайт корп почты. Ты просто не поверишь сколько мусора^Wпочты генерит контора на допустим 10к голов. Всякие корп рассылочки, приказы и прочая шелуха, которое рассылается сразу всем.
Ну, зато постфиксов много. Есть чем гордиться...
Да есть чем годится!
Но пoпaбoль вaнтузятников всё ещё доставляет :)
Хотя вроде бы должны были уже и привыкнуть ... а подиж ты! :-)А если уж я тебе расскажу из чего ironport сделан ...
Посмотри внимательно чего они где то в 2003-2009 году у Канады купили :) Кл0ун bля :-)))))
Не, qmail здесь лишний, его только олдфаги применяють.
Вообще то неправда. Олдфаги на шлимыле, а поделку профессора в реальной жизни применяют те же кто сегодня драйвера на js пишет :-)
> Вывод лога в stdout позволяет исключить syslogd из зависимостей при выполнении Postfix в изолированном контейнере. Для ведения логов добавлен новый процесс postlogd, активация которого производится через сервис 'postlog' в master.cfЯ, верный фанбой systemd, обвиняю Витсе Венему в велосипедостроении!!!!11
> Витсе ВенемуА хто ето?
папа Postfix-a
Заместитель папы же.
> Заместитель папы же.Отыменно, папа у нас _IBM_ https://metadata.ftp-master.debian.org/changelogs/main/p/pos...
, а это так, донор спе ^W кода.
Прежде обвинения стоит провести расследование. А то вдруг вскроется, что архитектура postfix мало-мало старше орхетиктуры* systemd и там privsep сразу был задуман.* да, п.5 правил форума...
> 3.4.0Я думал оно будет 3.3.3, а оно вот так. :-(
Держи нас в курсе, очень важная инфа!
> Держи нас в курсе, очень важная инфа!Когда почтовый сервер исправно работает, его архитектура продумана и надёжна, что до сих пор в нём не было не одной критической уязвимости, а не критическая уязвимость была, на моей памяти одна и то по вине gcc и его флагов оптимизаций, его API практически не меняется даже после изменения мажорной версии, то только и остаётся что смотреть на циферки.
P.S. Держу Вас в курсе. :-)
не верифицировать подписи.(GnuPG) 1.4.20. или надо новее?
Макрос VSTRING_GET_RESULT в src/util/vstring_vstream.c:#define VSTRING_GET_RESULT(vp, baselen) \
(VSTRING_LEN(vp) > (base_len) ? vstring_end(vp)[-1] : VSTREAM_EOF)В аргументах baselen, но использует base_len. И это компилится пока что, ибо в функах где оно используется задефайнен base_len, но передается все равно baselen:
int vstring_get_flags(VSTRING *vp, VSTREAM *fp, int flags)
{
int c;
ssize_t base_len;if ((flags & VSTRING_GET_FLAG_APPEND) == 0)
VSTRING_RESET(vp);
base_len = VSTRING_LEN(vp);
while ((c = VSTREAM_GETC(fp)) != VSTREAM_EOF) {
VSTRING_ADDCH(vp, c);
if (c == '\n')
break;
}
VSTRING_TERMINATE(vp);
return (VSTRING_GET_RESULT(vp, baselen));
}Вот такая безопасность.
Вы уже отправили патч, который это исправляет?
Написал в postfix-users@postfix.org (такой баг-трекер у них)
Эмм... Посмотрел вокруг и...src/util/vstring.h:
#define VSTRING_SPACE(vp, len) ((vp)->vbuf.space(&(vp)->vbuf, (len)))
#define vstring_str(vp) ((char *) (vp)->vbuf.data)
#define VSTRING_LEN(vp) ((ssize_t) ((vp)->vbuf.ptr - (vp)->vbuf.data))
#define vstring_end(vp) ((char *) (vp)->vbuf.ptr)
#define VSTRING_TERMINATE(vp) do { \
*(vp)->vbuf.ptr = 0; \
} while (0)
#define VSTRING_RESET(vp) do { \
(vp)->vbuf.ptr = (vp)->vbuf.data; \
(vp)->vbuf.cnt = (vp)->vbuf.len; \
} while (0)
#define VSTRING_ADDCH(vp, ch) VBUF_PUT(&(vp)->vbuf, ch)
#define VSTRING_SKIP(vp) do { \
while ((vp)->vbuf.cnt > 0 && *(vp)->vbuf.ptr) \
(vp)->vbuf.ptr++, (vp)->vbuf.cnt--; \
} while (0)
#define vstring_avail(vp) ((vp)->vbuf.cnt)Вот где живут настоящие C-программисты. Я думал они миф, и их не существует в природе, ан нет. Ты глянь, они не боятся использовать макросы там, где можно (напрашивается!) использовать inline функции, и несмотря на это их код работает, и даже безопасен. Даже их ошибки, не делают код уязвимым.
Респект и уважуха. Я не знаю как им это удаётся, и даже боюсь узнать. Я уж лучше в уютненьком rust'е.
> Ты глянь, они не боятся использовать макросы там, где можно (напрашивается!) использовать
> inline функцииничего что когда этот код писали - inline были стремным нововведением, по разному (не)поддеживаемым разными компиляторами, а в тогдашнем стандарте языка (с90) никакого "inline" вообще не было?
И это хорошо что его там не было, потому что сегодня собрать код, использующий инлайны, но написанный в каком-нибудь 2005м, внезапно, не получается.
А код использующий макросы - вот он, собирается без проблем.
Да-да, я знаю. Legacy, от которого не избавиться, технический долг, ресурсов на закрытие его нет и не будет, и так далее. Но факт-то остаётся фактом, они продолжают тянуть эту хрень, и, что главное, им это удаётся.
Пришло время переписать Постфикс на Расте! Постфикс сам не перепишется!
> Пришло время переписать Постфикс на Расте! Постфикс сам не перепишется!Да ну его. Есть гораздо более интересные вещи, которые можно переписать на rust. emacs например: https://github.com/remacs/remacs
Возможно после этого удастся справится с легаси в emacs'е: https://www.facebook.com/notes/daniel-colascione/buttery-smo.../
One day, a fool wanted to run Emacs in a GUI as a native GUI program. The rest is ChangeLog.
>> Пришло время переписать Постфикс на Расте! Постфикс сам не перепишется!
> Да ну его. Есть гораздо более интересные вещи, которые можно переписать на
> rust. emacs например: https://github.com/remacs/remacsНе получится.
eval()/apply()-я не завезли, кода, как данных не...
...и вообще см. https://ru.wikipedia.org/wiki/%D0%94%D0%...
> Возможно после этого удастся справится с легаси в emacs'е:
> One day, a fool wanted to run Emacs in a GUI as
> a native GUI program. The rest is ChangeLog.One day, a fool read some sh*t @ лицо-книга and wanted to rewrite Emacs in rust-lang. The rest is... openet c*mments.
>>> Пришло время переписать Постфикс на Расте! Постфикс сам не перепишется!
>> Да ну его. Есть гораздо более интересные вещи, которые можно переписать на
>> rust. emacs например: https://github.com/remacs/remacs
> Не получится.
> eval()/apply()-я не завезли, кода, как данных не...
> ...и вообще см. https://ru.wikipedia.org/wiki/%D0%94%D0%...Что-то мне подсказывает, что тебя не хватило даже на то, чтобы пролистать readme до конца. Уверенности, впрочем, у меня нет, поскольку высказать своё мнение ты не решился, лишь стыдливо намекнул на него.
> One day, a fool read some sh*t @ лицо-книга and wanted to
> rewrite Emacs in rust-lang. The rest is... openet c*mments.Ох как же это сложно признать правду, да? То что ты называешь sh*t'ом, написано человеком, который боролся с мерцанием (flicker'ом) emacs'а при перерисовках, и который в конечном итоге справился. И если тебе emacs так небезразличен, что ты аж триггеришься на него, то я очень рекомендую почитать, потому что он, в общем-то, рассказывает историю emacs'а с точки зрения гуя.
Но ты не прав ещё и в другом, ты предполагая причинно-следственные связи исходишь из ложной временной последовательности событий. emacs на rust'е переписать a fool решил просто потому что он может переписать emacs на rust'е. Там, как я понимаю, нет каких-то особых причин, просто результат настолько няшным выходит, по сравнению с emacs'овым кодом, что сложно удержаться. А ссылку на описание чережжопности emacs'ового гуя я нашёл в issues, и там она появилась сильно после того, как был начат этот форк emacs'а.
Я не знаю софта который растишки бы не взялись переписывать.
С визгами и обещалками на весь инет ...и ...
Я не знаю софта который растишки бы __закончили__ переписывать, и чтоб вышло не УГ! :-)))
Вот такой вот научный факт, Х оспоришь, подтверждено Академией Британских УчОнных(С)
:-)
К слову об их C90:postfix-3.4.0/src/util/msg_logger.c:155: error: declaration may not appear after executable statement in block
static char *severity_name[] = {Совсем как-то не С90.
Мда, редко встретишь Exchange, выставленный напрямую в интернет.
SmartHost для Exchange используют SendMail Postfix Exim так что автоматизированный опрос это шляпа.
это только в васян-лавочках они их используют - потому что там не нужен отдельный васян, который будет это все настраивать, у них уже есть одна приходящая мама, которая все настраивает по методу "увидел в гугле что-то похожее, авось сработает".а взрослые если не могут уже по каким-то причинам forefront - используют ironport или программные коммерческие решения.
в статистике вы их не видите, потому что секьюрити-дивайсы, внезапно, вовсе не собираются сообщать первому встречному свое название и версию прошивки с точностью до десятого знака, а отвечают банальным
220 mail.domain.com ESMTP
- эти ребята дешевыми понтами не увлекаются, у них другие способы рекламы.
Толсто/тонко -- не понимаю, но очень понравилось.
Открою секрет. Определяют релай не по гриту. Достаточно увидеть ответы на helo/ehlo, help, mail from, noop, quit. в 99% они различны для разного софта. Ах да, вы же не умеете менять ответы на эти команды в своих айронпортах... так вот мы в опенсурсе можем это поменять и пересобрать продукт. Успехов.
> Открою секрет. Определяют релай не по гриту. Достаточно увидеть ответы на helo/ehlo,
> help, mail from, noop, quit. в 99% они различны для разногов случае когда эти ответы не содержат ровно никакой информации, кроме необходимой и требуемой стандартом (а это золотое правило всех секьюрити коробок, и айронпорт тут ничем не выделяется - пример я привел вполне реальный) а эксперименты с "help/noop" и вовсе ведут к посылу в пешее эротическое и блокировке айпишника на пару часиков, пока не успокоишься - потому что ничего хорошего от такого экземпляра, обоснованно, не ждем-с, остается только гадание на параметрах tcp, а оно довольно неточно.
> софта. Ах да, вы же не умеете менять ответы на эти
зачем нам их менять?
> так вот мы в опенсурсе можем это поменять
ныкаемся, кульхвакеры в тредике!
(хотя хрен вы чего можете, ебилдов только ждать)
прекрати дурочку корчить. вот пример:
quit
221 aa.aa.aa closing connectionquit
221 2.0.0 Byequit
221 2.0.0 aa.aa.aa closing connectionТолько по одной команде quit уже можно отличить exim,sendmail,postfix. если провести корреляцию с другими командами, которые я привел, можно все ваши айронпорты (хотя я уверен, что в коде что-то из этих трех) и прочие ексченжи, комунигейты идентифицировать однозначно.
посфикс в середине, если что. его
221 2.0.0 Bye
ни с чем не перепутать.
Что сейчас в лидерах по использованию из пары exim и postfix?
gmail
> gmailбгг...