![在子域上为入站邮件设置的邮件服务器以触发 php 脚本](https://linux22.com/image/768752/%E5%9C%A8%E5%AD%90%E5%9F%9F%E4%B8%8A%E4%B8%BA%E5%85%A5%E7%AB%99%E9%82%AE%E4%BB%B6%E8%AE%BE%E7%BD%AE%E7%9A%84%E9%82%AE%E4%BB%B6%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%BB%A5%E8%A7%A6%E5%8F%91%20php%20%E8%84%9A%E6%9C%AC.png)
我正在尝试设置我的公司服务器,以便能够接收发送到我们主域的子域上的某个帐户的电子邮件,即:[电子邮件保护]
这些传入的邮件程序应该触发一个处理某些内容的 php 脚本。
我正在运行 Ubuntu Server 20.0.4,安装了 Postfix,安装了 Dovecot,我也尝试使用 courier,但它也在那里,但我无法让它运行
我已经走到这一步了:
- 我创建了一个 Linux 用户,并配置了 Postfix 以使用本地帐户作为有效邮箱
- 我配置了 postfix 来接受 subdomain.domain.com 的来信
- 我添加了子域名的 A 和 MX 记录,以便在 Google 域中正确路由
- 我在子域上配置了 SSL(确认在 ssllabs 中以及通过 apache 导航到该子域时正常工作)
- 我向 /etc/postfix/master.cf 添加了一些额外的配置来触发 php 脚本(现在只是一个测试脚本/占位符):
smtp inet n - - - - smtpd
-o content_filter=myhook:dummy
...
# PHP SCRIPT HOOK
myhook unix - n n - - pipe
flags=F user=www-data argv=/path/to/script/MailParser.php ${sender} ${size} ${recipient}
MailParser.php 脚本只是触发写入日志文件的操作,内容为“已成功接收来信timestamp
”
如果我通过 smtper.net 使用这些设置发送邮件
它成功触发脚本写入日志,我可以在用户的系统邮件中看到来自 smtper.net 的“测试”消息,所以一切看起来都很好。
但是,如果我尝试通过普通电子邮件客户端(例如我的 Gmail 帐户)发送邮件,则会收到无法送达的退回错误:
550 5.1.1 您尝试联系的电子邮件帐户不存在。请再次检查收件人的电子邮件地址是否有拼写错误或不必要的空格。了解更多信息https://support.google.com/mail/?p=NoSuchUserf16si1842833plj.1 - gsmtp
我被困在这一点上了。
答案1
正如 @anx 指出的那样,问题出在 MX 记录上。此外,域上的 SSL 证书未完全配置,因此也导致了问题。否则,我的本地服务器配置设置正确。