¿Qué le pasa a mi SASL?

¿Qué le pasa a mi SASL?

Así dice la historia: tengo una veintena de máquinas virtuales CentOS 6.9, migradas a la nube Azure de Microsoft mediante carga VHD. Una vez implementado, descubrí que Azure no permite enviar correo electrónico directamente desde la máquina virtual; se supone que debo usar un relé externo. Microsoft parece sugerir Sendgrid y tienen un nivel gratuito, así que me registré, configuré Postfix de acuerdo con sus instrucciones (ver más abajo) y... nada. No puedo hacer que Postfix se autentique con el servidor SMTP de retransmisión, ni con ningún otro retransmisor externo, como mi propio servidor en gzo.com (exim en cPanel) o aruba.it (un proveedor de hosting italiano).

Hice varios intentos en los puertos 587, 2525 y 465 con todos esos relés, cada vez que realicé un mapeo posterior del archivo de contraseña SASL y reinicié Postfix, y todos fallaron con el siguiente error:

Mar 14 11:17:34 Riprid postfix/postfix-script[6664]: stopping the Postfix mail system
Mar 14 11:17:34 Riprid postfix/master[60718]: terminating on signal 15
Mar 14 11:17:34 Riprid postfix/postfix-script[6736]: starting the Postfix mail system
Mar 14 11:17:34 Riprid postfix/master[6737]: daemon started -- version 2.6.6, configuration /etc/postfix
Mar 14 11:20:00 Riprid postfix/pickup[6739]: 90887634B3: uid=0 from=<root>
Mar 14 11:20:00 Riprid postfix/cleanup[6914]: 90887634B3: message-id=<[email protected]>
Mar 14 11:20:00 Riprid postfix/qmgr[6740]: 90887634B3: from=<[email protected]>, size=437, nrcpt=1 (queue active)
Mar 14 11:20:02 Riprid postfix/smtp[6916]: warning: SASL authentication failure: No worthy mechs found
Mar 14 11:20:02 Riprid postfix/smtp[6916]: 90887634B3: SASL authentication failed; cannot authenticate to server smtp.sendgrid.net[161.202.148.160]: no mechanism available
Mar 14 11:20:03 Riprid postfix/smtp[6916]: warning: SASL authentication failure: No worthy mechs found
Mar 14 11:20:03 Riprid postfix/smtp[6916]: 90887634B3: to=<[email protected]>, relay=smtp.sendgrid.net[169.38.103.39]:587, delay=3.2, delays=0.06/0.03/3.1/0, dsn=4.7.0, status=deferred (SASL authentication failed; cannot authenticate to server smtp.sendgrid.net[169.38.103.39]: no mechanism available)

Las credenciales de usuario son correctas: de hecho logré conectarme desde el shell de Linux a los tres servidores a través de telnet, abrir una sesión SMTP, autenticarme exitosamente a través de AUTH PLAIN y AUTH LOGIN, y enviarme manualmente un mensaje de prueba. Es sólo Postfix el que no puede hacerlo.

Aún más desconcertante: copié la misma configuración en las máquinas virtuales originales desde las cuales se clonaron las máquinas virtuales en la nube (Hyper-V interno) y se conectan y envían correo a través de los mismos servidores sin errores. Las máquinas en Azure son idénticas a las locales, excepto por las modificaciones necesarias para ejecutarse en Azure.según lo enumerado por Microsoft.

Encontré docenas de sugerencias buscando en Google y las probé todas sin ningún efecto. Me estoy quedando sin ideas (y sin tiempo). Por favor sugiera: ¿dónde más debería buscar? ¿Qué más podría probar?

Esta es la configuración (usuario y contraseña ocultos):

[root@Riprid zeta]# uname -a
Linux Riprid 2.6.32-696.20.1.el6.centos.plus.x86_64 #1 SMP Sun Jan 28 07:56:00 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

[root@Riprid zeta]# postconf -n
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
broken_sasl_auth_clients = yes
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
debug_peer_level = 2
header_size_limit = 4096000
html_directory = no
inet_interfaces = all
inet_protocols = ipv4
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
mynetworks_style = host
newaliases_path = /usr/bin/newaliases.postfix
readme_directory = /usr/share/doc/postfix-2.6.6/README_FILES
relayhost = [smtp.sendgrid.net]:587
sample_directory = /usr/share/doc/postfix-2.6.6/samples
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
smtp_generic_maps = hash:/etc/postfix/generic
smtp_sasl_auth_enable = yes
smtp_sasl_mechanism_filter = plain, login
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_type = cyrus
smtp_tls_CAfile = /etc/postfix/gd_bundle-g2-g1.crt
smtp_tls_security_level = may
smtpd_sasl_security_options = noanonymous
smtpd_sasl_tls_security_options = noanonymous
smtpd_tls_auth_only = no
unknown_local_recipient_reject_code = 550

[root@Riprid zeta]# cat /etc/postfix/sasl_passwd
[smtp.sendgrid.net]:587 azure_260************[email protected]:OL***0***w**

[root@Riprid zeta]# cat /etc/sasl2/smtpd.conf
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN

[root@Riprid zeta]# service saslauthd status
saslauthd (pid  28917) is running...

[root@Riprid zeta]# postconf -A
cyrus

[root@Riprid zeta]# yum list postfix cyrus*
...
Installed Packages
cyrus-sasl.x86_64                 2.1.23-15.el6_6.2                  @updates
cyrus-sasl-devel.x86_64           2.1.23-15.el6_6.2                  @updates
cyrus-sasl-lib.x86_64             2.1.23-15.el6_6.2                  @updates
cyrus-sasl-md5.x86_64             2.1.23-15.el6_6.2                  @base
cyrus-sasl-ntlm.x86_64            2.1.23-15.el6_6.2                  @base
cyrus-sasl-plain.x86_64           2.1.23-15.el6_6.2                  @base
postfix.x86_64                    2:2.6.6-8.el6.centos.plus          @centosplus

Y, finalmente, este es el resultado de saslfinger:

[root@Riprid zeta]# saslfinger -c
saslfinger - postfix Cyrus sasl configuration Wed Mar 14 11:17:38 CET 2018
version: 1.0.2
mode: client-side SMTP AUTH

-- basics --
Postfix: 2.6.6
System: CentOS release 6.9 (Final)

-- smtp is linked to --
        libsasl2.so.2 => /usr/lib64/libsasl2.so.2 (0x00007f79ea3db000)

-- active SMTP AUTH and TLS parameters for smtp --
relayhost = [smtp.sendgrid.net]:587
smtp_sasl_auth_enable = yes
smtp_sasl_mechanism_filter = plain, login
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_type = cyrus
smtp_tls_CAfile = /etc/postfix/gd_bundle-g2-g1.crt
smtp_tls_security_level = may


-- listing of /usr/lib64/sasl2 --
total 640
drwxr-xr-x.  2 root root  4096 Mar 12 22:49 .
dr-xr-xr-x. 68 root root 45056 Mar 14 03:25 ..
-rwxr-xr-x.  1 root root 18776 Mar 25  2015 libanonymous.so
-rwxr-xr-x.  1 root root 18776 Mar 25  2015 libanonymous.so.2
-rwxr-xr-x.  1 root root 18776 Mar 25  2015 libanonymous.so.2.0.23
-rwxr-xr-x.  1 root root 22936 Mar 25  2015 libcrammd5.so
-rwxr-xr-x.  1 root root 22936 Mar 25  2015 libcrammd5.so.2
-rwxr-xr-x.  1 root root 22936 Mar 25  2015 libcrammd5.so.2.0.23
-rwxr-xr-x.  1 root root 52088 Mar 25  2015 libdigestmd5.so
-rwxr-xr-x.  1 root root 52088 Mar 25  2015 libdigestmd5.so.2
-rwxr-xr-x.  1 root root 52088 Mar 25  2015 libdigestmd5.so.2.0.23
-rwxr-xr-x.  1 root root 18808 Mar 25  2015 liblogin.so
-rwxr-xr-x.  1 root root 18808 Mar 25  2015 liblogin.so.2
-rwxr-xr-x.  1 root root 18808 Mar 25  2015 liblogin.so.2.0.23
-rwxr-xr-x.  1 root root 35376 Mar 25  2015 libntlm.so
-rwxr-xr-x.  1 root root 35376 Mar 25  2015 libntlm.so.2
-rwxr-xr-x.  1 root root 35376 Mar 25  2015 libntlm.so.2.0.23
-rwxr-xr-x.  1 root root 18808 Mar 25  2015 libplain.so
-rwxr-xr-x.  1 root root 18808 Mar 25  2015 libplain.so.2
-rwxr-xr-x.  1 root root 18808 Mar 25  2015 libplain.so.2.0.23
-rwxr-xr-x.  1 root root 22784 Mar 25  2015 libsasldb.so
-rwxr-xr-x.  1 root root 22784 Mar 25  2015 libsasldb.so.2
-rwxr-xr-x.  1 root root 22784 Mar 25  2015 libsasldb.so.2.0.23

-- listing of /etc/sasl2 --
total 20
drwxr-xr-x.   2 root root  4096 Sep 19 15:39 .
drwxr-xr-x. 110 root root 12288 Mar 14 03:23 ..
-rw-r--r--.   1 root root    49 Feb 21 16:39 smtpd.conf

-- permissions for /etc/postfix/sasl_passwd --
-rw-------. 1 root root 90 Mar 14 11:17 /etc/postfix/sasl_passwd

-- permissions for /etc/postfix/sasl_passwd.db --
-rw-------. 1 root root 12288 Mar 14 11:17 /etc/postfix/sasl_passwd.db

/etc/postfix/sasl_passwd.db is up to date.

-- active services in /etc/postfix/master.cf --
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (yes)   (never) (100)
smtp      inet  n       -       n       -       -       smtpd
pickup    fifo  n       -       n       60      1       pickup
cleanup   unix  n       -       n       -       0       cleanup
qmgr      fifo  n       -       n       300     1       qmgr
tlsmgr    unix  -       -       n       1000?   1       tlsmgr
rewrite   unix  -       -       n       -       -       trivial-rewrite
bounce    unix  -       -       n       -       0       bounce
defer     unix  -       -       n       -       0       bounce
trace     unix  -       -       n       -       0       bounce
verify    unix  -       -       n       -       1       verify
flush     unix  n       -       n       1000?   0       flush
proxymap  unix  -       -       n       -       -       proxymap
proxywrite unix -       -       n       -       1       proxymap
smtp      unix  -       -       n       -       -       smtp
relay     unix  -       -       n       -       -       smtp
        -o smtp_fallback_relay=
showq     unix  n       -       n       -       -       showq
error     unix  -       -       n       -       -       error
retry     unix  -       -       n       -       -       error
discard   unix  -       -       n       -       -       discard
local     unix  -       n       n       -       -       local
virtual   unix  -       n       n       -       -       virtual
lmtp      unix  -       -       n       -       -       lmtp
anvil     unix  -       -       n       -       1       anvil
scache    unix  -       -       n       -       1       scache

-- mechanisms on [smtp.sendgrid.net]:587 --

-- end of saslfinger output --

Respuesta1

Tuve el mismo problema con Red Hat Enterprise Linux Server versión 6.9 (Santiago), el problema estaba relacionado con una biblioteca rpm faltante (cyrus-sasl-plain-2.1.23-15.el6_6.2.x86_64), después de instalarlo, solucioné el problema.

Verifique que todos los siguientes rpm estén instalados correctamente en su sistema para evitar otros problemas con la autenticación SASL:

cyrus-sasl-gssapi-2.1.23-15.el6_6.2.x86_64 cyrus-sasl-2.1.23-15.el6_6.2.x86_64 cyrus-sasl-lib-2.1.23-15.el6_6.2.x86_64 cyrus -sasl-plain-2.1.23-15.el6_6.2.x86_64

información relacionada