Centos
Exim MySql 錯誤?
在傳出 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}