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

Agon S. Buchholz asb at kefk.net
Di Apr 24 16:20:48 CEST 2007


Hi,

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


# ps axw | grep postfix
28804 ?        Ss     0:00 /usr/sbin/saslauthd -a shadow -c -m
/var/spool/postfix/var/run/saslauthd -n 5
28805 ?        S      0:00 /usr/sbin/saslauthd -a shadow -c -m
/var/spool/postfix/var/run/saslauthd -n 5
28806 ?        S      0:00 /usr/sbin/saslauthd -a shadow -c -m
/var/spool/postfix/var/run/saslauthd -n 5
28808 ?        S      0:00 /usr/sbin/saslauthd -a shadow -c -m
/var/spool/postfix/var/run/saslauthd -n 5
28809 ?        S      0:00 /usr/sbin/saslauthd -a shadow -c -m
/var/spool/postfix/var/run/saslauthd -n 5
28890 ?        Ss     0:00 /usr/lib/postfix/master

War vor Umstellung auf SASL:

# ps axw | grep postfix
  2278 ?        Ss     0:05 /usr/lib/postfix/master
22287 pts/1    R+     0:00 grep postfix


# lsof -i :25
COMMAND  PID USER   FD   TYPE DEVICE SIZE NODE NAME
master  2278 root   11u  IPv4   3978       TCP *:smtp (LISTEN)


# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 {DOMAIN} ESMTP
quit
221 2.0.0 Bye
Connection closed by foreign host.


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

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

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

also nicht "connect() : Connection refused", wie vorher mit "chroot = 
y". Arggh! So schwer kann das doch nicht sein...

Was mache ich alles falsch?

Danke & mfG -Agon


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.




Mehr Informationen über die Mailingliste Postfixbuch-users