0

我需要通过 SMTP 中继延迟邮件传递。

IE

在时间 T 成功接收到邮件消息。在时间 T+4 小时将消息转发到目的地。

这在 sendmail 或任何其他 SMTP 中继中是否可能。

部署平台是 IBM AIX。

4

1 回答 1

2

你的问题至少应该更具体一点。无论如何我都会提出一些建议。

如果您只想每四个小时发送一次邮件,则必须以仅队列模式运行 sendmail(QUEUE_MODE="cron"; 在 sendmail.conf 中)并将队列设置为每四个小时运行一次(QUEUE_INTERVAL="4h" ;)。我认为,这仅适用于类似 debian 的系统,但原理在任何地方都是相同的 - 您将队列模式设置为 cron(这实际上是由启动 sendmail 的参数控制),然后定期处理它。

如果您只想延迟邮件传递,也有多种方法可以做到这一点,具体取决于您要这样做的原因一种流行的解决方案是graylisting,它只是执行以下操作 - 当主机连接到您的 MTA(sendmail,f.ex.)时,它会被退回,并提示您在某个时间间隔内重试。正确配置的邮件程序会这样做 - 它会尝试再次发送邮件,最终邮件将被接受并传递(或转发)。另一方面,大多数垃圾邮件机器人在收到错误后不会尝试重新发送邮件。如果您需要将 sendmail 列入灰名单,您可以在此处阅读:http: //www.greylisting.org/implementations/sendmail.shtml

希望这至少有一点帮助。

编辑:

好的,现在我知道你需要做什么了。这是使用 sendmail 的可能解决方案(多年来,我一直在以一种或另一种方式处理 sendmail,所以.. :P):您使用其中两个。

第一个只是接收邮件并将其排队,并且(这很重要)它不会处理队列。第二个 sendmail 实例运行一个单独的队列,它的 QUEUE_MODE 设置为 daemon 或 cron(例如,每分钟)。现在您只需要编写一个外部脚本,一旦达到消息的“年龄”,它将把邮件从第一个队列移动到第二个队列。由于队列项目只是文件,因此这是一项简单的任务,只需几行,例如 perl 即可完成(地狱,shell 脚本也可以做到这一点)。将队列项从一个队列移动到另一个队列就像将文件从一个目录移动到另一个目录一样简单。请注意,这种技术被广泛用于邮件处理解决方案,例如 spamassassin,所以它不是什么奇怪的东西,由我病态的头脑想到:P

希望这能给你一两个提示。

于 2009-05-07T17:22:23.457 回答