无人值守升级将我的计算机称为“localhost”而不是其主机名

无人值守升级将我的计算机称为“localhost”而不是其主机名

在我的一些机器上,无人值守升级会发送一封电子邮件告诉我需要重新启动,并说:

[reboot required] unattended-upgrades result for localhost: SUCCESS

而在其他情况下,它指定正确的主机名而不是本地主机。我可以在哪里更改它以使其正确指定主机名?

答案1

据我所知,它使用127.0.0.1or 。::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-upgradepython3 脚本尝试找出其主机名的方式不同造成的。

在某些机器(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.31.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:

Debian 政策说:

如果您的包需要知道在本地生成的传出新闻和邮件消息上使用什么主机名,您应该使用该文件/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 策略。

相关内容