PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Postfix Relayer soll smpt-auth für SLOX machen



Doh!
12.09.03, 14:43
Hallo, Frage an die Postfix/SLOX (SuSE Open Exchange) Experten:

Wir haben im lokalen Netz einen SLOX, der für Clients smpt-relay nur über smtp-auth erlaubt. Funktioniert auch einwandfrei.

Nun haben wir auch Außendienstmitarbeiter, die mit beliebigen öffentlichen IP's kommen aber natürlich keinen direkten Zugriff auf den SLOX haben (und diesen auch nicht über ein VPN bekommen sollen).

Standardmäßig wird bei Postfix die smtp-auth über die Datei /etc/sasldb abgewickelt, welche mit dem tool saslpasswd editiert werden kann. Der SLOX macht das natürlich automatisch beim Anlegen der User, so dass ich mich nicht weiter darum kümmern müsste. Um nun den Außendienstlern das smpt-relayen zu ermöglichen, ohne relaying komplett freizugeben, will ich unseren relayer dazu benutzen, indem ich einfach per cronjob die besagte /etc/sasldb auf den relayer kopiere. Das Problem an der Sache ist nur, dass die sasldb des SLOX zwar angelegt wird, aber dort keine user drin sind.

Nun frage ich mich:
1. wie macht der SLOX denn nun eigentlich sein smtp-auth (denn es funktioniert ja!)?
2. wie kann ich dem relayer diese auth Daten zukommen lassen. Ich habe schon gelesen, dass man das smtp-auth auch über pam und damit auch über ldap oder 'ne Datenbank machen kann, leider aber nirgends eine entsprechende Anleitung gefunden.

-----
Suchwörter: slox suse open exchange smtp auth relay extern sasl sasldb sasldblistusers

Doh!
12.09.03, 16:22
Aha, erster Schritt gemacht:

In der /etc/postfix/main.cf wird mit der Direktive "smtpd_sasl_auth_enable= yes" die Authentifizierung eingeschaltet. Das war bisher klar. Unter /usr/lib/sasl/smtpd.conf (zumindest beim SLOX) wird dann aber die Authentifizierungsart festgelegt:


pwcheck_method: pam


Hier können auch statt "pam" die Werte "sasldb", "shadow","pwceck" und "kerberos_v4" gesetzt werden, was die unterschiedlichen Authentifizierungsmechanismen ansteuert. Steht "sasldb" drin, so wird die von mir angesprochene "/etc/sasldb" benutzt. Dies ist aber beim SLOX nicht der Fall, hier wird pam benutzt. Jetzt muss ich nun wiederum herausfinden, wie pam sich die user aus dem SLOX zieht (da nur NIS, LDAP oder RADIUS in Frage kommen, wird's wohl LDAP sein :D ).

der Vollständigkeit halber:

"shadow" benutzt die "/etc/shadow":Problematisch weil da der Postfix-User Leserechte auf die shadow benötigt.
"pwcheck" benutzt auch die shadow, allerdings wird da ein daemon, der die Passwörter aus der shadow ausliest zwischengeschaltet.
"kerberos_v4" man glaubt es kaum: Kerberos Authentifizierung.

So mal schauen wie ich weiter komme. Tipps werden gerne entgegen genommen.

Jinto
13.09.03, 16:04
Kann es sein, dass du Änderungen in der falschen Konfig-Datei vornimmst?

Ob und wie man sich bei Postfix authentifiziert legt die main.cf fest.

Doh!
13.09.03, 19:46
Original geschrieben von Jinto
Kann es sein, dass du Änderungen in der falschen Konfig-Datei vornimmst?

Nein, obwohl mir das schon passiert ist - wobei da habe ich die richtige Datei am falschen Server editiert... :ugly:



Original geschrieben von Jinto
Ob und wie man sich bei Postfix authentifiziert legt die main.cf fest.

Ja und nein

In der main.cf stellt man mit diesen direktiven das smtp-auth ein:


smtpd_client_restrictions= ...,permit_sasl_authenticated,...,reject
smtpd_sasl_security_options= noanonymous
smtpd_sasl_auth_enable= yes

Dann aber stellt man unter den von mir angegebenen Dateien die auth-Art ein, eben dies sasldb oder ldap oder wat auch immer.

Doh!
22.09.03, 12:09
So bin immer noch nicht ganz durch, aber ein Stück weiter. Mal sehen, wer mir helfen kann:

So weit so gut, ich habe sämtliche Tutorials und How-To's gewälzt. In der
"etc/postfix/main.cf" von postfix habe ich also die Zeilen ergänzt (Ich fasse mal alles zusammen):


--- /etc/postfix/main.cf ---

...
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_sasl_securiy_options = noanonymous
...


--- /usr/lib/sasl2/smtpd.conf ---

pwcheck_method: pam
mech_list: plain login digest-md5 cram-md5


Die "/etc/pam.d/smtp" (ich habe, weil ich mir nicht sicher bin, zusätzlich
noch eine Datei "/etc/pam.d/smtpd" angelegt, die genau gleich ausschaut - die
Syntax habe ich einfach dem Openexchange Server entnommen):

--- /etc/pam.d/smtp ---

#%PAM-1.0
auth sufficient pam_ldap.so
auth required pam_unix.so
account sufficient pam_ldap.so
account required pam_unix.so

Unter SuSE kann man dem saslauthd die Option "-a pam" in der
"/etc/sysconfig/saslauthd" mitgeben:

--- /etc/sysconfig/saslauthd ---

SASLAUTHD_AUTHMECH=pam


Mache ich ein "ps aux | grep sasl", so kriege ich diesen Output, scheint also
alles wunderbar zu laufen:

--- ps aux | grep sasl ---

root 5494 0.0 0.1 3720 980 ? S 10:47 0:00
/usr/sbin/saslauthd -a pam
root 5495 0.0 0.1 3720 980 ? S 10:47 0:00
/usr/sbin/saslauthd -a pam
root 5496 0.0 0.1 3720 980 ? S 10:47 0:00
/usr/sbin/saslauthd -a pam
root 5497 0.0 0.1 3720 980 ? S 10:47 0:00
/usr/sbin/saslauthd -a pam
root 5498 0.0 0.1 3720 980 ? S 10:47 0:00
/usr/sbin/saslauthd -a pam


Dennoch versucht sich der saslauthd die Authentifizierung immer an der
"/etc/sasldb", er macht gar keine Anstalten pam und damit ldap zu nutzen. Ich
weiß das, weil ich wahlweise eine Datei /etc/sasldb dort stehen habe oder
auch nicht. Steht sie da, bekomme ich im Log gemeldet, dass der user
(natürlich) nicht in der DB vorhanden ist. Nehme ich sie weg, mosert er (auch
natürlich) an, dass die Datenbank nicht da sei. Er versucht also immer noch
die Autentifizierung über die sasldb, obwohl pam eingestellt ist. Postfix
läuft übrigens in einer chroot-Umgebung (Jail ist: /var/spool/postfix). SuSE
verwaltet diese und kopiert beim Aufruf von "SuSEconfig --module postfix" die
benötigten Dateien in das Jail. Weiterhin ist SuSE so konfiguriert, dass es
über das SuSEconfig ansonnsten die Postfixkonig _nicht_ anfasst.

--- /var/log/mail ---
(Man sieht, dass der smtpd auf die /etc/sasldb zugreifen will (die es nicht gibt, weil nicht angelegt weil nicht gebraucht). Er soll aber nach pam autentifizieren.

Sep 22 11:43:49 kleopatra postfix/smtpd[6146]: connect from unknown[10.49.1.112]
Sep 22 11:43:49 kleopatra postfix/smtpd[6146]: warning: SASL authentication problem:
unable to open Berkeley db /etc/sasldb2: No such file or directory
Sep 22 11:43:49 kleopatra postfix/smtpd[6146]: warning: SASL authentication problem:
unable to open Berkeley db /etc/sasldb2: No such file or directory
Sep 22 11:43:49 kleopatra postfix/smtpd[6146]: warning: SASL authentication failure:
no secret in database
Sep 22 11:43:49 kleopatra postfix/smtpd[6146]: warning: unknown[10.49.1.112]:
SASL DIGEST-MD5 authentication failed
Sep 22 11:43:51 kleopatra postfix/smtpd[6146]: disconnect from unknown[10.49.1.112]

Hier noch die /etc/openldap/ldap.conf die aber (noch) nicht von Belang ist:

--- /etc/openldap/ldap.conf ---

host 10.49.1.20
base dc=juhu,dc=fallera,dc=spass
pam_filter mailenabled=OK
pam_login_attribute uid

Wer mir das erklären kann, kriegt einen Schluck Limo :D