Назад | Перейти на главную страницу

Postfix mailbox_command + netcat + nodejs

Я использую сценарий Node.js для обработки входящих писем и передачи их из Postfix через netcat в mailbox_command (а именно: nc 127.0.0.1 3002). Узел прослушивает порт 3002 и вызывает socket.destroy () после обработки электронной почты.

Однако похоже, что postfix не распознает эту команду и повторяет попытку. Что ж, я не уверен, что проблема связана с постфиксом, это всего лишь предположение. Некоторые факты:

  1. Сокет закрывается после обработки электронного письма. В противном случае после 12 входящих сообщений Node предупреждает о возможной утечке памяти. Поэтому я предполагаю, что выход из netcat не вызывает этой проблемы.
  2. Если я создаю процесс Node с mailbox_command (использующий stdin вместо сокета), который затем завершается с кодом 0, postfix не пытается снова вызвать mailbox_command.
  3. Если я использую параметр -q для netcat (например, nc -q 1 127.0.0.1 3002), узел ничего не получает

После обработки электронной почты я регистрирую временную метку. Это журнал для одного электронного письма:

розетка уничтожена: пт, 28 марта 2014 г. 05:07:25 GMT-0400 (EDT)

розетка уничтожена: пт, 28 марта 2014 г. 05:11:25 Разъем GMT-0400 (EDT) уничтожен: пт, 28 марта 2014 г. 05:11:25 GMT-0400 (EDT)

розетка уничтожена: пт, 28 марта 2014 г. 05:18:35 Разъем GMT-0400 (EDT) уничтожен: пт, 28 марта 2014 г. 05:18:35 Разъем GMT-0400 (EDT) уничтожен: пт, 28 марта 2014 г. 05:18:35 GMT-0400 (EDT)

розетка уничтожена: пт, 28 марта 2014 г. 05:18:51 Розетка GMT-0400 (EDT) уничтожена: пт, 28 марта 2014 г. 05:18:51 Разъем GMT-0400 (EDT) уничтожен: пт, 28 марта 2014 г. 05:18:51 Розетка GMT-0400 (EDT) уничтожена: пт, 28 марта 2014 г. 05:18:51 GMT-0400 (EDT)

Обратите внимание на выделенное время. Как видите, он повторяет n + 1 раз, но нет фиксированного тайм-аута.

Пожалуйста, помогите мне это исправить.