[Postfixbuch-users] Debian/Etch, Postfix, SASL, TLS: Konfigurationssackgasse
Agon S. Buchholz
asb at kefk.net
Mi Mai 2 02:45:09 CEST 2007
Uwe Driessen wrote:
[ Seamonkey: "Mail server does not support secure authentication" ]
> Das scheint etwas damit zu tun zu haben welche arten der
> Passwortübermittlung in Devocot/Sasl aktiviert sind (evtl. nur Plain
> erlaubt?)
# cat /etc/dovecot/dovecot.conf | grep plain
mechanisms = plain login
Das habe ich analog zur Konfiguration von Cyrus SASL
(/etc/postfix/sasl/smtpd.conf) gesetzt, wo ich zuletzt eingestellt hatte:
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
Dovecot kennt auch den Parameter
disable_plaintext_auth = yes
Seamonkey kann sich dann weiterhin auf dem Server einloggen, die
Fehlermeldung ("Mail server does not support secure authentication")
bleibt jedoch, wenn ich "Use secure authentication" aktiviere.
Die Frage ist allerdings auch hier wieder, was "secure authentication"
sein soll. Glaubt man [1], dann sind das: GSSAPI, Kerberos, CRAM_MD5,
DIGEST-MD5, NTLM und APOP. Davon biete ich dem Seamonkey tatsächlich
nichts an, obwohl das Dovecot anscheinend alles könnte. Ich denke, ich
lasse da am besten erstmal die Finger von und beschäftige mich mit
später mit TLS, wenn der Rest funktioniert (Soweit ich verstehe, ist der
Sinn von APOP doch nur, dass POP (a) authentifiziert wird und (b) keine
unverschlüsselten Passwörter übers öffentliche Netz fließen? Funktional
sollte das doch SASL + TLS vollständig ersetzen, jedenfalls bilde ich
mir das bisher ein...).
>> Auch faszinierend: dovcot.log liefert mit bei einem POP3-Login von
>> Seamonkey das verschlüsselte Passwort (also das, was mir "perl
>> -MMIME::Base64 -e 'print encode_base64("user\0user\0password");'
>> ausspuckt); gehe ich den Login mit Telnet auf Port 110 durch, wird
>> eben dieses verschlüsselte Passwort abgelehnt, das unverschlüsselte
>> dagegen angenommen.
> Devocot nimmt das PW verschlüsselt es und testet es gegen die
> Map/Datenbank. Kommt also ein verschlüsseltes PW dann wird es noch
> mal verschlüsselt und schon stimmt es nicht mehr.
Da ist anscheinend der Fall. Ich hatte mich an die Anleitung von [3],
Abschnitt "Testing SASL authentication in the Postfix SMTP server",
gehalten, wo der testlogin mit "AUTH PLAIN {encrypted_password}"
durchgeführt wird. Vermutlich bezieht sich das nur auf Cyrus SASL, das
sich offensichtlich anders verhält. Sowas muss man anscheinend mit der
Muttermilch aufgesaugt haben ;-/
[ PTR-Record ]
> Wenn das ein Rootserver ist z.B. bei Hetzner solltest auch den PTR
> anpassen (das hatten wir doch schon mal)
Rootserver ja, aber nicht bei Hetzner. Unter [4] finde ich nichts
passendes; der ISP hat den PRT-Record folgendermaßen konfiguriert:
# dig -x 1.2.3.4
; <<>> DiG 9.3.4 <<>> -x 1.2.3.4
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21789
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;4.3.2.1.in-addr.arpa. IN PTR
;; ANSWER SECTION:
4.3.2.1.in-addr.arpa. 1800 IN PTR my.domain.
;; Query time: 13 msec
;; SERVER: 81.169.163.106#53(81.169.163.106)
;; WHEN: Tue May 1 22:03:03 2007
;; MSG SIZE rcvd: 65
Allerdings:
# host -t ptr my.domain
my.domain has no PTR record
??
[ Was antwortet auf eine Authentifizierungsanfrage? ]
> Saslauth ist doch wieder ein eigenes Paket(oder irre ich mich da?)
In Debian gibt es kein Paket "saslauth"; die Komponenten sind auf eine
unbestimmte Anazahl "n" von Paketen wie "libsasl2-modules" und
"sasl2-bin" verteilt; in letzterem steckt auch saslauthd. Soweit ich da
durchblicke, handelt es sich dabei _immer_ um Cyrus SASL, was ich ja
theoretisch nicht brauchen sollte (Fragezeichen?), fals ich Devecot zum
Funktionieren bringe. Hmm, wie teste ich eigentlich, ob Dovecot wirklich
authentifiziert **Wühl**
> Was steht denn in deiner Main.cf drinne ?
> smtpd_sasl_type = cyrus ??
Nein, ich versuche ja die SASL-Authenthifizierung von Dovecot zu nutzen;
daher habe ich dort eingetragen:
[...]
smtpd_sasl_auth_enable = yes
smsmtpd_sasl_local_domain =
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
_smtpd_sasl_type = dovecot_
smtpd_sasl_path = private/auth
smtpd_sasl_authenticated_header = yes
[...]
Das ist jedenfalls in etwa das, was die Anleitung [5] vorgibt.
# postconf -a
cyrus
dovecot
Laut man postconf(1) tut "postconf -a": "List the available SASL server
plug-in types". Die Ausgabe will mir vermutlich mitteilen, dass das
_alle_ SASL-Authentifizierungstypen sind, die Postfix überhaupt
versteht, nicht jedoch (wie ich bisher dachte), dass das die Typen sind,
die _aktiv_ sind und genutzt werden können (andererseits könnte ich auch
vielleicht doch noch nicht alle Leichenteile des Cyrus-Massakers
entsorgt haben).
Mein Hauptproblem ist momentan allerdings wohl noch immer, dass ich
nicht wirklich Mail an den Server schicken kann (bei Mail an $mydomain:
"Relay access denied" bzw. bei Mail an eine virtual_alias_domain: "loops
back to myself"). Das wurde hier schon etliche Male durchgekaut [6],
[7], ich habe bisher aber keinen geeigneten Lösungsansatz gefunden.
Konfiguriert ist das momentan folgendermaßen:
# postconf -n
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = no
biff = no
broken_sasl_auth_clients = yes
config_directory = /etc/postfix
inet_interfaces = all
local_recipient_maps =
mailbox_size_limit = 0
mydestination = $myhostname, localhost.$mydomain, localhost,
www.$mydomain, mail.$mydomain
mydomain = {DOMAIN1}
mynetworks = 127.0.0.1/32 {IP}/32 [::1]/128 [{MAC}]/128
myorigin = /etc/mailname
notify_classes = resource, software, protocol, policy, delay, 2bounce,
bounce
recipient_delimiter =
relayhost =
smtpd_banner = $myhostname ESMTP
smtpd_helo_required = yes
smtpd_recipient_restrictions = permit_sasl_authenticated,
permit_mynetworks, reject_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = yes
smtpd_sasl_path = private/auth
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = dovecot
virtual_alias_domains = {DOMAIN2}, www.{DOMAIN2}, mail.{DOMAIN2}
virtual_alias_maps = hash:/etc/postfix/virtual_alias_maps
{DOMAIN1} und {DOMAIN2} sind eingetragen im Format domain.tld. Die
Hostnamen in "mydestination" und "virtual_alias_domains" habe ich [8]
entnommen, wo es heißt:
"Caution: in order to avoid mail delivery loops, you must
list all hostnames of the machine, including $myhostname,
and localhost.$mydomain".
[ Mail an $mydomain: "Relay access denied" ]
Im Log sieht das etwa folgendermaßen aus, wenn ich eine Mail an
{USER}@$mydomain (= {DOMAIN1}) sende:
# tail -f /var/log/mail.log
May 2 00:32:07 h652544 postfix/smtpd[3916]: NOQUEUE: reject: RCPT from
ug-out-1314.google.com[66.249.92.169]: 554 5.7.1 <{USER}@{DOMAIN1}>:
Relay access denied; from=<ich at gmail.com> to=<{USER}@{DOMAIN1}>
proto=ESMTP helo=<ug-out-1314.google.com>
May 2 00:32:07 h652544 postfix/cleanup[3919]: B6E3C5E000B:
message-id=<20070501223207.B6E3C5E000B at h652544.{DOMAIN1}>
May 2 00:32:07 h652544 postfix/smtpd[3916]: disconnect from
ug-out-1314.google.com[66.249.92.169]
May 2 00:32:07 h652544 postfix/qmgr[3417]: B6E3C5E000B:
from=<double-bounce at h652544.{DOMAIN}>, size=917, nrcpt=1 (queue active)
[...]
[ Mail an eine virtual_alias_domain: "loops back to myself" ]
Etwas anders sieht das Log aus beim Senden einer Mail an
{USER}@{DOMAIN2}) (definiert in virtual_alias_domains):
# tail -f /var/log/mail.log
May 2 00:51:26 h652544 postfix/qmgr[3417]: A32FE5E0014: from=<>,
size=3714, nrcpt=1 (queue active)
May 2 00:51:26 h652544 postfix/cleanup[4010]: B83775E001F:
message-id=<20070501225126.B83775E001F at h652544.{DOMAIN1}>
May 2 00:51:26 h652544 postfix/bounce[4012]: 1C4CC5E000B: postmaster
non-delivery notification: B83775E001F
May 2 00:51:26 h652544 postfix/qmgr[3417]: B83775E001F:
from=<double-bounce at h652544.{DOMAIN1}>, size=3330, nrcpt=1 (queue active)
May 2 00:51:26 h652544 postfix/qmgr[3417]: 1C4CC5E000B: removed
May 2 00:51:26 h652544 postfix/smtp[4013]: B83775E001F:
to=<postmaster at h652544.{DOMAIN_ISP}>, orig_to=<postmaster>, relay=none,
delay=0.06, delays=0.05/0.01/0/0, dsn=5.4.6, status=bounced (mail for
h652544.{DOMAIN_ISP} loops back to myself)
May 2 00:51:26 h652544 postfix/bounce[4012]: warning: B83775E001F:
undeliverable postmaster notification discarded
May 2 00:51:27 h652544 postfix/qmgr[3417]: B83775E001F: removed
May 2 00:51:27 h652544 postfix/smtp[4011]: A32FE5E0014:
to=<ich at gmail.com>, relay=gmail-smtp-in.l.google.com[66.249.93.27]:25,
delay=0.77, delays=0.08/0/0.06/0.62, dsn=2.0.0, status=sent (250 2.0.0
OK 1178059887 j1si78378ugf)
May 2 00:51:27 h652544 postfix/qmgr[3417]: A32FE5E0014: removed
May 2 00:51:56 h652544 postfix/smtpd[4007]: disconnect from
ug-out-1314.google.com[66.249.92.172]
Die Dokumentation sagt dazu [9]...
"Where the Postfix SMTP client should deliver mail when it detects a
"mail loops back to myself" error condition. This happens when the
local MTA is the best SMTP mail exchanger for a destination not
listed in $mydestination, $inet_interfaces, $proxy_interfaces,
$virtual_alias_domains, or $virtual_mailbox_domains. By default,
the Postfix SMTP client returns such mail as undeliverable".
... und schlägt als Abhilfe den Parameter "best_mx_transport = local"
vor. Das ändert bei mir aber nichts, der Fehler bleibt gleich.
Wenn ich nun aber "myhostname", "mydomain" und "myorigin" komplett
auskommentiere (Fallback auf $myhostname und dann auf /etc/mailname?),
"best_mx_transport = local" ergänze und "virtual_alias_domains =
hash:/etc/postfix/virtual_alias_domains" setze, scheint der Mailempfang
plötzlich zu funktionieren, zumindest bei einigen Testmails. In
/etc/postfix/virtual_alias_domains steht lediglich:
{DOMAIN1} anything
{DOMAIN2} anything
Das widerspricht, soweit ich überhaupt noch irgendwas verstehe,
vollkommen den Angaben aus der Postfix-Dokumentation, nach der in
virtual_alias_domains eben _nicht_ die Domain aus $mydomain bzw.
$myhostname stehen darf. Demnach funktioniert das Geraffel jetzt nur,
weil ich "myhostname", "mydomain" und "myorigin" komplett auskommentiert
habe und Postfix auf die Defaultwerte, also wohl /etc/mailname,
zurückfällt? Das verstehe ich wieder nicht, weil ich eigentlich
h652544.{DOMAIN_ISP} längst als Werte für $myhostname etc. durchprobiert
hatte. Außerdem ist das eine Konfiguration, die ich bisher in keinem
Howto oder Tutorial gesehen habe. Anyway...
MfG & danke fürs Mitdenken, -Agon
[1] http://kb.mozillazine.org/Connection_errors_-_POP3
[2] http://wiki.dovecot.org/Authentication/PasswordSchemes
[3] http://www.postfix.org/SASL_README.html
[4]
http://www.google.de/search?hl=de&safe=off&client=opera&rls=de&hs=iyI&q=+site%3Alisti.jpberlin.de+postfix+ptr&btnG=Suche&meta=lr%3Dlang_de
[5] http://wiki.dovecot.org/PostfixAndDovecotSASL und
http://www.postfix.org/SASL_README.html#server_dovecot
[6]
http://www.google.de/search?hl=de&safe=off&client=opera&rls=de&hs=68d&q=+site%3Alisti.jpberlin.de+%22loops+back+to+myself%22&btnG=Suche&meta=lr%3Dlang_de
[7]
http://www.google.de/search?hl=de&safe=off&client=opera&rls=de&hs=sTJ&q=+site%3Alisti.jpberlin.de+%22relay+access+denied%22&btnG=Suche&meta=lr%3Dlang_de
[8] http://www.postfix.org/BASIC_CONFIGURATION_README.html
[9] http://www.postfix.org/postconf.5.html
Mehr Informationen über die Mailingliste Postfixbuch-users