我已经花了两天时间来寻找这个问题的答案。
我在某处有一个虚拟服务器,并安装了 postfix/dovecot/mysql。它以某种方式工作。我可以使用创建的 MySQL 帐户登录 Outlook。
但我无法发送或接收电子邮件。我总是得到这些答案:
This message was created automatically by mail delivery software.
A message that you sent could not be delivered to one or more of its recipients.
This is a permanent error. The following address failed:
"[email protected]":
no valid MX hosts found
和
'[email protected]' am 21.11.2014 15:22
Server error: "554 5.7.1 <[email protected]>: Relay access denied"'
我更改了 named.conf.options 并添加了一个新的区域文件。我创建了区域文件并添加了 MX 记录。无论如何,我所做的更改似乎没有影响任何东西。
我的区域文件如下所示:
$TTL 604800
@ IN SOA mail.mydomain.com. (
1
10800
3600
604800
38400)
IN MX 10 mail.mydomain.com.
@ IN A 46.38.124.67
mail. IN A 46.38.124.67
我的 named.conf.options
options {
directory "/var/cache/bind";
forwarders {
8.8.8.8;
};
dnssec-validation auto;
auth-nxdomain no; # conform to RFC1035
listen-on {any;};
listen-on-v6 { any; };
};
zone "mail.mydomain.com" {
type master;
file "/etc/bind/db.mail.mydomain.com";
};
不管我如何配置或执行什么操作。使用 dig 总是得到相同的结果(例如,如果数据来自其他地方,而不是我的区域文件):
; <<>> DiG 9.9.5-3-Ubuntu <<>> mail.mydomain.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7485
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;mail.mydomain.com. IN A
;; ANSWER SECTION:
mail.mydomain.com. 6516 IN A 46.38.124.67
;; AUTHORITY SECTION:
mydomain.com. 63046 IN NS dns1.kontent.com.
mydomain.com. 63046 IN NS dns2.kontent.com.
;; ADDITIONAL SECTION:
dns1.kontent.com. 505 IN A 81.88.34.28
dns2.kontent.com. 1575 IN A 81.88.40.11
;; Query time: 2 msec
;; SERVER: 46.38.225.230#53(46.38.225.230)
;; WHEN: Fri Nov 21 19:14:13 CET 2014
;; MSG SIZE rcvd: 147
其他区域文件(db.0、db.127、db.255、db.empty、db.local、db.root)是否会覆盖我的配置?
请帮忙。我不是专家(在这方面显然 :-())。
更新 运行named-checkconf -zj:
dns_rdata_fromtext: /etc/bind/db.mail.branchconcept.de:7: near eol: unexpected end of input
/etc/bind/db.mail.branchconcept.de:8: ignoring out-of-zone data (branchconcept.de)
zone mail.branchconcept.de/IN: loading from master file /etc/bind/db.mail.branchconcept.de failed: unexpected end of input
zone mail.branchconcept.de/IN: not loaded due to errors.
_default/mail.branchconcept.de/IN: unexpected end of input
zone localhost/IN: loaded serial 2
zone 127.in-addr.arpa/IN: loaded serial 1
zone 0.in-addr.arpa/IN: loaded serial 1
zone 255.in-addr.arpa/IN: loaded serial 1
我的区域文件实际上看起来(经过几次尝试并具有真实值):
$TTL 604800
@ IN SOA mail.branchconcept.de. (
2011091202
10800
3600
604800
38400)
branchconcept.de. IN MX 10 mail.branchconcept.de.
我通过我的 ISP 添加了这些条目,但没有帮助:
*.branchconcept.de DNS A-Record 46.38.232.105
branchconcept.de DNS MX-Record (Priorität: 10) mail.branchconcept.de
*.branchconcept.de DNS-AAAA-Record 2002:2E26:E869:0:0:0:0:0
也许我会问它:假设 Postfix 和 Dovecot 安装在域名为 domain.com 的服务器上。我该如何
- 配置区域文件来获取邮件[电子邮件保护]?
- 在 Postfix 配置(main.cf)中我需要关注什么?
我定义了子域名 mail.domain.com,因为我认为有必要定义它。是这样吗?还是没有必要,我只需要像 @Shane 评论的那样为 domain.com 定义一个区域文件?我快疯了,因为我一点头绪都没有。
答案1
不管我如何配置或执行什么操作。使用 dig 总是得到相同的结果(例如,如果数据来自其他地方,而不是我的区域文件):
在您的输出中,我注意到您有 2 个 dns 服务器。
;; AUTHORITY SECTION:
mydomain.com. 63046 IN NS dns1.kontent.com.
mydomain.com. 63046 IN NS dns2.kontent.com.
您的域名服务器设置为使用 dns1/2.kontent.com,而不是您的配置。更新您购买域名的 DNS 服务器的配置或将其切换到您自己的名称服务器。
*.branchconcept.de DNS A-Record 46.38.232.105
branchconcept.de DNS MX-Record (Priorität: 10) mail.branchconcept.de
*.branchconcept.de DNS-AAAA-Record 2002:2E26:E869:0:0:0:0:0
您还应该为主域名添加 A 和 AAAA 记录,而不仅仅是 *.domainname.ext。
有点离题,但还是给你一些建议。你使用的 IP 没有设置反向 IP 指针。建议设置一个,请参阅此网站了解其背景信息。
其次,为了减少您的邮件被阻止或标记为垃圾邮件或有人伪造您的域名的可能性,建议设置 spf 记录,其中列出允许从您的域发送电子邮件的 IP 地址。这可以通过名称服务器设置中的简单文本条目来完成。
text = "v=spf1 ip4:1.2.3.4 ip6:abcd:ef12:34:5678::/128 ~all"
您还需要为您的域名设置 A 记录。目前,www.yourdomain.com 将解析为 IP,但 yourdomain.com 则不会。使用您的 IP 地址创建 A 和 AAAA 记录,名称为 @ 或 branchconcept.de。
此外,您的 DNS TTL 设置为 1 天。这意味着对记录的任何更改都需要一整天才能完全更新给客户端(这也许可以解释为什么您现在仍然遇到问题,我建议将时间缩短一点,也许 1 小时?)。
对于您的区域文件来说,这将是有效的,但是您的域名仍然指向 kontent.com 的 DNS 服务器。
$ORIGIN mydomain.com.
$TTL 1h
@ IN SOA mydomain.com admin.mydomain.com. (2014111401 1d 2h 4w 1h )
mydomain.com. IN NS ns.mydomain.com.
mydomain.com. IN A 46.38.124.67
mydomain.com. IN AAAA 2002:2E26:E869:0:0:0:0:0
ns.mydomain.com. IN A 46.38.124.67
ns.mydomain.com. IN AAAA 2002:2E26:E869:0:0:0:0:0
mydomain.com. IN MX 10 mail.mydomain.com.
mail IN A 46.38.124.67
mail IN AAAA 2002:2E26:E869:0:0:0:0:0
*.mydomain.com. IN A 46.38.124.67
*.mydomain.com. IN AAAA 2002:2E26:E869:0:0:0:0:0
编辑:再进行一点调查,您的 SMTP 服务器似乎不接受连接。请确保:- 没有防火墙阻止端口 25 连接 - 检查您的 postfix 配置文件并查找 inet_interfaces。
确保它不仅绑定到 localhost,还绑定到您的 ipv4 和 ipv6 地址。
至于进一步的配置,验证您的接收域名(postfix 配置文件中的 mydestination)和您将要使用的域名发电子邮件默认情况下。
2014 年 11 月 22 日更新 我尝试自己安装 postfix。我做了以下操作:
yum install postfix -y
然后我编辑了 postfix 配置文件:
- 编辑了 mydestination,添加了我的 .com 域名。(以逗号分隔)
- 编辑myorigin,设置为我的.com域名。
将 inet_interfaces 更改为我的公共 IP,以便可以从外部访问。此时,使用 mxtoolbox 的 SMTP 可以在 IP 上运行。
我添加了以下 DNS 记录:
mydomain.com mx priority 10 mail.mydomain.com
mail.mydomain.com A MY_IP
现在使用 telnet 发送邮件工作正常,但是我无法从其他服务器或 gmail 接收电子邮件。查看 sendmail 连接的地址后,我发现它正在使用 mydomain.com 的 A 记录。因此,将 mydomain.com 的 A 记录添加到我的邮件服务器 ip 后,我就可以接收电子邮件了。
由于您的 MX 记录正确,并且您的邮件服务器现在可以访问,您应该做的最后一件事是将 branchconcept.de 的 A 记录添加到您的服务器 IP。然后它应该可以正常工作。
我尝试测试您的邮件服务器,但它说没有已知的 root 用户,也没有您网站上列出的电子邮件用户(使用域名 @branchconcept.de)。您可能需要检查是否已设置用户。
简而言之,此时你应该做两件事:
- 设置你的主域名到你服务器的ip的A记录。
- 如果尚未完成,请设置用户名。
如果需要,您可以使用 sendmail 从另一台 Linux 服务器测试/调试邮件传递。
sendmail -v [email protected] < message.txt
其中 message.txt 是
Subject: Testing smtp.
MIME-Version: 1.0
Content-Type: text/plain
Hi there, just testing.
希望这会有所帮助并祝你好运!