我希望正确设置 Postfix 以服务多个虚拟域,同时遵守所有标准并能够启用 SPF 等安全措施。
- 该服务器具有主机名
server.domain.tld
。 - Postfix 已
mydomain
设置为domain.tld
。 - Postfix 已
myhostname
设置为server.domain.tld
。 - Postfix 尚未设置
myorigin
任何内容。 - 该服务器托管几十个虚拟域。
- 所有用户都已设置
mail.tld
收发邮件服务器。 - 我希望 Postfix 能够像 一样对外界发挥作用
mail.tld
。
我的第一个想法是将mydomain
和设置myhostname
为mail.tld
。但似乎建议将 的反向查找mail.tld
解析为主机的 IP 地址(https://serverfault.com/a/366391/162258例如)。虽然我可以这样做,但我担心设置反向查找mail.tld
可能会导致问题,因为届时需要反向查找主机本身。
我如何才能实现 Postfix 的作用,mail.tld
并且能够指定mail.tld
为 MX 记录并使用 SPF、DKIM 和 DMARC,同时保留主机的 DNS 完整性server.domain.tld
?
答案1
我有一个类似的工作设置 - 我不使用 DKIM 或 DMARC,只使用 SPF 来对抗垃圾邮件。
这是我的 - 我以此为指南进行设置,虽然我 90% 都遵循它,但还是有一些不同之处 -https://workaround.org/ispmail/jessie
以下是我的各个主机名文件中的内容。像您一样,我托管了多个域,它们都运行良好。
反向 DNS 设置为mail.example.com
我通过独立方法获取 letsencrypt 证书,并在其上指定 example.com、mail.example.com 和 www.example.com 作为主机。
/etc/hostname
- mailserver
(适当映射到 127.0.0.1 /etc/hosts
)
/etc/mailname
-mail.example.com
我/etc/postfix/main.cf
对主机名或 FQDN 有以下引用 -
smtpd_tls_key_file = /etc/letsencrypt/live/example.com/privkey.pem
smtpd_tls_cert_file = /etc/letsencrypt/live/example.com/fullchain.pem
myhostname = mail.example.com
mydestination = $myhostname, mail.example.com, mailserver, localhost.localdomain, localhost
在我的main.cf
服务器上,我从 mysql 数据库中提取要服务的域以及用户和密码(按照我上面链接的操作方法)。一旦我在适当的表中输入域并在其下创建用户帐户或别名,我就可以作为邮件服务器(接收和发送)工作,如果其他域将mail.example.com
最高优先级(最低数字)MX 记录作为域,并且它们拥有的任何 SPF 记录都指定我的记录mail.example.com
可用于发送 - 我使用 MX 记录选项
example.com. TXT "v=spf1 a mx ptr ~all"
客户端连接到mail.example.com
提交 (使用 TLS/SSL) 和 pop3 和/或 imap (均使用 tls/ssl)。效果很好。