Mail Access Log Analyzer è uno script Bash per sistemi Linux (Debian/Ubuntu) con server di posta ISPConfig + Dovecot che permette di analizzare in modo rapido e visivo gli accessi alla casella email tramite protocollo POP3 e IMAP.
A cosa serve
Lanciato da terminale con privilegi di root, lo script legge il file di log /var/log/mail.log e mostra, per ogni utente, l’ultimo accesso effettuato alla propria casella di posta. È utile per il sistemista che deve monitorare chi si è connesso, da quale indirizzo IP e con quale livello di sicurezza.
Funzionalità principali
Avviandosi, lo script chiede interattivamente due filtri opzionali: il dominio da analizzare (ad esempio google.it o dominio.com) e il tipo di connessione da visualizzare, scegliendo tra tutte le connessioni, solo quelle cifrate (TLS/SSL) o solo quelle in chiaro. Se non si inserisce nulla, mostra tutto.
Il risultato viene presentato in una tabella colorata ordinata per data crescente, con le seguenti colonne:
| Data/Ora | Utente | IP | Protocollo | Cifratura |
|---|
Le righe sono colorate in verde per le connessioni sicure (TLS/SSL) e in giallo per quelle non cifrate, rendendo immediatamente evidente quale utente sta accedendo in modo non protetto.
Requisiti
- Sistema operativo: Debian / Ubuntu
- Server di posta: Dovecot (con ISPConfig)
- Nessuna dipendenza esterna: usa solo strumenti standard di sistema (
grep,sed,awk)
Guida all’installazione e utilizzo — Mail Access Log Analyzer
1. Copia lo script sul server
Carica il file mail_access_report.sh sul tuo server tramite SCP o SFTP, oppure crealo direttamente da terminale:
bash
nano /usr/local/bin/mail_access_report.sh
Incolla il contenuto dello script, salva con CTRL+O e chiudi con CTRL+X.
2. Rendi lo script eseguibile
bash
chmod +x /usr/local/bin/mail_access_report.sh
Mettendolo in /usr/local/bin/ potrai richiamarlo da qualsiasi directory semplicemente digitando il suo nome.
3. Esegui lo script
Lo script deve essere eseguito come root perché il file /var/log/mail.log è in sola lettura per gli utenti normali:
bash
sudo mail_access_report.sh
oppure, se sei già root:
bash
mail_access_report.sh
4. Utilizzo interattivo
All’avvio lo script ti pone due domande.
Domanda 1 — Filtro per dominio:
Filtra per dominio
Esempi: google.it dominio.com (lascia vuoto = tutti i domini)
Dominio:
Digita il dominio che vuoi analizzare (es. google.it oppure dominio.com) oppure premi Invio per vedere tutti i domini presenti nel log.
Domanda 2 — Tipo di connessione:
Filtra per tipo di connessione
1) Tutte (sicure e non sicure)
2) Solo connessioni SICURE (TLS/SSL)
3) Solo connessioni NON SICURE
Scelta [1-3, default=1]:
Digita 1, 2 o 3 oppure premi Invio per vedere tutto.
5. Lettura del risultato
Lo script produce una tabella simile a questa:
+---------------------+-------------------------------------+------------------+-------------+-----------+
| Data/Ora | Utente | IP | Protocollo | Cifratura |
+---------------------+-------------------------------------+------------------+-------------+-----------+
| 2026-03-22T08:50:52 | mario.rossi@dominio.com | 109.118.74.22 | imap-login | NON SICURO|
| 2026-03-23T09:07:44 | barbara.bianchi@dominio.com | 37.60.34.166 | pop3-login | SICURO |
| 2026-03-23T10:40:41 | elena.verdi@google.it | 176.57.126.125 | pop3-login | SICURO |
+---------------------+-------------------------------------+------------------+-------------+-----------+
Ogni riga rappresenta l’ultimo accesso registrato per quell’utente. Le righe sono ordinate per data crescente (dal più vecchio al più recente). Il colore verde indica una connessione cifrata TLS/SSL, il giallo una connessione in chiaro non protetta.
6. Cosa fare se un utente risulta NON SICURO
Se noti utenti che si connettono senza cifratura, significa che il loro client di posta (Outlook, Thunderbird, Mail, ecc.) è configurato senza SSL/TLS. In quel caso è opportuno:
- Contattare l’utente e guidarlo nella riconfigurazione del client
- Verificare che le porte sicure siano attive su Dovecot: 993 per IMAP SSL e 995 per POP3 SSL
7. Problemi comuni
Il log non viene trovato:
[ERRORE] File di log non trovato: /var/log/mail.log
Verifica che Dovecot stia effettivamente scrivendo su quel file:
bash
ls -lh /var/log/
Su alcune configurazioni il log potrebbe trovarsi in /var/log/syslog. In quel caso modifica la riga iniziale dello script:
bash
LOGFILE="/var/log/syslog"
Nessun risultato trovato: Significa che nel log non ci sono accessi corrispondenti ai filtri scelti. Prova a rieseguire senza filtri (premi Invio a entrambe le domande) per verificare che il log contenga effettivamente dati.
Permessi negati:
bash
Permission denied
Assicurati di eseguire lo script come root o con sudo.
