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

Принудительная проверка подлинности электронной почты smtp с помощью белого списка

Мне нужна настройка exim, которая могла бы разрешить только аутентифицированные электронные письма smtp, кроме случаев, когда электронная почта приходит от root@servername, например. Вот что у меня сегодня:

acl_not_smtp (custom_begin_outgoing_notsmtp_checkall)

deny
authenticated = *
condition = ${if !eq {root@$primary_hostname}{${address:$h_from:}}}
message = REJECTED
accept

Это решение блокирует все электронные письма без аутентификации. У кого-нибудь есть лучшее решение?

Я думаю, вам нужно вызвать другой acl: acl_smtp_rcpt. Узнайте, какому имени сопоставлен этот acl на вашем сервере. В Debian это acl_check_rcpt.

Чтобы проверить отправителя, отправитель должен быть уже указан, что верно, когда удаленный конец отправляет команду «RCPT TO:». Не пробуя, я бы сделал в acl_check_rcpt что-то вроде следующего:

accept authenticated = *
accept senders = root@servername
deny message = Rejected

Вы не должны полагаться на адрес отправителя, который легко подделать. Вы можете протестировать отправляющий хост с помощью

    accept senders = root@servername
           hosts = 127.0.0.1 : localhost

Кроме того, убедитесь, что отправителем сообщения является ваш сервер.

В основном локальные сообщения не принимаются smtp. Там входит acl в вашей конфигурации: acl_not_smtp. Но опять же, поищите, с каким именем это связано.