Spamassasin регулярное выражение и проверка заголовка не работает
Мы пытаемся пометить фишинговые письма с помощью простого правила в Spamassasin как спам. Но, к сожалению, мы не можем получить рабочую проверку из этого.
По сути, мы пытаемся добиться того, чтобы отправитель письма не был с нашего домена @example.org, а писал с поддельным отображаемым именем.
Вот пример:
From: "Firstname Lastname <firstname.lastname@example.org>" <fraud@badcompany.com>
Таким образом, мы разработали следующее правило SA, которое не сработало
header __FRAUD_HEADER From =~ /.*@(?!example\.org)/i
body __FRAUD_BODY /".*\@example\.org.*"(?!.*\@example\.org.*$)/i
meta COMPANY_FRAUD (__FRAUD_HEADER && __KFRAUD_BODY)
describe COMPANY_FRAUD Fake Sender - Phishing Attempt
score COMPANY_FRAUD 100
Любые идеи о том, почему это не сработало?
regex101.com сообщает нам, что регулярное выражение является правильным. Спамассасин тоже не жалуется на ошибки.
РЕДАКТИРОВАТЬ: Я думаю, что я неправильно понял, как они подделали отправителя. Это выдержка из того, как я думаю, что они фальсифицировали / замаскировали адрес отправителя.
# telnet mail.example.org 25
Trying 10.20.30.40...
Connected to mail.example.org.
Escape character is '^]'.
220 mail.example.org ESMTP
EHLO a.mailserver.com
250-mail.example.org
250-PIPELINING
250-SIZE
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
MAIL FROM:fraud@badcompany.com
250 2.1.0 Ok
RCPT TO: CEO@example.org
250 2.1.5 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
TO: CEO@example.org
FROM: "Firstname Lastname" firstname.lastname@example.org
SUBJECT: Something
Spam/Phishing message text goes here
.
250 2.0.0 Ok: queued as 123456789
quit
221 2.0.0 Bye
Connection closed by foreign host.
Предлагаемое решение сработало!
1 ответ
Ваши оригинальные правила:
header __FRAUD_HEADER From =~ /.*@(?!example\.org)/i
body __FRAUD_BODY /".*\@example\.org.*"(?!.*\@example\.org.*$)/i
meta COMPANY_FRAUD (__FRAUD_HEADER && __KFRAUD_BODY)
describe COMPANY_FRAUD Fake Sender - Phishing Attempt
score COMPANY_FRAUD 100
Некоторые критические замечания:
- Я вижу опечатку: ваше мета-правило зависит от
__KFRAUD_BODY
скорее, чем__FRAUD_BODY
- Это действительно дорого. Старайтесь не использовать осмотр, если вам не нужно
- Я рекомендую называть ваши правила после себя, чтобы вы могли помнить, что они ваши
- Вы действительно хотите эти двойные кавычки в регулярном выражении тела? Это может быть проблемой
- Это действительно должно быть регулярное выражение тела? Вы пытаетесь сопоставить встроенные метаданные вперед?
- Оценка 100 опасно высока, учитывая, что ваш порог должен быть между 5-10
Как насчет:
header __DW_NONFRAUD_HEADER From:addr =~ /\bexample\.org$/i
body __DW_FRAUD_BODY /"[^"]{0,99}\@example\.org\b[^"]{0,99}"(?!.{0,99}\@example\.org\b)/i
meta DW_COMPANY_FRAUD (!__DW_NONFRAUD_HEADER && __DW_FRAUD_BODY)
describe DW_COMPANY_FRAUD Fake Sender - Phishing Attempt
score DW_COMPANY_FRAUD 3
Я отменил вашу первую проверку и ограничил ее только адресом в заголовке From (см. Ревизию к meta
правило). Я также вставил обильное слово границы (\b
) маркеры, чтобы убедиться, что вы не ловите "myexample.org" или "example.org.in" или другие странности. Безграничные диапазоны очень дороги, поэтому я урезал их до 0-99 символов и обеспечил, чтобы вы не смотрели слишком далеко вперед, не давая им совпадать в двойных кавычках. Я также удалил ваш $
так как SpamAssassin сворачивает все пробелы (окончания строк могут быть не там, где вы думаете; гораздо лучше использовать \b
и тому подобное).
Я считаю, что оценка 3 очень высокая. Что-нибудь еще, и вы можете рассмотреть возможности черных списков SA.
Действительно, вы должны убедиться, что вы правильно установили и настроили плагины SpamAssassin для DKIM, SPF и DMARC (которые являются технологиями против спуфинга, которые реализуют большую часть того, что вы пытаетесь сделать). ваши DNSBL и URI DNSBL настроены правильно и вы используете (и обучаетесь!) Байеса. Нечеткие поиски третьих сторон, такие как Razor и Pyzor, также могут помочь в обнаружении пропущенного спама.
Я говорю это потому, что это правило трудоемко, дорого и не масштабируется (вам нужно создать по одному на домен), но в основном потому, что оно не выглядит эффективным (целевая "подпись" не очень спам, и вы получу ложные срабатывания).