Я использую специальный транспорт для обработки входящей почты. Он используется для подписки и отказа от подписки на определенный канал.
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 ... (обязательно) Команда для выполнения. Это должно быть указано как последний атрибут команды. Команда выполняется напрямую, т.е. без интерпретации метасимволов оболочки интерпретатором команд оболочки.