我在 Ubuntu 20.04 机器上设置了 Postfix。但是,我不确定我必须在哪里使用子域和域。让我们分别称它们为mail.example.com
和example.com
。
该系统是一个空客户端,发送电子邮件但不接收任何电子邮件(通过inet_interfaces = loopback-only
in实现/etc/postfix/main.cf
)。我打算[email protected]
专门发送消息。
- MX 记录是
@ IN MX 0 mail.example.com
. - 两者的记录都
@
指向mail
Postfix 服务器。 - 中提到的 TLS 证书是
/etc/postfix/main.cf
指mail.example.com
:smtpd_tls_cert_file=/etc/letsencrypt/live/mail.example.com/fullchain.pem
和smtpd_tls_key_file=/etc/letsencrypt/live/mail.example.com/privkey.pem
. - 随着
smtp_generic_maps = hash:/etc/postfix/generic
我重写user@hostname
为[email protected]
in/etc/postfix/main.cf
。 - 我添加了
masquerade_domains = example.com
in/etc/postfix/main.cf
以将mail.example.com
in[email protected]
替换为example.com
. 不知何故,这是行不通的。电子邮件仍然来自发件人[email protected]
。
相应的问题是:
- 我必须使用
@
或mail
在 MX 记录中吗? - TLS 证书是否必须引用
mail.example.com
或引用example.com
? - 应该
/etc/postfix/generic
先转换user@hostname
成[email protected]
还是直接转换成[email protected]
?
现在最正确的方法是在完全配置为服务的正确邮件服务上创建一个帐户
example.com
。(当然,这可能是您自己的服务器,这无关紧要。)然后,在您的空主机上,您只需将邮件服务器配置为智能主机,并使用 SASL 身份验证。虽然像这样设置 Postfix 是完全可能的(那里有很多手册,包括 Postfix 自己的),但我认为 Postfix 对于这种用途来说太过分了。考虑使用
nullmailer
,它完全适用于除了发起一些系统通知之外不对邮件做任何事情的系统。如果这不可能,请像这样设置 DNS:
example.com
MX 记录指向其正确的邮件服务。它与子域无关。nullhost.example.com. MX 10 .
,即指向无处。这明确表明您不打算接收任何[email protected]
. 如果您保护空主机的 smtpd 服务免受外部连接(防火墙tcp/25
、仅侦听localhost:25
等)的影响,则不需要这样做;但是,显式总是比隐式好。example.com
为发件人域的邮件,因此其邮件必须遵守该域的 DMARC 设置。否则行为正确的接收者将丢弃其邮件。最后一点,DMARC,可能会使事情变得相当复杂。如果设置安全,这意味着记录看起来像
_dmarc.example.com. TXT "v=DMARC1; p=reject; pct=100; ..."
,您需要在空主机上设置 SPF 和 DKIM 签名。SPF 很简单,只需在 SPF TXT 记录中添加“a:nullhost.example.com”即可。DKIM 具有挑战性,您需要创建额外的 DKIM 密钥对,选择一个选择器(nullhost
可能会这样做),将其公共对安装到 DNS 中nullhost._domainkey.example.com. TXT "... key data ..."
。然后直接在空主机上使用相应的私钥配置唱歌(并使用选择的选择器),我会为此使用 opendkim。我是否提到使用智能主机是首选方法?还有,你的问题。
@ MX
akaexample.com. MX
必须指向 example.com 的邮件转换器(接收邮件的系统[email protected]
)。它与任何子域的邮件无关。每个子域都是自己的邮件域。