configuração exim: comando 503 AUTH usado quando não anunciado

1

Estou executando um software em um servidor Windows que envia notificações por e-mail por meio de um servidor SMTP remoto. Tem muito poucas opções de configuração e suporta apenas autenticação SMTP básica sem SSL / TLS. Eu tenho o exim4 rodando em um servidor Debian que será o servidor SMTP para este programa do Windows. Ele é configurado com a configuração padrão, além de permitir conexões não criptografadas AUTH PLAIN e AUTH LOGIN. Enviei um email por telnet com sucesso:

telnet servername 25
ehlo test
250-AUTH PLAIN LOGIN
...
auth plain XXX
235 Authentication succeeded
mail from: ...
...

No entanto, o programa que desejo conectar a este servidor não consegue se conectar. Para entender por que, eu executei um sniffer de pacotes durante a conexão e vejo a seguinte sessão:

C: HELO hostname
S: 250 Hello hostname
C: AUTH LOGIN XXX | XXX
S: 503 AUTH command used when not advertised | 500 unrecognized command
C: QUIT
S: 221 closing connection

Não estou familiarizado o suficiente com o protocolo SMTP para entender o que está acontecendo aqui. O que preciso alterar no meu servidor SMTP exim4 para permitir que essa conexão seja feita?

    
por jrdioko 20.09.2011 / 20:24

1 resposta

9

O 503 AUTH command used when not advertised essencialmente se explica, ele não ofereceu ao cliente a opção de usar o comando AUTH . Isso é mais provável porque o cliente usou HELO em vez de EHLO (o que eu notaria que você usou quando fez o teste telnet).

A autenticação SMTP faz parte do SMTP estendido, que é iniciado com o comando EHLO ; SMTP "simples" não suportava autenticação e, portanto, é tecnicamente um comando ilegal, embora alguns servidores SMTP ainda possam permitir isso.

A melhor solução possível é dizer ao seu programa para usar o SMTP estendido ( EHLO ), se possível, caso contrário, pode haver um comando exim para forçá-lo a permitir AUTH em HELO conexões de tipo.

** ATUALIZAÇÃO **

De acordo com este post aqui: link

EHLO (not HELO) must be given by client before AUTH.

That is, AUTH command could not be used unless advertised (through EHLO, according to auth_advertise, etc). This behavior was hardened in Exim 4.20 and is not an option.

Parece que você precisa de um MTA diferente se não conseguir que seu aplicativo faça EHLO . Ou, você requer autenticação , você pode realizar a mesma coisa usando ACLs baseadas em IP?

SOLUÇÃO FINAL

O Exim tem uma solução para isso, usando allow_auth_unadvertised conforme descrito aqui , você pode fazer algo assim:

hosts   = *
control = allow_auth_unadvertised
    
por 20.09.2011 / 20:42