[Postfixbuch-users] virtual_alias und catch-all

Uwe Driessen driessen at fblan.de
Fr Mai 21 01:31:21 CEST 2010



On Behalf Of Uwe Driessen
> On Behalf Of Christian Boltz
> > 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 ;-)
> 
> Wie wäre es mit SELECT IF like that
> 
> SELECT IF((
>     SELECT alias.address 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' LIMIT 1)>0,

das könnte auch einfach ein 
  SELECT IF((SELECT COUNT(alias.address) 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')>0,		

>      (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' ),
>      (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'));
> 
> 
> Ich habs nicht probiert da ich das über statische Hashfiles erledige und auch die
> databases nicht kenne.
> 
> Grob gesagt schaut das Select if ob es ein Ergebnis für das erste select gibt dann holt
> er
> das Ergebnis mit dem 2. Select gibt es kein Ergebnis wird das Alternative Select
> ausgeführt.
> 
> Also gibt es eine vollständige Mailadresse dann holt er die gibt e die nicht und es gibt
> ein catchall dann wird die aus der Datenbank gelesen.
> 
> Musst evtl. noch ein wenig feintuning am statement machen aber dann kann das über einen
> zugriff auf die Database erledigt werden.
> 
> 
> 
> Mit freundlichen Grüßen
> 
> Drießen
> 
> --
> Software & Computer
> Uwe Drießen
> Lembergstraße 33
> 67824 Feilbingert
> Tel.: +49 06708 / 660045   Fax: +49 06708 / 661397





Mehr Informationen über die Mailingliste Postfixbuch-users