繁体   English   中英

procmail是chroot还是使用Linux命令受到限制?

[英]Is procmail chrooted or limited in using linux commands?

即时通讯使用procmail将电子邮件转发到我的Maildir中的其他文件夹。 我使用这两行从邮件中获取FROM和TO,效果很好。

FROM=`formail -x"From:"`
TO=`formail -x"To:"`

这两个命令返回整行,而不包含From:和To:前缀。 所以我得到类似的东西:

Firstname Lastname <firstname.lastname@mail-domain.com>

现在,我想提取<和>之间的电子邮件。 为此,我通过管道将变量FROM和TO像这样grepping。

FROM_PARSED=`echo $FROM | grep -o '[[:alnum:]+\.\_\-]*@[[:alnum:]+\.\_\-]*'`
TO_PARSED=`echo $TO | grep -o '[[:alnum:]+\.\_\-]*@[[:alnum:]+\.\_\-]*'`

但是,当我使用LOG = FROM_PARSED将FROM_PARSED打印到procmail日志中时,我在FROM_PARSED和TO_PARSED中得到一个空字符串。

但是,如果我在控制台上运行这些命令,则一切正常。 我尝试了许多其他grepping方法,使用grep,egrep,sed甚至剪切(剪切<和>)。 所有工作在控制台上,但是我在procmail中使用它,它什么也没返回。

是否有可能不允许procmail使用grep和sed命令? 像chroot一样?

我在procmail日志中没有收到任何错误日志。 我只想从FROM和TO行中提取有效的电子邮件地址。 使用formail进行提取是可行的,但是即使表达式正确,也无法使用grep或sed对其进行解析。

有人可以帮忙吗? 也许我需要以某种方式设置procmail。

奇怪。

我将此添加到用户.procmailrc文件

SHELL=/bin/bash

users shell设置为/ bin / false,这是正确的,因为它是一个邮件用户,根本没有ssh访问权限。

您应该正确引用"$FROM"和“ $TO ”。

您还需要为grep加上LC_ALL=POSIX前缀,以确保[:alnum:]实际上与26个知名字符和英语字母的10位数字匹配。

您已经解决了这个问题,但是要回答您的实际问题,可以在chroot中运行procmail ,但这当然不是Procmail本身可以完成的。 Sendmail以前带有一个称为Sendmail Restricted Shell的东西(最初称为rsh但重命名为remsh ),它使系统管理员可以更改传送过程。 但总而言之,这是MTA的功能,而不是Procmail的功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM