exim: другой пароль для удаленного smtp relay smarthost
В настоящее время у меня настроена конфигурация exim для отправки всех электронных писем с использованием внешнего SMTP-сервера. Все пользователи проходят аутентификацию на моем exim-сервере с локальным паролем, а затем отправленные сообщения передаются через смарт-хост на удаленный SMTP-сервер, который использует другой логин, отличающийся от того, который используется непосредственно пользователями, подключенными к моему exim-серверу (работает cPanel), Вот текущая конфигурация:
remote_route:
driver = manualroute
domains = !+local_domains
transport = remote_transport
route_list = * remotesmtpserver.com
remote_transport:
driver = smtp
port = 587
hosts_require_auth = <; $host_address
hosts_require_tls = <; $host_address
remote_login:
driver = plaintext
public_name = LOGIN
hide client_send = : remote_username : remote_password
Это все работает хорошо и как задумано.
Проблема в том, что я хочу использовать другое имя_пользователя и имя_пользователя для выбранной группы пользователей / отправителей. Имена входа (для моего exim-сервера) являются полными адресами электронной почты, поэтому я добавил эти адреса электронной почты в файл /etc/differentlogin (т. Е. Список адресов электронной почты, разделенных новой строкой).
Затем я попытался выполнить следующие настройки в разделе remote_login:
remote_login:
driver = plaintext
public_name = LOGIN
hide client_send = ${lookup{$authenticated_id}lsearch{/etc/differentlogin}{: different_username : different_passsword}{: remote_username : remote_password}
Однако это дает мне следующую ошибку EXIM при попытке отправить электронную почту:
== to@address.com R=remote_route T=remote_transport defer (-48): expansion of "${lookup{$authenticated_id}lsearch{/etc/differentlogin}{" failed in mandrill_login authenticator: missing } at end of string
Я попытался использовать $sender_address вместо $authenticated_id, но это дает мне тот же результат.
Я также попытался заменить переменную для поиска на строку, т.е.
remote_login:
driver = plaintext
public_name = LOGIN
hide client_send = ${lookup{email@domain.com}lsearch{/etc/differentlogin}{: different_username : different_passsword}{: remote_username : remote_password}
но я все еще получаю ту же ошибку.
Чтобы проверить синтаксис моего условия, я попытался добавить следующее в мой remote_transport:
headers_add = X-SenderTest: ${lookup{$authenticated_id}lsearch{/etc/differentlogin}{different}{normal}}
Это работает, как и ожидалось, и добавьте следующий заголовок при отправке электронного письма с адресов / логинов, указанных в списке /etc/differentlogin
X-SenderTest: different
Какие-нибудь советы?
Большое спасибо
1 ответ
Причина этой проблемы заключается в том, что значение client_send представляет собой число значений в списке, разделенном двоеточиями. Решение проблемы поэтому исправлено, отформатировав значение как ниже:
${lookup{$authenticated_id}lsearch{/etc/differentlogin}{remote_username}{different_username}} : ${lookup{$authenticated_id}lsearch{/etc/differentlogin}{remote_password}{different_passsword}}