Procmail:过滤子项然后改变邮件正文

时间:2015-05-05 12:15:07

标签: procmail

我必须在特定字符串下面剪切邮件正文。另外,消息是base-64编码的。这个食谱很好用:

:0fb
| base64 -d
:0fb
|sed '/string/,$d'
:0fb
| base64

食谱首先解码身体,做我需要的,然后编码剩下的东西。 但是,如果我尝试添加一些过滤,它会以空体的消息结束:

:0
* ^Subject.*sometext
{
:0fb
|base 64 -d
:0fb
|sed '/string/,$d'
:0fb
|base 64
}

我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

当前的问题是你在base64 -d之前缺少一个竖线字符。

但是,您可以轻松将其折叠为单个操作。

:0fb
* ^Subject:.*sometext
| base64 -d | sed '/string/,$d' | base64

在shell管道中进行此处理稍微没有吸引力,因为当它是无操作时(即当string未在消息体中编码时),实际上没有办法避免过滤器。为了提高效率和优雅,您可能希望将其转换为简单的Python(或者您拥有的)脚本,如果您要过滤的字符串不存在,该脚本就会中止。