Maildrop: filtra la posta per data: intestazione
-
27-10-2019 - |
Domanda
Sto usando getmail + maildrop + mutt + msmtp chain con i messaggi archiviati in Maildir.La posta in arrivo molto grande mi dà fastidio, quindi volevo organizzare la posta per data in questo modo:
Maildir
|-2010.11->all messages with "Date: *, * Nov 2010 *"
|-2010.12->same as above...
|-2011.01
`-2011.02
Ho cercato su Google molto e letto del linguaggio del filtro di posta, ma è ancora difficile per me scrivere un filtro del genere.Gli archivi della mailing list di Maildrop non hanno quasi nulla su questo (per quanto l'ho scansionato).C'è qualche semi-soluzione su https://unix.stackexchange.com / questions / 3092 / organizza-email-per-data-usando-procmail-o-maildrop , ma non mi piace, perché voglio usare l'intestazione "Data:" e voglio ordinareper mese come "YEAR.MONTH" in cifre. Qualsiasi aiuto, pensiero, link, materiale sarà apprezzato.
Soluzione
Utilizzando principalmente pagine man
, ho trovato la seguente soluzione da utilizzare su Ubuntu 10.04.Crea un file mailfilter
chiamato, ad esempio, mailfilter-archive
con il seguente contenuto:
DEFAULT="$HOME/mail-archive"
MAILDIR="$DEFAULT"
# Uncomment the following to get logging output
#logfile $HOME/tmp/maildrop-archive.log
# Create maildir folder if it does not exist
`[ -d $DEFAULT ] || maildirmake $DEFAULT`
if (/^date:\s+(.+)$/)
{
datefile=`date -d "$MATCH1" +%Y-%m`
to $DEFAULT/$datefile
}
# In case the message is missing a date header, send it to a default mail file
to $DEFAULT/inbox
Questo utilizza il comando date
, prendendo come input il contenuto dell'intestazione date
(supponendo che sia in RFC-Formato 2822 ) e producendo una data formattata da utilizzare come nome del file di posta.
Quindi esegui quanto segue sui file di posta esistenti per archiviare i tuoi messaggi:
cat mail1 mail2 mail3 mail4 | reformail -s maildrop mailfilter-archive
Se il contenuto di mail-archive
ha un bell'aspetto, è possibile rimuovere i file di posta mail1
, mail2
, mail3
, mail4
e così via.