PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Postfix: smtpd_sender_login_maps in Verbindung mit MySQL ?



binary trust
28.02.05, 11:52
Hi,

nach sehr langer Zeit läuft soweit endlich Postfix / Courier welche sich Ihre Informationen aus einer MySQL Datenbank holen. Alledings hab ich noch 2 Probleme die mich in denn Wahnsinn treiben:

1.) Ich möchte verhindern das per SASL eingeloggte Benutzer sich als andere ausgeben können als Sie sind (Sender-Spoofing). Um dies zu verhindern hab ich denn smtpd_sender_login_maps Parameter auf mysql:/etc/postfix/mysql_antispoofing.cf gesetzt.
Mit einer normalen Datei wie folgt funktioniert das ganze ohne Probleme:
foo@foo.tld foouser
foo2@foo.tld foo2user
...

Mittels meiner mysql Anweisung (die korrekt ausgeführt wird und auch eine Reihe zurückgibt) macht es allderdings Probleme:
...
table: mailbox
select_field: username
where_field: username
...

Sprich der User authentifiziert sich und soll seinen Username mit dem aus der MySQL Tabelle abgleichen. Verwendet er die in der Username vereinbarte eMail-Adresse (Username=eMail) soll er Mails verschicken können ...


Das ist das Logfile:



dict_mysql_lookup using sql query: select username from mailbox where username = 'maik@test.de'
Feb 28 11:46:36 localhost postfix/smtpd[2978]: dict_mysql_get_active: found active connection to host 127.0.0.1:3306
Feb 28 11:46:36 localhost postfix/smtpd[2978]: dict_mysql: successful query from host 127.0.0.1:3306
Feb 28 11:46:36 localhost postfix/smtpd[2978]: dict_mysql_lookup: retrieved 1 rows
Feb 28 11:46:36 localhost postfix/smtpd[2978]: check_table_result: mysql:/etc/postfix/mysql_antispoofing.cf maik@test.de maik@test.de
Feb 28 11:46:36 localhost postfix/smtpd[2978]: >>> START Sender address RESTRICTIONS <<<
Feb 28 11:46:36 localhost postfix/smtpd[2978]: generic_checks: name=maik@test.de
Feb 28 11:46:36 localhost postfix/smtpd[2978]: warning: unknown smtpd restriction: "maik@test.de"
Feb 28 11:46:36 localhost postfix/smtpd[2978]: NOQUEUE: reject: RCPT from unknown[xx.12.3.13]: 451 Server configuration error; from=<maik@test.de> to=<maik@test.de> proto=ESMTP helo=<[10.2.3.133]>
Feb 28 11:46:36 localhost postfix/smtpd[2978]: > unknown[xx.12.3.13]: 451 Server configuration error
Feb 28 11:46:37 localhost postfix/smtpd[2978]: watchdog_pat: 0x8087fe8


Nach meinem Verständniss sollte es doch eigentlich klappen,
Postfix gibt denn anmeldenamen rein und bekommt einen Datensatz mit der email zurück.
Beide stimmen überein, also wo liegt das Problem ?
Hab im Netz wie ein Wahnsinniger gesucht aber zu mysql Lösung nur sehr wenig finden können :(


2.) Gibt es denn eine Möglichkeit SASL beizubringen das die Passwörter in der MySQL Datenbank
verschlüsselt vorliegen ? Courier hat damit keine Probleme, nur SASL bereitet hier Schwierigkeiten :(
Hatte leider nur ein Patch für FreeBSD gefunden, verwende allerdings Debian Sarge ... Wenn das mit SASL nicht klappen sollte welche Möglichkeiten bleiben mir denn sonst ? Mittels pop-before-smtp klappt es zwar, weis allerdings nicht ob das eine wirklich gute lösung darstellt ...


Bin für Tipps äuserst dankbar!


Gruß
binary trust

whistle
28.02.05, 13:28
Hi,
zu deinem 2. Problem, wenn du die Authentifizierung über pam_mysql machst, kannst du die Option crypt=1 in den auth/account Zeilen verwenden.
Gruß
Whistle

Terran Marine
28.02.05, 15:23
Hi,

table: mailbox
select_field: username
where_field: username


Hallo,

haben die gleiche Konstellation auf unserem root-Server laufen,

läuft dort eindwandfrei, finde bisschen komisch das select_field und where_field das gleiche sein sollen. Dies ist bei uns nicht so.

Vielleicht nochmal die main.cf posten.

Gruß
Terran

binary trust
28.02.05, 16:21
dann bin ich ja schon froh das ich nicht alleine dastehe!

Ausschnitt aus main.cf:



# SASL
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_restrictions = noanonymous
broken_sasl_auth_clients = yes

# Mailspoofing verbieten
smtpd_sender_restrictions = mysql:/etc/postfix/mysql_antispoofing.cf

smtpd_recipient_restrictions =
permit_mynetworks,
reject_sender_login_mismatch,
reject_unauth_destination

....
# [übernohmen aus der Doku von Jonnx Chaddas Mailserver HOWTO ..]
# Virtual Domain Konfiguration
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
# Make sure that the following number is the GID for the postfix user
virtual_gid_maps = static:104
virtual_mailbox_base = /home/virtual
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_limit = 512000000
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_minimum_uid = 100
virtual_transport = virtual
# Make sure that the following number is the UID for the postfix user
virtual_uid_maps = static:104
virtual_create_maildirsize = yes
virtual_mailbox_extended = yes
virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = Sorry, the user's maildir has overdrawn his diskspace quota, pleas
e try again later.
virtual_overquota_bounce = yes


Hab nun eine neue Tabelle in mysql mit 2 Feldern (username und email) angelegt. Da allerdings der username auch die email ist denk ich wäre die voherige einstellung auch ok gewesen ...

mysql_antispoofing.cf:


user = postfix
password = postfix
hosts = 127.0.0.1:3306
dbname = postfix
table = mailcheck
select_field = username
where_field = email



Fehlerlogs:


Feb 28 16:05:33 localhost postfix/smtpd[3765]: >>> START Sender address RESTRICTIONS <<<
Feb 28 16:05:33 localhost postfix/smtpd[3765]: generic_checks: name=mysql:/etc/postfix/mysql_antis
poofing.cf
Feb 28 16:05:33 localhost postfix/smtpd[3765]: check_mail_access: foo@foo.tld
Feb 28 16:05:33 localhost postfix/smtpd[3765]: ctable_locate: leave existing entry key maik@creati
ve.de
Feb 28 16:05:33 localhost postfix/smtpd[3765]: check_access: foo@foo.tld
Feb 28 16:05:33 localhost postfix/smtpd[3765]: dict_mysql_lookup using sql query: select username
from mailcheck where email = 'foo@foo.tld'
Feb 28 16:05:33 localhost postfix/smtpd[3765]: dict_mysql_get_active: found active connection to h
ost 127.0.0.1:3306
Feb 28 16:05:33 localhost postfix/smtpd[3765]: dict_mysql: successful query from host 127.0.0.1:33
06
Feb 28 16:05:33 localhost postfix/smtpd[3765]: dict_mysql_lookup: retrieved 1 rows
Feb 28 16:05:33 localhost postfix/smtpd[3765]: check_table_result: mysql:/etc/postfix/mysql_antisp
oofing.cf foo@foo.tld foo@foo.tld
Feb 28 16:05:33 localhost postfix/smtpd[3765]: >>> START Sender address RESTRICTIONS <<<
Feb 28 16:05:33 localhost postfix/smtpd[3765]: generic_checks: name=foo@foo.tld
Feb 28 16:05:33 localhost postfix/smtpd[3765]: warning: unknown smtpd restriction: "maik@creative.
de"
Feb 28 16:05:33 localhost postfix/smtpd[3765]: NOQUEUE: reject: RCPT from unknown[xx.xx.xx.133]: 451

Terran Marine
28.02.05, 16:25
# Mailspoofing verbieten
smtpd_sender_restrictions = mysql:/etc/postfix/mysql_antispoofing.cf


Ist falsch,

es gibt einen eigenen Eintrag für das Antispoofing :

smtpd_sender_login_maps = mysql:/etc/postfix/mysql-sender_maps

http://www.postfix.org/postconf.5.html#smtpd_sender_login_maps

Gruß
Terran

binary trust
28.02.05, 16:37
danke!!!

ich werd zum psycho, hatte denn befehl richtig im kopf und falsch in der konfigurationsdatei. das blöde war allerdings dass es denn befehl "smtpd_sender_restrictions" sogar gab ...

einer dieser tage wie man sie liebt :)

werd mir jetzt mal die authentifizierung mittels pam durchlesen und hoffe das ich das projekt mailserver nun endlich abschließen kann !

gruß
binary