[Postfixbuch-users] Mailrelay mit MySQL betreiben

Sandy Drobic postfixbuch-users at japantest.homelinux.com
Fr Jan 19 13:43:56 CET 2007


Muenz, Michael wrote:
>>> Woran liegt das? Kapier ich einfach nicht ...
>> Bei so detaillierten Angaben kann ich nur noch meine Kristallkugel um 
>> Meinung fragen, und die sagt:
>>
>> - Bitte Ausgabe von "postconf -n" posten
>> - Bitte Ausgabe von "postconf -m" posten
>> - Die Logzeilen, wo die Mail eingeht bis zur Auslieferung/Ablehnung
> 
> Sorry, ich dachte die Loesung waere so trivial, da wollte ich nicht mit 
> saemtlichen Details alle zumuellen. Also die Mail wird abgewiesen mit:
> 
> "Recipient address rejected: User unknown in local recipient table;"

Okay, die gültigen Empfänger für domains in $mydestination sind in 
$local_recipient_maps abgelegt.

> postconf -n:
> 
> 2bounce_notice_recipient = postmaster
> access_map_reject_code = 554
> address_verify_default_transport = $default_transport
> address_verify_local_transport = $local_transport
> address_verify_map =

Äh, bist du GANZ sicher, dass dies die Ausgabe von "postconf -n" ist?!? 
Sieht eher nach der Ausgabe von "postconf" aus.

> local_recipient_maps = proxy:unix:passwd.byname $alias_maps

Hier fehlt dann der Aufruf der Mysql-Abfrage, deshalb findet der Server 
den User nicht.

> mydestination = $myhostname, localhost, mysql:/etc/postfix/mysql-domains.cf

Hier ist zumindest die Domain drin. Der Server weiss also, dass er 
zuständig ist für die Domain, aber er findet den Benutzer nicht, da er nur 
in passwd und /etc/aliases nachsieht, aber nicht in mysql.

> postconf -m:
> btree
> cidr
> environ
> hash
> mysql
> nis
> proxy
> regexp
> static
> unix

Okay, du hast also Unterstützung für MySQL.

> mailin-01:/etc/postfix# cat mysql-domains.cf
> user=postfix
> password=xxx
> dbname=postfix
> table=domain
> select_field=domain_name
> where_field=domain_name
> hosts=localhost

Dies funktioniert ja auch, nicht wahr?
> 
> mailin-01:/etc/postfix# cat mysql-transport.cf
> user=postfix
> password=xxx
> dbname=postfix
> table=transport
> select_field=transport
> where_field=domain
> hosts=localhost
> 
> Wie gesagt, wenn ich mysql-domains.cf in relay_domains lege gehts.

Weil der Default für $relay_recipient_maps leer ist (es findet keine 
Überprüfung statt, ob der Benutzer existiert).
Dies ist aber absolut notwendig, da der Server sonst ALLE Mails für die 
Domain annimmt, dann feststellt, er kann die Mail nicht zustellen, um sie 
dann an die Absenderadresse wieder zurückzuschicken. Im Falle von Spam und 
Viren ist dies gefälscht, du würdest also die Mail an einen unbeteiligten 
Dritten schicken, der sich zu recht dann wütend bei dir meldet. (^-^)

Du brauchst eine dritte Abfrage, wo die gültigen Benutzer in MySQL 
abgelegt sind, diese muss zusätzlich in local_recipient_maps herein (die 
Abfrage muss nur auf den Benutzernamen gehen, ohne Domain, wenn die Domain 
in Mydestination ist).

Sandy
-- 
Antworten bitte nur in die Mailingliste!
PMs bitte an: news-reply2 (@) japantest (.) homelinux (.) com




Mehr Informationen über die Mailingliste Postfixbuch-users