如何通过SMTP中继(可能是sendmail)延迟邮件传递

时间:2009-05-07 16:34:38

标签: smtp sendmail

我要求通过SMTP Relay延迟邮件传递。

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

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

部署平台是IBM AIX。

1 个答案:

答案 0 :(得分:2)

在你的问题中你应该至少更具体一点。不过我还是会提出一些建议。

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

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

希望这至少有一点帮助。

编辑:

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

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

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