dovecot 认为 pipe 的别名是用户,因此拒绝电子邮件

dovecot 认为 pipe 的别名是用户,因此拒绝电子邮件

我有一个运行 Amazon Linux 的 AWS EC2 实例,使用 Postfix 来提供邮件服务。我只有本地用户——没有虚拟用户——我的用户和别名通过 PostgreSQL 提供服务。我aliases在 psql 中的表如下所示:

 alias | email
-------+---------------------------------------------------------------------
 doc   | | /usr/bin/php /var/www/vhosts/mydomain.com/httpsdocs/app/pipe.php

当我发送电子邮件至[电子邮件保护]并查看邮件日志,我看到以下内容:

May 18 21:22:35 ip-172-30-0-33 dovecot: auth: userdb(?): Username character disallowed by auth_username_chars: 0x7c (username: |/usr/bin/php /var/www/vhosts/mydomain.com/httpsdocs/app/[email protected])
May 18 21:22:35 ip-172-30-0-33 dovecot: auth: Debug: userdb out: NOTFOUND#0111
May 18 21:22:35 ip-172-30-0-33 dovecot: lmtp(11981): Debug: auth input:
May 18 21:22:35 ip-172-30-0-33 postfix/lmtp[11980]: 9992660E42: to=<|/usr/bin/php /var/www/vhosts/mydomain.com/httpsdocs/app/[email protected]>, relay=mail.mydomain.com[private/dovecot-lmtp], delay=0.03, delays=0/0.01/0/0.01, dsn=5.1.1, status=bounced (host mail.mydomain.com[private/dovecot-lmtp] said: 550 5.1.1 <|/usr/bin/php /var/www/vhosts/mydomain.com/httpsdocs/app/[email protected]> User doesn't exist: |/usr/bin/php /var/www/vhosts/mydomain.com/httpsdocs/app/[email protected] (in reply to RCPT TO command))

此外,它不喜欢管道字符,我也不能将管道路径括在引号中,因为这些也会被拒绝。

让 Postfix 转发电子邮件到的解决方案是什么文档@当别名在 PostgreSQL 中时添加到脚本中?

谢谢您的帮助!

(PS - 我对这一切都是新手,正在摸索着设置这个服务器。请温柔一点...)

答案1

处理邮件传输并“分支”传输链是邮件传输代理的工作,而 Dovecot 不是。我不知道 Dovecot 是否支持将邮件“投递”到管道。请使用真正的 MTA,如 Postfix 或 Exim。

如果您坚持使用 Dovecot,您可能能够围绕以下替代方案进行构建(但我强烈建议在 Dovecot 前面插入 Postfix,您可能已经有一个了):

  • Dovecot 的 Sieve 实现可用于过滤和处理正在传递的传入消息。除了许多其他操作外,Dovecot 还具有用于执行脚本的专有扩展
  • 编写您自己的 Dovecot 插件,但关于此的文档很少。
  • 邮件过滤器不会帮助您,因为他们可能不会抑制消息(他们必须提供双向进出过滤器,并且应用两者必须返回原始消息)。

相关内容