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

Как отклонить / обнаружить электронные письма, утверждающие, что они принадлежат моему собственному домену?

У нас следующая топология электронной почты:

Exchange server --------- Sendmail server ---------------Internet

На сервере sendmail нет почтового ящика пользователя и сообщений с адресом отправителя user@my.domain.com может поступать только с сервера обмена и никогда из Интернета. Основываясь на этом факте, я хочу ограничить количество получаемого спама, отклоняя все электронные письма, поступающие из Интернета и утверждая, что они отправлены из моего собственного домена (anyuser@my.domain.com).

Я настроил запись SPF для своего домена и установил на сервере sendmail пакеты spfmilter, spamassassin и spamass-milter. Он работает хорошо, но есть две проблемы:

  1. Если во время SMTP-разговора отправитель указал неверный адрес в "MAIL FROM:"команда, она будет отклонена, но отправитель все равно может выдать другую"MAIL FROM:", и если этот второй адрес будет принят, будут приниматься и все сообщения. Я предпочитаю, чтобы у отправителя не было второго шанса, и если он укажет, наконец, один адрес, отклоненный spfmilter, все сообщение должно быть безоговорочно отклонено.

  2. Если отправитель указал действительные адреса (принятые spfmilter), он может выдать DATA команду, а затем поместите строку (как тело сообщения), например "From: <me@my.domain.com>". Эта строка не является частью SMTP-диалога, но становится частью заголовка сообщения (в моем Outlook этот адрес отображается как адрес отправителя). Поэтому я хочу настроить тест / правило фильтра spamassassin, которое будет отмечать сообщение как спам (после DATA, уже слишком поздно для отклонения сообщения), если адреса отправителя, указанные в заголовке сообщения, не совпадают с адресами, указанными в рамках диалога SMTP, но не знают, как это сделать.

Какие-либо предложения?

Я использую Exim, настроенный с mysql, для фильтрации моей электронной почты. Я считаю, что настройку сделать проще. Конфигурация sendmail всегда казалась мне довольно загадочной.

  1. Чтобы отправитель не мог изменить идентификатор mail_from и повторить попытку, вам нужно будет добавить его IP-адрес в черный список и принудительно включить черный список. Если вы можете заставить фильтр разрывать соединение, а не отклонять mail_from, им нужно будет повторно подключиться, чтобы изменить адрес mail_from. Не думаю, что многие отправители так поступят. Я проверю свою базу и обновлю позже.

  2. Следующее правило проверяет, принадлежит ли адрес «От» к домену example.com. Добавьте эти строки в файл local.cf и перезапустите spamassassin. Увеличивайте балл, если уверены, что он работает правильно. Это предполагает, что вы не используете spamassassin для исходящей почты.

header   LOCAL_FROM_HERE        From =~ /[.@]example.com/
score    LOCAL_FROM_HERE        -0.75
describe LOCAL_FROM_HERE        From header is local address

РЕДАКТИРОВАТЬ: Я выполнил несколько запросов к своей базе данных электронной почты. Из 2500 соединений, которые использовали локальный адрес в команде MAIL FROM, только 28 были выполнены попытки с нелокальным адресом. Это примерно 1% отказов при простом отказе от использования локальных адресов в команде MAIL FROM. Я не обнаружил случаев, когда сервер повторно подключался и пробовал использовать нелокальный адрес.

Предполагая, что заголовок Envelope_from добавлен до того, как spamassassin отфильтрует сообщение, оба условия могут быть объединены в одну запись черного списка в local.cf. Опять же, это предполагает, что вы не запускаете spamassassin для исходящей электронной почты.

blacklist_from   *@example.com

EDIT2: я использую ACL в Exim, чтобы отклонить команду Mail From, если в адресе используется локальный домен. Это применимо, если подключающийся хост не тот, который я считаю локальным. К локальным хостам относятся серверы в локальной сети, утвержденные ретрансляторы и хосты, использующие аутентифицированное соединение на порту представления (587).

+1 к вопросу.

Это звучит как очень распространенный сценарий, для которого должно быть много плагинов sendmail.

Конечно ты должен иметь dkim-milter и spfmilter, но они не решают эту точную проблему, что звучит достаточно легко, просто добавив собственный фильтр, чтобы отклонять любые письма, соответствующие чему-то вроде egrep -e '^From: *@my.domain.com'

DKIM очень хорошо, но если письмо не подписано, вы не сможете его провалить из-за плохой подписи. Тогда вы должны потерпеть неудачу, потому что у него нет подписи и утверждает, что он из вашего домена.

Использовать DKIM. это как запись SPF, но показывает открытый ключ. Ваш сервер подписывает электронные письма от вашего домена закрытым ключом

identificator._domainkey.mydomain.com. IN txt "/*spf*/" +" v=DKIM1; k=rsa; p=MIG......endofkey" //BIND9

и в ACL, установленном для проверки подписи DKIM для всей входящей почты, которая утверждает, что это ваш домен.

Dkim был разработан для решения вашей проблемы (рыбалка :))