我正在设置一个 Postfix 邮件服务器,主机名为“letters”,用于处理域“example.net”的邮件。我尝试使用 nis 将 letters 的域名设置为 example.net,但 hostname -f(“letters.stuff.comcast.net”)和 domainname(“example.net”)的输出不一致。我该如何设置域名以便 hostname -f 命令报告“example.net”?这对 Postfix 的正常运行到底有多重要?
主机信件运行 Ubuntu,并通过电缆调制解调器通过 OpenWRT 路由器连接到康卡斯特的互联网。域 example.net 的名称服务器位于远程 Debian 计算机上,该计算机尚未配置为创建主机或信件别名。
我认为主机名输出中的域名反映了盒子的 dhcp 客户端从 comcast 服务器获取的域名,并反映了盒子是该网络上的客户端的想法。解决方案是在名称服务器上为 example.net 创建“信件”主机吗?这是否还需要将该名称服务器添加到信件的 resolv.conf 文件中列出的服务器中?
答案1
确保您的/etc/hosts
(或 NIS)条目正确。
我本来想尝试解释一下,但是手册页的描述更清楚:
THE FQDN
You can't change the FQDN (as returned by hostname --fqdn) or the DNS
domain name (as returned by dnsdomainname) with this command. The FQDN
of the system is the name that the resolver(3) returns for the host
name.
[..]
Therefore it depends on the configuration (usually in /etc/host.conf)
how you can change it. Usually (if the hosts file is parsed before DNS
or NIS) you can change it in /etc/hosts.
答案2
昨天,我在处理其他人启动的服务器刷新时遇到了这个问题......主机名 -f 输出从来没有正确的结尾域(缺少 .org)。
# hostname foobar.example.org
# hostname -f
foobar.example
#
# cat /etc/hosts
10.20.11.244 foobar.example foobar
解决方案:
hostname -f 的域部分似乎来自该主机的 /etc/hosts 条目。在我修复了 /etc/hosts 中的主机名后,hostname -f 返回了正确的域:
# hostname foobar
# hostname
foobar
# hostname -f
foobar.example.org
因人而异。
答案3
如果您的 IP 不是静态的,则此方法/etc/hosts
对您不起作用(或只能暂时起作用,直到您获得新的 IP)。我不确定这是否会起作用,但可以尝试以下方法:
- 配置您的 dhcp 客户端,使其不从 dhcp 服务器请求域名。或者直接告诉它不要触碰 resolv.conf,如果您有自定义名称服务器,您可能已经这样做了。
- 将您的域名设置为 example.net
/etc/resolv.conf
- 确保您的名称服务器可以解析
letters.example.net
,我猜您将需要使用某种动态 DNS 服务,因为此解决方案适用于非静态 IP。
这可能意味着我对你的问题的回答很简单:“是”。
答案4
这是“域名”的一个常见误解问题。这是我的 Mac OS X 系统上的手册页顶部,但您的手册页应该类似:
DOMAINNAME(1) BSD General Commands Manual DOMAINNAME(1)
NAME
domainname -- set or print the name of the current NIS domain
此命令不用于DNS配置!