Недавно я заметил повторяющийся шаблон в некоторых сообщениях со спамом, которые я получаю. Обратный канал и от заголовков всегда имеет ту же структуру.
Позвольте мне объяснить с примером:
Return-path: <brian_chambers-USER=DOMAIN.COM@readyseas.com>
From: <brian_chambers@readyseas.com>
To: <USER@DOMAIN.COM>
В основном я хотел бы проверить, равняется ли подсистема пользователей Обратного тракта От подсистемы пользователей с добавлением К ("" измененный на "=") и тире перед К.
Я хотел использовать некоторый Постфикс header_checks
и отклонение USER=DOMAIN.COM@
шаблон, но большинство законных новостных рассылок, которые я получаю, содержит это также в их обратном канале (кроме прежде существует намного более сложная строка, которая никогда не соответствует полю From).
Кто-либо создал такое правило прежде и хочет совместно использовать?
Спасибо!
SpamAssassin не позволяет писать код или присваивать переменные... в своих правилах. Для того, чтобы делать то, что вы хотите, вам лучше всего подойдет пользовательский плагин (который даст вам полный доступ к perl). Тем не менее, технически вы можете делать то, что вы просите в синтаксисе написания правил SpamAssassin, используя тип заголовков ALL
(который рассматривает все заголовки одновременно, что-то вроде правил rawbody
):
header RPATH_EMBEDS_TO_ADDR ALL =~ /\bReturn-Path:[^\r\n]{0,99}-([\w.])=([\w.-]{1,99}\.[a-z]{2,8})\@(?:[^\r\n]{0,99}[\r\n]{1,9}){1,30}To:[^\r\n]{0,99}<\1@\2>/ism
Вышеприведенное правило дорогое , и было бы еще дороже, если бы вы допустили тире в имени пользователя, так как оно должно было бы выполнять итерацию на всех возможных длинах ([\w. - ])
для имени пользователя. Это дорого не только потому, что требует много обратного просмотра, но и потому, что требует изучения очень длинных строк. Также возможно, что заголовок Return-Path
- это после заголовка To
, что означает, что вам понадобится второе правило для второго регекса, чтобы обработать этот случай.
Для этой техники лучше написать пользовательский плагин SpamAssassin.
Однако, я думаю, что вы быстро поймете, что все это нацелено на определенные типы массовой почты, многие из которых являются законными; Return-Заголовок пути
используется в качестве адреса возврата , и многие списки рассылки кодируют в него получателя, чтобы измерить его доставляемость и очистить свои списки.
Если вы действительно хотите такого рода вещи, я подозреваю, что на самом деле не имеет значения, что точный адрес To
присутствует в заголовке Return-Path
. Вот более быстрое правило резко, которое должно иметь почти такую же эффективность:
header RPATH_EMBEDS_ADDR Return-Path =~ /-[\w.]{1,99}=[\w.-]{1,99}\.[a-z]{2,8}\@/i
Другая большая заметка заключается в том, что всякий раз, когда сообщение перенаправляется (например, служба пересылки электронной почты), заголовок Return-Path
переписывается. Это может ограничить утилиту обнаружения спама в данном правиле.