Mi postfix no envía AUTH PLAIN al servidor de retransmisión saliente. Debió haber funcionado hace un par de días, pero ahora recibo correos rebotados que dicen "retransmisión no permitida".
El sistema de correo se ejecuta en una máquina virtual Alpine Linux utilizando postfix, fetchmail y dovecot. Postfix usa la biblioteca Cyrus SASL, no la de dovecot.
Parte relevante de 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
Capturé una sesión saliente con tcpdump y no se envía AUTH PLAIN. Probé el envío de correo manualmente con telnet usando la línea AUTH PLAIN adecuada y funcionó.
Entonces mi interpretación es que postfix no decide usar SASL/AUTH PLAIN en algún momento.
¿Cual podría ser el problema?
Los permisos deberían estar bien, se ha llamado a postmap, se ha reiniciado y vuelto a cargar postfix, se ha instalado libsasl y los informes de postfix se han creado con cyrus. Sé que es un cliché, pero el sistema funcionaba hace un par de días. ¿Podría ser un problema la caducidad de algún certificado que no veo en los registros?
Respuesta1
postfix envía HELO que no produce las líneas AUTH PLAIN
HELO es el comando de protocolo de enlace original sin capacidad para negociar extensiones. Antes de que el cliente pueda usar SASL, debe enviar EHLO (hola extendida) y verificar que el servidoranuncialos mecanismos SASL deseados.
De forma predeterminada, muchos clientes SMTP, incluido Postfix, envían EHLO solo cuando aparece la palabra "ESMTP" aparece en el banner de saludo del servidor (p. ej 220 foo.example.com ESMTP Sendmail
.). Se supone que los servidores que no admiten ESMTP tampoco admiten SASL.
Si el saludo del servidor es correcto, asegúrese de no habilitar las opciones
smtp_never_send_ehlo
osmtp_pix_workarounds
por accidente.Si el saludo del servidor es incorrecto, pero aun así acepta EHLO, puede forzar el uso de EHLO habilitándolo
smtp_always_send_ehlo = yes
en su configuración de Postfix.
Si está administrando el servidor, intente arreglar su saludo, ya que esto probablemente también afecte la entrega de mensajes entrantes de otros dominios; por ejemplo, sin ESMTP tampoco hay STARTTLS oportunistas.
Por ejemplo, si el servidor también ejecuta Postfix, debe incluir "ESMTP" en la smtpd_banner
opción:
smtpd_banner = $myhostname ESMTP $mail_name
(También podría ser que la conexión pase a través de una puerta de enlace antispam que utilice este método en un intento de prohibir el uso de STARTTLS; en lugar de simplemente eliminarlo de la respuesta de EHLO, intenta prohibir el propio EHLO).
Tenga en cuenta que, por lo general, el puerto 25 solo está destinado a la recepción de mensajes (entrega entrante desde otros dominios); 587 o 465 son los puertos destinados al "envío" de mensajes (saliente desde clientes).
Entonces, si su Postfix actúa como un cliente local (porque tiene un servidor de retransmisión y quiere usar autenticación), realmente debería conectarse al servidor de retransmisión en el puerto 587.
Tenga en cuenta que para conectarse al puerto 465 se requiere smtp_tls_wrappermode = yes
, ya que utiliza TLS desde el principio. (Esto es en realidad una ventaja, ya que evita que los firewalls alteren el protocolo de enlace).
Cuando se usa el puerto 587, TLS es opcional (solo se activa usando el comando 'STARTTLS'), pero tambiénrealmente deberíaimponer el uso de TLS si el servidor lo admite. Para hacerlo, configure smtp_tls_security_level = verify
.