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

Postfix MTA - строка соответствия в полях заголовка

Я пытаюсь заблокировать спамеров, фильтруя некоторые поля в заголовке письма, но это не работает. Спамер добавляет случайные домены в заголовки, но «пользователь» всегда один и тот же, например: www-data@domain1.com , www-data @ domain2 и так далее. Я не ожидаю, что кто-то будет отправлять легальные письма с именем отправителя «www-data», так что я в порядке, если все они будут отклонены.

Регулярное выражение, которое я пытаюсь использовать, но не работает:

/^(From|Return-Path|Reply-To):.*www-data@.*/ DISCARD known spam sender in $1: header: $2

У меня есть другие правила, которые также фильтруют другие аспекты, например создание моего собственного домена, который работает:

/^(From|Return-Path|Reply-To):.*\b(@mydomain\.com)\b/ DISCARD forged sender address in $1: header: $2

Что я делаю не так? Спасибо!

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

Чтобы заблокировать отправителей конвертов, добавьте check_sender_access стол в smtpd_sender_restrictions и укажите localpart @, который нужно отклонить. Вам не нужно использовать регулярное выражение, хотя при необходимости вы можете использовать pcre: тип стола.

В регулярных выражениях вы должны избегать @, лайк \@. Также обратите внимание, что в вашем первом примере нет шаблона $2, потому что у вас только одна скобка. Чтобы получить больше информации man 5 postconf, или посмотрите на SMTPD_ACCESS_README.