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}}
Другие вопросы по тегам