目前我正在努力实现一件听起来简单的事情:
我有一个设置,其中postfix
、dovecot
和sieve
。从两个特定地址发往一个邮箱的邮件通过筛选器转发到另一个邮件地址,即邮箱[email protected]
将所有来自 和 的来信转发[email protected]
到。[email protected]
[email protected]
这个设置工作正常,但现在我想延迟转发晚上 10 点到早上 7 点之间到达的邮件 - 因此所有在此时间段内到达的邮件仍会被转发,但要等到早上 7 点。
有人知道我怎样才能实现这个目标吗?
目前我的dovecot.sieve
文件(由Roundcube Webmail SieveRules 插件)看起来像这样:
[...]
elsif allof (address :is "From" "[email protected]",
header :contains "Subject" "abc")
{
redirect :copy "[email protected]";
stop;
}
elsif allof (address :is "From" "[email protected]",
header :contains "Subject" "abc")
{
redirect :copy "[email protected]";
stop;
}
答案1
您无法通过使用筛选脚本来实现这一点,因为这些脚本是在邮件到达时执行的。
您必须搜索一个选项来延迟 MTA 中的邮件,在您的情况下这似乎是 Postfix。服务器故障上的帖子提出了一种解决方案,使用特殊队列和标头字段(您可以通过 Sieve 设置)并通过 cron 作业修改 Postfix 配置。另一种方法是通过特殊的 Postfix 实例转发邮件,您可以按照所述进行配置,或者简单地禁用smtp
守护进程(传出,不是那个smtpd
)在晚上编辑master.cf
文件。
答案2
我一直在脑海里思考一个棘手的解决方案。
基本上将其标记为垃圾邮件。我记得以某种方式设置时,您可以根据特定规则集(SpamAssassin + Postfix)隔离电子邮件。我的意思是在特定时间段内重写电子邮件标题,或者编写规则,以便将它们选为垃圾邮件。这会导致这些电子邮件被隔离。在指定时间运行脚本以释放这些电子邮件。
https://sourceforge.net/p/amavis/mailman/message/25121709/
其他选项显然是您一直在考虑的选项,其中涉及修改收件箱。
我一直在考虑的另一个选择是某种位于 MUA 和 MTA 之间或 MTA 和互联网之间的“智能代理”。基本上,它会用错误消息拖延 Postfix,直到您预定的时间。然后您会在那时刷新 Postfix 邮件队列。不过,如果没有合适的代理,您可能需要自己构建它。
另一个选择是通过邮件客户端本身。不过,你可能需要根据具体情况构建自定义插件/扩展。
https://www.howtoforge.com/community/threads/postfix-how-to-delay-emails.54061/