我希望执行以下操作:
- 用户发送电子邮件至
1234@domain
- Procmail 识别
1234@domain
为发送到的电子邮件ticket+1234@domain
- Procmail 配方处理票号并将电子邮件转发到错误跟踪器
大胆是我目前的障碍。
这是一个概念证明。此时,用户仍需将票证发送至ticket+1234@domain
电子邮件才能正确转发:
SUBJECT=`/usr/bin/formail -zx "Subject:"`
:0fhw
* To.*\/([0-9]+)@domain
* MATCH ?? ^\/[0-9]+
|/usr/bin/formail -I "Subject: $SUBJECT (Case $MATCH)"
:0
!tickets@bugtracker
一些上下文:
创建了一个地址,ticket@domain,
用于票务处理。目前,用户发送到ticket+####@domain
,Procmail 配方用于$MATCH
获取与错误跟踪器条目相关的票号并相应地转发。这行得通。
我想做什么:
防止自动完成错误(用户将ticket+
在收件人字段中输入,错误的票证 # 会自动完成)。为了防止这些错误,用户需要发送电子邮件而####@domain
不是.ticket+####@domain
大问题:
我可以使用 Procmail 过滤来自的电子邮件####@domain
以将其视为来自的电子邮件ticket+####@domain
吗?.
您的问题似乎相当令人困惑,但是只需将最后一行更改为
!ticket+$MATCH@domain
.您可能还应该使用
^TO_
而不是^To:.*
.我添加了大括号以将赋值和两个操作置于条件下,这样您就不会做不必要的工作来提取
Subject:
或转发任何MATCH
未设置的内容。(周围的括号
[0-9]+
没有做任何有用的事情,所以我把它们去掉了。也许还要确保你有一个理智PATH
而不是硬编码路径formail
。)解析收件人信息的标头并不完全可靠,因为消息可能以
Bcc:
. 类似地,这假设收件人系统正确检查信封收件人信息而不是标头(尽管在转发之前替换收件人标头也不是很难添加)。