在procmail进程之后/之前清理文本邮件,以便打印该邮件

时间:2013-05-07 10:33:25

标签: linux shell procmail

我要清理一些邮件,以便只用procmail打印他们的身体:

:0: # printing mail with bb in the subject to bbprinter
* ^Subject:.*bb
| lpr -Pbbprinter

我该怎么做?

任何想法 - 帮助欢迎

1 个答案:

答案 0 :(得分:1)

你的问题在很多方面都是不明确的。 “干净”是什么意思? “身体”是什么意思?

如果您的意思是,我怎样才能将RFC5322正文而不是标题发送到打印机,这很容易:

:0b
* ^Subject:.*bb
| lpr -Pbbprinter

注意b之后的:0标记,它将操作范围限制在正文中。

但是对于MIME,您实际上并不想要RFC5322正文(即最后一个标题行之后的所有内容),而是只需要MIME多部分消息中的一部分。您需要对要提取的部分进行一些分析,但如果您有,那么它仍然很容易:

:0
* ^Subject:.*bb
| parse-out-preferred-mime-body-part | lpr -Pbbprinter

(我们这里不使用:0b,因为正确的MIME解析器也需要访问顶级RFC5322标头。)

如果“干净”意味着别的东西,或者另外,你必须澄清你的问题,但总的想法是这样的

:0
* ^Subject:.*bb
| cleanupbody | lpr -Pbbprinter

cleanupbody可以通过“清理”执行你的意思(涂抹诅咒词?修复常见错别字?或多或少同样的事情?)

最后,为了结束,您基本上可以管道到任何复杂的shell脚本(虽然当它跨越多行时,您可能最好将其全部或部分移动到单独的脚本中,也许有自己的测试套件。)

:0
* ^Subject:.*bb
| parse-out-preferred-mime-body-part | \
  sed -e 's/grammer/grammar/g' -e 's/seperate/separate/g' \
      -e 's/definately/definitely/g' | \
  lpr -Pbbprinter