Exim erro de sincronização SMTP quando PIPELINING

1

Estou enviando mensagens de e-mail de um script PHP para um servidor Exim 4.71 via SMTP. O servidor anuncia pipelining, então estou tentando tirar vantagem disso. No entanto, quando eu leio de volta os códigos de retorno, finalmente recebo 554 SMTP synchronization error . No lado do servidor, o erro diz:

SMTP protocol synchronization error (next input sent too soon: pipelining was advertised): rejected "DATA" H=(localhost) [111.111.111.111] next input="To: [email protected]\nDate: Wed, 12 Jun 2013 11:35:50 +1200\nReturn-Path: [email protected]\nSubject: Blablablablabla"

Estou me perguntando por que está dizendo "próxima entrada enviada cedo demais". Estou usando pipelining e por isso deve ser permitido enviar meus dados sem esperar por nada.

Observe que quando não uso pipelining tudo corre bem.

    
por Greendrake 12.06.2013 / 02:24

1 resposta

1

Você precisa aguardar uma resposta ao verbo DATA antes de enviar os dados reais do SMTP. Dessa forma, se o servidor rejeitar o MAIL, o (s) RCPT (s) ou o DATA, você poderá sair da transação antes de bombear os corpos de mensagens potencialmente grandes no canal.

O uso de pipelining não permite lançar tudo no pipe sem se preocupar com isso, você ainda precisa verificar as respostas SMTP e há regras sobre quais verbos devem ser os últimos em um conjunto que é enviado juntos, etc. RFC com pipelining faz um bom trabalho explicando isso

    
por 12.06.2013 / 14:34