后缀/别名中的管道

后缀/别名中的管道

可能重复:
如何配置 postfix 以将所有传入的电子邮件传送到脚本?

我在为 Redmine 设置简单管道时遇到问题(或'|cat > /tmp/temp')

在/etc/postfix/虚拟:

[email protected] support

在 /etc/postfix/别名中:

support: "|/opt/redmine-1.2.2/processemail.sh"

主配置文件

virtual_alias_maps = hash:/etc/postfix/virtual, mysql:/etc/postfix/mysql_virtual_forwards.cf
virtual_mailbox_domains = myhost.com, mysql:/etc/postfix/mysql_virtual_domains.cf
virtual_mailbox_maps = hash:/etc/postfix/virtual_alias, mysql:/etc/postfix/mysql_virtual_mailboxes.cf

alias_maps = hash:/etc/postfix/aliases
alias_database = $alias_maps

processemail.sh:

#!/bin/sh
/opt/redmine-1.2.2/extra/mail_handler/rdm-mailhandler.rb --url http://myhost.com --key f5obfctmGfqZWnOWNtR8 --project test --tracker support --allow-override tracker,project --verbose --unknown-user accept --no-permission-check

我已经跑了newaliases; postmap virtual; postalias aliases; postalias virtual_alias; newalias——是的,可能跑得有点过了,但还是没达到目的 :(

我运行了 newaliases 并重启了 postfix。邮件照常发送,但 /tmp 中没有添加任何内容

这是唯一一条提及的日志条目virtual

Dec 10 04:08:41 master postfix/virtual[3112]:
A3F46AD1BF: to=<[email protected]>, relay=virtual, delay=0.4,
delays=0.38/0.01/0/0.01, dsn=2.0.0, status=sent (delivered to maildir)

如果我cat someemail | processemail.sh在 shell 中运行,一切都会正常。Postfix 甚至不会运行 Processemail。

有谁知道哪里出了问题?或者我该如何启用更多日志记录?

答案1

管道别名由以下方式实现本地(8)后缀代理。

中继=虚拟

这意味着您正在使用虚拟(8)代理发货至[电子邮件保护]但你需要 本地(8)来获取该电子邮件。也许您使用虚拟作为您的 local_transport,或者您需要在您的“virtual_alias_maps”文件中放入类似以下内容的内容:

[电子邮件保护]支持@本地主机

postfix-用户线程并且 Postfix 文档可能会有所帮助。

答案2

/etc/aliases您可以在(或位于任何地方)使用简单的别名:

support: |/usr/local/bin/yourscripthandler

之后别忘了跑步newaliases

请注意,重定向(>/tmp/blah)是由 shell 处理的,并且据我所知,postfix 不会调用 shell 来运行你的命令;所以yourscripthandler应该是这样的:

#!/bin/sh
/usr/local/bin/theactualscripthandler >/tmp/dummy

相关内容