[MySql/amavis/PHP] sql query

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
(8>

P&W Beleid

4. Geef eerst globaal aan wat het probleem is
ik ben dus bezig met een mail server. deze is voorzien van amavis. amavis zorgt voor een connectie tussen postfix -> virus scanner EN postfix -> spamscanner.
Mocht er een virus inzitten wordt deze in quarantine gezet met spam dus ook. Aangezien de beheerders niet via de linux console dit kunnen beheren ben ik opzoek gegan na een web interface. De enigste die te vinden is voor amavisd-new is dus maia mailguard.
Maia Mailguard is een PHP webbased interface eigenlijk bedoeld voor een soort van ISP. Gebruikers kunnen hun eigen white/blacklist samenstellen en de gevoeligheid die amavis kan gebruiken of iets spam is of niet:

code:
1
2
3
4
X-Spam-Status: No, hits=4.5 tagged_above=-999.0 required=999.0
 tests=DATE_IN_FUTURE_06_12, HTML_90_100, HTML_MESSAGE, MIME_HTML_ONLY,
 NO_DNS_FOR_FROM, NO_REAL_NAME
X-Spam-Level: ****


Wat ik dus wil en wat bijna gelukt is op het volgende probleem na: wanneer een gebruiker een domain of user@domain toevoegt aan zijn white/blacklist wordt deze weg geschreven in een tabel met hun unieke userid.
Het probleem is wanneer een email binnenkomt bij amavis, amavis gaat kijken in MySQL an de hand van de userid en zo alleen de resultaten binnenhaalt van de USER. Wat ik dus wil is dat amavis de resultaten binnenhaalt van ALLE users.

5.Geef vervolgens aan waar je denkt dat het aan ligt
amavis wil zelf een ID meegeven aan de query. wanneer amavis dat niet kan geeftie een error aan en crasht het als het ware.

6. Geef vervolgens aan wat je al geprobeerd hebt.
de query is dus als volgt:
code:
1
2
3
  $sql_select_white_black_list = 'SELECT wb FROM wblist,mailaddr'.
    ' WHERE (rid=?) AND (sid=mailaddr.id) AND (mailaddr.email IN (%k))'.
   ' ORDER BY mailaddr.priority DESC';

amavis wil dus voor rid=? een unieke user id invullen. dus ik kan hier zelf geen getal in vullen aangezien het dan crasht.. ook weg laten werkt dus niet. ik kan ook geen andere $query aanmaken omdat amavis alleen $sql_select_white_black_list kent.


8. Geef altijd aan wat voor eventuele foutmeldingen of waarschuwingen je krijgt.
hij zoekt :
code:
1
2
3
4
Nov 19 03:35:07 gentoo amavisd[5967]: (05967-03) lookup_sql "sjaak@gentoo.nl", 
query 
keys: "2", "sjaak@gentoo",".nl", 
"@gentoo", "@."

error:
code:
1
2
3
4
5
Nov 19 03:35:07 gentoo amavisd[5967]: (05967-03) ESMTP> 451 4.5.0 
Error in processing,
 id=05967-03, cached 
FAILED: DBD::mysql::st execute failed: called 
with 4 bind variables when 3 are needed at (eval 48) line 217.


9.Wanneer je alles duidelijk hebt uitgelegd, vat je je probleem samen en stel je de uiteindelijke vraag.
is er een mogelijkheid om die query ietwat te bewerke zodat die rid=? wel gevult wordt maar bij de resultaten niet mee genomen wordt? dus dat ik alle inhoud van de wblist krijg.

- misschien handig om tabellen ook te hebben:
code:
1
2
3
4
5
wblist:
rid sid wb 
13 6 W 
2 5 B 
2 1 W

code:
1
2
3
4
users:
id priority policy_id email admin reminders charts 
2 9 2 admin@gentoo S Y Y 
13 9 2 sjaak@gentoo N Y Y


code:
1
2
3
4
mailaddr:
id priority email 
1 5 @gentoo.
5 9 sjaaky@sjaak.nl


:>

[ Voor 18% gewijzigd door Verwijderd op 19-11-2003 13:37 ]