无法使用 /etc/aliases 将收到的邮件发送给自定义程序

无法使用 /etc/aliases 将收到的邮件发送给自定义程序

在我的 Mac 上,我遵循了以下步骤:

  1. 以下是我用来测试的 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疼痛的变化。

现在,在此阶段我希望当我向 username@localhost 发送邮件时它应该附加到/Users/username/sample.mail

但事实并非如此。

我哪里做错了?

答案1

默认情况下,OS X 中的 postfix 没有指定任何 alias_maps。您需要确保此行在 main.cf 中未被注释掉:

alias_maps = hash:/etc/aliases

此外,脚本必须可由 _postfix 用户执行。您要写入的文件必须由 _postfix 用户拥有并可写入

更正这些问题后,你需要重新加载 postfix:sudo postfix reload

答案2

您可能需要确保脚本可执行。例如,在脚本上运行 chmod a+x。此外,您的别名示例行有一个大写字母“/Users”,这是非常规的,并且 unix 尊重路径和文件中的大小写(与 windows 不同),因此请确保大小写匹配。

如果失败,您可以将“#!/usr/bin/env ruby​​”替换为“#!/usr/bin/ruby”(或您的 ruby​​ 所在的任何位置)。

相关内容