Мне нужна настройка 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. Но опять же, поищите, с каким именем это связано.