在 Postfix 中,是否可以限制在特定时间内向选定用户邮箱发送邮件?

在 Postfix 中,是否可以限制在特定时间内向选定用户邮箱发送邮件?

为了强制执行公司工作时间并减轻员工压力,我想将电子邮件发送到用户邮箱的时间限制在工作时间内,但不限制我们的服务器的出站或正常邮件接收。

我知道 MS Exchange 提供了类似的功能,但是我们是一家全 Linux/FreeBSD 商店,并使用 postfix 作为我们的邮件服务器。

答案1

IMAP 服务器提供过滤和访问控制,可用于“隐藏”邮件,同时几乎不影响邮件的传递。

在所有时间隐藏您不想看到的邮件(全局筛选过滤的示例代码,与 dovecot 配合使用):

if allof(
  anyof(
    envelope :is "To" "[email protected]",
    envelope :is "To" "[email protected]"
  ),
  not anyof (
    envelope :matches "From" "MAILER-DAEMON",
    address :domain "From" "ourcompany.example",
    address :domain "From" "emergencyservice.example"
  )
  anyof (
    date :zone "-0500" :is "received" "weekday" "6",
    allof(date :zone "-0500" :is "received" "weekday" "5",
          date :zone "-0500" :value "gt" "received" "hour" "21")
  )
) {
   fileinto :create "Embargo";
   stop;
}

在办公时间将邮件从 Embargo 文件夹移至 INBOX(以 Dovecot 为例):

$ cat /etc/cron.hourly/disembark
is_work_day || exit 0
doveadm -u "[email protected]" move INBOX mailbox Embargo
doveadm -u "[email protected]" move INBOX mailbox Embargo

然后,您可以拒绝访问 Embargo 邮箱(以 dovecot acl 为例)。

$ cat /mail/gobal.acl
Embargo anyone

我建议省略最后一步。不订阅“禁运”邮箱应该足以推动向正确的方向发展,同时不会产生强烈的动机来绕过该措施,以防特殊情况需要在不寻常的办公时间接收邮件。

注意事项

  • 这是针对非技术问题的技术解决方案:预计结果会不尽如人意
    • 措施的名称可能会对人们如何看待它产生很大影响
    • 例如禁运、抗压力、休息
  • 在实施之前,您可能需要考虑(办公室、邮件服务器)时区
    • sieve 可以帮你省去很多麻烦,但其他邮件过滤可能没那么慷慨
  • 简单的举动将打破现有的邮件分类
    • sieve-refilter可能会奏效,但尚未经过充分测试

相关内容