Назад | Перейти на главную страницу

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}>

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

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

Есть предположения?

Насколько я могу судить, все эти заголовки 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 для обсуждения регулярных выражений формата адресов электронной почты.

В настоящее время я борюсь со спамом такого рода, и в дополнение к отличным ответ из 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

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