ldd /usr/lib/cyrus/bin/imapd | grep libsasl2
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
libsasl2.so.2 => /usr/lib64/libsasl2.so.2 (0x00002acd9cab1000) sieht ganz gut aus... 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?
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: # phpMyAdmin MySQL-Dump # version 2.2.6 # http://phpwizard.net/phpMyAdmin/ # http://www.phpmyadmin.net/ (download page) # # Host: localhost # Generation Time: Nov 04, 2002 at 01:44 AM # Server version: 3.23.52 # PHP Version: 4.2.3 # 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; # -------------------------------------------------------- # # Table structure for table `adminuser` # CREATE TABLE adminuser ( username varchar(50) binary NOT NULL default '', password varchar(50) binary NOT NULL default '', type int(11) NOT NULL default '0', SID varchar(255) NOT NULL default '', home varchar(255) NOT NULL default '', PRIMARY KEY (username) ) TYPE=MyISAM; # -------------------------------------------------------- # # Table structure for table `alias` # CREATE TABLE alias ( alias varchar(255) NOT NULL default '', dest longtext, username varchar(50) NOT NULL default '', status int(11) NOT NULL default '1', PRIMARY KEY (alias) ) TYPE=MyISAM; # -------------------------------------------------------- # # Table structure for table `domain` # CREATE TABLE domain ( domain_name varchar(255) NOT NULL default '', prefix varchar(50) NOT NULL default '', maxaccounts int(11) NOT NULL default '20', quota int(10) NOT NULL default '20000', transport varchar(255) NOT NULL default 'cyrus', freenames enum('YES','NO') NOT NULL default 'NO', freeaddress enum('YES','NO') NOT NULL default 'NO', PRIMARY KEY (domain_name), UNIQUE KEY prefix (prefix) ) TYPE=MyISAM; # -------------------------------------------------------- # # Table structure for table `domainadmin` # CREATE TABLE domainadmin ( domain_name varchar(255) NOT NULL default '', adminuser varchar(255) NOT NULL default '' ) TYPE=MyISAM; # -------------------------------------------------------- # # Table structure for table `search` # CREATE TABLE search ( search_id varchar(255) NOT NULL default '', search_sql text NOT NULL, perpage int(11) NOT NULL default '0', timestamp timestamp(14) NOT NULL, PRIMARY KEY (search_id), KEY search_id (search_id) ) TYPE=MyISAM; # -------------------------------------------------------- # # Table structure for table `virtual` # CREATE TABLE virtual ( alias varchar(255) NOT NULL default '', dest longtext, username varchar(50) NOT NULL default '', status int(11) NOT NULL default '1', KEY alias (alias) ) TYPE=MyISAM; CREATE TABLE log ( id int(11) NOT NULL auto_increment, msg text NOT NULL, user varchar(255) NOT NULL default '', host varchar(255) NOT NULL default '', time datetime NOT NULL default '2000-00-00 00:00:00', pid varchar(255) NOT NULL default '', PRIMARY KEY (id) ) TYPE=MyISAM; INSERT INTO adminuser (username, password) VALUES ('admin', ENCRYPT('test')); INSERT INTO domainadmin (domain_name,adminuser) VALUES ('*','admin'); INSERT INTO accountuser (username, password) VALUES ('cyrus', ENCRYPT('secret')); ############ 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? 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). Grüße Ingbert -- 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