[Postfixbuch-users] Debian/Etch, Postfix, SASL, TLS: Konfigurationssackgasse

Andreas Winkelmann ml at awinkelmann.de
Di Apr 24 20:27:05 CEST 2007


On Tuesday 24 April 2007 16:20, Agon S. Buchholz wrote:

> nach einem Upgrade von Debian GNU/Linux "Sarge" auf "Etch" versuche ich
> momentan, auf Relaying mit Cyrus-SASL2 umzustellen; mit Peers Buch (2.
> Aufl.) komme ich nicht weiter; ich setze kein IMAP ein, von sasldb rät
> Peer ab und Erläuterungen zu PAM oder Shadow finde ich dort nicht; nach
> einigem Googeln und sukzessivem "Implementieren" mehrerer Howtos (die
> allesamt nicht "funktionierten") bin ich jetzt in einer
> Konfigurationssackgasse angekommen, in der eher mehr in
> die Brüche geht als zu funktionieren beginnt. Für Tipps wäre ich daher
> sehr dankbar.
>
> So sieht es momentan auf dem Rechner aus:
>
>
> OS: Debian GNU/Linux 4.0 "Etch"
> Postfix: 2.3.8-2+b1
> SASL: sasl2-bin 2.1.22.dfsg1-8
>
>
> # postconf -n
> alias_database = hash:/etc/aliases
> alias_maps = hash:/etc/aliases
> append_dot_mydomain = no
> biff = no
> broken_sasl_auth_clients = yes
> # [eigentlich unnötig, es gibt definitv keine "Outlook"-Clients]
> config_directory = /etc/postfix
> inet_interfaces = all
> mailbox_size_limit = 0
> mydestination = $myhostname, localhost.$mydomain, $mydomain
> mydomain = {DOMAIN1}
> myhostname = mail.{DOMAIN1}
> mynetworks = 127.0.0.1/32 {IP}/32 [::1]/128 [{MAC}]/128
> myorigin = /etc/mailname
> # [alternativ:] myorigin = {DOMAIN1}
> recipient_delimiter =
> relayhost =
> smtp_use_tls = no
> smtpd_banner = $myhostname ESMTP
> smtpd_enforce_tls = no
> smtpd_helo_required = yes
> smtpd_recipient_restrictions = permit_sasl_authenticated,
> permit_mynetworks,  reject_unauth_destination
> smtpd_sasl_auth_enable = yes
> smtpd_sasl_security_options = noanonymous
> smtpd_tls_cert_file = /etc/postfix/mail.cert
> smtpd_tls_key_file = /etc/postfix/mail.key
> smtpd_use_tls = yes
> virtual_alias_domains = {DOMAIN2}, {DOMAIN3}
> virtual_alias_maps = hash:/etc/postfix/virtual_alias_maps
>
> Ersetzungen:
> * {DOMAIN1} ist die Hauptdomain des Servers (FQDN).
> * {IP} = IP-Adresse des Servers
> * {MAC} = MAC-Adresse der Netzwerkkarte (will dpkg-reconfigure postfix)
> * {DOMAIN2} = virtuelle Domain ohne eigene IP-Adresse
>
> Key und Zertifikat habe ich nach [1] generiert; andere
> Konfigurationsfragmente stammen aus [2] und [3].
>
> Die main.cf enthält eigentlich noch einige Restrictions, die ich zu
> Testzwecken auskommentiert habe.
>
>
> # grep smtpd /etc/postfix/master.cf
> smtp      inet  n       -       y       -       2       smtpd
>
> (Postfix war zuvor nicht im Chroot, das Howto möchte es aber so, vgl.
> [1]; in Peers Buch habe ich das "chroot"-Kapitel zum x-ten mal erneut
> durchgelesen, kann die dortigen Suse-spezifischen Hinweise jedoch nicht
> auf Debian übertragen; in dem Postfix-Buch von Richard Blum [4] steht,
> dass man noch manuell diverse Dateien und Bibliotheken in das
> chroot-Verzeichnis kopieren müsse, was ich allerdings bisher nicht getan
> habe, weil Postfix mir keine entxprechenden Fehler meldet).
>
>
> # cat /etc/postfix/sasl/smtpd.conf
> pwcheck_method: saslauthd
> mech_list: PLAIN LOGIN
> log_level: 3
> saslauthd_path: /var/run/saslauthd/mux
>
>
> # cat /etc/default/saslauthd
> START=yes
> MECHANISMS="shadow"
> MECH_OPTIONS=""
> THREADS=5
> OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd"
> PWDIR="/var/spool/postfix/var/run/saslauthd"
> PIDFILE="/var/spool/postfix/var/run/${NAME}/saslauthd.pid"
>
>
> # ps aux | grep saslauthd
> root     28804  0.0  0.4   7288  2444 ?        Ss   02:18   0:00
> /usr/sbin/saslauthd -a shadow -c -m /var/spool/postfix/var/run/saslauthd
> -n 5
> root     28805  0.0  0.4   7288  2444 ?        S    02:18   0:00
> /usr/sbin/saslauthd -a shadow -c -m /var/spool/postfix/var/run/saslauthd
> -n 5
> root     28806  0.0  0.4   7288  2444 ?        S    02:18   0:00
> /usr/sbin/saslauthd -a shadow -c -m /var/spool/postfix/var/run/saslauthd
> -n 5
> root     28808  0.0  0.4   7288  2444 ?        S    02:18   0:00
> /usr/sbin/saslauthd -a shadow -c -m /var/spool/postfix/var/run/saslauthd
> -n 5
> root     28809  0.0  0.4   7288  2444 ?        S    02:18   0:00
> /usr/sbin/saslauthd -a shadow -c -m /var/spool/postfix/var/run/saslauthd
> -n 5
> root     29183  0.0  0.1   3152   724 pts/0    R+   02:59   0:00 grep
> saslauthd


> # testsaslauthd -u {USER} -p {PASSWORT}
> connect() : Connection refused
>
> # perl -MMIME::Base64 -e 'print
> encode_base64("{USER}\0{USER}\0{PASSWORD}");'
> # telnet localhost 25
> Trying 127.0.0.1...
> Connected to localhost.
> Escape character is '^]'.
> 220 {DOMAIN1} ESMTP
> ehlo localhost
> 250-{DOMAIN}
> 250-PIPELINING
> 250-SIZE 10240000
> 250-VRFY
> 250-ETRN
> 250-STARTTLS
> 250-AUTH PLAIN LOGIN
> 250-AUTH=PLAIN LOGIN
> 250-ENHANCEDSTATUSCODES
> 250-8BITMIME
> 250 DSN
> auth plain {PASSWORD_ENC}
> 535 5.7.0 Error: authentication failed: generic failure
> quit
> 221 2.0.0 Bye
> Connection closed by foreign host.
>
>
> # tail -f /var/log/mail.log
>
> Apr 24 14:57:37 {HOST} postfix/smtpd[7674]: connect from
> localhost[127.0.0.1]
> Apr 24 14:58:09 {HOST} postfix/smtpd[7674]: warning: SASL authentication
> failure: cannot connect to saslauthd server: No such file or directory
> Apr 24 14:58:09 {HOST} postfix/smtpd[7674]: warning: SASL authentication
> failure: Password verification failed
> Apr 24 14:58:09 {HOST} postfix/smtpd[7674]: warning:
> localhost[127.0.0.1]: SASL plain authentication failed: generic failure
> Apr 24 14:58:14 {HOST} postfix/smtpd[7674]: disconnect from
> localhost[127.0.0.1]
>
> In einem älteren Posting auf dieser Mailingliste wurde mal in einem
> ähnlichen Debian-Fall empfohlen, den smtpd aus dem chroot jail zu nehmen
> (also "n" in der master.cf):
>
> ==========================================================================
> # service type  private unpriv  chroot  wakeup  maxproc command + args
> #               (yes)   (yes)   (yes)   (never) (100)
> #
> ==========================================================================
> smtp      inet  n       -       n       -       2       smtpd -D
>
> Nach einem "/etc/init.de/postfix reload" bekomme ich dann:

Wenn Deine Angaben stimmen, dann hast Du Postfix und saslauthd so 
konfiguriert, dass es nur funktionieren kann, wenn Postfix sich im chroot 
befindet. Folglich ist ein Test hier mit ausgeschaltetem chroot sinnlos.

> # testsaslauthd -u {USER} -p {PASSWORT}
> connect() : No such file or directory

testsaslauthd hat mit Postfix und seiner chroot-Einstellung nicht das 
geringste zu tun. Es ist eine rein cyrus-sasl interne Geschichte. Ausserdem 
besitzt testsaslauthd keine Hellseherischen Fähigkeiten, das bedeutet, es 
kann nicht wissen, dass Du den Socket woanders hinkonfiguriert hast.

# testsaslauthd
testsaslauthd: usage: testsaslauthd -u username -p password
              [-r realm] [-s servicename]
              [-f socket path] [-R repeatnum]

Hint: "-f ..."

> und
>
> # tail -f /var/log/mail.log
> Apr 24 15:30:54 h652544 postfix/qmgr[7902]: warning: connect to
> transport smtp: Connection refused
>
> Also wieder umgestellt auf "chroot = y":
>
> ==========================================================================
> # service type  private unpriv  chroot  wakeup  maxproc command + args
> #               (yes)   (yes)   (yes)   (never) (100)
> #
> ==========================================================================
> smtp      inet  n       -       y       -       2       smtpd -D
>
> ... und "postfix reload" kommt aber:
>
> # testsaslauthd -u {USER} -p {PASSWORT}
> connect() : No such file or directory

Wie ich oben schon geschrieben habe. Hier wäre dann das Postfix-Log eine 
interessante Anlaufstelle.

> also nicht "connect() : Connection refused", wie vorher mit "chroot =
> y". Arggh! So schwer kann das doch nicht sein...
>
> Was mache ich alles falsch?

Wie Pätrick schon mehrmals geschrieben hat, die längste Reise beginnt mit dem 
ersten Schritt. Versuch erstmal alles ohne chroot zum laufen zu bekommen. 
Dann steigere dich. Immer einen Schritt nach dem anderen.

> PS: Der Mailserver soll nichts Besonders machen; es gibt keine "echten"
> Benutzer, er soll ausschließlich administrative Mail (Systemmeldungen
> etc.) und gelegentliche reguläre Mails versenden und Mail an die
> Pflichtadressen von ein paar Webservern (möglichst zuverlässig)
> entgegennehmen (kein IMAP, kein DB-Backend, keine Mailinglisten, keine
> Spam-/Virenfilter usw.). Also eigentlich nichts, womit man mehr als ein
> paar Minuten Konfigurationsarbeit aufwenden müssen sollte ;-/
>
>
> [1] http://holl.co.at/howto-email/
> [2] http://www.jimmy.co.at/weblog/?p=52
> [3] http://postfix.state-of-mind.de/patrick.koetter/easterhegg2004/
> [4] Richard Blum: Postfix. SAMS 2001, S. 134 f.

-- 
	Andreas



Mehr Informationen über die Mailingliste Postfixbuch-users