我正试图使用procmail提取消息体,无论是在消息中还是在附件中,但我从下面得到了前两个字符:
:0B
* ^()[a-z]+[0-9]+[^+]
{ msgID = "$MATCH" }
:0B
* ^Content-Disposition: *attachment.*(($)[a-z0-9].*)*($)($)/[a-z]+[0-9]+
| base64 --decode
{ msgID = "$MATCH" }
base64的解码不工作,它要么不匹配作为整个条件,要么分配LASTFOLDER=base64 --decode"
参见我之前的问题
一个菜谱上不能有两个操作。这里有
:0B
* ^stuff/more stuff
{ msgid="$MATCH" }
| base64 --decode
第二行是语法错误。我猜你的意思是像
:0B
* ^stuff/more stuff
{
msgid="$MATCH"
:0
| base64 --decode
}
看到了?如果您需要多个操作,请在另一组食谱周围添加一对大括号(不要忘记最后的结束大括号!)作为操作部分。也可以参见http://www.iki.fi/era/procmail/quickref.html
但是在您的情况下,您显然想要提取已解码的令牌base64,因此您正在寻找的代码将是
:0B
* ^Content-Disposition: *attachment.*(($)[a-z0-9].*)*($)($)/[a-z]+[0-9]+
{ msgID=`echo "$MATCH" | base64 --decode` }
还要注意,等号周围不能有空格。对于任意base64,正则表达式是不正确的;加号和斜杠也是允许使用的字符,等号位于末尾。将/
后的部分改为[a-z0-9/+]+=*