Вопрос или проблема
У меня есть несколько пользователей, которых я внес в белый список с помощью multimap. Это работает нормально, за исключением одного странного случая. Если в имени электронной почты пользователя есть точка (например, [email protected]), перед фильтрацией что-то в rspamd удаляет точку, поэтому адрес отправителя в rspamd.log оказывается [email protected]. Я не знаю, почему это происходит. Мое решение – внести в белый список [email protected] вместо этого. Информация: debian 12, rspamd 3.4.1.
whitelisted_senders.map:
multimap.conf:
whitelisted_senders {
type = "from";
filter = "email:addr";
map = "/etc/rspamd/local.d/maps.d/whitelisted_senders.map";
symbol = "WHITELISTED_SENDERS";
description = "Whitelisted senders";
prefilter = true;
action = "accept";
}
rspamd.log:
[email protected], qid: , ip: 127.0.0.1, from: [email protected], (default: F (no action): [1.90/15.00] [MISSING_TO(2.00){},MIME_GOOD(-0.10){text/plain;},ARC_NA(0.00){},FREEMAIL_ENVFROM(0.00){gmail.com;},FREEMAIL_FROM(0.00){gmail.com;},FROM_EQ_ENVFROM(0.00){},FROM_NO_DN(0.00){},MIME_TRACE(0.00){0:+;},RCVD_COUNT_ZERO(0.00){0;},TAGGED_FROM(0.00){}]), len: 153, time: 218.069ms, dns req: 6, digest: , rcpts: ZZZZ@XXXXX
Обратите внимание, что WHITELISTED_SENDERS не установлен. Если я использую [email protected] вместо этого, я получаю следующее:
[email protected], qid: , ip: 127.0.0.1, from: [email protected], (default: F (no action): [-0.10/15.00] [MIME_GOOD(-0.10){text/plain;},ARC_NA(0.00){},FREEMAIL_FROM(0.00){gmail.com;},FROM_EQ_ENVFROM(0.00){},FROM_NO_DN(0.00){},MIME_TRACE(0.00){0:+;},WHITELISTED_SENDERS(0.00){[email protected];}]), len: 151, time: 102.886ms, dns req: 6, digest: <17a274776bf4da75de62b5d3621bd797>, rcpts: ZZZ@XXX, forced: no action “Matched map: WHITELISTED_SENDERS”; score=nan (set by multimap)
полученное пользователем письмо, конечно, имеет правильный адрес “от”.
Я полагаю, нет причин не использовать этот обходной путь, но мне бы хотелось понять, что происходит…
Ответ или решение
На первый взгляд, проблема, с которой вы столкнулись при использовании Rspamd, может показаться необычной и даже сбивающей с толку. Проблема заключается в том, что при фильтрации писем с использованием правила whitelist у вас исчезает символ точки (‘.’) в именах отправителей. Давайте разберемся, почему это может происходить и как это исправить.
Теория:
Rspamd — это мощный инструмент для спам-фильтрации, который предлагает множество возможностей для конфигурирования и персонализации. Он работает на основе набора правил и использует различные подходы для анализа и фильтрации электронной почты. Ваша конфигурация использует функцию "multimap" для создания белого списка отправителей, однако, по какой-то причине символы точки в адресах email изменяются на другие символы в логах Rspamd.
Одной из причин таких изменений может быть преобразование строк или использование специальных символов в кодах, которые интерпретируются Rspamd. Это могло быть связано с неправильным разбором или кодированием email-адресов на определенном этапе фильтрации.
Пример:
Предположим, что ваш конфиг multimap имеет следующее содержание:
whitelisted_senders {
type = "from";
filter = "email:addr";
map = "/etc/rspamd/local.d/maps.d/whitelisted_senders.map";
symbol = "WHITELISTED_SENDERS";
description = "Whitelisted senders";
prefilter = true;
action = "accept";
}
В этой конфигурации указано, что все email-адреса, перечисленные в файле whitelisted_senders.map
, будут приняты без дальнейшей фильтрации. Однако проблема заключается в том, что при обработке, например, адреса user.name@gmail.com
, регистрируется username@gmailcom
, что приводит к сбоям в корректной идентификации whitelisted отправителей.
Применение:
-
Проверка кодировки и разобранных значений:
- Удостоверьтесь, что все email-адреса в вашем файле
whitelisted_senders.map
находятся в корректной кодировке. Проблемы с кодировкой могут привести к непредсказуемом обработке строк.
- Удостоверьтесь, что все email-адреса в вашем файле
-
Изучение источника изменения:
- Проверьте, может ли это поведение быть вызвано любыми плагинами или дополнительными модулями Rspamd. Обработчики на уровне сети или дополнительные компоненты могут некорректно обработать заголовки email.
-
Логирование и отладка:
- Увеличьте уровень логирования для Rspamd, чтобы попытаться понять, на каком этапе происходит изменение email-адреса. Это может быть достигнуто добавлением более детализированного уровня логирования в конфигурацию Rspamd.
log_modules = ["multimap"]; # проверка того, как обрабатывается multimap
-
Обновление и патчи:
- Проверьте, есть ли обновления для используемой версии Rspamd (3.4.1 в вашем случае), так как описанное поведение может быть связано с известной проблемой или багом, который был исправлен в более поздних версиях.
-
Альтернативные обходные пути:
- Пока вы решите основную проблему, можно продолжать использовать workaround, как вы предложили, путем добавления исправленного адреса в белый список без точки.
-
Обсуждение с сообществом:
- Рассмотрите возможность размещения этой проблемы на форумах или в сообществе Rspamd. Возможно, другие пользователи сталкивались с аналогичными проблемами и могут предложить решения или объяснения.
-
Анализ исходного кода:
- Если у вас есть навыки программирования, возможно, стоит заглянуть в исходный код Rspamd, отвечающий за разбор заголовков и обработку адресов из multimap, чтобы понять, как происходит обработка и какие механизмы могут вызвать исчезновение точки.
Следуя этим шагам, вы сможете больше понять причину проблемы и, возможно, найдёте способ её устранения, обеспечив корректную работу вашего спам-фильтра на основе Rspamd.