29.12. 使用 procmail

procmail 是一个强大得惊人的过滤进入邮件的应用程序。它允许用户定义“规则”,并用这些规则来匹配进入的邮件,进而执行某些特定的功能,或将这些邮件转发到其他信箱和/或邮件地址。procmail 可以通过 mail/procmail port 来安装。装好之后,可以直接把它集成到绝大多数 MTA 中; 请参考你使用的 MTA 的文档了解具体的作法。另外,procmail 可允许通过把下面的设置加入到用户主目录中的 .forward 文件中,来启用 procmail 功能:

  1. "|exec /usr/local/bin/procmail || exit 75"

下面将介绍一些基本的 procmail 规则,以及它们都是做什么的。各种各样的规则,都应该写到 .procmailrc 文件中,而这个文件则必须放在用户的主目录下。

主要的规则,也可以在 procmailex(5) 联机手册中找到。

将所有来自 user@example.com 的邮件,转发到外部地址 goodmail@example2.com

  1. :0
  2. * ^From.*user@example.com
  3. ! goodmail@example2.com

转发所有不超过 1000 字节的邮件到外部地址 goodmail@example2.com

  1. :0
  2. * < 1000
  3. ! goodmail@example2.com

把所有发送到 alternate@example.com 的邮件放到信箱 alternate 中:

  1. :0
  2. * ^TOalternate@example.com
  3. alternate

将所有主题为 Spam 的邮件发到 /dev/null

  1. :0
  2. ^Subject:.*Spam
  3. /dev/null

将收到的所有 FreeBSD.org 邮件列表的邮件,转发到各自的信箱:

  1. :0
  2. * ^Sender:.owner-freebsd-\/[^@]+@FreeBSD.ORG
  3. {
  4. LISTNAME=${MATCH}
  5. :0
  6. * LISTNAME??^\/[^@]+
  7. FreeBSD-${MATCH}
  8. }