В аутентификаторе для исходящего smtp-соединения у меня есть это:
remote_login:
driver = plaintext
public_name = LOGIN
client_send = : user : password
И это прекрасно работает.
Если я отключу пароль с помощью:
${extract{auth_pass}{${lookup{$sender_address_domain}wildlsearch{/etc/exim/smtp_auths}{$value}fail}}}
с ./smtp_auths
example.com: auth_pass=password
Это все еще работает.
Отключитесь с помощью поиска в mysql:
${lookup mysql{SELECT users.remote_secret as secret FROM users WHERE users.domain='${quote_mysql:$sender_address_domain}'}{$value}}
При отправке у меня в логе появляется следующая ошибка.
defer (-48): временная внутренняя ошибка
Но с помощью отладки:
[ec2-user@ip-172-31-16-5 exim]$ sudo exim -be -Mset <message-id>
> ${extract{auth_pass}{${lookup{$sender_address_domain}wildlsearch{/etc/exim/smtp_auths}{$value}fail}}}
password
> ${lookup mysql{SELECT users.remote_secret as secret FROM users WHERE users.domain='${quote_mysql:$sender_address_domain}'}{$value}}
password
>
Похоже, это действительно должно работать. Кто-нибудь видел эту проблему раньше?
Также, если я отключусь
${quote_mysql:$sender_address_domain}
с участием
example.com
Оно работает. Итак, я знаю, что mysql работает.
Что я делаю не так?
В соответствии с публикация этого списка рассылки, так как client_send
значение - это список, :
символы используются для разделения списка перед выполнением какого-либо расширения, что означает, что exim пытается обработать
${lookup mysql{SELECT users.remote_secret as secret FROM users WHERE users.domain='${quote_mysql`
как одна струна и
$sender_address_domain}'}{$value}}
как вторая строка.
Вам нужно будет удвоить :
символ, чтобы избежать его и обработать всю команду как одну строку:
${quote_mysql::$sender_address_domain}