Я пытаюсь использовать 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