将域的所有 Postfix 电子邮件通过管道传输到 PHP 脚本 - Centos7/EC2

将域的所有 Postfix 电子邮件通过管道传输到 PHP 脚本 - Centos7/EC2

我读过几篇文章,包括这里的帖子,但似乎没有一个清晰简洁的答案。

我在 AWS 上的 EC2 实例上运行着 CentOS7 的 Postfix。我想将某个域 (@support.mydomain.com) 的所有电子邮件定向到 PHP 脚本。服务器主机名未设置为域(主机名默认为 ip-1-2-3-4.awsregion.internal.compute)。

我已为 support.mydomain.com 设置了 MX 记录,以指向 www.mydomain.com。

据我所知,我需要一个virtual alias来处理域。

我努力了:

  • 添加@support.mydomain.com apache@localhost/etc/postfix/virtual
  • 跑步postmap /etc/postfix/virtual
  • 添加virtual_alias_maps = :hash:/etc/postfix/virtualinet_interfaces=all/etc/postfix/main.cf
  • 添加apache: "|php -q /var/www/mydomain/my-script.php"
  • 新别名
  • postfix 重新加载
  • 服务 Postfix 重启

/var/log/maillog显示电子邮件“454 4.7.1 中继访问被拒绝”错误 - 至少这表明 DNS/防火墙正常......

希望知道从这里可以去哪里或者从一开始就有新的指南。

答案1

令人惊讶的是,沃姆布尔斯的评论很有帮助,而且我非常接近回答了我最初的问题。

这对我有用。这是将一个域(不在主机名中)的所有电子邮件重定向/管道传输到使用 Postfix 的 CentOS 服务器上的 php 脚本(假设您已经处理了 DNS 和 selinux/防火墙):

  1. 虚拟别名

    通过更新将电子邮件重定向到本地用户/etc/postfix/virtual

    @support.mydomain.com apache@localhost

    使用 重建虚拟别名数据库postmap /etc/postfix/virtual

  2. 告诉 Postfix 使用我们的虚拟别名数据库/etc/postfix/main.cf

    virtual_alias_maps = hash:/etc/postfix/virtual

  3. 虚拟域

    使用虚拟域进行更新/etc/postfix/main.cf,以便它知道接受您域的电子邮件,否则您将收到“454 4.7.1 中继访问被拒绝”错误:

    virtual_alias_domains = support.mydomain.com

  4. 接受连接

    通过更新告诉 postfix 允许来自互联网(而不仅仅是本地)的连接/etc/postfix/main.cf

    inet_interfaces=all

  5. 更新别名

    更新/etc/aliases以将发往本地用户的电子邮件重定向到脚本:

    #apache:root(取消本地用户的任何现有条目的连接) apache: "|sudo /usr/bin/php -q /var/www/mydomain.com/my-script.php"

  6. 重建别名并重新启动 Postfix

    sudo newaliases sudo postfix reload sudo service postfix restart

我希望这对其他人有所帮助,似乎没有关于此的汇编/简明的帖子。

相关内容