SpamAssassin, Postfix и несколько адресов в заголовке From

Я работаю над проблемой, с которой сталкиваюсь с сервером сканирования электронной почты (MailScanner, Spamassassin, Postfix и т. Д.) И с подменой заголовка From. К сожалению, некоторые из версий этих компонентов старые, поэтому это может быть ошибка в одном или нескольких из них. Планируются обновления, я просто смотрю, подходит ли временное решение, или это проблема конфигурации / правил, которую необходимо перенести в обновленную среду.

Обычно я вижу сообщения, содержащие несколько адресов в заголовке From. Само по себе это кажется RFC-совместимым с определенными условиями, которые обычно не выполняются, насколько я могу судить, однако почти каждый пример, который я могу найти, что наша среда была записана в журнал, это поддельное / вредоносное сообщение.

Вот несколько примеров, все из разных сообщений, с именами, измененными для защиты (возможно) невиновных:

From: "confirm@amazon.com" <confirm@amazon.com> <bad@hacker.man>
From: John Doe <jdoe@internet.com> <spoof@ing.mail>
From: "Trusted Third Party Employee" <trusted.employee@thirdparty.org> <spammer@foo.vn>

Почтовые клиенты, такие как Outlook, похоже, отображают только первый адрес. MailScanner / SpamAssassin использует последнее.

По сути, регулярное выражение, подобное приведенному ниже, могло бы уловить их (будь то в header_check в Postfix или в правиле в Spamassassin):

^From: .*?<[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}>.*<[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}>

Я уверен, что это регулярное выражение ужасно и, вероятно, есть более элегантные способы сопоставить примеры, подобные приведенным выше. ;)

Я могу поделиться конкретными фрагментами конфигурации, если это необходимо.

Есть мысли?

1
задан 24 January 2019 в 00:33
2 ответа

В настоящее время я борюсь со спамом такого типа и дополняю отличный ответ из Deeepdigger в настоящее время у меня есть это правило в моем Spamassassin.

describe LOCAL_TWO_FROM_EMAILS  The From has two emails, probably email spoofing
header   LOCAL_TWO_FROM_EMAILS  From =~ /<.*\@.*>\s+<.*\@.*>/i
score    LOCAL_TWO_FROM_EMAILS  9.0 # Set this value at your discretion

Регулярное выражение нуждается в улучшении, но это правило помогло мне предотвратить подделку большей части электронной почты с помощью этого искаженного заголовка.

0
ответ дан 4 December 2019 в 03:18

Насколько я могу судить, все эти заголовки From нарушают RFC. В заголовке From может быть несколько адресов, но тогда они должны быть разделены запятыми.

См .:

Итак, почтовый сервер должен отклонять это письмо (imho). Если это не так, вы можете добавить проверку заголовка для проверки формата RFC и отклонить электронное письмо в противном случае. Но это регулярное выражение было бы сложным и уродливым, потому что RFC допускает почти все в отображаемом имени.

Например.это было бы законно

    From: "confirm@amazon.com <confirm@amazon.com>" <bad@hacker.man>

На практике я никогда в жизни не получал действительного электронного письма с несколькими адресами отправителя. Также я считаю все в отображаемом имени мусором, потому что это полностью на усмотрение отправителя. Известные адреса электронной почты все равно находятся в моей адресной книге (поэтому они отображаются в моем почтовом клиенте), а для всех остальных я могу отказаться от отображаемого имени, чтобы предотвратить фишинг.

Другими словами, если SpamAssassin использует последний действующий адрес электронной почты в строку заголовка как НАСТОЯЩУЮ, вы можете сделать то же самое и удалить все остальное:

/^From:.*[[:space:]]+<?([a-zA-Z0-9._?=#$|'*%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,63})>?[[:space:]]*$/ REPLACE From: ${1}

Примечание: шаблон для соответствия допустимым форматам адресов электронной почты формально неправильный, но прагматичный. См. Также https://www.regular-expressions.info/email.html для обсуждения регулярных выражений формата адресов электронной почты.

0
ответ дан 4 December 2019 в 03:18

Теги

Похожие вопросы