如何限制在Linux / Postfix主机上的传出电子邮件?

背景:我是戴维·艾伦“ 做事已做”的粉丝,这意味着当一封电子邮件到达我的收件箱,如果我可以立即回复,我想这样做,并保持我的收件箱清晰。 但有一个问题:如果我立即回复,我得到答复的机会就会上升。 所以我想通过拖延一些传出的消息来限制我的电子邮件。 一个小时,四个小时,甚至一天的延误将适合我的需求。

我的问题是如何在运行postfix的Linux系统上最好地实现这个想法?

这里有几点意见:

  • 我可以很容易地把一个X-Delay:头部放在任何传出的消息中,说这个消息应该被延迟多less。
  • 我可以很容易地介入我的邮件用户代理和sendmail之间的东西。
  • 电子邮件是我接近任务关键的服务。 发出的邮件必须完全可靠。
  • 我想避免复制已经在Postfix中的可靠队列服务。
  • 看来Postfix 几乎已经有我想要的了。 有一个名为header_checks(5) ,它将检查标题并采取行动,但是,虽然有将邮件放入“保留”队列的动作,但没有将邮件放入“延迟”队列的动作。 如果我可以可靠地将邮件以适当的时间戳(即将来N小时)发送到“延期”队列,我认为我的问题将得到解决。

所有的build议是受欢迎的,虽然我不希望在修补Postfix的业务…

我放弃了使用postfix来解决这个问题。 相反,我发现一个比较干净的方法来解决使用MH,这是我已经使用了15年以上的邮件:

  1. 应该延迟N小时的发出邮件由MH“草稿文件夹” +delayN

  2. 当我完成邮件的撰写工作时,为了确保邮件whatnow邮件夹中发送,我修改了一个whatnow程序,如果邮件存储在一个名字为“ delayNNN ,其中NNN是一个非空的数字序列。

  3. 我的每小时cron作业检查所有相关的文件夹和船舶足够大的文件(详细消息):

     for path in $MAIL/delay*[0-9] do minutes=... for outgoing in $(find $path -mmin +$minutes -name '[0-9]*') do folder=... msg=... send -draftfolder +$folder -draftmessage $msg done done