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

如何通过SMTP中继(可能是sendmail)延迟邮件传递,smtp,sendmail,Smtp,Sendmail,我需要通过SMTP中继延迟邮件传递 i、 e 在时间T成功接收邮件消息。 在T+4小时时将消息转发到目的地 这在sendmail或任何其他SMTP中继中都是可能的 部署平台是IBM AIX。您的问题至少应该更具体一点。无论如何,我只想提出一些建议 如果您只想每四小时发送一次邮件,则必须以仅队列模式(sendmail.conf中的queue_mode=“cron”)运行sendmail,并将队列设置为每四小时运行一次(queue_INTERVAL=“4h”)。我认为,这只适用于类似debian的系

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

i、 e

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

这在sendmail或任何其他SMTP中继中都是可能的


部署平台是IBM AIX。

您的问题至少应该更具体一点。无论如何,我只想提出一些建议

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

如果你只是想推迟邮件的投递,根据你为什么要这样做,还有很多方法可以做到。一种流行的解决方案是greylisting,它只执行以下操作-当主机连接到您的MTA(sendmail,f.ex.)时,会弹出提示,在某个时间间隔内重试。一个正确配置的邮件发送程序就可以做到这一点——它将再次尝试发送邮件,最终邮件将被接受并发送(或转发)。另一方面,大多数垃圾邮件机器人在收到错误后不会尝试重新发送邮件。如果您需要sendmail上的灰色列表,您可以在此处阅读:

希望这至少有点帮助

编辑:

好的,现在我知道你需要做什么了。下面是使用sendmail的可能解决方案(我已经用这种或那种方式处理sendmail很多年了,所以…:P):您可以使用其中两种方式

第一个只接收邮件并将其排队,而(这一点很重要)它无法处理队列。第二个sendmail实例运行一个单独的队列,其队列模式设置为daemon或cron(例如,每分钟)。现在,您只需要编写一个外部脚本,一旦到达消息的“期限”,它就会将邮件从第一个队列移动到第二个队列。由于队列项只是文件,所以这是一项简单的任务,只需几行代码,比如perl(见鬼,shell脚本也可以做到这一点)。将队列项目从一个队列移动到另一个队列就像将文件从一个目录移动到另一个目录一样简单。请注意,这种技术被广泛应用于邮件处理解决方案中,比如说spamassassin,所以这并不是我沮丧的头脑所想象的某种奇怪现象:P


希望这能给你一些提示。

这不是一个编程问题。我会回去澄清我的问题,但这两种解决方案都不会奏效。如果邮件在时间t到达,我需要在时间t+4小时将其转发。灰色列表将不起作用,因为邮件需要被中继接受并排队。是的,这使它更清楚。一开始我对如何做有些困惑(这不是人们通常用邮件做的事情),一个可能的解决方案突然出现在我的脑海中。