在我的一些机器上,无人值守升级会发送一封电子邮件告诉我需要重新启动,并说:
[reboot required] unattended-upgrades result for localhost: SUCCESS
而在其他情况下,它指定正确的主机名而不是本地主机。我可以在哪里更改它以使其正确指定主机名?
答案1
据我所知,它使用127.0.0.1
or 。::1
/etc/hosts
像这样的行:
127.0.0.1 server.yourdomain.xx server localhost
::1 server.yourdomain.xx server localhost ip6-localhost ip6-loopback
使其server.yourdomain.xx
在 Debian 测试中通过 Tested输出消息
答案2
在我们的系统上,这似乎是由于/usr/bin/unattended-upgrade
python3 脚本尝试找出其主机名的方式不同造成的。
在某些机器(Ubuntu 18.04)上它会:
import os
#...
def host():
# type: () -> str
return os.uname()[1]
...而在较新的机器(Ubuntu 22.04)上它会:
import socket
#...
def host():
# type: () -> str
return socket.getfqdn()
host()
它只是返回的后一个版本,"localhost"
因为这就是socket.getfqdn()
不带参数返回。
对脚本的修改unattended-upgrade
是介绍版本之间1.3
和1.4
。
该请求已经包含了一些讨论关于它引入了观察到的localhost
回归,它还暗示了一种确实有效的解决方法:
而不是将所需的主机名列为/etc/hosts
:
127.0.0.1 localhost
127.0.0.1 my-hostname
...将其列为:
127.0.0.1 localhost
127.0.1.1 my-hostname
...我现在需要的只是了解为什么使用127.0.1.1
而不是127.0.0.1
使这项工作......
https://www.debian.org/doc/manuals/debian-reference/ch05.en.html#_the_hostname_resolution确实为解决方案的正确性提供了一些额外的可信度,但对我来说,它仍然无法提供有关所涉及机制和理由的足够背景。
(1)的联机帮助页中hostname
有一个关于 FQDN 的部分这有助于掌握名称解析的复杂性:
/etc/hosts
设置 FQDN 的建议方法是使主机名成为使用、DNS 或 NIS 的完全限定名称的别名。例如,如果主机名是“ursula
”,则可能有一行内容/etc/hosts
为127.0.1.1 ursula.example.com ursula
从技术上讲:FQDN 是
getaddrinfo
(3) 返回的 (2) 返回的主机名的名称gethostname
。 DNS 域名是第一个点之后的部分。因此,这取决于解析器的配置(通常在 中
/etc/host.conf
)如何更改它。通常,hosts 文件在 DNS 或 NIS 之前解析,因此最常见的是更改/etc/hosts
.
答案3
更改相关文件的内容:etc/mailname
:
如果您的包需要知道在本地生成的传出新闻和邮件消息上使用什么主机名,您应该使用该文件
/etc/mailname
。它将包含用户名和@(at)符号之后的部分,表示计算机上用户的电子邮件地址(后跟换行符)。
通常这是 FQDN 名称(长的由其他系统解析的服务器的名称)。
为了简单起见,只需重新配置相关包即可。对于 Debian 10 的默认设置出口4包其实是exim4-config
:
dpkg-reconfigure -pcritical exim4-config
-pcritical
确保可能不会提出任何问题。您可以忽略它或降低它以-plow
查看部分或全部这些问题。
由于OP没有使用出口4但邮件传输协议,对于这种情况,可以通过以下方式触发配置:
dpkg-reconfigure msmtp
如果以前从未这样做过,那么第一个问题(Create a system wide configuration file?
)的答案是“是”很重要,以便得到后续问题。
似乎也与出口4,配置脚本(安装后,在 中/var/lib/dpkg/info/msmtp.config
)不会检查/etc/mailname
,因此不遵循推荐的 Debian 策略。