无法使用/ etc / aliases将传入的邮件提供给自定义程序

在我的Mac中,这是我所遵循的:

  1. 以下是我正在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 
  2. 编辑了/etc/aliases并添加了这一行:

     username: "|/Users/username/stdinpipe.rb" 
  3. 编辑了/etc/postfix/main.cf并添加了这一行

     allow_mail_to_commands = alias,forward,include 
  4. 使用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所在的位置)。