Organizar e-mail por data usando o procmail ou o maildrop

2

Eu gostaria de organizar todos os e-mails recebidos na seguinte estrutura de diretórios com base na data do e-mail:

ROOT --+-- YYYYMMDD --+-- HH --+-- mm --+-- YYYYMMDD-HHmmSS-000001
       |              |        |        |
       |              |        |        |      ....
       |              |        |        |
       |              |        |        +-- YYYYMMDD-HHmmSS-NNNNNN
       |              |        +-- mm --
       |              +-- HH --+-- mm -- 

Observe que cada email será armazenado como um arquivo separado e o nome do arquivo será YYYYMMDD-HHmmss-NNNNN, em que NNNNN é um número em execução.

O procmail ou o maildrop podem fazer isso? Se não, que outras opções existem?

Obrigado antecipadamente.

    
por kjloh 14.10.2010 / 06:38

2 respostas

2

Eu não tenho uma resposta preenchendo tudo o que você quer, mas uma parte dela. Se for suficiente usar a data em que o e-mail chegar, em vez do cabeçalho da data do próprio e-mail e se uma pasta por data também for suficiente, você poderá fazer isso com maildrop:

DEFAULT="$HOME/Maildir"
MAIL = "$HOME/Maildir"
DAY = 'date +%d'
MONTH = 'date +%m'
YEAR = 'date +%y'
ARCHIVEFOLDER = $YEAR$MONTH$DATE
'test -d $MAIL/.$ARCHIVEFOLDER'
if ( $RETURNCODE != 0 )
{
'maildirmake -f $ARCHIVEFOLDER $MAIL'
}
# logfile "/tmp/maildrop"
# log $MAIL/.$SPAMORDNER
to $MAIL/.$ARCHIVEFOLDER
}

Espero que você possa desenvolver isso.

    
por 14.10.2010 / 23:35
1

Se você conhece algum Python, deve ser um exercício bastante trivial:

O Python vem com um pacote de e-mail no standardlib que permite que você leia os e-mails de arquivos de texto e automaticamente analise-os em objetos utilizáveis . Depois de analisá-los, você poderia simplesmente apresentá-los de acordo (cada mensagem tem um método "as_string").

A estrutura básica seria assim:

  1. Iterar seus arquivos
  2. Abra cada arquivo e analise em um objeto de e-mail
  3. pegue a data e divida-a nos campos de que você precisa
  4. abre o identificador do arquivo de destino (o número em execução é o último número + 1 ou 1)
  5. escreva msg.as_string () no arquivo
por 14.10.2010 / 10:19

Tags