Newsgroup: it.comp.os.linux.sys
Titolo: dovecot lda: loggare dimensione mail

Senza fare un wrapper a deliver (che per questioni di "ordine" dovrei mettere in una directory accessibile solo da root e quindi deliver non vi accederebbe) c'è modo di dire a Dovecot di loggare le dimensioni della mail ricevuta?
 
non mi pare siano modificabili i formati di log di dovecot e di piazzare script wrapper in giro per il sistema fuori dalla mia directory (c'è un installer che si porta dietro tonnellate di mia roba e butta tutto in /opt/mioinstaller/) non mi piace affatto.
 
Per ora, come workaround, faccio il parse dei log di exim.

 Per ora, come workaround, faccio il parse dei log di exim.
 
Mi correggo, non faccio il parse di exim (quello lo faccio per la posta in uscita), ma uso un transport_filter creato ad hoc, ma è una porcata di prima categoria:
 
transport_filter = /bin/sh -c "/bin/echo '$received_time $message_size' >> ${lookup mysql {SELECT REPLACE(maildir,'..','') FROM mail_user WHERE email = '${quote_mysql:$local_part@$domain}'}}/.mailsize && /bin/cat"
 
Vorrei evitare questo obbrobrio.

 Vorrei evitare questo obbrobrio.
 
Non so se puoi evitarlo senza aggiungere patch a exim o dovecot.
La cosa più semplice sarebbe aggiungere il dato che ti serve ai log di 
dovecot ...
Ma poi saresti obbligato a patcharlo tutte le volte.
 
Usa quello che hai ora che, probabilmente, è ciò che ti da meno problemi.
 
Max

 Usa quello che hai ora che, probabilmente, è ciò che ti da meno problemi.
 
Mi fa rabbrividire il fatto di aprire una shell ad ogni delivery di email.
Non dovrebbe essere rischioso, visto che faccio un echo su un file predefinito e nient'altro, ma i brividi mi vengono comunque.
 
Per ora, ho cambiato sistema: leggo i log di exim in cerca di "=>" o "->" con il nome del transport sulla stessa riga. In questo modo intercetto tutti i delivery locali. E' meno preciso, in quanto in caso di failure lato dovecot il log di exim sarebbe comunque scritto e la mail conteggiata, ma almeno non apro una shell.

 predefinito e nient'altro, ma i brividi mi vengono comunque.
 
Eh ma la soluzione te l'avrei anche data, l'altro giorno, per email :P
 

 Eh ma la soluzione te l'avrei anche data, l'altro giorno, per email :P
 
Eh ma non vale, non posso cambiare tutto per una maledetto numerino.
(il fatto che Dovecot non logghi la dimensione della mail ricevuta non è una mancanza, è una cazzata madornale, che è peggio)


Però script per script potresti lanciare delle dovecot search query a 
distanza di un'ora l'una dall'altra, chessò:
 
doveadm search -A mailbox INBOX* LARGER 100k SENTSINCE 1h
 
e ti esce qualcosa tipo
 
pi...@pippo.it
 c2b8d005a3efc64f4c55000048ac2651 2509
....
....
....
 
e poi parsi come vuoi e popoli ciò che vuoi.
 
Overhead bassissimo perchè è tutto indicizzato. Oltretutto puoi mettere 
degli AND del tipo:
TO te...@test.loc
FROM te...@test.loc
SUBJECT ciaociao
etc...

 distanza di un'ora l'una dall'altra, chessò:
 
 
E' cosa diversa: considereresti anche le email che non transitano per SMTP 
e che vengono, ad esempio, spostate tra una cartella e l'altra.
 
Se uno allora vuole "sminchiettare" in questo modo, allora, può 
divertirsi col DB che è più semplice.
 
Dovecot ha il quota-dict che aggiorna, messaggio per messaggio, alcune 
tabelle. Ci si può agganciare con dei trigger per ottenere in maniera più 
facile lo stesso risultato e senza overhead.
 

 e che vengono, ad esempio, spostate tra una cartella e l'altra.
 
uh vero, non ci ho pensato. a quel punto dovrebbe essere
 
doveadm search -A mailbox INBOX LARGER 100k SENTSINCE 1h
 
senza *
 
ma è un modo sbrigativo, la strada di interrogare il db per giocare con 
il quota-dict in effetti potrebbe risultare più precisa e meno onerosa.
 

 divertirsi col DB che è più semplice.
 
Non nel mio caso. Io devo contare le mail ricevute al giorno, quindi forse il metodo di writethem è più semplice in quanto posso filtrare per data (forse)
 
Adesso provo.

 Non nel mio caso. Io devo contare le mail ricevute al giorno, quindi forse il metodo di writethem è più semplice in quanto posso filtrare per data (forse)
 
Questa cosa mi perplime:
 
# find / -name doveadm | wc -l
0


 
find??
 
se vuoi, nelle search query puoi cercare anche per giorno.
http://wiki2.dovecot.org/Tools/Doveadm/SearchQuery
 
 
 

 find??
 
Ero alla ricerca del file, su squeeze non c'è. Mi sa che fa parte di dovecot2