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

Настройте Exim для аутентификации пользователей, а затем ретранслируйте почту SMTP через smarthost, используя другую аутентификацию

Я пытаюсь использовать Exim для работы в качестве SMTP-сервера, который ретранслирует почту как смарт-хост в нашу службу Mandrill. (Смысл этого заключается в использовании Exim для аутентификации наших пользователей для почты IMAP и аутентификации их на нашем сервере LDAP, полагаясь на Mandrill для доставки.)

Изначально у меня был установлен Exim на smarthost, и настройки Mandrill были в файле .client в папке Exim. Это работало правильно, и я мог использовать telnet или MUA для отправки почты, и Mandrill правильно ретранслировал ее.

Затем я включил TLS и аутентификацию и заблокировал неаутентифицированным пользователям использование Exim. Это тоже сработало правильно - TLS работает, и я могу подключиться и пройти аутентификацию. Но что-то в этой аутентификации сломало ретранслятор smarthost - я подозреваю, потому что Exim передает мои "локальные" учетные данные LDAP-аутентификации в Mandrill вместо учетных данных .client, которые я указал. Ошибка в моем файле основного журнала выглядит так:

2014-04-24 06:54:53 1WchYz-0007Db-3E Ошибка SMTP от удаленного почтового сервера после RCPT TO :: host smtp.us-east-1.mandrillapp.com [54.237.217.91]: 454 4.7.1: Relay в доступе отказано

Как я могу настроить Exim для аутентификации входящих пользователей, но использовать другой набор учетных данных для аутентификации на SMTP-реле?

Две аутентификации независимы.

Вы позволяете Exim'у аутентифицироваться при исходящих соединениях с помощью аутентификатора клиента. Вам нужно будет настроить строку в Exim passwd.client файл для каждого сервера, на котором вам нужно пройти аутентификацию. Страница руководства для exim_passwd_client описывает формат файла паролей.

Входящая аутентификация выполняется с помощью аутентификатора сервера. Они, вероятно, закомментированы в конфигурации по умолчанию. Страница руководства для exim_passwd описывает файл passwd. Вам следует рассмотреть возможность включения TLS в порту отправки (587), чтобы пользователи могли отправлять сообщения. Следующие макросы в звездочке файла должны включить входящую аутентификацию.

auth_advertise_hosts = ${if eq{$tls_cipher}{}{}{*}}
daemon_smtp_ports = 25 : 587

Чтобы разрешить аутентифицированным пользователям отправлять исходящую почту, вам нужно будет принимать соединения в определенных точках. Если в вашей конфигурации есть правило для обработки локальных отправителей, например:

accept
   hosts = +relay_from_hosts
   control = submission/sender_retain

Добавьте правило вроде:

accept
   authenticated = *
   control = submission/sender_retain