Impossible de faire fonctionner SASL auxprop / sasldb avec postfix / Ubuntu 12.04

9

J'ai un système Ubuntu 8.04LTS exécutant Postfix 2.5.1. Sur ce système SMTP AUTH fonctionne bien . Les contenus de /etc/postfix/sasl/smtpd.confsont:

pwcheck_method: auxprop
auxprop_plugin: sasldb
mech_list: PLAIN

Les propriétés liées à SASL sont:

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

Quand je fais, sudo sasldblistusers2je reçois:

[email protected]: userPassword

Comme je l'ai dit, tout fonctionne bien sur le système 8.04LTS.

Cependant, j'essaie de migrer cela vers un système Ubuntu 12.04LTS exécutant Postfix 2.9.3 et je n'arrive pas à le faire fonctionner. Je fais tout de la même façon, mais postfix donne à chaque fois des échecs d'authentification.

Ce n'est pas le /etc/sasldb2dossier. J'ai essayé de récupérer le fichier de l'ancien système et cela ne fonctionne pas. Et j'ai créé un nouveau fichier en utilisant:

saslpasswd2 -c -u mail.mydomain.com authusername

et ne fonctionne pas, mais il FERA travailler sur l'ancien système si je copie à l'ancien système, ce qui est de savoir comment je sais qu'il est faux de rien avec le fichier.

De même, je sais que postfix voit le smtpd.conffichier. Si j'ajoute plus de mécanismes à la mech_listligne du fichier, je vois ces mécanismes supplémentaires annoncés lorsque je me connecte au démon smtpd. Et quand je les enlève, ils repartent. Il en /etc/postfix/sasl/smtpd.confva de même pour l’habitude.

Je teste à la fois en utilisant un client de messagerie réel et en parlant manuellement au serveur après avoir généré un jeton avec ceci:

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

puis:

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

La conversation qui en résulte est:

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

Mais si je me connecte à la place the.oldsystem.com:587et fais la même chose, j'obtiens:

235 2.7.0 Authentication successful

La sortie de saslfinger sur la nouvelle machine est:

# 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 --

Que pourrais-je manquer / faire mal? Pour autant que j'ai pu le dire, toute la configuration est la même, mais elle ne fonctionnera pas sur le nouveau système.

QuantumMechanic
la source

Réponses:

15

Le cadeau est ici:

-- 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

Le smtpdprocessus sur le submissionport s'exécute en mode chroot (car il y a un -dans cette colonne qui signifie que la valeur par défaut (qui est yes) s'applique et ne peut donc pas voir /etc/sasldb2.

Quand j'ai copié /etc/sasldb2vers l' /var/spool/postfix/etcauthentification a commencé à bien fonctionner.

QuantumMechanic
la source
3
Ce commentaire a mis fin à la folie postfixe de ce soir. Gardez également à l'esprit que l'utilisation de cette configuration nécessite que l'utilisateur d'authentification soit user @ $ myhostname, et pas seulement "user". C'est différent entre ceci et ma configuration d'exim similaire pour le relais authentifié.
David Dombrowsky
5

chroot est sans aucun doute la raison, cependant pour mon cas, la copie /var/spool/postfix/etcn'a pas fonctionné.

Je viens donc de me débarrasser de chroot et cela fonctionne pour moi.

Pour ce faire, vous devrez modifier /etc/postfix/master.cf localiser la ligne suivante:

smtp      inet  n       -       -       -       -       smtpd

et le modifier comme suit:

smtp      inet  n       -       n       -       -       smtpd
WawaBrother
la source
4

Une autre façon de synchroniser le fichier sasldb2 avec la prison chroot par défaut de postfix est d'y ajouter un lien dur:

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

Notez qu'un lien symbolique ne fonctionnera pas car les liens symboliques ne sont pas accessibles depuis l'intérieur de la prison, mais les liens durs le peuvent. Cela a l'avantage par rapport à la simple copie du fichier car les futurs nouveaux utilisateurs et les changements de mot de passe seront automatiquement synchronisés sans même un rechargement postfix.

Josh
la source
Ma beauté, j'avais réussi à obtenir un serveur de test de relais Ubuntu 16, alors j'ai pensé que je vais juste réimplémenter mes changements sur le serveur de production Ubuntu 14 ... toute la journée à essayer des choses. Chroot était la raison, mais changer pour ne pas être chroot a donné de moins bons résultats, donc garder chroot et l'implémenter ci-dessus a résolu mes problèmes.
mrjamesmyers