Re: postfix, pam und mysql
Claus Malter wrote:
> Guten Abend Micha,
>
> Micha Mutschler wrote:
>> Hallo,
>>
>> ich versuche gerade postfix dazu zu überreden per pam.d in ner mysql db
>> die Benutzer zu authentifizieren. Die mysql Tabelle enthält die ganze
>> Mailadresse (foo@bar.com) und das 'md5-passwort'. Das Problem ist, dass
>> wenn sich user foo@bar.com authentifizieren möchte, pam in der mysql
>> Tabelle nur nach 'foo' sucht und nicht nach 'foo@bar.com'. Ich hab
>> bisher noch nicht herausgefunden, wie man pam dazu überreden kann die
>> gesamte Mailadresse als Schlüssel zu verwenden.
>> Hat jemand eine Idee, wie bzw. wo man das einstellen kann?
>
> Ich weiß jetzt nicht genau, wie man das Problem löst. Ich versuche jetzt
> einfach ein paar Ideen nieder zu schreiben.
>
> Hast du eine MySQL Tabelle mit den vorhanden 'domains'?
ja.
mysql> show tables;
+--------------------+
| Tables_in_provider |
+--------------------+
| domains |
| forwardings |
| users |
+--------------------+
3 rows in set (0.00 sec)
mysql>
> Ist in der postfix main.cf eine Datei für "virtual_mailbox_domains"
> angegeben?
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virt_dom.cf
/etc/postfix/mysql-virt_dom.cf:
user = provider_admin
password = ******
dbname=provider
table = domains
select_field = 'virtual'
where_field = domain
hosts = 127.0.0.1
> Was steht in der auth.log, wenn du versuchst eine Mail über den smtpd zu
> verschicken?
Jul 8 20:23:40 v123 saslauthd[30251]: PAM pam_parse: expecting return
value; [...rsufficient]
Jul 8 20:23:40 v123 saslauthd[30251]: pam_mysql: select returned more
than one result
Jul 8 20:23:40 v123 saslauthd[30251]: pam_mysql: select returned more
than one result
Jul 8 20:23:40 v123 saslauthd[30251]: DEBUG: auth_pam: pam_authenticate
failed: Authentication failure
Jul 8 20:23:40 v123 saslauthd[30251]: do_auth : auth failure:
[user=asdfoo] [service=smtp] [realm=] [mech=pam] [reason=PAM auth error]
Jul 8 20:23:41 v123 saslauthd[30251]: PAM pam_parse: expecting return
value; [...rsufficient]
Jul 8 20:23:41 v123 saslauthd[30251]: pam_mysql: select returned more
than one result
Jul 8 20:23:41 v123 saslauthd[30251]: pam_mysql: select returned more
than one result
Jul 8 20:23:41 v123 saslauthd[30251]: DEBUG: auth_pam: pam_authenticate
failed: Authentication failure
Jul 8 20:23:41 v123 saslauthd[30251]: do_auth : auth failure:
[user=asdfoo] [service=smtp] [realm=] [mech=pam] [reason=PAM auth error]
wobei, wenn ich in mysql den select absetze passiert dies:
mysql> show tables;
+--------------------+
| Tables_in_provider |
+--------------------+
| domains |
| forwardings |
| users |
+--------------------+
3 rows in set (0.00 sec)
mysql> SELECT password FROM users\
WHERE email='asdfoo';
#<< hier müsste asdfoo@<domain> stehen
Empty set (0.00 sec)
mysql>
mysql logt dies beim versuch von pam user asdfoo@domain zu überprüfen:
<...>
060708 20:23:40 7 Connect provider_admin@localhost on provider
7 Init DB provider
7 Query SELECT password FROM users WHERE
email='asdfoo'
7 Quit
8 Connect provider_admin@localhost on provider
8 Init DB provider
8 Query SELECT password FROM users WHERE
email='asdfoo'
8 Quit
060708 20:23:41 9 Connect provider_admin@localhost on provider
9 Init DB provider
9 Query SELECT password FROM users WHERE
email='asdfoo'
9 Quit
10 Connect provider_admin@localhost on provider
10 Init DB provider
10 Query SELECT password FROM users WHERE
email='asdfoo'
Gruss
Micha Mutschler
Reply to: