Treebeard wrote:
ldd /usr/lib/cyrus/bin/imapd | grep libsasl2 libsasl2.so.2 => /usr/lib64/libsasl2.so.2 (0x00002acd9cab1000) sieht ganz gut aus... Nur, wenn saslauthd auf PAM zugreift und unter PAM das SQL-Plugin konfiguriert wird, kann man in Postfix/Cyrus sagen, dass über Saslauthd authentifiziert werden soll. So hatte ich mir das vorgestellt. Dann greift saslauthd auf PAM zu und das SQL-Modul muss entsprechend konfiguriert werden, damit es auf die richtige Benutzerdatenbank zugreift und dafür auch den erlaubten User verwendet. So sieht das bei mir aus. Ich hatte das auch schon über den saslauthd probiert (und nicht über auxprop) cat /etc/pam.d/smtp auth sufficient pam_mysql.so user=mail passwd=MAILPASSWORD host=localhost \ db=mail table=accountuser usercolumn=username \ passwdcolumn=password crypt=1 logtable=log \ logmsgcolumn=msg logusercolumn=user loghostcolumn=host \ logpidcolumn=pid logtimecolumn=time account required pam_mysql.so user=mail passwd=MAILPASSWAORD host=localhost \ db=mail table=accountuser usercolumn=username \ passwdcolumn=password crypt=1 logtable=log \ logmsgcolumn=msg logusercolumn=user loghostcolumn=host \ logpidcolumn=pid logtimecolumn=time
Müssen hier eigentlich die Backslashes weg?
Wenn ich das richtig sehe, benutzt du einen Patch für Cyrus SASL, um die Passwörter verschlüsselt in der SQL-Datenbank abzulegen. Damit wird jedoch wieder die Möglichkeit versperrt, Shared-Secret-Mechanismen wie Digest-MD5 und Cram-MD5 zu verwenden, es bleiben also tatsächlich nur PLAIN und LOGIN als Mechanismen übrig. Jetzt hoffe ich mal, dass die Kompilation von Cyrus Sasl sauber funktioniert hat (inklusive des Patches). Nur zur Information: sollten Sicherheitslücken auftreten in Cyrus/Cyrus Sasl, wirst du aus den Quellen neu kompilieren müssen. (^-^) Ob die PAM-Konfiguration richtig ist, kann ich nicht sagen, ich habe das bisher nicht über PAM gemacht. Gibt es die entsprechenden User auch in passwd?
Setze mal deine Daten ein in /usr/lib64/sasl2/smtpd.conf: pwcheck_method: auxprop auxprop_plugin: sql mech_list: plain login cram-md5 digest-md5 sql_engine: mysql sql_hostnames: localhost sql_user: mysql-user sql_passwd: mysql-password sql_database: mysql-database sql_statement: select Password from userdatabase where EmailAddress='%s'
%s ist der eingegebene Suchstring. Einzelheiten kannst du nachlesen unter "man 5 mysql_table". Dort stehen die verschiedenen Suchstrings beschrieben.
Hier müssten wohl einge Tabellen miteinander verknüpft werden, da ich die Datenbankstruktur von web-cyradm benutzt habe: # Database : `mail` # -------------------------------------------------------- # Table structure for table `accountuser` #
CREATE TABLE accountuser ( username varchar(255) binary NOT NULL default '', password varchar(30) binary NOT NULL default '', prefix varchar(50) NOT NULL default '', domain_name varchar(255) NOT NULL default '', UNIQUE KEY username (username) ) TYPE=MyISAM;
# --------------------------------------------------------
Die Passwörter liegen also in accountuser und sind mit ENCRYPT einwegverschlüsselt.
Habe noch eine Verständnisfrage: Der %s Suchstring sollte doch nicht die Emailadresse sein oder?
%s ist die Eingabe, die in die Abfrage einfließt. Du kannst dies trennen mit %u (localpart) und %d (domain). sql_statement: select password from accountuser where username = '%u' and domain_name = '%d' Dann wird usera@example.com aufgeteilt in: select password from accountuser where username = usera and domain_name = example.com
Mit "testsaslauthd -u user -p password -s smtp" habe ich doch auch den Benutzer gecheckt und nicht die damit verbundene Mailadresse. Die wird ja über die Tabelle virtual zugeordnet (alias -> username).
Na ja, das ist wohl eher Zweckentfremdung. (^-^) virtual_alias_maps sind: - für Adresseumschreibungen bei allen Mails (ein- und ausgehenden) - gültige Empfänger in virtual_alias_domains Wenn die Domain in $mydestination ist, dann wird nur der localpart verwendet, und alle Domains in $mydestination werden in einen Topf geworfen. usera@example.com = usera@example.net Wenn du das nicht willst, musst du die Domain in virtual_alias_domains oder virtual_mailbox_domains einordnen, wobei Empfänger in virtual_alias_domains auf eine andere Domain umgeschrieben werden müssen. Sandy -- Antworten bitte nur in die Mailingliste! PMs bitte an: news-reply2 (@) japantest (.) homelinux (.) com -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org