即时通讯使用procmail将电子邮件转发到我的Maildir中的不同文件夹。 我使用这两行来从邮件中获取FROM和TO,这很好。procmail是使用linux命令chrooted还是有限制的?
FROM=`formail -x"From:"`
TO=`formail -x"To:"`
这两个命令返回整行,但没有From:和To:前缀。 所以我得到这样的:
Firstname Lastname <[email protected]>
现在我想提取<之间的电子邮件>。 为此,我管这个变量FROM和TO来对它进行像这样的格式化。
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莫名其妙。