Postfix, SASL und Outlook

Turkey1976

New Member
Hallo Ihr allwissendes Volk,

Mein simpler MTA mit postfix, sasl und courier-pop läuft :D

Ein Problem habe ich noch:

Die sasl authenifizierung läuft über PAM... der user ist via saslpasswd2 angelegt und mit Apple Mail und Thunderbird funktioniert das versenden von Mails auch!

Lediglich Microsoft Outlook macht mir Probleme, hier die Fehlermeldung:

Apr 14 10:14:09 vs161080 postfix/smtpd[19791]: connect from pD9EBBC2F.dip.t-dialin.net[217.235.188.47]
Apr 14 10:14:09 vs161080 postfix/smtpd[19791]: match_list_match: pD9EBBC2F.dip.t-dialin.net: no match
Apr 14 10:14:09 vs161080 postfix/smtpd[19791]: match_list_match: 217.235.188.47: no match
Apr 14 10:14:09 vs161080 postfix/smtpd[19791]: match_list_match: pD9EBBC2F.dip.t-dialin.net: no match
Apr 14 10:14:09 vs161080 postfix/smtpd[19791]: match_list_match: 217.235.188.47: no match
Apr 14 10:14:09 vs161080 postfix/smtpd[19791]: > pD9EBBC2F.dip.t-dialin.net[217.235.188.47]: 220 fiktiv.de ESMTP Postfix (Debian/GNU)
Apr 14 10:14:09 vs161080 postfix/smtpd[19791]: watchdog_pat: 0x807c0a0
Apr 14 10:14:09 vs161080 postfix/smtpd[19791]: < pD9EBBC2F.dip.t-dialin.net[217.235.188.47]: EHLO PC
Apr 14 10:14:09 vs161080 postfix/smtpd[19791]: > pD9EBBC2F.dip.t-dialin.net[217.235.188.47]: 250-fiktiv.de
Apr 14 10:14:09 vs161080 postfix/smtpd[19791]: > pD9EBBC2F.dip.t-dialin.net[217.235.188.47]: 250-PIPELINING
Apr 14 10:14:09 vs161080 postfix/smtpd[19791]: > pD9EBBC2F.dip.t-dialin.net[217.235.188.47]: 250-SIZE 10240000
Apr 14 10:14:09 vs161080 postfix/smtpd[19791]: > pD9EBBC2F.dip.t-dialin.net[217.235.188.47]: 250-VRFY
Apr 14 10:14:09 vs161080 postfix/smtpd[19791]: > pD9EBBC2F.dip.t-dialin.net[217.235.188.47]: 250-ETRN
Apr 14 10:14:09 vs161080 postfix/smtpd[19791]: > pD9EBBC2F.dip.t-dialin.net[217.235.188.47]: 250-AUTH PLAIN LOGIN DIGEST-MD5 CRAM-MD5
Apr 14 10:14:09 vs161080 postfix/smtpd[19791]: > pD9EBBC2F.dip.t-dialin.net[217.235.188.47]: 250-AUTH=PLAIN LOGIN DIGEST-MD5 CRAM-MD5
Apr 14 10:14:09 vs161080 postfix/smtpd[19791]: match_list_match: pD9EBBC2F.dip.t-dialin.net: no match
Apr 14 10:14:09 vs161080 postfix/smtpd[19791]: match_list_match: 217.235.188.47: no match
Apr 14 10:14:09 vs161080 postfix/smtpd[19791]: > pD9EBBC2F.dip.t-dialin.net[217.235.188.47]: 250 8BITMIME
Apr 14 10:14:09 vs161080 postfix/smtpd[19791]: watchdog_pat: 0x807c0a0
Apr 14 10:14:09 vs161080 postfix/smtpd[19791]: < pD9EBBC2F.dip.t-dialin.net[217.235.188.47]: AUTH DIGEST-MD5
Apr 14 10:14:09 vs161080 postfix/smtpd[19791]: smtpd_sasl_authenticate: sasl_method DIGEST-MD5
Apr 14 10:14:09 vs161080 postfix/smtpd[19791]: smtpd_sasl_authenticate: uncoded challenge: nonce="CWBxtupvCiyvWW8DxqO7O9UUSfnlYdKRl3jdrhUvzHo=",realm="fiktiv.de",qop="auth",charset=utf-8,algorithm=md5-sess
Apr 14 10:14:09 vs161080 postfix/smtpd[19791]: > pD9EBBC2F.dip.t-dialin.net[217.235.188.47]: 334 bm9uY2U9IkNXQnh0dXB2Q2l5dldXOER4cU83TzlVVVNmbmxZZEtSbDNqZHJoVXZ6SG89IixyZWFsbT0idnMxNjEwODAudnNlcnZlci5kZSIscW9wPSJhdXRoIixjaGFyc2V0PXV0Zi04LGFsZ29yaXRobT1tZDUtc2Vzcw==
Apr 14 10:14:09 vs161080 postfix/smtpd[19791]: < pD9EBBC2F.dip.t-dialin.net[217.235.188.47]: dXNlcm5hbWU9ImluZm8iLHJlYWxtPSIiLG5vbmNlPSJDV0J4dHVwdkNpeXZXVzhEeHFPN085VVVTZm5sWWRLUmwzamRyaFV2ekhvPSIsZGlnZXN0LXVyaT0ic210cC95b3VyLXRlYWNoZXIuZGUiLGNub25jZT0iZTI3MGZmMWQ2ODhmMDE5OWMwNDY3MGE2OWE5ZDVmOWQiLG5jPTAwMDAwMDAxLHJlc3BvbnNlPTQ1MmQzNDMyY2ZiODNkYzZjNWI4OTJmYzBkMDYwZjFmLHFvcD1hdXRoLGNoYXJzZXQ9dXRmLTg=
Apr 14 10:14:09 vs161080 postfix/smtpd[19791]: smtpd_sasl_authenticate: decoded response: username="info",realm="",nonce="CWBxtupvCiyvWW8DxqO7O9UUSfnlYdKRl3jdrhUvzHo=",digest-uri="smtp/fiktiv.de",cnonce="e270ff1d688f0199c04670a69a9d5f9d",nc=00000001,response=452d3432cfb83dc6c5b892fc0d060f1f,qop=auth,charset=utf-8
Apr 14 10:14:09 vs161080 postfix/smtpd[19791]: warning: SASL authentication failure: realm changed: authentication aborted
Apr 14 10:14:09 vs161080 postfix/smtpd[19791]: warning: pD9EBBC2F.dip.t-dialin.net[217.235.188.47]: SASL DIGEST-MD5 authentication failed
Apr 14 10:14:09 vs161080 postfix/smtpd[19791]: > pD9EBBC2F.dip.t-dialin.net[217.235.188.47]: 535 Error: authentication failed
Apr 14 10:14:09 vs161080 postfix/smtpd[19791]: watchdog_pat: 0x807c0a0
Apr 14 10:14:09 vs161080 postfix/smtpd[19791]: < pD9EBBC2F.dip.t-dialin.net[217.235.188.47]: AUTH LOGIN
Apr 14 10:14:09 vs161080 postfix/smtpd[19791]: smtpd_sasl_authenticate: sasl_method LOGIN
Apr 14 10:14:09 vs161080 postfix/smtpd[19791]: smtpd_sasl_authenticate: uncoded challenge: Username:
Apr 14 10:14:09 vs161080 postfix/smtpd[19791]: > pD9EBBC2F.dip.t-dialin.net[217.235.188.47]: 334 VXNlcm5hbWU6
Apr 14 10:14:09 vs161080 postfix/smtpd[19791]: < pD9EBBC2F.dip.t-dialin.net[217.235.188.47]: aW5mbw==
Apr 14 10:14:09 vs161080 postfix/smtpd[19791]: smtpd_sasl_authenticate: decoded response: info
Apr 14 10:14:09 vs161080 postfix/smtpd[19791]: smtpd_sasl_authenticate: uncoded challenge: Password:
Apr 14 10:14:09 vs161080 postfix/smtpd[19791]: > pD9EBBC2F.dip.t-dialin.net[217.235.188.47]: 334 UGFzc3dvcmQ6
Apr 14 10:14:09 vs161080 postfix/smtpd[19791]: < pD9EBBC2F.dip.t-dialin.net[217.235.188.47]:
Apr 14 10:14:09 vs161080 postfix/smtpd[19791]: smtpd_sasl_authenticate: decoded response:
Apr 14 10:14:09 vs161080 postfix/smtpd[19791]: warning: pD9EBBC2F.dip.t-dialin.net[217.235.188.47]: SASL LOGIN authentication failed
Apr 14 10:14:09 vs161080 postfix/smtpd[19791]: > pD9EBBC2F.dip.t-dialin.net[217.235.188.47]: 535 Error: authentication failed
Apr 14 10:14:09 vs161080 postfix/smtpd[19791]: watchdog_pat: 0x807c0a0
Apr 14 10:14:09 vs161080 postfix/smtpd[19791]: smtp_get: EOF
Apr 14 10:14:09 vs161080 postfix/smtpd[19791]: lost connection after AUTH from pD9EBBC2F.dip.t-dialin.net[217.235.188.47]
Apr 14 10:14:09 vs161080 postfix/smtpd[19791]: disconnect from pD9EBBC2F.dip.t-dialin.net[217.235.188.47]
Apr 14 10:14:09 vs161080 postfix/smtpd[19791]: master_notify: status 1
Apr 14 10:14:09 vs161080 postfix/smtpd[19791]: connection closed

Zur weiteren Information: main.cf

Code:
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)                                                                                                                                                     
# deaktiviere die Benachrichtigung lokaler Nutzer, da es vermutlich keine gibt                                                                                                                               
biff = no                                                                                                                                                                                                    
# deaktiviere Autovervollständigung um Verwirrung zu vermeiden                                                                                                                                              │
append_dot_mydomain = no                                                                                                                                                                                     
delay_warning_time = 4h                                                                                                                                                                                      
# Ihr Hostname                                                                                                                                                                                               
myhostname = meinhostname                                                                                                                                                                            
# Mailaliase                                                                                                                                                                                                 
alias_maps = hash:/etc/aliases                                                                                                                                                                               
alias_database = hash:/etc/aliases                                                                                                                                                                           
# Defaultdomain                                                                                                                                                                                              
myorigin = /etc/mailname                                                                                                                                                                                     
# Alle nicht virtuellen Domains, für die ihr Server zuständig sein soll                                            as                                                                  │                   8│
mydestination = meine domains                                                                                                        
mynetworks = 127.0.0.0/8                                                                                                                                                                                     
mailbox_size_limit = 0                                                                                                                                                                                       
# Setzt das Trennzeichen zwischen dem Benutzernamen und der Addresserweiterung                                                                                                                               
recipient_delimiter = +                                                                                                                                                                                      
# Postfix soll auf über alle Netzwerkkarten erreichbar sein                     │       │             │                                                                                │       │            │
inet_interfaces = all                                                                                                                                                                                        
# Definiere die Maps der Virtuellen Domains                                                                                                                                                                  
virtual_alias_maps = hash:/etc/postfix/virtual_alias                                                                                                                                                         
virtual_alias_domains = /etc/postfix/virtual_domains                                                                                                                                                         
# Verwende SASL (SMTP-AUTH)                                                                                                                                                                                  
smtpd_sasl_auth_enable = yes                                                                                                                                                                                 
smtpd_sasl_security_options = noanonymous                                                                                                                                                                    
smtpd_sasl_local_domain = $myhostname                                                                                                                                                                        
# Erlaube Outlook den Zugriff                                                                                                                                                                                
broken_sasl_auth_clients = yes                                                                                                                                                                               
# Nehme keine Mails an, wenn der sendende Rechner nicht entweder innerhalb von                                                                                                                               
# my_networks ist, oder sich per SASL authentifiziert hat. Zusätzlich wird keine Mail   │             │                                                                                │       │            │
# angenommen, von Domains, die weder einen A, noch einen MX-Record haben und für die der│             │                                                                                │       │            │
# Server nicht  zuständig ist, davon ausgenommen sind alle Rechner in my_networks und alle            │                                                                                │       │            │
# SASL  authentifzierten.                                                                                                                                                                                    
smtpd_recipient_restrictions = permit_mynetworks, reject_unknown_recipient_domain,  permit_sasl_authenticated, reject_unauth_destination                                                                     
# Verlange vom Kommunikationspartner einen validen FQDN als Hostnamen, wird dieser nicht                                                                                                                     
# gegeben, wird die Mail nicht akzeptiert. Dies vermindert die Spamflut erheblich, da viele                                                                                                                  
# Spamgateways schlampig Programmiert sind.                                                                                                                                                                  
smtpd_helo_restrictions = permit_mynetworks, reject_invalid_hostname, reject_non_fqdn_hostname, reject_unknown_hostname                                                                                      
# Der Server soll keine Mails versenden, deren Domain er nicht kennt                                                                                                                                         
smtpd_sender_restrictions = reject_unknown_sender_domain                                                                                                                                                     
# HELO wird zur pflicht                                                                                                                                                                                      
smtpd_helo_required = yes                                                                                                                                                                                    
# Verlange strikte RFC-Einhaltung                                                                                                                                                                            
strict_rfc821_envelopes = yes                                                                                                                                                                                
# Verwende das Maildir-Format                                                                                                                                                                                
home_mailbox = Maildir/                                                                                                                                                                                      
                                                                                                                                                                                                             
pwcheck_method = PAM


und meine smtpd:


Code:
pwcheck_method: saslauthd                                                                                                                                                                                    
mech_list: digest-md5 cram-md5 login plain                                                                                                                                                                   
#mech_list: login plain                                                                                                                                                                                      
autotransition:true                                                                                                                                                                                          
saslauthd_path: /var/run/saslauthd/mux                                                                                                                                                                       
pwcheck_method: saslauthd                                                                                                                                                                                    
log_level:7


Wo muss ich ansetzen? Hat jemand ein Rezept parat?

Gruß

Turkey
 
War mit der Steuererklärung beschäftig :-( daher ein bischen Verzögerung:

Was sagt "saslfinger -s"?

Code:
aslfinger - postfix Cyrus sasl configuration Fri Apr 18 17:40:38 CEST 2008
version: 1.0.2
mode: server-side SMTP AUTH

-- basics --
Postfix: 2.1.5
System: Debian GNU/Linux 3.1 \n \l

-- smtpd is linked to --
	libsasl2.so.2 => /usr/lib/libsasl2.so.2 (0xb7e4c000)

-- 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_security_options = noanonymous


-- listing of /usr/lib/sasl2 --
total 948
drwxr-xr-x   2 root root  4096 Jan 12 19:13 .
drwxr-xr-x  43 root root 12288 Mar 11 12:25 ..
-rw-r--r--   1 root root 13492 Aug  8  2006 libanonymous.a
-rw-r--r--   1 root root   851 Aug  8  2006 libanonymous.la
-rw-r--r--   1 root root 13824 Aug  8  2006 libanonymous.so
-rw-r--r--   1 root root 13824 Aug  8  2006 libanonymous.so.2
-rw-r--r--   1 root root 13824 Aug  8  2006 libanonymous.so.2.0.19
-rw-r--r--   1 root root 16298 Aug  8  2006 libcrammd5.a
-rw-r--r--   1 root root   837 Aug  8  2006 libcrammd5.la
-rw-r--r--   1 root root 16180 Aug  8  2006 libcrammd5.so
-rw-r--r--   1 root root 16180 Aug  8  2006 libcrammd5.so.2
-rw-r--r--   1 root root 16180 Aug  8  2006 libcrammd5.so.2.0.19
-rw-r--r--   1 root root 47520 Aug  8  2006 libdigestmd5.a
-rw-r--r--   1 root root   860 Aug  8  2006 libdigestmd5.la
-rw-r--r--   1 root root 43944 Aug  8  2006 libdigestmd5.so
-rw-r--r--   1 root root 43944 Aug  8  2006 libdigestmd5.so.2
-rw-r--r--   1 root root 43944 Aug  8  2006 libdigestmd5.so.2.0.19
-rw-r--r--   1 root root 13726 Aug  8  2006 liblogin.a
-rw-r--r--   1 root root   831 Aug  8  2006 liblogin.la
-rw-r--r--   1 root root 14028 Aug  8  2006 liblogin.so
-rw-r--r--   1 root root 14028 Aug  8  2006 liblogin.so.2
-rw-r--r--   1 root root 14028 Aug  8  2006 liblogin.so.2.0.19
-rw-r--r--   1 root root 31248 Aug  8  2006 libntlm.a
-rw-r--r--   1 root root   825 Aug  8  2006 libntlm.la
-rw-r--r--   1 root root 30692 Aug  8  2006 libntlm.so
-rw-r--r--   1 root root 30692 Aug  8  2006 libntlm.so.2
-rw-r--r--   1 root root 30692 Aug  8  2006 libntlm.so.2.0.19
-rw-r--r--   1 root root 20142 Aug  8  2006 libotp.a
-rw-r--r--   1 root root   825 Aug  8  2006 libotp.la
-rw-r--r--   1 root root 43184 Aug  8  2006 libotp.so
-rw-r--r--   1 root root 43184 Aug  8  2006 libotp.so.2
-rw-r--r--   1 root root 43184 Aug  8  2006 libotp.so.2.0.19
-rw-r--r--   1 root root 13886 Aug  8  2006 libplain.a
-rw-r--r--   1 root root   831 Aug  8  2006 libplain.la
-rw-r--r--   1 root root 14096 Aug  8  2006 libplain.so
-rw-r--r--   1 root root 14096 Aug  8  2006 libplain.so.2
-rw-r--r--   1 root root 14096 Aug  8  2006 libplain.so.2.0.19
-rw-r--r--   1 root root 21810 Aug  8  2006 libsasldb.a
-rw-r--r--   1 root root   852 Aug  8  2006 libsasldb.la
-rw-r--r--   1 root root 18692 Aug  8  2006 libsasldb.so
-rw-r--r--   1 root root 18692 Aug  8  2006 libsasldb.so.2
-rw-r--r--   1 root root 18692 Aug  8  2006 libsasldb.so.2.0.19
-rw-r--r--   1 root root 22168 Aug  8  2006 libsql.a
-rw-r--r--   1 root root   874 Aug  8  2006 libsql.la
-rw-r--r--   1 root root 22132 Aug  8  2006 libsql.so
-rw-r--r--   1 root root 22132 Aug  8  2006 libsql.so.2
-rw-r--r--   1 root root 22132 Aug  8  2006 libsql.so.2.0.19




-- content of /etc/postfix/sasl/smtpd.conf --
pwcheck_method: saslauthd
mech_list: digest-md5 cram-md5 login plain
#mech_list: login plain
autotransition:true
saslauthd_path: /var/run/saslauthd/mux
pwcheck_method: saslauthd


log_level:7

-- active services in /etc/postfix/master.cf --
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (yes)   (never) (100)
smtp      inet  n       -       n       -       -       smtpd -v
pickup    fifo  n       -       -       60      1       pickup
cleanup   unix  n       -       -       -       0       cleanup
qmgr      fifo  n       -       -       300     1       qmgr
rewrite   unix  -       -       -       -       -       trivial-rewrite
bounce    unix  -       -       -       -       0       bounce
defer     unix  -       -       -       -       0       bounce
trace     unix  -       -       -       -       0       bounce
verify    unix  -       -       -       -       1       verify
flush     unix  n       -       -       1000?   0       flush
proxymap  unix  -       -       n       -       -       proxymap
smtp      unix  -       -       -       -       -       smtp
relay     unix  -       -       -       -       -       smtp
showq     unix  n       -       -       -       -       showq
error     unix  -       -       -       -       -       error
local     unix  -       n       n       -       -       local
virtual   unix  -       n       n       -       -       virtual
lmtp      unix  -       -       n       -       -       lmtp
anvil     unix  -       -       n       -       1       anvil
maildrop  unix  -       n       n       -       -       pipe
  flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient}
uucp      unix  -       n       n       -       -       pipe
  flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
ifmail    unix  -       n       n       -       -       pipe
  flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
bsmtp     unix  -       n       n       -       -       pipe
  flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -d -t$nexthop -f$sender $recipient
scalemail-backend unix	-	n	n	-	2	pipe
  flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension}

-- mechanisms on localhost --
250-AUTH PLAIN LOGIN DIGEST-MD5 CRAM-MD5
250-AUTH=PLAIN LOGIN DIGEST-MD5 CRAM-MD5

-- end of saslfinger output --


Reicht das an Information? Ich habe viel zu wenig Erfahrung um zu erkennen, wo die CRUX ist...
 
Vielleicht deswegen:

smtpd_helo_restrictions = permit_mynetworks, reject_invalid_hostname, reject_non_fqdn_hostname, reject_unknown_hostname
# Der Server soll keine Mails versenden, deren Domain er nicht kennt
smtpd_sender_restrictions = reject_unknown_sender_domain
# HELO wird zur pflicht
smtpd_helo_required = yes
# Verlange strikte RFC-Einhaltung
strict_rfc821_envelopes = yes

Würde ich alle mal testweise auskommentieren.
 
Worin unterscheidet sich denn der Pop3-Abruf bei Outlook von dem des Thunderbirds?
In der Authentifizierungsmethode:
Thunderbird nutzt für Klartext "PLAIN" und Outlook aber nur "LOGIN".
Normalerweise kann Postfix aber beide Methoden.

huschi.
 
So wie ich das den Logs entnehme, sendet Postifx, dass LOGIN möglich ist.

Code:
Apr 14 10:14:09 vs161080 postfix/smtpd[19791]: > pD9EBBC2F.dip.t-dialin.net[217.235.188.47]: 250-AUTH PLAIN LOGIN DIGEST-MD5 CRAM-MD5
Apr 14 10:14:09 vs161080 postfix/smtpd[19791]: > pD9EBBC2F.dip.t-dialin.net[217.235.188.47]: 250-AUTH=PLAIN LOGIN DIGEST-MD5 CRAM-MD5
Aber Outlook erkennt das nicht an.
Code:
Apr 14 10:14:09 vs161080 postfix/smtpd[19791]: match_list_match: pD9EBBC2F.dip.t-dialin.net: no match
Apr 14 10:14:09 vs161080 postfix/smtpd[19791]: match_list_match: 217.235.188.47: no match

Daraufhin versucht es Outlook mit DIGEST-MD5, was scheinbar nicht funktioniert. Ich kann mir das aber nicht erklären.

Der Server meldet doch, dass LOGIN möglich ist? Vielleicht in Outlook einen Haken bei "Anmeldung durch gesicherte Kennwortauthentifizierung (SPA)" gesetzt?
 
Last edited by a moderator:
Nein, Outlook versucht zwar erst eine Verschlüsselte Methode, geht im zweiten Versuch aber auf LOGIN. (Siehe Log)
Allerdings macht Outlook beim DIGEST-MD5 einen Fehler, weil er den REALM nicht übernimmt.
Und falls er beim LOGIN nicht auch einen Fehler macht, würde ich auf ein fehlerhaftes Passwort tippen... ;)

huschi.
 
Auf so einen einfachen Lösungsvorschlag hab ich verzichtet :-) das würde das Ganze natürlich aufklären.
 
Back
Top