QMail – Log (CentOS 7)
Come facciamo a leggere i log generati dal nostro sistema di posta? Per come abbiamo strutturato il nostro sistema:
→ /var/log/qmail directory principale dei file di log
→ qmail-send directory in cui troviamo il log delle mail
→ qmail-smtpd directory in cui troviamo i log delle connessioni
I log vengono generati con il multilog; ad esempio, il processo che genera i log delle mail in consegna (qmail-send) viene generato dal seguente script:
#!/bin/sh exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t s100000000 n100 /var/log/qmail/qmail-send
Questo dice che:
→ /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog: il processo multilog deve essere eseguito con group-id qmaill
→ s100000000: grandezza massima in byte del file di log corrente prima di generare un backup (circa 100MB);
→ n100: numero massimo di file di backup che il sistema deve tenere.
Il log corrente si chiama current; è in questo file che il sistema scrive le informazioni in tempo reale; i file di backup cominciano con il carattere “@”.
Se volessimo dare un’occhiata a cosa sta scrivendo il qmail-send nel nostro file di log (e quindi cosa sta facendo il nostrao qmail-send), possiamo digitare il seguente comando:
# tail -f /var/log/qmail/qmail-send/current @4000000052a82012173eb0f4 new msg 124389627 @4000000052a82012173f02fc info msg 124389627: bytes 13923 from <remote-user@remote-domain.it> qp 19253 uid 45 @4000000052a82012173f2a0c starting delivery 1056684: msg 124389627 to local local-domain.it-local-user@local-antesia.lan @4000000052a820121825d0ec delivery 1056684: success: did_1+0+0/ @4000000052a82012193141c4 status: local 0/10 remote 0/40 @4000000052a820121931e1ec end msg 124389627
Interpretiamo queste righe di log:
La prima parte (@4000000052a82012173eb0f4) è un timestamp inserito dal multilog ed è in formato TAI64N (per chi vuole approfondire l’argomento, può seguire questo link); lo troviamo in tutte le righe.
TIMESTAMP new msg 124389627
Questa riga mi indica che nella coda di consegna di qmail esiste un messaggio che è pronto per la consegna; il numero 124389627 è il “message number” che viene assegnato quando viene messo in coda ed è univoco nel nostro sistema.
TIMESTAMP info msg 124389627: bytes 13923 from <remote-user@remote-domain.it> qp 19253 uid 45 qp 19253 uid 45
Il primo numero è il “message number”; l’email address specificata è l’indirizzo di mail da cui proviene il messaggio da consegnare; il numero QP (19253) è l’ID del processo qmail-queue che ha aggiunto il messaggio alla coda; il numero UID (45) è l’ uid numerico in base al quale il processo di qmail-queue era in esecuzione quando il messaggio è stato aggiunto alla coda.
TIMESTAMP starting delivery 1056684: msg 124389627 to local local-domain.it-local-user@local-domain.it
Questo messaggio indica che il tentativo di consegna è stato avviato; il messaggio deve essere consegnato deve essere consegnato a “local-user@local-anthesia.lan”; il messaggio deve essere messo nella coda locale (to local) in quanto la mail è destinata ad un utente locale del nostro sistema.
Ad ogni tentativo di recapito viene assegnato un numero (1056684 in questo esempio), che è semplicemente un numero di sequenza che inizia con 1 quando viene avviato qmail-send. Il messaggio indica se si tratta di una consegna locale o remoto, e l’indirizzo email del destinatario.
TIMESTAMP delivery 1056684: success: did_1+0+0/
Il messaggio è stato consegnato con successo; i tre campi di did_0+0+1 indicano rispettivamente che:
→ numero di maildir in cui il messaggio viene consegnato;
→ numero di forward a cui l’indirizzo viene rigirato;
→ numero di programmi in cui il messaggio viene processato.
Se il messaggio non viene consegnato correttamente, la nostra riga potrebbe includere l’indicazione:
→ deferral: si è verificato un errore provvisorio e la consegna verrà ritentata successivamente; viene indicato anche il motivo per cui il messaggio non è stato consegnato (ad esempio :Sorry,_I_wasn't_able_to_establish_an_SMTP_connection._(#4.4.1)/); → failure: si è verificato un errore durante la consegna del messaggio con un messaggio che indica il motivo per cui la consegna non è stata eseguita (1.2.3.4_does_not_like_recipient./Remote_host_said:_550_recip@domain_User_unknown/Giving_up_on_1.2.3.4./)
TIMESTAMP status: local 0/10 remote 0/40
Nella coda locale e nella coda remota non sono presenti messaggi da consegnare.
TIMESTAMP end msg 124389627
Il messaggio 124389627 è stato eliminato dalla coda in quando processato.
Ma se volessimo rendere più leggibile il log file? Esiste un comando (tai64nlocal) che ci permette di trasformare il log precedente in un formato più leggibile:
# tail -f /var/log/qmail/qmail-send/current | tai64nlocal 2013-12-11 09:19:20.389984500 new msg 124389627 2013-12-11 09:19:20.390005500 info msg 124389627: bytes 13923 from <remote-user@remote-domain.it> qp 19253 uid 45 2013-12-11 09:19:20.390015500 starting delivery 1056684: msg 124389627 to local local-domain.it-local-user@local-domain.it 2013-12-11 09:19:20.405131500 delivery 1056684: success: did_1+0+0/ 2013-12-11 09:19:20.422658500 status: local 0/10 remote 0/40 2013-12-11 09:19:20.422699500 end msg 124389627
In questo modo possiamo vedere che tra l’inserimento del messaggio in coda e la sua consegna, sono passati pochi millisecondi.
Chi volesse approfondire l’argomento, potrà trovare maggiori informazioni su questo sito.