我之前从未使用过procmail,但我相信(从我的R& D)我可能是最好的选择来破解我的谜语。我们的系统收到一封电子邮件,其中我需要3个值:
来自SUBJECT行的4位或5位整数。 (我们将称为" N")
来自REPLY-TO行的电子邮件别名(我们将其称为" R")
确定电子邮件的类型,我的意思是说" case"或者"项目"。 (我们将其称为" T")此值将从SUBJECT行中解析出来。
如果有人可以帮我处理这个食谱,我会非常感激。
接下来我需要做的是:
我需要接受来自4个域名的电子邮件,例如:
(@sjobeck.com|@cases.example.com|@messages.example.com|@bounces.example.com)
最后,是将这3个值传递给第二个脚本,并提供一些关于最佳语法的建议。这里的任何建议都是最值得赞赏的。这会是这样的:
this-recipe $N $T $R | second-script.py
或者看起来怎么样?或者这不是procmail问题和Python问题? (如果是,那很好,我会在那里处理它。)
非常感谢!
杰森
答案 0 :(得分:1)
Procmail可以提取这些值,或者您可以在stdin上将整个消息传递给Python。
假设您想要最终数字,并且您需要有4或5,如下所示:
R=`formail -zxReply-to: | sed 's/.*<//;s/>.*//'`
:0
* ^From:.*@(helpicantfindgoogle\.com|searchengineshateme\.net|disabled\.org)\>
* ^Subject:(.*[^0-9])?\/[0-9][0-9][0-9][0-9][0-9]?$
| scriptname.py --reply-to "$R" --number "$MATCH"
这说明了两种不同的提取标题值的技术;通过调用formail
来提取Reply-To标头(根据您的评论,这将只提取电子邮件终端;如果您的意思是“别名”,那么请正确定义),而尾随的是4或5在条件中使用特殊运算符\/
抓取来自Subject的数字整数。
更新:添加了一个附加条件,仅处理电子邮件,其中From:标头表示其中一个域helpicantfindgoogle.com
,searchengineshateme.net
或{{1}中的发件人}。
正如管道操作所暗示的,您的脚本将能够在其标准输入上读取触发消息,但如果您不需要它,则不要读取标准输入。
如果交货成功,Procmail将在此配方完成后停止处理。因此,您不需要显式丢弃匹配的消息。 (如果您想继续使用,请使用disabled.org
而不是:0c
。)
作为效率调整(例如,如果您收到大量电子邮件,并且只需将其中的一小部分传递给此脚本),您可能希望重构仅提取Reply-To:条件时匹配。
:0
仅在满足两个条件时才会输入块(:0
* ^From:.*@(helpicantfindgoogle.com|searchengineshateme\.net|disabled\.org)\>
* ^Subject:(.*[^0-9])?\/[0-9][0-9][0-9][0-9][0-9]?$
{
R=`formail -zxReply-To: | sed 's/.*<//;s/>.*//'`
:0
| scriptname.py --reply-to "$R" --number "$MATCH"
}
和{
之间的内容)。将Subject:标题中的数字提取到}
中的工作方式与以前一样;如果From:条件匹配且Subject:条件匹配,则提取的数字将在$MATCH
。