Newsgroup: it.comp.os.linux.sys
Titolo: CDB & Exim

Sapete se Exim tiene in cache le interrogazioni a file CDB?
Se si, per quanto?
Ho fatto una modifica ad un file cdb, aprendo manualmente il file vedo
il valore corretto ma exim continua a vedere il vecchio dato.


Exim tiene in cache i risultati dei lookup per la vita del processo, che 
è in genere molto breve... fatti salvi i demoni. Non esistono sistemi di
ipc: ogni processo ha una sua cache che si perde, ovviamente, al termine
del processo stesso. Il comportamento, morale, dipende da quale processo
usa il lookup: se lo usa il demone, allora devi riavviarlo per vedere le
modifiche. Altrimenti, in pratica... non esiste una cache come l'intendi
tu.
Fabio

 tu.
Io ho fatto svariati restart, nonostante ciò continua a vedermi i dati
vecchi


Allora non sembra essere un problema del caching di exim. Quando il processo 
di exim muore si perde tutto. E quando parte si *deve* rileggere tutto. Deve 
esserci qualcosa che non va altrove, tipo che hai lavorato sul cdb sbagliato
(verifica), o che exim non viene effettivamente riavviato durante il restart 
(stop, ps, start), o che il cdb contiene più di un record con uguale chiave,
e quello che hai aggiornato viene dopo, o...
Fabio

 e quello che hai aggiornato viene dopo, o...
il cdb contiene un solo record.
Comunque confermi che una volta aggiornato il cdb non è necessario
ammazzare brutalmente exim per fargli rileggere il db?
(piuttosto, senza usare un cdb, c'è modo di fare un file di testo
chiave<>valore come su postfix? Non ho trovato nulla a riguardo)

 chiave<>valore come su postfix? Non ho trovato nulla a riguardo)
Ci mancherebbe, puoi fare diversi tipi di lookup su file di testo. Scusa, ma
ti rimanderei alla documentazione (capitolo 9, guarda le *lsearch). Ma se il 
record è uno solo e sarà sempre uno... perchè non "hardcodarlo" nella conf?
Fabio

> Ci mancherebbe, puoi fare diversi tipi di lookup su file di testo. 
... e vengono chesciati anche questi, eh :-) Come tutti i lookup.

 record è uno solo e sarà sempre uno... perchè non "hardcodarlo" nella conf?
Vengo proprio dalla documentazione, ma non mi è chiara una cosa:
supponiamo di dover cercare una stringa "
pippo.it
" dentro un file di
testo e di
volerne ricavare il suo valore "ciao mondo"
Un file di testo di questo tipo:
chiave | valore
------------------------
pippo.it
 | ciao mondo
non ho capito come farlo a leggere, riesco a leggere solo file mono-
chiave, ovvero verificare
o meno la presenza di una stringa in un dato file (con lsearch) come
ad esempio un elenco
di ip o di url.
Il record non è uno, saranno alcune migliaia, sto facendo una prova
con un singolo record per
poi automatizzare il tutto.
CDB a parte, con i lookup su file di testo non ho mai avuto problemi
di cache, mi basta
aggiornare il file e via. Con CDB invece ho notato uno strano
comportamento e da qui la domanda...

 Vengo proprio dalla documentazione, ma non mi è chiara una cosa:
Ok, ci son riuscito.
${lookup {$authenticated_id} lsearch {CONFDIR/ratelimits} {$value}
{DEFAULT_RATELIMIT} }
c'è poco da fare, exim è una figata.

 c'è poco da fare, exim è una figata.
Eh, vedi che avevo ragione, un pochino, all'epoca ?
Comunque poi ti farò infatuare di un altro SMTP...
Max

 Comunque poi ti farò infatuare di un altro SMTP...
Dai dai dimmi, anche se è difficile battere exim.
O meglio, se la struttura delle ACL fosse da Cristiani
forse si, adesso come adesso non si capisce nulla con
tutte quelle graffe.
Ci vorrebbe un qualcosa in stile netfilter o in stile "if/else"
(per quel discorso del voip io son sempre qui che aspetto eh...)

 {DEFAULT_RATELIMIT} }
Con exim non devi chiederti se si può fare una cosa, ma qual'è il
modo più figo per farla :-)
A naso, vista la tua query, potrebbe piacerti il modificatore *@:
${lookup{$authenticated_id}lsearch*@{CONFDIR/ratelimits} {$value}
{DEFAULT_RATELIMIT} }
Se $authenticated_id è nella forma local@domain e il primo lookup 
fallisce, ne verrà eseguito un secondo per la chiave *@domain, in
modo da poter gestire dei default per dominio. Interessa?
Fabio

 modo da poter gestire dei default per dominio. Interessa?
Certo che si :D
Come avrai immaginato si tratta di un ratelimit per utente.
Usando il modificatore 'per-dominio' nel caso inserissi '
pippo.it
'
il ratelimit sarà calcolato su tutti gli invii da parte di tutte
le caselle di tale dominio, dico bene?
Esempio, 10 mail da 
pl...@pippo.it
, 10 mail da 
pi...@pippo.it
, il
ratelimit
conteggerà 20.