SASL auxprop / sasldb funktioniert nicht mit postfix / Ubuntu 12.04

9

Ich habe ein Ubuntu 8.04LTS-System mit Postfix 2.5.1. An diesem System SMTP - AUTH läuft fein . Der Inhalt von /etc/postfix/sasl/smtpd.confsind:

pwcheck_method: auxprop
auxprop_plugin: sasldb
mech_list: PLAIN

Die SASL-bezogenen Eigenschaften sind:

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

Wenn ich das sudo sasldblistusers2bekomme, bekomme ich:

[email protected]: userPassword

Wie gesagt, auf dem 8.04LTS-System funktioniert alles einwandfrei.

Ich versuche jedoch, dies auf ein Ubuntu 12.04LTS-System mit Postfix 2.9.3 zu migrieren, und ich kann es einfach nicht zum Laufen bringen. Ich mache alles gleich, aber Postfix gibt jedes Mal Authentifizierungsfehler.

Es ist nicht die /etc/sasldb2Datei. Ich habe versucht, die Datei vom alten System zu übernehmen, und das funktioniert nicht. Und ich habe eine neue Datei erstellt mit:

saslpasswd2 -c -u mail.mydomain.com authusername

und das funktioniert nicht, obwohl es auf dem alten System funktioniert, wenn ich es auf das alte System kopiere. Deshalb weiß ich, dass an der Datei nichts falsch ist.

Ebenso weiß ich, dass Postfix die smtpd.confDatei sieht . Wenn ich der mech_listZeile der Datei weitere Mechanismen hinzufüge , werden diese zusätzlichen Mechanismen angekündigt, wenn ich eine Verbindung zum smtpd-Daemon herstelle. Und wenn ich sie entferne, gehen sie wieder weg. Also /etc/postfix/sasl/smtpd.confwird man sich eindeutig daran gewöhnen.

Ich teste sowohl mit einem tatsächlichen E-Mail-Client als auch durch manuelles Sprechen mit dem Server, nachdem ich ein Token mit folgendem Code generiert habe:

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

dann:

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

Das resultierende Gespräch ist:

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

Aber wenn ich mich stattdessen verbinde the.oldsystem.com:587und dasselbe tue, bekomme ich:

235 2.7.0 Authentication successful

Die Ausgabe von saslfinger auf der neuen Maschine ist:

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

Was könnte ich vermissen / falsch machen? Soweit ich das beurteilen konnte, ist die gesamte Konfiguration gleich, funktioniert jedoch auf dem neuen System nicht.

QuantumMechanic
quelle

Antworten:

14

Das Werbegeschenk ist hier:

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

Der smtpdProzess auf dem submissionPort wird im Chroot-Modus ausgeführt (da sich -in dieser Spalte eine befindet , was bedeutet, dass die Standardeinstellung (dh yes) gilt und daher nicht angezeigt werden kann /etc/sasldb2.

Als ich /etc/sasldb2zur /var/spool/postfix/etcAuthentifizierung kopierte , funktionierte es einwandfrei.

QuantumMechanic
quelle
3
Dieser Kommentar beendet den heutigen Postfix-Wahnsinn. Beachten Sie auch, dass für die Verwendung dieser Konfiguration der Authentifizierungsbenutzer user @ $ myhostname und nicht nur "user" sein muss. Das ist ein Unterschied zwischen dieser und meiner ähnlichen Exim-Konfiguration für authentifiziertes Relay.
David Dombrowsky
5

chroot ist definitiv der Grund, aber für meinen Fall hat das Kopieren nach /var/spool/postfix/etcnicht funktioniert.

Also habe ich gerade Chroot losgeworden und das funktioniert bei mir.

Um dies zu tun, müssen Sie /etc/postfix/master.cf bearbeiten und die folgende Zeile suchen:

smtp      inet  n       -       -       -       -       smtpd

und ändern Sie es wie folgt:

smtp      inet  n       -       n       -       -       smtpd
WawaBrother
quelle
4

Eine andere Möglichkeit, die sasldb2-Datei mit dem Standard-Chroot-Gefängnis von Postfix zu synchronisieren, besteht darin, einen festen Link hinzuzufügen:

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

Beachten Sie, dass ein Symlink nicht funktioniert, da auf Symlinks nicht aus dem Gefängnis heraus zugegriffen werden kann, aber auf harte Links. Dies hat den Vorteil gegenüber dem einfachen Kopieren der Datei, da zukünftige neue Benutzer und Kennwortänderungen automatisch synchronisiert werden, ohne dass ein Postfix neu geladen werden muss.

Josh
quelle
Du Schönheit, ich hatte es geschafft, einen Ubuntu 16-Relaying-Testserver zu bekommen, also dachte ich, ich werde meine Änderungen einfach auf dem Produktionsserver Ubuntu 14 erneut implementieren ... den ganzen Tag lang Dinge ausprobieren. Chroot war der Grund, aber die Änderung, nicht Chroot zu sein, führte zu schlechteren Ergebnissen. Daher löste das Beibehalten von Chroot und die Implementierung oben meine Probleme.
Mrjamesmyers