spamassassin - фильтрация определенных кириллических / русских букв UTF-8 (в кодировке base64)
1396
nox
У меня возникли проблемы с настройкой моих личных spamassassinправил. Моя проблема: я получаю много русского спама с кириллическими буквами, много в UTF-8. Из-за этого поиска кодировки недостаточно. Поэтому я хочу, чтобы найти несколько типичных русских букв, а не (например): (д|ж|з|и|й).
Я попробовал шаблон /(д|ж|з|и|й)/iтак же, как /(\xd0\xb4|\xd0\xb6|\xd0\xb7|\xd0\xb8|\xd0\xb9)/i(эти шаблоны регулярных выражений должны делать то же самое, верно?) В Subjectпоиске:
Результат: UTF-8спам все еще распространяется. Я проанализировал электронные письма, приходящие через. Все они имеют похожую структуру. Источник (важная часть) ищет один пример спамовой почты следующим образом
Таким образом, это subjectиспользует RFC2047: =?UTF-8?B?msg_subject?= =?UTF-8?B?msg_subject2?= [...]. Эта строка говорит нам, что subjectиспользует utf-8кодировку и base64кодировку (сравните http://www.ietf.org/rfc/rfc2047.txt ).
Но это не помогает мне, поскольку он просто описывает, как фильтровать строки в кодировке base64, которые достаточно длинные. Поскольку я ищу отдельные символы, я не могу использовать этот подход.
Я что-то пропустил? Спасибо за вашу помощь!
edit: я также попробовал rawbodyпоиск, потому что это должно декодировать кодировку base64, как указано в документации :
rawbody CYRILLIC_LETTER_PRESENT /(д|ж|з|и|й)/i
У меня это тоже не сработало, хотя нужно было обыскивать и все тело, и оно полно кириллицы.
edit2: я пытался исследовать проблему дальше. Если я пытаюсь проверить textcat с помощью spamassassin -D textcat -t spamtest, он говорит мне, что это " can't determine language uniquely enough".
Более того, в итоге я получаю следующий результат:
Похоже, это работает. Все было хорошо. Мое правило, здесь называется LOCAL_CYRILLIC, работает как задумано. НО, проблема в том, что это письмо прошло, не будучи распознанным как спам, поскольку то же самое правило присутствовало в файле конфигурации. Я попытался переслать мне ту же почту снова, а затем источник электронной почты выглядит так:
Таким образом, кажется, есть разница между выполнением этого теста локально для файла и фактически входящей электронной почты. Зачем? Я всегда перезапускаю spamassassin systemctl restart spamassassin. Я проверил это с, systemctl status spamassassinи все выглядит хорошо, также spamdперезапускается, как и должно быть. Там я также могу найти следующую информацию для пересылаемого письма:
spamd: clean message (2.7/3.0) for spamd:5555 in 6.0 seconds, 8371 bytes. spamd: result: . 2 - LOCAL_CYRILLIC,RCVD_IN_DNSWL_MED scantime=6.0,size=8371,user=spamd,uid=5555,required_score=3.0,[...]
Вы пытались настроить `ok_locales`? https://spamassassin.apache.org/full/3.2.x/doc/Mail_SpamAssassin_Conf.html#language_options
AnFi 7 лет назад
0
@ AndrzejA.Filip `ok_locales` просто ищет типичные региональные кодировки. Это мне не поможет, так как электронные письма находятся в `utf-8` = /
nox 7 лет назад
0
Извините, `ok_languages` более уместен. `UNWANTED_LANGUAGE_BODY` - 2,8. https://spamassassin.apache.org/full/3.1.x/doc/Mail_SpamAssassin_Plugin_TextCat.html
AnFi 7 лет назад
0
@ AndrzejA.Filip Может быть, вы правы, но все же это не работает для моего случая, я тоже попробовал, должен был написать это, может быть. Электронные письма все еще приходят через эту опцию. Я предполагаю, что это из-за их кодировок `utf-8` в сочетании с кодировкой` base64`.
nox 7 лет назад
0
Вы пытались проверить работу плагина texcat? `spamassassin -D textcat -t spam_message_file`
AnFi 7 лет назад
0
@ AndrzejA.Filip см. Новое редактирование. Спасибо за вашу помощь до сих пор!
nox 7 лет назад
0
Правило строится с использованием UTF-8? Эти глифы могут быть получены с использованием разных кодовых страниц, не так ли?
Yorik 7 лет назад
0
@Yorik Я не уверен, что вы хотите спросить здесь. Сам файл конфигурации находится в кодировке `utf-8`. Я думаю, что коды Unicode уникальны для этих букв.
nox 7 лет назад
0
1 ответ на вопрос
0
Daniel Vérité
Очевидно, что spamassassin не декодирует это (правильно). Я не нашел никакой возможности заставить это работать
Это работает для меня Ubuntu 14.04, spamassassin 3.4, Perl 5.18.2, локали: fr_FR.UTF-8.
$ spamc -R <mailtest 10.0 / 5.0 Программное обеспечение для обнаружения спама, работающее в системе ** отредактировано ** ... Предварительный просмотр содержимого: ** отредактировано ** [...] Детали контент-анализа: (10,0 балла, 5,0 обязательно) описание имени правила pts ---- ---------------------- ------------------------ -------------------------- 10 RUSSIAN_CHARS русских символов в шапке 0.0 DKIM_ADSP_CUSTOM_MED Нет действительной подписи автора, adsp_override CUSTOM_MED 0.0 FREEMAIL_FROM Отправитель электронной почты обычно злоупотребляет поставщиком почты конечного пользователя (** отредактированное ** [в] gmail.com) -0.0 NO_RELAYS Информационный: сообщение не было передано через SMTP
Это также хиты с rawbody RUSSIAN_CHARS /(д|ж|з|и|й)/i
К счастью, мне не так уж и повезло. В любом случае, смотрите новое редактирование для получения дополнительной информации.
nox 7 лет назад
0
@nox: Если я правильно понимаю, фильтрация тоже работает для вас. Теперь у вас другой вопрос, поэтому некоторые другие правила соответствуют или не совпадают в зависимости от того, как называется spamassassin.
Daniel Vérité 7 лет назад
0
Может быть, это был мой вопрос с самого начала. Чтобы уточнить: я хочу применить это правило для входящих писем (конечно), и это правило не работает, в то время как другие работают отлично там. Тем не менее, мой настроенный фильтр действительно работает локально.
nox 7 лет назад
0