llin82
1
我用mutt+procmail+getmail6收取邮件,邮箱有两个子邮箱:INBOX和垃圾邮件。我想收取这两个子邮箱的邮件,另外在procmail加一条规则,将垃圾邮件加上SPAM的X-Label区分。碰到问题是:getmail收取邮件时,加上X-getmail-retrieved-from-mailbox标明收取的子邮箱名字。问题是垃圾邮件这几个字是中文,在procmailrc里写正则表达式没法直接辨认:
:0 Afhw
* ^X-getmail-retrieved-from-mailbox: 垃圾
| formail -I X-Label: SPAM
试过用[\u5783]表示中文,也不行。但是直接写
- ^X-getmail-retrieved-from-mailbox: INBOX
是可以正常辨认的。如何在这种正则表达式中表示中文字符?谢谢。
电子邮件的头里的值是经过编码的。可以用我的 getmailheader 脚本来解码,然后这样用:
SUBJECT = `getmailheader Subject`
LOG = ">Subject: $SUBJECT
"
后边那个是打日志用的。你可以把「Subject」改成别的头名。
llin82
3
多谢多谢,我网上找了一个管道命令也有类似功能:
MBOX=`formail -x X-getmail-retrieved-from-mailbox: | tr -d '\n' | sed -e 's/^ //' | /usr/bin/perl -MEncode -ne 'print encode ("utf8",decode ("MIME-Header",$_ )) '`
问题是我怎么在procmailrc里把这个邮箱名和"垃圾邮件"字符串对照,相同则运行指定命令?谢谢哈