Неожиданно, после минорного обновления, посыпались странные ошибки “Tainted filename “В файле /var/log/exim4/paniclog появляются строки.
2021-05-28 18:50:33 1lmekp-000cvP-AN Tainted filename '/etc/exim4/domain.key'
2021-05-28 18:50:33 1lmekp-000cvP-AN unable to open file for reading: /etc/exim4/domain.key
Происходит после каждой отправки письма “вовне”. Оказалось, что в exim 4.94 внесли изменения в обработку
Для тех, кто "по-собачьему" не очень, вот суть (исходное сообщение)Some Transports now refuse to use tainted data in constructing their delivery location; this WILL BREAK configurations which are not updated accordingly. In particular: any Transport use of $local_part which has been relying upon check_local_user far away in the Router to make it safe, should be updated to replace $local_part with $local_part_data. Attempting to remove, in router or transport, a header name that ends with an asterisk (which is a standards-legal name) will now result in all headers named starting with the string before the asterisk being removed. We recommend staying away from such names, if they are private ones (and in case of future enhancements, alao header names that look like REs).суть в том что ради большей безопасности теперь он отказыватся оперировать с файлами, используя любые данные, пришедшие из вне, т.е. из ненадежного источника. можно только из локальных конфиг-файлов, баз. если раньше например можно было сохранять почту по какому-то локальному пути, используя ту же переменную $sender_address_domain, то теперь нет. в общем пришлось править свои конфиги чтоб снова все заработало. о чем собственно так было и сказано: https://git.exim.org/exim.git/blob/HEAD:/src/README.UPDATING Some Transports now refuse to use tainted data in constructing their delivery location; this WILL BREAK configurations which are not updated accordingly.
Вариант решения проблемы (исходное сообщение)
cat /usr/local/etc/exim/dkim_domains
dom.ru: key=/usr/local/etc/exim/dom.ru.key
dom1.ru: key=/usr/local/etc/exim/dom1.ru.key
dom2.ru: key=/usr/local/etc/exim/dom2.key
В exim config /usr/local/etc/exim/configure
DKIM_DOMAIN = ${lookup{$sender_address_domain}lsearch*@{/usr/local/etc/exim/dkim_domains}{$sender_address_domain}{}}
DKIM_PRIVATE_KEY = ${extract{key}{${lookup{$sender_address_domain}lsearch*@{/usr/local/etc/exim/dkim_domains}}}{$value}{}}