Faça com que o postfix use sasl / auth plain para mensagens de saída para um servidor de retransmissão

Faça com que o postfix use sasl / auth plain para mensagens de saída para um servidor de retransmissão

Meu postfix não envia AUTH PLAIN para o servidor de retransmissão de saída. Deve ter funcionado alguns dias atrás, mas agora recebo mensagens de devolução "retransmissão não permitida".

O sistema de correio é executado em uma VM Alpine Linux usando postfix, fetchmail e dovecot. O Postfix usa a biblioteca Cyrus SASL, não a dovecot.

Parte relevante do main.cf:

relayhost = [RELAY_HOST]
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/mailsrv/etc/postfix/sasl_passwd
smtp_sasl_security_options =

sasl_passwd:

[RELAY_HOST] USER:PASSWORD

Capturei uma sessão de saída com tcpdump e nenhum AUTH PLAIN foi enviado. Testei o envio de e-mail manualmente com telnet usando a linha AUTH PLAIN adequada e funcionou.

Então minha interpretação é que o postfix não decide usar SASL/AUTH PLAIN em algum momento.

Qual poderia ser o problema?

As permissões devem estar ok, o postmap foi chamado, o postfix reiniciado e recarregado, o libsasl está instalado e os relatórios do postfix foram construídos com cyrus. Eu sei que é um clichê, mas o sistema funcionava há alguns dias. A expiração de algum certificado pode ser um problema aqui, que não vejo nos logs?

Responder1

postfix envia HELO que não produz as linhas AUTH PLAIN

HELO é o comando de handshake original sem qualquer capacidade de negociar extensões. Antes que o cliente possa usar SASL, ele deve enviar EHLO (extended-hello) e verificar se o servidoranunciaos mecanismos SASL desejados.

Por padrão, muitos clientes SMTP – incluindo o Postfix – enviam EHLO somente quando a palavra "ESMTP" aparece no banner de saudação do servidor (por exemplo 220 foo.example.com ESMTP Sendmail, ). Presume-se que os servidores que não suportam ESMTP também não suportam SASL.

  • Se a saudação do servidor estiver correta, certifique-se de não ter habilitado as opções smtp_never_send_ehloou smtp_pix_workaroundspor acidente.

  • Se a saudação do servidor estiver errada, mas mesmo assim ele aceitar EHLO, você pode forçar o uso do EHLO habilitando-o smtp_always_send_ehlo = yesna configuração do Postfix.


Se você estiver gerenciando o servidor, tente corrigir sua saudação, pois isso provavelmente também afetará a entrega de mensagens recebidas de outros domínios – por exemplo, sem ESMTP também não há STARTTLS oportunistas.

Por exemplo, se o servidor também estiver rodando Postfix, ele deverá incluir "ESMTP" na smtpd_banneropção:

smtpd_banner = $myhostname ESMTP $mail_name

(Também pode ser que a conexão passe por um gateway anti-spam que usa esse método na tentativa de proibir o uso do STARTTLS – em vez de simplesmente removê-lo da resposta EHLO, ele tenta proibir o próprio EHLO.)


Observe que normalmente a porta 25 serve apenas para recepção de mensagens (entrega de entrada de outros domínios) – 587 ou 465 são as portas destinadas ao "envio" de mensagens (saída de clientes).

Portanto, se o seu Postfix estiver agindo como um cliente local (porque possui um relayhost e deseja usar autenticação), ele realmente deveria estar se conectando ao relayhost na porta 587.

Observe que a conexão à porta 465 requer smtp_tls_wrappermode = yes, pois ela usa TLS desde o início. (Na verdade, isso é uma vantagem, pois evita que os firewalls alterem o handshake.)

Ao usar a porta 587, o TLS é opcional (ativado apenas usando o comando 'STARTTLS'), mas você tambémrealmente deveriaimpor o uso de TLS se o servidor oferecer suporte. Para fazer isso, defina smtp_tls_security_level = verify.

informação relacionada