Автоматические обновления называют мою машину «localhost» вместо ее имени хоста

Автоматические обновления называют мою машину «localhost» вместо ее имени хоста

На некоторых моих компьютерах автоматическое обновление отправляет мне электронное письмо с сообщением о необходимости перезагрузки, в котором говорится следующее:

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

В то время как на других он указывает правильное имя хоста вместо localhost. Где я могу изменить это, чтобы он указал имя хоста правильно?

решение1

Насколько я могу судить, в нем используется оператор 127.0.0.1или .::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
Tested on Debian testing

решение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#_разрешение_имени_хостаЭто действительно служит для придания некоторой дополнительной уверенности в правильности решения, но для меня оно все еще не дает достаточной информации относительно задействованных механизмов и обоснования.

На странице руководства hostname(1) есть раздел о полном доменном именикоторый помогает разобраться в тонкостях разрешения имен:

Рекомендуемый метод установки FQDN — сделать имя хоста псевдонимом для полного имени с использованием /etc/hosts, DNS или NIS. Например, если имя хоста было " ursula", можно было бы иметь строку, в /etc/hostsкоторой читается

127.0.1.1 ursula.example.com ursula

Технически: FQDN — это имя, которое getaddrinfo(3) возвращает для имени хоста, возвращаемого gethostname(2). Имя домена DNS — это часть после первой точки.

Поэтому это зависит от конфигурации резолвера (обычно в /etc/host.conf), как вы можете изменить его. Обычно файл hosts анализируется до DNS или NIS, поэтому чаще всего меняют FQDN в /etc/hosts.

решение3

Измените содержимое соответствующего файла:etc/mailname:

Политика Debian гласит::

Если вашему пакету необходимо знать, какое имя хоста использовать для (например) исходящих новостей и почтовых сообщений, которые генерируются локально, вам следует использовать файл /etc/mailname. Он будет содержать часть после имени пользователя и знак @ (at) для адресов электронной почты пользователей на машине (за которыми следует новая строка).

Обычно это полное доменное имя (FQDN)длинныйимя) сервера, определенное другими системами.

Чтобы упростить задачу, просто перенастройте соответствующий пакет. Для Debian 10 по умолчаниюexim4пакет это на самом делеexim4-config:

dpkg-reconfigure -pcritical exim4-config

-pcriticalгарантирует, что, вероятно, не будет задан ни один вопрос. Вы можете пропустить его или уменьшить его до , -plowчтобы увидеть некоторые или все эти вопросы.

Поскольку ОП не используетexim4ноmsmtpв этом случае конфигурация может быть запущена с помощью:

dpkg-reconfigure msmtp

Если этого никогда не делалось ранее, важно, чтобы Create a system wide configuration file?ответ на первый вопрос ( ) был «Да», чтобы получить последующие вопросы.

Также представляется, что вопрекиexim4, скрипт конфигурации (после установки в /var/lib/dpkg/info/msmtp.config) не проверяет /etc/mailname, таким образом не следуя рекомендуемой политике Debian.

Связанный контент