在我的Mac中,这是我所遵循的:
以下是我正在testing的ruby文件。 这是能够从STDIN读取和写入文件sample.mail:
#!/usr/bin/env ruby while line = STDIN.gets f = File.open("/Users/username/sample.mail", "a+") f.puts line f.close end
编辑了/etc/aliases并添加了这一行:
username: "|/Users/username/stdinpipe.rb"
编辑了/etc/postfix/main.cf并添加了这一行
allow_mail_to_commands = alias,forward,include
使用sudo newaliases疼痛的变化。
现在,在这个阶段,我希望当我发送邮件到用户名@本地主机时,它应该被追加到/Users/username/sample.mail 。
但是这并没有发生。
我在哪里做错了?
默认情况下,OS X中的后缀没有指定任何alias_maps。 你需要确保这行在main.cf中没有被注释掉:
alias_maps = hash:/etc/aliases
另外,该脚本必须由_postfix用户执行。 您要写入的文件必须由_postfix用户拥有和写入
在更正这些之后,您需要重新加载postfix:sudo postfix reload
您可能需要确保脚本是可执行的。 IE,在脚本上运行chmod a + x。 此外,你的别名示例行有一个大写的“/用户”,这是非常规的和Unix尊重path和文件(不像窗口)的情况下,所以要确保案件匹配。
如果失败了,你可以把“#!/ usr / bin / env ruby”replace为“#!/ usr / bin / ruby”(或者ruby所在的位置)。