我正在寻找一种方法在 Sieve 中做一些我多年来在 Procmail 中一直在做的事情,即在传入的消息中插入一个明确的日期标题,这让我很清楚 - 独立于埋藏的“收到”标题可能有多个服务器,但是我的邮件客户端会解释消息的发送日期——我的服务器收到消息的时间。这就是我在 Procmail 中的做法:
# First create the "date_received" variable for my time zone:
date_received=`/bin/date -ud '+2 hour' +'%A %Y-%m-%d %H:%M:%S +0200'`
# Second, insert the header containing the date_received variable:
:0 fh w
| formail -i "X-Local-Date-Received: $date_received"
我发现“addheader”(RFC 5293)显然会添加一个标题,但由于我读过的其他内容(对不起,不记得在哪里)我相信 Sieve 不会在 shell 中运行“date”命令由于限制或出于安全原因不运行 shell 命令的预期(和可理解的)偏好。
其他可能有用的信息:我正在通过 Roundcube 1.3.6 执行此操作,但我有一种感觉(也是由于我阅读的内容),如果我在 Roundcube 中编辑原始代码,Roundcube 可能会覆盖自定义筛选器集。如有必要,我很乐意直接在服务器上编辑或创建 Sieve 配置文件,以便为服务器上的所有用户实现这一点,但多年来我一直运行 Sendmail 和 Procmail,我不确定执行此操作的最佳位置。
编辑:
作为 Roundcube 中的一个测试,我在我的 Sieve 过滤器组的顶部添加了这个:
require ["fileinto","editheader"];
# rule:[test editheader]
if true
{
addheader "X-Test-Header" "This is a test header.";
}
我实际上并没有添加行“require [”fileinto“”editheader“];”; 我刚刚在过滤器集顶部的现有行中添加了“editheader”,如下所示:
require ["copy","fileinto","regex","editheader"];
我希望这会增加...
X-Test-Header: This is a test header.
...对于每条传入的消息,但 Roundcube 不会让我保存它:
An error occurred.
Unable to save filter. Server error occurred.
搜索此错误会返回一个相关结果,但未发布解决方案。
但是,我不打算专注于 Roundcube。就像我之前说的,如有必要,我将从命令行添加这个 Sieve 过滤器。