[Postfixbuch-users] virtual_alias und catch-all

Christian Boltz postfixbuch at cboltz.de
Fr Mai 21 00:38:44 CEST 2010


Hallo zusammen,

Am Mittwoch, 19. Mai 2010 schrieb Stefan Förster:
> Hier liest doch Christian Boltz (sp?) mit, der macht doch
>  Postfixadmin und hat sich das doch garantiert schon alles mal
>  überlegt.

Naja, ehrlich gesagt ist die Unterstützung für die Alias-Domains ein 
"Zuliefer-Produkt" und wir mussten nur noch den Patch einspielen ;-)

Nichts desto trotz: es funktioniert und es werden auch nur Mails 
angenommen, für die es auf der Zieldomain einen gültigen Empfänger gibt.

Die SQL-Abfrage ist über zwei maps verteilt - die erste für "einzelne" 
Empfänger, die zweite für Catchalls. 
Beides in einer Map würde AFAIK relativ schwierig, weil die Catchall-
Query auch für existierende Mailboxen anspringen würde und dann alles 
zusätzlich beim Catchall ankäme. Durch die Trennung der Queries greift 
die Postfix-Abfragereihenfolge (erst komplette Adresse, wenn nichts 
gefunden wird Suche nach einem Catchall) und alles funktioniert wie es 
soll ;-)

Und die Queries sind...

virtual_mailbox_domains = 
   proxy:mysql:/etc/postfix/sql/mysql_virtual_domains_maps.cf
virtual_alias_maps =
   proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf,
   proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf,
   proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf
virtual_mailbox_maps =
   proxy:mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf,
   proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf

mysql_virtual_alias_domain_maps.cf:
query = SELECT goto FROM alias,alias_domain WHERE 
alias_domain.alias_domain = '%d' and alias.address = CONCAT('%u', '@', 
alias_domain.target_domain) AND alias.active = 1 AND 
alias_domain.active='1'

mysql_virtual_alias_domain_catchall_maps.cf:
query  = SELECT goto FROM alias,alias_domain WHERE 
alias_domain.alias_domain = '%d' and alias.address = CONCAT('@', 
alias_domain.target_domain) AND alias.active = 1 AND 
alias_domain.active='1'

mysql_virtual_alias_domain_mailbox_maps.cf:
query = SELECT maildir FROM mailbox,alias_domain WHERE 
alias_domain.alias_domain = '%d' and mailbox.username = CONCAT('%u', 
'@', alias_domain.target_domain) AND mailbox.active = 1 AND 
alias_domain.active='1'

Die Queries für "normale" Aliase spare ich mir an dieser Stelle. Bei 
Bedarf empfehle ich einen Blick in POSTFIX_CONF.txt aus der 
Postfixadmin-Doku - von dort stammen auch die Queries oben.


Übrigens: ich bastle gerade an Postfixadmin 2.3.1. Das ist im 
Wesentlichen ein Bugfix-Release für 2.3. Einzige optische Änderung wird 
das Anzeigen der Alias-Ziele bei den Mailboxen (das wurde gefühlte 
tausend Mal gewünscht ;-)

Falls jemand vorab testen will: svn co 
https://postfixadmin.svn.sourceforge.net/svnroot/postfixadmin/branches/postfixadmin-2.3
und sich über eine ganze Ladung Bugfixes freuen ;-)


Gruß

Christian Boltz
-- 
Zeitreisen vermeide ich immer, sollen irgendwie ungesund sein.
[Helga Fischer in suse-linux]



Mehr Informationen über die Mailingliste Postfixbuch-users