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

Antwort per Email an