如何使用用户和路径将后缀输入通过管道传递给特定脚本?

How to pipe postfix input to a specific script with user and path?

如何将特定用户的电子邮件通过管道传输到脚本,并且该脚本 运行 具有特定用户的登录名。

我的 /etc/postfix/master.cf 文件中有这个:

my_transport unix  - n n - 50 pipe
  flags=R user=deploy argv=/srv/www/myscript

我的脚本将 $PATHwhoami 打印到一个文件中,这就是我得到的结果

PATH=/usr/bin:/bin
whoami = deploy

如果我 运行 sudo su - deploy 和 运行 echo "PATH=$PATH"echo "whoami = $(whoami)" 我得到

PATH=/home/deploy/.rbenv/shims:/home/deploy/.rbenv/bin:/home/deploy/.rbenv/shims:/home/deploy/.rbenv/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
whoami = deploy

如何将 postfix 运行 myscript 作为部署用户,但它是真实路径,而不是短路径。

谢谢!

我用一个新脚本做了一个肮脏的 hack,我用它来调用我的旧脚本

PATH=/home/deploy/.rbenv/bin:/home/deploy/.rbenv/shims:$PATH
source ""
exit $?

更多信息见this diff

希望这对其他人有用:D