我正在使用自定义传输来处理收到的邮件。它用于订阅和取消订阅某个频道。
twailer unix - n n - - pipe
flags=FR user=twailer argv=/home/twailer/twailer/bin/twailer
twailer 二进制文件是一个 Javascript 文件,应该用 node 进行解析,因此我添加了 shebang
#!/usr/bin/env node
但那行不通,因为$PATH
管道命令没有导出。根据手册,我可以在export_environment
中指定要传入设置的环境变量main.cf
,所以我也这样做了。
export_environment = TZ MAIL_CONFIG LANG PATH=/usr/local/bin:/usr/bin:/bin
但它仍然不起作用。因此,我用一个将当前输出$PATH
到 stderr 的 shell 脚本替换了我的二进制文件,然后我得到了
Command output: /usr/bin:/bin
这显然不是我配置的。
关于如何传递 $PATH 变量有什么想法吗?
答案1
不要试图让 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...(必需)要执行的命令。这必须指定为最后一个命令属性。该命令直接执行,即 无需通过 shell 命令解释器解释 shell 元字符。