Postfix mailbox_command + netcat + nodejs

Postfix mailbox_command + netcat + nodejs

我使用 Node.js 脚本来处理传入的电子邮件,并通过 mailbox_command 中的 netcat 将它们从 Postfix 传输出去(即:nc 127.0.0.1 3002)。Node 正在监听端口 3002,并在处理完电子邮件后调用 socket.destroy()。

但是,postfix 似乎无法识别命令成功并重试。好吧,我不确定这个问题是不是由 postfix 引起的,这只是一个建议。以下是一些事实:

  1. 处理完电子邮件后,套接字就会关闭。否则,在收到 12 条消息后,Node 会警告可能存在内存泄漏。因此,我认为 netcat 退出不会导致此问题。
  2. 如果我使用 mailbox_command 生成 Node 进程(使用 stdin 而不是套接字),然后以代码 0 退出,则 postfix 不会再次尝试调用 mailbox_command。
  3. 如果我对 netcat 使用 -q 选项(例如 nc -q 1 127.0.0.1 3002),节点不会收到任何信息

电子邮件处理完毕后,我会记录一个时间戳。这是一封电子邮件的日志:

套接字被销毁于:2014 年 3 月 28 日星期五05:07:25GMT-0400(美国东部夏令时间)

套接字被销毁于:2014 年 3 月 28 日星期五05:11:25GMT-0400 (EDT) 插座销毁时间:2014 年 3 月 28 日星期五05:11:25GMT-0400(美国东部夏令时间)

套接字被销毁于:2014 年 3 月 28 日星期五05:18:35GMT-0400 (EDT) 插座销毁时间:2014 年 3 月 28 日星期五05:18:35GMT-0400 (EDT) 插座销毁时间:2014 年 3 月 28 日星期五05:18:35GMT-0400(美国东部夏令时间)

套接字被销毁于:2014 年 3 月 28 日星期五05:18:51GMT-0400 (EDT) 插座销毁时间:2014 年 3 月 28 日星期五05:18:51GMT-0400 (EDT) 插座销毁时间:2014 年 3 月 28 日星期五05:18:51GMT-0400 (EDT) 插座销毁时间:2014 年 3 月 28 日星期五05:18:51GMT-0400(美国东部夏令时间)

注意突出显示的时间。如您所见,它会重试 n+1 次,但没有固定的重试超时。

请帮我修复这个问题。

相关内容