Saslauthd pam_authenticate failed

mail
german

#1

Hallo Community,

ich habe einen aktuellen UCS Server mit Zarafa an unser Active Directory angebunden. (corp.domain.de)

Dabei musste ich den Netbios Name des Zarafa Servers ändern, da dieser auf “corp” und nicht “domain” stand. Mit dieser Anleitung:
sdb.univention.de/content/6/313/ … anged.html

Der Login innerhalb webapp sowie webaccess funktioniert problemlos.
Nach kopieren der Mails mit imapsync vom alten auf den neuen Server kann der Benutzer sich problemlos mit Thunderbird per Imap mit “STARTTLS” Verschlüsselung zum Server verbinden.

Beim SMTP Server jedoch funktioniert dies nur mit Verbindungssicherheit “Keine”.

Folgende Fehlermeldungen habe ich:

/var/log/auth.log:
Jul 3 13:35:49 hostname saslauthd[9917]: nss_ldap: reconnecting to LDAP server…
Jul 3 13:35:49 hostname saslauthd[9917]: nss_ldap: reconnected to LDAP server ldap://hostname.corp.domain.de:7389 after 1 attempt
Jul 3 13:35:49 hostname saslauthd[9917]: pam_unix(smtp:auth): authentication failure; logname= uid=0 euid=0 tty= ruser= rhost= user=username
Jul 3 13:35:49 hostname PAM-univentionmailcyrus[9917]: No or ambigous result, found 0 entries.
Jul 3 13:35:49 hostname PAM-univentionmailcyrus[9917]: failed to map username
Jul 3 13:35:51 hostname saslauthd[9917]: DEBUG: auth_pam: pam_authenticate failed: User not known to the underlying authentication module
Jul 3 13:35:51 hostname saslauthd[9917]: do_auth : auth failure: [user=username] [service=smtp] [realm=] [mech=pam] [reason=PAM auth error]

/var/log/mail.info
Jul 3 13:35:48 hostname postfix/smtpd[16244]: connect from hostname.corp.domain.de[192.168.10.111]
Jul 3 13:35:51 hostname postfix/smtpd[16244]: warning: SASL authentication failure: Password verification failed
Jul 3 13:35:51 hostname postfix/smtpd[16244]: warning: hostname.corp.domain.de[192.168.10.111]: SASL PLAIN authentication failed: authentication failure
Jul 3 13:35:53 hostname postfix/smtpd[16244]: warning: hostname.corp.domain.de[192.168.10.111]: SASL LOGIN authentication failed: authentication failure
Jul 3 13:37:33 hostname postfix/smtpd[16244]: lost connection after AUTH from hostname.corp.domain.de[192.168.10.111]
Jul 3 13:37:33 hostname postfix/smtpd[16244]: disconnect from hostname.corp.domain.de[192.168.10.111]

root@hostname:/etc/default# testsaslauthd -u username -p password
0: NO “authentication failed”
root@hostname:/etc/default# testsaslauthd -u username@domain -p password
0: NO “authentication failed”
root@hostname:/etc/default# testsaslauthd -u username@corp.domain.de -p password
0: NO “authentication failed”

Offenbar kann der saslauthd nicht auf den User zugreifen. Eine Testinstallation von UCS mit lokalen Benutzern funktioniert aktuell Problemlos.
Bin leider hier gerade am Ende mit meinen Lateien, kann mir hier jemand helfen?

Update1:
Es funktioniert komischerweise mit der E-Mail Adresse als Loginname aber nicht mit dem Benutzer…
Hat jemand eine Idee wo ich das umstellen kann?

root@hostname:/etc/default# testsaslauthd -u mailadress@domain.de -p ‘password’ -s smtp
0: OK “Success.”

VG
Val


#2

Kann leider nicht nochmal meinen Beitrag bearbeiten…

In der Datei /etc/pam.d/smtp steht folgendes:

auth sufficient pam_unix.so
auth requisite pam_univentionmailcyrus.so ldap_host=hostname.corp.domain.de ldap_base=dc=corp,dc=domain,dc=de from_attr=mailPrimaryAddress to_attr=uid binddn=cn=hostname,cn=dc,cn=computers,dc=corp,dc=domain,dc=de pwfile=/etc/machine.secret ldap_port=7389

Kann es sein, dass dieser Punkt nicht funktioniert?
from_attr=mailPrimaryAddress to_attr=uid

VG
Val


#3

Das Problem ist etwas komplizierter. :wink:

Der saslauthd verwendet PAM:

[code]auth sufficient pam_unix.so
auth requisite pam_univentionmailcyrus.so ldap_host=master401.deadlock40.intranet ldap_base=dc=deadlock40,dc=intranet from_attr=mailPrimaryAddress to_attr=uid binddn=cn=master401,cn=dc,cn=computers,dc=deadlock40,dc=intranet pwfile=/etc/machine.secret ldap_port=7389

auth sufficient pam_ldap.so use_first_pass
auth required pam_krb5.so use_first_pass

account sufficient pam_unix.so
account required pam_ldap.so
[/code]
Die Reihenfolge ist jetzt folgende, zuerst wird pam_unix verwendet, also Authentifizierung via libnss-Datenbanken. Danach wird der Benutzername von einer Mailadresse auf einen Benutzernamen gewandelt und anschließend wird LDAP oder Kerberos geprüft.

Auf einem Standard-UCS ist pam_unix erfolgreich, auch für LDAP Benutzer, da diese inkl. Passwort Hash via getent shadow aufgelöst werden können. Wird UCS Mitglied in einer AD Domäne oder ist ein Samba 4 installiert und das Passwort wurde im Samba 4 geändert, so ist der Passwort Hash nicht via getent shadow gelistet und die pam_unix Authentifizierung scheitert.

Durch requisite pam_univentionmailcyrus.so scheitert dann die Umwandlung der Mailadresse in den Benutzernamen. Ursprünglich wurde für die SMTP Authentifizierung immer nur die E-Mail Adresse verwendet.

Lösungsansätze:

  • E-Mail-Adresse für die Authentifizierung verwenden
  • In der Datei /etc/univention/templates/files/etc/pam.d/smtp requisite pam_univentionmailcyrus.so auf optional pam_univentionmailcyrus.so ändern, danach “ucr commit /etc/pam.d/smtp” und den saslauthd neu starten
  • Bug anlegen

Hoffe das hilft weiter.


Benutzer können Passwort nur teilweise ändern
#4

Hallo,

wir haben aktuell das selbe Problem.
Wir würden gerne den username bei der Postfix-Anmeldung nutzen wollen jedoch klappt das nicht wir haben bereits die /etc/pam.d/smtp wie beschrieben angepasst und ein

testsaslauthd -u username -p $(cat /tmp/pw) -s smtp 0: OK "Success."
klappt auch.
Jedoch nicht wenn ich mich dann authentifizieren möchte…

Nov 9 16:15:27 umail2 postfix/smtpd[10376]: connect from unknown[172.18.5.182] Nov 9 16:15:29 umail2 postfix/smtpd[10376]: warning: unknown[172.18.5.182]: SASL PLAIN authentication failed:
kann es evtl daran liegen das in der /etc/postfix/main.cf

smtpd_sasl_type = dovecot

drin steht und wir deswegen die /etc/pam.d/dovecot anpassen müssen?

Vielen Dank vorab!


#5

Hallo,

ich glaube, dass es auch hier besser wäre ein neues Thema zu öffnen.
Ursprünglich ging es hier mal um Zarafa und smtpd_sasl_type sollte auch seit Erratum 296 für 4.0 vom September 2015 nicht mehr auf “dovecot” stehen ([bug]39151[/bug]).

Viele Grüße,
Dirk Ahrnke


#6

obwohl wir 4.0-2 errata342 haben war das dennoch auf dovecot und meine Vermutung hat sich bestätigt, es wird dort dovecot-auth genutzt, was gut ist - jetzt können sich die User mit dem benutzernamen, vorname.nachname und primary-mailaddress anmelden, sowohl bei postfix als auch bei dovecot.

für alle die hier auf den Thread stossen und das auch haben wollen:
die Dateien müssen wie folgt aussehen:
/etc/dovecot/conf.d/auth-ldap.conf.ext

passdb {
  driver = ldap
  args = /etc/dovecot/dovecot-ldap.conf.ext
}

userdb {
  driver = prefetch
}
###
userdb {
  driver = ldap
  args = /etc/dovecot/dovecot-ldap.conf.ext

  # Default fields can be used to specify defaults that LDAP may override
  #default_fields = home=/home/virtual/%u
}

hier nur die wichtigen Änderungen:
/etc/dovecot/dovecot-ldap.conf.ext

auth_bind = yes

user_attrs = mailPrimaryAddress=user,=uid=dovemail,=gid=dovemail,uid=system_groups_user,univentionMailUserQuota=quota_rule=*:bytes=%$M,cyrus-userquota=quota_rule=*:bytes=%$M

user_filter = (&(|(objectClass=univentionMail)(objectClass=univentionMailSharedFolder)(objectClass=oxSharedFolder))(|(!(univentionMailHomeServer=*))(univentionMailHomeServer=<MAILSERVER>))(|(mailPrimaryAddress=%u)(uid=%n)))

pass_attrs = uid=user,userPassword=password,univentionMailUserQuota=userdb_quota_rule=*:bytes=%$M,cyrus-userquota=userdb_quota_rule=*:bytes=%$M

pass_filter = (&(|(objectClass=univentionMail)(objectClass=univentionMailSharedFolder)(objectClass=oxSharedFolder))(|(!(univentionMailHomeServer=*))(univentionMailHomeServer=u<MAILSERVER>))(|(mailPrimaryAddress=%u)(uid=%n)))

und darauf achten das postfix auch dovecot fragt:
/etc/postfix/main.cf

smtpd_sasl_type = dovecot

#7

ACHTUNG FEHLER…

es muss korrekt heissen:
/etc/dovecot/dovecot-ldap.conf.ext

pass_attrs = uid=user,=user=%{ldap:mailPrimaryAddress},userPassword=password,univentionMailUserQuota=userdb_quota_rule=*:bytes=%$M,cyrus-userquota=userdb_quota_rule=*:bytes=%$M