No se puede hacer que SASL auxprop / sasldb funcione con postfix / Ubuntu 12.04

9

Tengo un sistema Ubuntu 8.04LTS que ejecuta Postfix 2.5.1. En ese sistema, SMTP AUTH funciona bien . Los contenidos de /etc/postfix/sasl/smtpd.confson:

pwcheck_method: auxprop
auxprop_plugin: sasldb
mech_list: PLAIN

Las propiedades relacionadas con SASL son:

smtpd_sasl_type = cyrus
smtpd_sasl_auth_enable = yes
smtpd_sasl_path = smtpd
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_sasl_local_domain = $myhostname

Cuando lo hago sudo sasldblistusers2me sale:

[email protected]: userPassword

Como dije, todo funciona bien en el sistema 8.04LTS.

Sin embargo, estoy tratando de migrar esto a un sistema Ubuntu 12.04LTS que ejecuta Postfix 2.9.3 y simplemente no puedo hacer que funcione. Estoy haciendo todo lo mismo, pero postfix produce errores de autenticación cada vez.

No es el /etc/sasldb2archivo. Intenté traer el archivo del sistema anterior y eso no funciona. Y he creado un nuevo archivo usando:

saslpasswd2 -c -u mail.mydomain.com authusername

y eso no funciona, aunque FUNCIONARÁ en el sistema anterior si lo copio al sistema anterior, que es cómo sé que no hay nada de malo en el archivo.

Del mismo modo, sé que postfix está viendo el smtpd.confarchivo. Si agrego más mecanismos a la mech_listlínea del archivo, veo que esos mecanismos adicionales se anuncian cuando me conecto al demonio smtpd. Y cuando los quito se van de nuevo. Así que /etc/postfix/sasl/smtpd.confclaramente se está acostumbrando.

Estoy probando utilizando un cliente de correo real y hablando manualmente con el servidor después de generar un token con esto:

perl -MMIME::Base64 -e 'print encode_base64("\000authusername\000thePassword");'

entonces:

openssl s_client -quiet -starttls smtp -connect the.newsystem.com:587

La conversación resultante es:

250 DSN
EHLO example.com
250-the.newsystem.com
250-PIPELINING
250-SIZE 20971520
250-ETRN
250-AUTH PLAIN
250-AUTH=PLAIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
AUTH PLAIN theBase64EncodedToken
535 5.7.8 Error: authentication failed: authentication failure

Pero si en cambio me conecto the.oldsystem.com:587y hago lo mismo, obtengo:

235 2.7.0 Authentication successful

La salida de saslfinger en la nueva máquina es:

# sudoh saslfinger -s
saslfinger - postfix Cyrus sasl configuration Sat Jul 21 00:24:24 EDT 2012
version: 1.0.4
mode: server-side SMTP AUTH

-- basics --
Postfix: 2.9.3
System: Ubuntu 12.04 LTS \n \l

-- smtpd is linked to --
        libsasl2.so.2 => /usr/lib/i386-linux-gnu/libsasl2.so.2 (0xb76c5000)


-- active SMTP AUTH and TLS parameters for smtpd --
broken_sasl_auth_clients = yes
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_path = smtpd
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = cyrus
smtpd_tls_CAfile = /etc/ssl/certs/MyCA.pem
smtpd_tls_auth_only = yes
smtpd_tls_cert_file = /etc/postfix/ssl/server.crt
smtpd_tls_key_file = /etc/postfix/ssl/server.key
smtpd_tls_loglevel = 1
smtpd_tls_security_level = may
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_tls_session_cache_timeout = 3600s


-- listing of /usr/lib/sasl2 --
total 16
drwxr-xr-x  2 root root 4096 Jul 20 23:00 .
drwxr-xr-x 67 root root 8192 Jul 20 21:25 ..
-rw-r--r--  1 root root    1 May  4 00:17 berkeley_db.txt

-- listing of /etc/postfix/sasl --
total 20
drwxr-xr-x 2 root root 4096 Jul 20 21:29 .
drwxr-xr-x 5 root root 4096 Jul 20 23:58 ..
-rw-r--r-- 1 root root   64 Jul 20 21:29 smtpd.conf



-- content of /etc/postfix/sasl/smtpd.conf --
pwcheck_method: auxprop
auxprop_plugin: sasldb
mech_list: PLAIN

-- content of /etc/postfix/sasl/smtpd.conf --
pwcheck_method: auxprop
auxprop_plugin: sasldb
mech_list: PLAIN


-- active services in /etc/postfix/master.cf --
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (yes)   (never) (100)
smtp      inet  n       -       -       -       -       smtpd
submission inet n       -       -       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING

[snipping the rest of the services]

-- mechanisms on localhost --

-- end of saslfinger output --

¿Qué podría estar perdiendo / haciendo mal? Por lo que he podido decir, toda la configuración es la misma, pero no funcionará en el nuevo sistema.

Mecánica cuántica
fuente

Respuestas:

15

El sorteo está aquí:

-- active services in /etc/postfix/master.cf --
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (yes)   (never) (100)
smtp      inet  n       -       -       -       -       smtpd
submission inet n       -       -       -       -       smtpd

El smtpdproceso en el submissionpuerto se ejecuta en modo chroot (ya que hay una -en esa columna que significa que se yesaplica el valor predeterminado (que es ) y, por lo tanto, no se puede ver /etc/sasldb2.

Cuando copié /etc/sasldb2a la /var/spool/postfix/etcautenticación comenzó a funcionar bien.

Mecánica cuántica
fuente
3
Este comentario puso fin a la locura de postfix de esta noche. También tenga en cuenta que usar esta configuración requerirá que el usuario de autenticación sea usuario @ $ myhostname, y no solo "usuario". Eso es diferente entre esto y mi configuración exim similar para retransmisión autenticada.
David Dombrowsky
5

chroot es definitivamente la razón, sin embargo, en mi caso, copiar /var/spool/postfix/etcno funcionó.

Así que me acabo de deshacer de chroot y eso funciona para mí.

Para hacerlo, deberá editar /etc/postfix/master.cf y localizar la siguiente línea:

smtp      inet  n       -       -       -       -       smtpd

y modifíquelo de la siguiente manera:

smtp      inet  n       -       n       -       -       smtpd
Wawa Hermano
fuente
4

Otra forma de sincronizar el archivo sasldb2 con la cárcel chroot predeterminada de postfix es agregarle un enlace rígido:

ln /etc/sasldb2 /var/spool/postfix/etc/

Tenga en cuenta que un enlace simbólico no funcionará porque no se puede acceder a los enlaces simbólicos desde el interior de la cárcel, pero los enlaces duros sí. Esto tiene la ventaja sobre simplemente copiar el archivo porque los futuros nuevos usuarios y los cambios de contraseña se sincronizarán automáticamente sin siquiera una recarga de postfix.

Josh
fuente
Belleza, logré obtener un servidor de prueba Ubuntu 16 retransmitiendo, así que pensé que simplemente volvería a implementar mis cambios en el servidor de producción Ubuntu 14 ... todo el día probando cosas. Chroot fue la razón, pero cambiar para no ser chroot dio peores resultados, por lo que mantener el chroot y la implementación anterior resolvieron mis problemas.
mrjamesmyers