The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

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

09.06.2020 11:53

После 6 месяцев разработки состоялся релиз почтового сервера Exim 4.94, в который внесены накопившиеся исправления и добавлены новые возможности. В соответствии с майским автоматизированным опросом около миллиона почтовых серверов, доля Exim составляет 57.59% (год назад 53.03%), Postfix используется на 34.70% (34.51%) почтовых серверов, Sendmail - 3.75% (4.05%), Microsoft Exchange - 0.42% (0.57%).

Изменения в новом выпуске могут привести к нарушению обратной совместимости. В частности, некоторые виды транспорта перестали работать с неочищенными данными (tainted, значения на основе данных, полученных от отправителя) при определении местоположения доставки. Например, проблемы могут возникнуть при использовании переменной $local_part в настройке "check_local_user" при маршрутизации письма. Вместо $local_part следует использовать новую очищенную переменную "$local_part_data". Кроме того, в операндах опции headers_remove теперь разрешено использование масок, определяемых при помощи символа "*", что может привести к нарушению работы конфигураций, в которых выполнялось удаление заголовков, заканчивающихся на символ звёздочки (вместо удаления конкретных заголовков будет выполнено удаление по маске).

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

  • В дополнение к уже давно реализованной экспериментальной поддержки механизма SRS (Sender Rewriting Scheme) на основе libsrs_alt, добавлен алтернативный механизм EXPERIMENTAL_SRS_NATIVE без внешних зависимостей. SRS позволяет переписать адрес отправителя при пересылке без нарушения проверок SPF (Sender Policy Framework) и обеспечив сохранение данных об отправителе для направления сервером сообщений в случае ошибки доставки. Суть метода в том, что при установке соединения передаются сведения об идентичности с изначальным отправителем, например при перезаписи alice@example.org на alice@example.com будет указано "SRS0=HHH=TT=example.org=alice@example.com". SRS актуален, например, при организации работы списков рассылки, в которых исходное сообщение перенаправляется другим получателям.
  • При использовании OpenSSL добавлена поддержка закрепления канала для аутентификаторов (ранее поддерживалось только для GnuTLS).
  • Добавлено событие "msg:defer".
  • Реализована поддержка аутентификатора gsasl на стороне клиента, которая протестирована только с обработчиком открытых паролей (plaintext). Работа методов SCRAM-SHA-256 и SCRAM-SHA-256-PLUS возможна только через сам gsasl.
  • Реализована поддержка аутентификатора gsasl на стороне сервера для шифрованных паролей, выступающая альтернативой ранее доступного режима plaintext.
  • Определения в именованных списках теперь могут помечаться префиксом "hide" для подавления вывода контента при выполнении команды "-bP".
  • В драйвер аутентификации через IMAP-сервер Dovecot добавлена экспериментальная поддержка интернет-сокетов (ранее поддерживались только unix-domain сокеты).
  • ACL выражение "queue_only" теперь может указываться как "queue" и поддерживает опцию "first_pass_route", аналогичную опции командной строки "-odqs".
  • Добавлены новые переменные $queue_size и $local_part_{pre,suf}fix_v.
  • В основной блок конфигурации добавлена опция "sqlite_dbfile" для использования при определении префикса строки поиска. Изменение нарушает обратную совместимость - старый метод задания префикса перестал работать при указании неочищенных (tainted) переменных в lookup-запросах. Новый метод ("sqlite_dbfile") позволяет держать имя файла отдельно.
  • В lookup-блоки dsearch добавлены опции для возвращения полного пути и фильтрации типов файлов при сопоставлении.
  • В lookup-блоки pgsql и mysql добавлены опции для задания имени сервера отдельно от строки поиска.
  • Для lookup-блоков, осуществляющих выборку по одному ключу, добавлена опция для возвращения очищенной (de-tainted) версии ключа при наличии совпадений, вместо искомых данных.
  • Для всех успешных выборок list-match обеспечено выставление переменных $domain_data и $localpart_data (ранее вставлялись элементы списка, задействованные в выборке). Кроме того, применяемые при сопоставлении элементы списка теперь присваиваются переменным $0, $1 и т.д.
  • Добавлен оператор раскрытия "${listquote {<char>} {<item>}}".
  • В оператор раскрытия ${readsocket {}{}{}} добавлена опция для обеспечения кэширования результатов.
  • Добавлена настройка dkim_verify_min_keysizes для перечисления минимально допустимых размеров открытых ключей.
  • Обеспечено раскрытие параметров "bounce_message_file" и "warn_message_file" до их первого использования.
  • Добавлена опция "spf_smtp_comment_template" для настройки значения переменной "$spf_smtp_comment".


  1. Главная ссылка к новости (https://lists.exim.org/lurker/...)
  2. OpenNews: Новая версия почтового сервера Exim 4.93
  3. OpenNews: Опубликован Exim 4.92.3 с устранением четвёртой за год критической уязвимости
  4. OpenNews: Раскрыты подробности критической уязвимости в Exim
  5. OpenNews: FastMail продолжит развитие Cyrus IMAP после сворачивания разработки в CMU
  6. OpenNews: Релиз почтового сервера Postfix 3.5.0
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/53116-exim
Ключевые слова: exim, mail
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (36) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, werwolf (?), 11:55, 09/06/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    когда уже jmap?
     
  • 1.2, Вася (??), 12:10, 09/06/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –9 +/
    Вышел убийца postfix
     
     
  • 2.7, Catwoolfii (ok), 13:19, 09/06/2020 [^] [^^] [^^^] [ответить]  
  • +3 +/
    С чего бы это?
     
     
  • 3.10, Michael Shigorin (ok), 14:00, 09/06/2020 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Возможно, Василий считает, что дыры оптом заразны.
     

  • 1.3, PnD (??), 12:11, 09/06/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    По главной ссылке с changelog'ом туго, открыл дебиановский.
    И должен заметить что "avoiding of tainting" ≠ "tainted".
    Потому как tainting — не про очистку, а ровно наоборот.
    Что-то типа "избегания грязных данных".
     
  • 1.4, Аноним (4), 12:40, 09/06/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Exim увеличил свою долю? Плохо это или хорошо? И стоит ли печалиться из-за снижения доли Microsoft Exchange?
     
     
  • 2.9, КО (?), 13:50, 09/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Зачем спрашиваешь, если ответы не нужны?
     
  • 2.18, SubGun (??), 21:19, 09/06/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Да не снижается доля exchange, сказки все это. Замены в корпоративном секторе ему все равно нет. Просто он часто за шлюзом из другого почтовика стоит.
     

  • 1.5, Аноним (5), 12:49, 09/06/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    критические уязвимости завезли?
     
     
  • 2.6, Аноним (6), 12:57, 09/06/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Об этом расскажут в следующей серии. Спойлер: да.
     
  • 2.11, nekto (?), 14:13, 09/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    критические уязвимости завезли?

    ДДоступ к разделу сайта "Тотализатор", только для владельцев платиновых ХЭШ-чайн и/или лицам с наличием не меньше 3 официиально закрытыхъ CVE-2020 за второе полугодие.

    Внимание акция,  комисия из спец. отобранных модеров проведет вне-конкурсный онлайн разоыгрыж 3 помететителей для доступа в раздел на вторую половину тек. года;
    обезательное наличие у "июней", прадон претндентов

    - минимyм  2-ух незакрытых CVE, свежее 201*
    - наличие вещество - заисимоти, не ниже второй стадии

    P.S.:
    доп. cкидки для SJW, BLM

     

  • 1.8, YetAnotherOnanym (ok), 13:43, 09/06/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Ммммм.... сколько нового...
    Зная авторов сабжа можно ждать обилие новых дыр.
     
     
  • 2.12, Аноним (12), 18:29, 09/06/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    И Fractal расскажет почему :)
     
     
  • 3.15, Аноним (15), 21:07, 09/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    не, он знает как их избежать ;-)
     
  • 2.22, And I (?), 21:48, 09/06/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    И их, как обычно, залатают так быстро, что эксплуататоры эксплойтов не успеют разобраться и ни один сервер не пострадает. Ничего нового
     

  • 1.13, SubGun (??), 20:55, 09/06/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Не обновляйтесь пока, там баг.
     
     
  • 2.14, SubGun (??), 20:56, 09/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Народ в рассылке жалуется, что даже дефолтный роутер фэйлится.
     
  • 2.16, sudo (??), 21:14, 09/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Вы о каком из?
     
     
  • 3.17, SubGun (??), 21:16, 09/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    "failed to expand"
     
     
  • 4.20, sudo (??), 21:28, 09/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Это не баг, а фича. Ну да, обратная совместимость поломана. И ещё кое где. Но, в принципе, правильным путём идут, закручивая гайки.
     
     
  • 5.23, Тот самый (?), 22:15, 09/06/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >Но, в принципе, правильным путём идут

    Глядя на то безобразие, что они учинили, очень сомневаюсь.

    Казалось бы безобидное нововведение:
    В основной блок конфигурации добавлена опция "sqlite_dbfile" для использования при определении префикса строки поиска. Изменение нарушает обратную совместимость - старый метод задания префикса перестал работать при указании неочищенных (tainted) переменных в lookup-запросах. Новый метод ("sqlite_dbfile") позволяет держать имя файла отдельно.

    Про катастрофическое влияние на производительность ни кто не подумал.

    Раньше было (в разных местах конфига):
    ${lookup sqlite {/var/lib/exim/aliases.db select name from aliases where id='userx';}}
    ${lookup sqlite {/var/lib/exim/whitelist.db select name from whitelist where id='userx';}}
    ${lookup sqlite {/var/lib/exim/greylist.db select name from greylist where id='userx';}}
    ${lookup sqlite {/var/lib/exim/blacklist.db select name from blacklist where id='userx';}}

    Т.е. каждая таблица размещалась в отдельном файле, что-бы избежать конкуренции и блокировок.

    Теперь так не работает. Извольте только так:

    sqlite_dbfile=/var/lib/exim/global.db
    ${lookup sqlite {select name from aliases where id='userx';}}
    ${lookup sqlite {select name from whitelist where id='userx';}}
    .....

    Из-за единственности опции "sqlite_dbfile" пришлось все таблицы объединить в один глобальный файл.
    Наверное, exim, слишком быстр для современных дисковых систем. надо было специально притормозить.

    Кому это мешало?! Какую возможную дыру безопасности они этим закрывают? Ответ прост - кретинизм и недальновидность.

     
     
  • 6.24, Тот самый (?), 22:42, 09/06/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Забыл добавить.

    Ввели еще новую опцию "sqlite_lock_timeout" с дефолтным значением 5 секунд. Не слабо так! Сразу видно - теоретики.

     
  • 6.25, sudo (??), 23:54, 09/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Да, с SQLite лоханулись, конечно, вынеся путь к базе к в переменную. Но патч уже есть.
    И, справедливости ради, в документации это отражено.
     
     
  • 7.29, Тот самый (?), 11:53, 10/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Беда не в том, что ошиблись - от этого ни кто не застрахован. Беда в том, что полезли "улучшать" уже много лет отлаженный и прекрасно работающий код. Кстати, это не первый подобный случай. В 4.93 так "улучшили" SPF, что он на все проверки выдавал false positive. А версии 4.91 было фатальное "улучшение" OSPF.

    У кого-то там в заднице свербит. Вот это напрягает очень.

     
     
  • 8.30, xm (ok), 13:51, 10/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Да, у меня тут тоже поломалось местами много чего, причём в совершенно неочевидн... текст свёрнут, показать
     
  • 3.19, SubGun (??), 21:21, 09/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Ну, это не совсем баг, как я понял, просто можно при необдуманном обновлении хапнуть с горкой.
     

  • 1.21, Алка Галкина (?), 21:28, 09/06/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А я на сендмыле, и не жужжу ))
     
     
  • 2.26, Аноним (26), 01:30, 10/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    ежжу на пежо и не пи...жу))
     

  • 1.27, Ддд (?), 06:50, 10/06/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    старперская  поделка
     
     
  • 2.31, ann (??), 18:45, 12/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Да, истинные знатоки уже на расте написали 18 штук мега классных и супер безопасных аналогов. Рвут вообще всех в хлам. Доля серверов у растовских аналогов 100500%
     

  • 1.28, Аноним (28), 07:55, 10/06/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Та ладно вам, норм почтовик. Осознают и исправят. Все хорошо, все есть. Безопасно. Максимум одна сосна горит.
     
  • 1.32, Аноним (32), 18:55, 13/06/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    https://e.mail.ru/inbox/
     
  • 1.33, Vlad (??), 22:41, 21/06/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Блин, сломали листы рассылок :(

    maillist:
      driver = redirect
      rewrite
      local_parts = dsearch;/etc/exim/lists/
      require_files = /etc/exim/lists/$local_part
      senders = /etc/exim/lists/senders
      domains = +local_domains
      file = /etc/exim/lists/$local_part
      headers_remove = To
      headers_add    = To: ${local_part}@${domain}
      forbid_pipe
      forbid_file
      no_more

    Хрень теперь в логах:


    Tainted name '/etc/exim/lists/it' for file read not permitted\n
    Tainted name '/etc/exim/lists/web' for file read not permitted\n
    Tainted name '/etc/exim/lists/support' for file read not permitted\n

    Что они там сломали, заразы? :( Вместо dsearch теперь надо прописывать sqlite_dbfile ?

     
     
  • 2.34, Vlad (??), 01:46, 22/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Вот так должна теперь выглядеть эта секция.

    maillist:
      driver = redirect
      rewrite
      local_parts = dsearch;/etc/exim/lists/
      require_files = /etc/exim/lists/$local_part
      senders = /etc/exim/lists/senders
      domains = +local_domains
      file = /etc/exim/lists/$local_part_data
      headers_remove = To
      headers_add    = To: $local_part@$domain
      forbid_pipe
      forbid_file
      no_more

    В опции file нельзя использовать $local_part - только $local_part_data
    Смысл?

     

  • 1.35, Саныч (??), 18:02, 22/06/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Как починили ошибку exim-4.94-1.el7 on CentOS 7
    Receiving email:
    2020-06-18 11:47:08 Tainted filename for search: '/etc/exim/domains/myfancydomain.com/aliases'
    2020-06-18 11:47:08 H=stp.vestacp.com [188.226.163.96] X=TLS1.2:DHE-RSA-AES128-SHA:128 CV=no F=<forum@stp.vestacp.com> temporarily rejected RCPT <peter@myfancydomain.com>: failed to expand "${extract{1}{:}{${lookup{$local_part@$domain}lsearch{/etc/exim/domains/$domain/aliases}}}}": NULL


    вот такая трабла.
    пришлось откатиться на предыдущую.

     
     
  • 2.36, ввв (?), 17:55, 15/07/2020 [^] [^^] [^^^] [ответить]  
  • +/
    exim-4.94 doesn't allow using tainted variables in file or directory names so I had to replace expressions like 'lsearch{/etc/exim/domains/$domain/aliases}' with 'lsearch{/etc/exim/domains/${extract{1}{0}{${lookup{$domain}dsearch{/etc/exim/domains/}}}}/aliases}' in exim.conf. Worked perfectly fine for me.

    Источник - https://forum.vestacp.com/viewtopic.php?t=19994&start=50

    PS интересно видеть сообщения из будущего))) сегодня, вообще-то, 15 июля

     
     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру