[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: