我在 CentOS 6 中使用 postfix/dovecot 构建了自己的邮件服务器,这是我的 postconf -n 结果:
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
debug_peer_level = 2
home_mailbox = Maildir/
html_directory = no
inet_interfaces = localhost
inet_protocols = all
mail_owner = postfix
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
mydomain = example.com
myhostname = mail.example.com
mynetworks = 168.100.189.0/28, 127.0.0.0/8
myorigin = $mydomain
newaliases_path = /usr/bin/newaliases.postfix
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/postfix-2.6.6/README_FILES
relay_domains =
sample_directory = /usr/share/doc/postfix-2.6.6/samples
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
unknown_local_recipient_reject_code = 550
我尝试使用 telnet 来测试我的电子邮件并且确实将它们放在 /home/user/Maildir/new 文件夹中。
我认为邮件服务器一切正常,因此我继续将 MX 记录添加到我的 DNS 设置中。
这是我第一次使用 Cloudflare 的免费 DNS 服务,我承认我对此并不是最了解的人,但我在其中添加了一些记录:
- 墨西哥-@=>mail.example.com
- A- mail.example.com => 我的 VPS ip(邮件服务器所在的位置)
MX 记录似乎已到位,快速“挖掘 MX example.com”确实会产生结果。现在的问题是……即使我创建了记录mail.example.com,通过 dig 看到的实际条目是dc-8c1937cd-mail.example.com。,DNS记录中似乎附加了一个字符串。
此后,我尝试从外部来源(非 telnet)发送电子邮件,但没有成功。我是否需要重新配置 postfix 并将 myhostname 设置为 dc-8c1937cd-mail.example.com?我是否遗漏了 DNS 的某些内容,还是这只是 Cloudflare 的运作方式?我的邮件服务器是否配置不正确?(我的 telnet 测试日志看起来不错)
答案1
问题是inet_interfaces = localhost
,导致 postfix 仅在本地监听端口 25,将其设置为inet_interfaces = all
已修复该问题。
答案2
在 CloudFlare DNS 设置中,确保您有一个用于mail
A 记录的“灰色”云,以便与该主机的连接绕过 CloudFlare 并直接转到您的邮件服务器。
除此之外,您的 DNS 似乎处于可行的配置中,并且您(自己承认)成功接收邮件。
答案3
下一步是检查您的服务器并检查 /var/log/maillog(postfix)以及 dovecot 日志。
如果您正在向自己发送电子邮件进行测试,您应该会在 Postfix 日志中看到连接,如果有任何错误。
如果邮件通过 postfix 发送,它将被本地处理器接收,例如 dovecot