Exim MySql Bug?

1

Em um autenticador para uma conexão smtp de saída, tenho isto:

remote_login:
  driver = plaintext
  public_name = LOGIN
  client_send = : user : password

E isso funciona bem.

Se eu mudar a senha com:

${extract{auth_pass}{${lookup{$sender_address_domain}wildlsearch{/etc/exim/smtp_auths}{$value}fail}}}

com um ./smtp_auths

example.com: auth_pass=password

Isso ainda funciona.

Desligue com uma pesquisa no mysql:

${lookup mysql{SELECT users.remote_secret as secret FROM users WHERE users.domain='${quote_mysql:$sender_address_domain}'}{$value}}

Eu recebo o seguinte erro no log ao enviar.

defer (-48): Temporary internal error

Mas usando a depuração:

[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
>

Parece mesmo que deveria funcionar. Alguém já viu esse problema antes?

Além disso, se eu mudar

${quote_mysql:$sender_address_domain}

com

example.com

Funciona. Então eu sei que o mysql está funcionando.

O que estou fazendo de errado?

    
por Patrick_Finucane 29.03.2017 / 18:02

1 resposta

1

De acordo com esta postagem na lista de e-mails , porque o valor de client_send é uma lista, o : caracteres são usados para dividir a lista antes que qualquer expansão seja feita, o que significa que o exim está tentando tratar

${lookup mysql{SELECT users.remote_secret as secret FROM users WHERE users.domain='${quote_mysql'

como uma string e

$sender_address_domain}'}{$value}}

como segunda string.

Você precisará dobrar o caractere : para poder escapar e ter o comando inteiro tratado como uma única string:

${quote_mysql::$sender_address_domain}
    
por 29.03.2017 / 18:14