Мне нужна настройка 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
Это решение блокирует все неаутентифицированные письма. У кого-нибудь есть лучшее решение?
решение1
Думаю, вам нужно вызвать другой 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. Но опять же, найдите, к какому имени это сопоставлено.