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

Экспорт переменной PATH на канале postfix

Я использую специальный транспорт для обработки входящей почты. Он используется для подписки и отказа от подписки на определенный канал.

twailer   unix  -       n       n       -       -       pipe
  flags=FR user=twailer argv=/home/twailer/twailer/bin/twailer

Бинарный файл twailer представляет собой файл Javascript и должен быть проанализирован с помощью узла, поэтому я добавил shebang

#!/usr/bin/env node

Но это не работает, потому что $PATH не экспортируется командой pipe. Согласно руководству, я могу указать, какие переменные среды передать в настройках export_environment в main.cf, поэтому я тоже это сделал.

export_environment = TZ MAIL_CONFIG LANG PATH=/usr/local/bin:/usr/bin:/bin

Но все равно не работает. Поэтому я заменил свой двоичный файл сценарием оболочки, который выводит текущий $PATH в stderr и я получаю

Command output: /usr/bin:/bin

что явно не то, что я настроил.

Любые идеи о том, как я могу передать свою переменную $ PATH?

Вместо того, чтобы пытаться заставить pipe (8) делать то, чего он не делает, подумайте об адаптации к тому, что он поддерживает:

twailer   unix  -       n       n       -       -       pipe
  flags=FR user=twailer argv="/usr/bin/node /home/twailer/twailer/bin/twailer"

Замените «/ usr / bin / node» реальным путем к вашему двоичному файлу.

Что касается ваших проблем со взломом в PATH: как указано в документации,

argv = command ... (обязательно) Команда для выполнения. Это должно быть указано как последний атрибут команды. Команда выполняется напрямую, т.е. без интерпретации метасимволов оболочки интерпретатором команд оболочки.