我读过几篇文章,包括这里的帖子,但似乎没有一个清晰简洁的答案。
我在 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/virtual
和inet_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/防火墙):
虚拟别名
通过更新将电子邮件重定向到本地用户
/etc/postfix/virtual
:@support.mydomain.com apache@localhost
使用 重建虚拟别名数据库
postmap /etc/postfix/virtual
。告诉 Postfix 使用我们的虚拟别名数据库
/etc/postfix/main.cf
:virtual_alias_maps = hash:/etc/postfix/virtual
虚拟域
使用虚拟域进行更新
/etc/postfix/main.cf
,以便它知道接受您域的电子邮件,否则您将收到“454 4.7.1 中继访问被拒绝”错误:virtual_alias_domains = support.mydomain.com
接受连接
通过更新告诉 postfix 允许来自互联网(而不仅仅是本地)的连接
/etc/postfix/main.cf
:inet_interfaces=all
更新别名
更新
/etc/aliases
以将发往本地用户的电子邮件重定向到脚本:#apache:root
(取消本地用户的任何现有条目的连接)apache: "|sudo /usr/bin/php -q /var/www/mydomain.com/my-script.php"
重建别名并重新启动 Postfix
sudo newaliases
sudo postfix reload
sudo service postfix restart
我希望这对其他人有所帮助,似乎没有关于此的汇编/简明的帖子。