[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