如何限制 Linux/Postfix 主机上的外发电子邮件速率?

如何限制 Linux/Postfix 主机上的外发电子邮件速率?

背景:我是 David Allen 的粉丝把事情做好,这意味着当一封电子邮件到达我的收件箱时,如果我可以立即回复,我会这样做并保持收件箱畅通。但有一个问题:如果我立即回复,我收到回复的机会就会增加。所以我想速率限制我的电子邮件延迟发送一些消息。延迟一小时、四小时甚至一天都适合我的需要。

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

以下是一些观察结果:

  • 我可以轻松地X-Delay:在任何发出的消息中添加一个标题,以说明该消息应该延迟以及延迟多少。
  • 我可以轻松地在我的邮件用户代理和之间插入一些东西sendmail
  • 电子邮件是我接触到的最接近关键任务的服务。发送邮件必须绝对可靠。
  • 我想避免重复 Postfix 中已有的可靠队列服务。
  • 看来 Postfix几乎已经有我想要的东西了。有一个名为的工具header_checks(5)可以检查标题并采取行动,但尽管有将邮件放入“保留”队列的操作,但没有将邮件放入“延迟”队列的操作。如果我能可靠地将电子邮件放入具有合适时间戳(即未来 N 小时)的“延迟”队列,我想我的问题就解决了。

欢迎提出所有建议,尽管我不想从事修补 Postfix 的工作……

答案1

我放弃了使用 postfix 来解决这个问题。相反,我找到了一个相对干净的方法来解决这个问题,使用 MH,这是我使用了 15 年多的邮件程序:

  1. 一封需要延迟 N 小时发送的邮件在 MH 的“草稿文件夹”中撰写完成+delayN

  2. 当我撰写完邮件后,为了确保将邮件留在文件夹中而不是发送出去,我修改了一个whatnow程序,如果消息存储在名称形式为的文件夹中,则将视为send的同义词,其中是非空的数字序列。quitdelayNNNNNN

  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
    

相关内容