Ошибка раскрытия переменной $local_part@$domain в Exim 4.93 при передаче почты в dovecot

EXIM, sendmail, postfix, Dovecot и прочие. Решение проблем связанных с работой электронной почты

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
dserga
ефрейтор
Сообщения: 57
Зарегистрирован: 2008-05-23 7:23:36

Ошибка раскрытия переменной $local_part@$domain в Exim 4.93 при передаче почты в dovecot

Непрочитанное сообщение dserga » 2020-02-25 20:51:17

После перехода с Exim 4.92 на 4.93 обнаружился очень неприятный факт:
при передаче сообщения в локальную доставку в dovecot начали сыпаться ошибки следующего содержания:

Код: Выделить всё

2020-02-25 20:33:44 1j6YDF-000AY5-45 attempt to expand tainted string '$local_part@$domain'
2020-02-25 20:33:44 1j6YDF-000AY5-45 == d.zadonskiy@***** R=dovecot_user T=dovecot_virtual_delivery defer (0): Expansion of "$local_part@$domain" from command "/usr/local/libexec/dovecot/deliver -d $local_part@$domain" in dovecot_virtual_delivery transport failed: attempt to expand tainted string '$local_part@$domain'
2020-02-25 20:33:44 1j6YDF-000AY5-45 attempt to expand tainted string '$local_part@$domain'
2020-02-25 20:33:44 1j6YDF-000AY5-45 == e.ovsyanko@******** R=dovecot_user T=dovecot_virtual_delivery defer (0): Expansion of "$local_part@$domain" from command "/usr/local/libexec/dovecot/deliver -d $local_part@$domain" in dovecot_virtual_delivery transport failed: attempt to expand tainted string '$local_part@$domain'
Причем как выяснилось, что такое происходит, если в поле To: стоит не один а несколько получателей. Причем если получатели в поле CC: или BCC: такого поведения не наблюдается.
Во всех остальных местах переменная $local_part@$domain раскрывается нормально без проблем, но в секции транспорт изменений не производилось:

Код: Выделить всё

dovecot_virtual_delivery:
    driver = pipe
    command = /usr/local/libexec/dovecot/deliver -d $local_part@$domain
    message_prefix =
    message_suffix =
    delivery_date_add
    envelope_to_add
    return_path_add
    log_output
    user = mailnull
    group = mail
    temp_errors = 64 : 69 : 70: 71 : 72 : 73 : 74 : 75 : 78
секция 100% стандартная. Причем рядом есть аналогичная машина, обновленная до 4.93 с FreeBSD 12.0 на борту, на которой все это работает без проблем. Есть другая с 4.92.3 и там тоже все работает без проблем.

Чем может быть вызвано такое поведение? Причем dovecot обновлялся ранее, недели полторы до этого до версии 2.3.9.3 и работал без проблем.
Авторизация в exim сделана через dovecot, как обычно, где он выступает в роли lda.

Может у кого есть какие мысли куда копать?
Других ошибок обработки не происходить. Отправка сообщений наружу и прием почты в MTA происходит без проблем.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

dserga
ефрейтор
Сообщения: 57
Зарегистрирован: 2008-05-23 7:23:36

Ошибка раскрытия переменной $local_part@$domain в Exim 4.93 при передаче почты в dovecot

Непрочитанное сообщение dserga » 2020-02-26 22:49:08

Как только откатил на версию 4.92.3 - все исправилось, ошибка исчезла.
Но там изменился в новой версии формат хранения писем в spool и все зависшие в очереди недоставленные письма стали нечитабельными.
Пришлось их там уничтожить, предварительно сохранив для истории spool (а может там что и нужное есть).
Я прочитал список изменений в exim 4.93, но может у меня глаза замылились, но ничего подобного, чтобы могло вызвать мою проблему в описании не обнаружил.

Аватара пользователя
xM
ст. лейтенант
Сообщения: 1316
Зарегистрирован: 2009-01-15 23:57:41
Откуда: Königsberg
Контактная информация:

Ошибка раскрытия переменной $local_part@$domain в Exim 4.93 при передаче почты в dovecot

Непрочитанное сообщение xM » 2020-03-04 16:24:04

Исправлено в последней версии Exim (4.93.0.4_3) в портах FreeBSD. Но имейте ввиду что в целях безопасности появились некоторые ограничения на использование не зависящих от конфигурации переменных в путях к файлам.
За подробностями - в официальную рассылку Exim.
IT voodoo blog https://kostikov.co

dserga
ефрейтор
Сообщения: 57
Зарегистрирован: 2008-05-23 7:23:36

Ошибка раскрытия переменной $local_part@$domain в Exim 4.93 при передаче почты в dovecot

Непрочитанное сообщение dserga » 2020-03-04 19:30:47

xM, спасибо, буду смотреть, ибо те изменения, что были анонсированы в 4.93 важны для целей безопасности, да и развитие продукта тоже идет и появляются новые возможности.

PamelanuH
проходил мимо
Сообщения: 1
Зарегистрирован: 2020-05-23 9:40:22

Ошибка раскрытия переменной $local_part@$domain в Exim 4.93 при передаче почты в dovecot

Непрочитанное сообщение PamelanuH » 2020-05-26 10:41:02

Добрый день.
Вот такая ситуация, периодически эксим делает копии исходящих писем в очереди. То есть я отправляю рассылку своим подписчикам 10 000 человек, а по статистике приходит 15000-17000 писем, получается по несколько копий каждому. В кроне стоит задача на проталкивание очереди /usr/sbin/exim4 -qf запуск раз в минуту, так как без нее отправка вообще может застопориться и все письма будут в очереди, пока не толкнешь. А так получается, что письма приходят плюс дублируются в очереди и приходят еще раз. Может проблема именно в той команде, которая в кроне. Но повторюсь, проблема не постоянная, день на день не приходится. Может кто сталкивался с подобным, подскажите, не откажите в любезности =

dserga
ефрейтор
Сообщения: 57
Зарегистрирован: 2008-05-23 7:23:36

Ошибка раскрытия переменной $local_part@$domain в Exim 4.93 при передаче почты в dovecot

Непрочитанное сообщение dserga » 2020-05-26 12:33:13

PamelanuH,

Такое возможно, если в момент срабатывания команды на запуск обработки через cron очереди у вас эта часть очереди уже обрабатывается. Либо запускать вашу рассылку меньшим количеством писем за раз, либо увеличить время между циклами в cron.