我有一个运行 sendmail 8.16 的 FreeBSD 机器。我有几个系统用户(测试机器人):robot1
,robot2
并且robot3
我希望他们由电子邮件控制。首先,他们应该能够接收电子邮件。所以我有以下几行/etc/mail/aliases
:
robot1: "| /usr/local/project/script"
robot2: "| /usr/local/project/script"
robot3: "| /usr/local/project/script"
这些机器人应该以完全相同的方式处理邮件,因此它们都使用相同的脚本。
问题是:sendmail 总是使用伪造的 uid 26(即“mailnull”特殊用户)为所有三个收件人调用该脚本。看起来 sendmail 守护进程在启动外部脚本之前会降级其在 fork 上的有效 gid/uid。这是完全合理的,但是:
问题是:如何使 sendmail 以各自的接收用户身份运行脚本,即robot1
当消息是 for 时robot1@localhost
、robot2
当消息是 for 时robot2@localhost
以及robot3
当消息是 for 时运行脚本robot3@localhost
?
显而易见的解决方案是拥有脚本的三个副本,使每个副本都有其各自的用户,并为每个机器人用户为其脚本副本添加别名。我想这应该可以解决问题,但是有点丑陋。所以我想知道是否有更好、更优雅的解决方案?