2011-01-31 34 views
1

我使用的邮件存储在Maildir中的getmail + maildrop + mutt + msmtp链。非常大的收件箱困扰我,所以我想通过日期这样的组织邮件:Maildrop:按日期过滤邮件:标题

Maildir 
|-2010.11->all messages with "Date: *, * Nov 2010 *" 
|-2010.12->same as above... 
|-2011.01 
`-2011.02 

我GOOGLE了很多,阅读的mailfilter语言,但它毕竟是我很难写出这样的过滤器。 Maildrop的邮件列表档案在这方面几乎没有任何内容(据我扫描它)。有一些关于https://unix.stackexchange.com/questions/3092/organize-email-by-date-using-procmail-or-maildrop的半解决方案,但我不喜欢它,因为我想使用“Date:”标题,并且我想按月排序,如数字中的“YEAR.MONTH”。 任何帮助,想法,链接,材料将不胜感激。

回答

1

主要使用man页面,我提出了以下解决方案以用于Ubuntu 10.04。用下面的内容中创建mailfilter文件调用,例如,mailfilter-archive

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 

这使用date命令,取date头内容作为输入(假设它是在RFC-2822 format)并产生格式化的日期作为使用邮件文件名。

然后执行现有的邮件文件归档邮件如下:

cat mail1 mail2 mail3 mail4 | reformail -s maildrop mailfilter-archive 

如果mail-archive内容好看,你可以删除mail1mail2mail3mail4等邮件文件。