Maildrop: Filtrar e-mail por data: cabeçalho
-
27-10-2019 - |
Pergunta
Estou usando a cadeia getmail + maildrop + mutt + msmtp com mensagens armazenadas no Maildir.Uma caixa de entrada muito grande me incomoda, então eu queria organizar os e-mails por data assim:
Maildir
|-2010.11->all messages with "Date: *, * Nov 2010 *"
|-2010.12->same as above...
|-2011.01
`-2011.02
Pesquisei muito no Google e li sobre a linguagem do filtro de e-mail, mas ainda é difícil para mim escrever esse filtro.Os arquivos da lista de discussão do Maildrop não têm quase nada sobre isso (até onde eu examinei).Existe alguma semi-solução em https://unix.stackexchange.com / questions / 3092 / organize-email-by-date-using-procmail-or-maildrop , mas eu não gosto, porque eu quero usar o cabeçalho "Date:" e quero classificarpor mês, como "ANO.MÊS" em dígitos. Qualquer ajuda, pensamentos, links, materiais serão apreciados.
Solução
Usando principalmente páginas man
, eu vim com a seguinte solução para uso no Ubuntu 10.04.Crie um arquivo mailfilter
chamado, por exemplo, mailfilter-archive
com o seguinte conteúdo:
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
Isso usa o comando date
, tomando o conteúdo do cabeçalho date
como entrada (assumindo que esteja em RFC-Formato 2822 ) e produzindo uma data formatada para usar como nome do arquivo de e-mail.
Em seguida, execute o seguinte nos arquivos de e-mail existentes para arquivar suas mensagens:
cat mail1 mail2 mail3 mail4 | reformail -s maildrop mailfilter-archive
Se o conteúdo do mail-archive
parecer bom, você pode remover os arquivos de correio mail1
, mail2
, mail3
, mail4
, etc.