【问题标题】:procmail create a new folder if not exist with name of recipient addressprocmail 如果不存在,则使用收件人地址的名称创建一个新文件夹
【发布时间】:2020-01-22 20:06:27
【问题描述】:

有人可以解释如何使用 procmail 获取发送到邮件地址并将所有内容提取到 @example.com,然后创建一个具有该名称的新文件夹吗?

示例:我在一个帐户中收集所有邮件,因此地址 hello@example.com 和welcome@example.com 等在同一个帐户中。

现在我想创建一个带有收件人名称的子文件夹,例如您好,欢迎在我收到发往此地址的邮件后立即收到。

我的问题是我只得到了发件人的地址……但我喜欢得到收件人地址。

在这篇Automatic procmail filter based on username 的帖子中,有人解释了如何获取发件人地址;我怎样才能使它适应我的场景?

【问题讨论】:

  • 我试图清理文本,但我不得不猜测一些事情。请审查,如果可以,请仍然澄清。尤其是,我们希望您能说明您遇到的具体问题。

标签: email filter server procmail


【解决方案1】:

如果您的 MTA 在例如Delivered-To: 标头,这很容易提取。

:0:
* ^Delivered-to:[   ]*<?\/[^ <>@    ]+
$MATCH

在 Procmail 中,[ ] 中的空格应该由一个空格和一个文字制表符组成。正则表达式[^ &lt;&gt;@ ]+ 匹配尽可能多的非空格字符、&lt;&gt;@ 或制表符。

这会从Delivered-To: 标头中提取文本直到@ 之前,并通过特殊的\/ 标记将其存储在MATCH 中;然后将该变量的值用作保存消息的目标文件夹。

不清楚您是否打算将“文件夹”表示为邮箱(例如 Berkeley mbox 文件)或目录。在后一种情况下,删除第二个冒号,如果您想创建一个尚不存在的 maildir 结构,则可能添加一个 mkdir

注意这是非常脆弱的。在一般情况下,没有可靠的、可移植的方法来确保收件人地址像这样公开。如果传入的消息是Bcc: 发送给welcomehello,那么您很可能什么也得不到,或者两条消息,或者只是其中一条。这是一个常见的常见问题解答;另见http://www.iki.fi/era/procmail/mini-faq.html#bcc

【讨论】:

    猜你喜欢
    • 2011-01-19
    • 2013-09-18
    • 2011-02-19
    • 1970-01-01
    • 2015-08-31
    • 2014-09-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多