Hallo Ronny, ich mach mal bisschen Tofu.
Ich gehe davon aus, du wolltest mit deiner Problembeschreibung ausdrücken, dass eMails, die an Adressen, welche in der mail_users tabelle stehen, ge-graylistet werden, und welche, die an externe weitergeleitet werden, nicht. 2 Lösungen: - Subselect: SELECT greylist FROM mail_users WHERE email = (SELECT destination FROM mail_virtual WHERE email = %s) - Join: SELECT u.greylist as greylist FROM mail_users u, mail_virtual v WHERE u.email = v.destination AND v.email = %s Du hattest oben noch drangehängt "AND policy='greylist' LIMIT 1" (oder beim Join "AND u.policy = 'greylist' LIMIT 1") - sollte eigtl. nicht nötig sein, aber wenn das von mir vorgeschlagene nicht geht, kannstes ja wieder ranhängen. Viele Grüße morphium Am 17. Februar 2013 15:02 schrieb Ronny Seffner <[email protected]>: > Hallo, > > da ich einfache MySQL Syntax eher nur lesen kann, wende ich mich an Euch > eine Abfrage für eine postfix Filtertabelle zu formulieren. > Postfix kennt eine Mailadresse und übergibt sie als "%s", das Ergebnis der > Abfrage wird 'greylist' oder '' lauten. Für die Übergabe habe ich > offensichtlich nur die Variable query, die ich mit normaler MySQL-Syntax > füllen kann. Nun zur Komplexität der Fragestellung: > > Es gibt die Tabelle 'mail_users', diese enthält u.a. 'id', 'email' und > 'policy'. > - 'id' - int(11) - AUTO_INCREMENT > - 'email' - varchar(255) = vollständige Emailadresse eines lokalen Kontos > - 'policy' - enum('greylist,'') = postfix erwartet von der Abfrage eintweder > nix oder den Namen einer vorher konfigurierten polica, hier 'greylist' > > Soweit, so einfach: "SELECT policy FROM mail_users WHERE email='%s' AND > policy='greylist' LIMIT 1" liefert mit 'greylist' oder nichts, so wie ich es > will. > > Nun können aber auch Adressen in der DB sein, die einer Weiterleitung dienen > oder Alias auf ein Konto sind, das steht in der Tabelle 'mail_virtual'. > - 'id' - int(11) - AUTO_INCREMENT > - 'email' - varchar(255) = vollständige Emailadresse > - 'popaccount' - int(11) - referenzier damit auf die 'id' in 'mail_users' > oder ist schlicht '0', wenn es kein lokales Konto gibt > - 'destination' - text - eine Zieladresse > - 'iscachtall' - tinyint(1) - '0' oder '1' für das selbsterklärende Nein > oder Ja > > Nehmen wir an, ich habe das Konto [email protected], die aliase > [email protected], [email protected] dazu und das catchall-Konto > [email protected], sähen die Tabellen wohl wie folgt aus: > > mail_users > 11, [email protected], greylist > 84, [email protected], greylist > > mail_virtual > 41, [email protected], 11, [email protected], 0 > 57, [email protected], 11, [email protected], 0 > 133, [email protected], 84, [email protected], 1 > 287, [email protected], 0, [email protected], 0 > > Da ich meine Policies nur für lokale Konten durchsetzen will, hat sich der > Entwickler hinter dem Adminpanel wohl gedacht, gehört die Policy ans Konto > und nicht die Mailadresse. Aus Sicht des Webfrontends wird 'greylist' nur > für [email protected] und [email protected] gesetzt soll aj aber für alle > zugehörigen Aliase und ggf. auch für catchall gelten. > > Wie muss nun die Abfrage für meine o.g. 'query' Variable lauten wenn die > Übergaben von %s als: > [email protected] dann 'greylist', > [email protected] dann 'greylist', > [email protected] dann 'greylist', > [email protected] dann 'greylist', > [email protected] dann '' liefern soll? > > Sicherlich wäre es für diese Aufgabenstellung einfacher, wenn die 'policy' > an der Adresse in 'mail_virtual' stehen würde, aber das bedeutet ein > aufwändiges Ändern des Webfrontends und löst das catchall-Problem noch > nicht. > > > Mit freundlichen Grüßen / Kind regards > Ronny Seffner > -- > Ronny Seffner | Alter Viehweg 1 | 01665 Klipphausen > > www.seffner.de | [email protected] | +49 35245 72950 > > > > _______________________________________________ > Lug-dd maillist - [email protected] > https://ssl.schlittermann.de/mailman/listinfo/lug-dd -- morphium - [email protected] - 113332157 http://identi.ca/morphium - http://twitter.com/morphium86 _______________________________________________ Lug-dd maillist - [email protected] https://ssl.schlittermann.de/mailman/listinfo/lug-dd
