Newsgroup: it.comp.os.linux.sys
Titolo: Variabili custom in exim

Vorrei eseguire una query sql e settarmi il risultato in una variabile.
Una query di questo tipo:
 
${lookup mysql{SELECT colonna FROM tabella WHERE x = y}}
 
In modo da poter riutilizzare tale valore in altre query.
Come diavolo si fa a settare una variabile custom in exim? Non trovo nulla in merito, ma solo variabili custom nel caso di ACL (ed io non sono in una ACL)

gandalf.co...@gmail.com
 ha scritto:

Sei in un Router? O in un Transport?
In tal caso, sei fregato...
 
DEVI farlo in una ACL.
Una roba del tipo:
 
warn  domains           = +local_domains
set acl_m_quelchemipare = ${lookup mysql {SELECT colonna FROM tabella
WHERE x = 'y'}}
 
Ciao
Luca Bertoncello
(
luca...@lucabert.de
)
 
-- 
 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it
 
 
 

 DEVI farlo in una ACL.
 
Non posso.
Exim fa anche il caffè, ma non permette di creare
variabili , che gli venga la cagarella.

 variabili , che gli venga la cagarella.
 
Scusa, ma non riesco proprio a capire DOVE devi assegnare quella
variabile...
Puoi eventualmente postare il pezzo di configurazione?
In Exim, o sei in una ACL o in un Router o in un Transport...
E in una ACL *puoi* definire variabili. Con l'esempio che ti ho dato.
Io ne definisco a decine nella mia configurazione...


 In Exim, o sei in una ACL o in un Router o in un Transport...
 
mica vero, sono in alto, dove vengono settate le liste, eventuali script perl, i certificati, il primary_hostname, etc etc. In sostanza son nella configurazione, nelle prime righe. Questo perchè il risultato della query (un ID) mi servirà ovunque, sia nelle ACL, sia nei router, sia nei transport.

 mica vero, sono in alto, dove vengono settate le liste, eventuali script
perl, i certificati, il primary_hostname, etc etc. In sostanza son nella
configurazione, nelle prime righe. Questo perch� il risultato della query (un
ID) mi servir� ovunque, sia nelle ACL, sia nei router, sia nei transport..
 
Capisco...
Beh, ci sono un paio di ACL che ti andrebbero bene...
Per esempio acl_smtp_helo (che reagisce al HELO), oppure acl_smtp_connect
che viene chiamata proprio alla creazione della connessione.
Quest'ultima ti darebbe la garanzia di richiamare del codice PRIMA di
qualsiasi altra ACL o Router o Transport.
 
Metti la tua Query li!
 
ciao


 venga la cagarella.
 
Hai voglia di provare un "coso" nuovo che fa molto (mammolto) di più ? (a 
titolo di esperimento, ovviamente, senza metterlo in produzione ...)
 
A me exim cominciava ad andare stretto proprio per questi motivi ...
 
Max
 
 

 A me exim cominciava ad andare stretto proprio per questi motivi ...
 
Che devi progettare per farti andare stretto exim? Avendo perl integrato, fa praticamente tutto.

 qualsiasi altra ACL o Router o Transport.
 
non l'ho mai fatto prima: se setto una variabile dentro una ACL, posso leggerla dentro altre sezioni della configurazione?
 
Comunque sia, non credo di riuscire a fare tramite ACL. La query in questione serve per ottenere un ID partendo dal primary_hostname:
 
SELECT id FORM servers WHERE hostname = '${primary_hostname}'
 
(vado a memoria, non ho la query sotto mano)
 
In base a questo ID, compongo le altre query che indicano a exim quali siano i domini di cui fare relay etc etc mediante domainlist e rispettivi lookup.
 
Le liste, almeno in teoria (non potrebbe essere diversamente), vengono popolate prima delle ACL...

 Le liste, almeno in teoria (non potrebbe essere diversamente), vengono
popolate prima delle ACL...
 
Non vedo motivo per cui non dovrebbe funzionare...
Prendi l'ID nell'ACL chiamata all'avvio della connessione e poi, nelle
altre ACL dove usi le altre Queries, usi questo ID.
Non ci vedo niente di trascendentale.
 
Anch'io faccio cose simili. In una Query prendo per esempio l'utente
destinatario dell'E-Mail e in una barcata di altre Queries, in altre ACL e
Routers, lo smandruppo come mi pare.
 
Ciao


 integrato, fa praticamente tutto.
 
Si può fare di più ...