Un amico mi ha chiesto aiuto perché la sua casella era stata bombardata da migliaia e migliaia di messaggi in pochi giorni e così si era ritrovato con quasi 200.0000 emails che non riusciva più a cancellare.
A parte individuare la causa del problema (un form senza captcha del sito web) è stato necessario trovare un sistema per cancellargli la posta. Tramite webmail non è stato possibile (troppa posta) e neanche tramite client di posta.
Allora come fare senza chiedere il reset totale della casella?
Beh, in questi casi si puà usare imapfilter, un comodo script che generalmente viene usato per sincronizzare due caselle, ma che può essere usato anche per queste cose.
Da una prima analisi fatta con una connessione telnet al server IMAP, ho visto che molti messaggi avevano come oggetto “Undelivered Mail Returned to Sender“. Vediamo quindi come cancellare tutti i messaggi con questo oggetto.
Per l’installazione su debian, basta:
apt-get install imapfiltermentre su MacOS consiglio l’installazione tremite brew:
brew install imapfilter
Poi creiamo un file di configurazione ad-hoc, magari chiamato imapfilter.lua:
options.starttls = true
options.certificates = false
options.expunge = true
options.limit = 100
account = IMAP {
server = 'INDIRIZZO_SERVER_IMAP',
username = 'USERNAME_CASELLA',
password = 'PASSWORD_CASELLA',
}Vediamo ora cosa aggiungere al file imapfilter.lua per filtrare i messaggi. Ecco alcuni esempi:
Seleziono tutti i non visti, arrivati il 19 dicembre 2017 e con l'oggetto indicato
messages = account.INBOX:is_unseen() * account.INBOX:arrived_on("19-Dec-2017") * account.INBOX:contain_subject("Undelivered Mail Returned to Sender")Seleziono i messaggi più recenti di 30gg e ricevuti dal mittente indicato
messages = account.INBOX:is_newer(30) * account.INBOX:contain_from("Postmaster@163.com")Seleziono tutti i messaggi arrivati prima del 01 gennaio 2016
messages = account.INBOX:arrived_before("01-Jan-2016")Seleziono i messaggi inviati prima del 01 gennaio 2016
messages = account.Sent:sent_before("01-Jan-2016")Seleziono tutti i non visti e più recenti di 20gg con un determinato oggetto
messages = account.INBOX:is_unseen() * account.INBOX:is_newer(20) * account.INBOX:contain_subject("Undelivered Mail Returned to Sender")Elimino i messaggi selezionati
messages:delete_messages()ed infine eseguiamolo:
imapfilter -c imapfilter.lua -l imapf.logNel file imapf.log sarà possibile vedere l’avanzamento della procedura.
Nel file di configurazione, la riga preceduta da – – è commentata. In quello di esempio trovate attiva una regola che cerca i messaggi con quell’oggetto negli ultimi 20 giorni, mentre le regole commentate vi danno la possibilità di cercare in una data specifica o per un mittente specifico.
Vi rimando alla pagina del manuale per ulteriori informazioni sulle regole da poter usare nel file di configurazione.
enjoy!
Ti interessa acquistare un dominio a prezzi ultraconvenienti? clicca qui
Se hai trovato utili le informazioni su questo blog,
Fai una donazione!
Clicca sul bottone qui sotto o almeno clicca sul banner pubblicitario 🙂
Commenta