Unbeaufsichtigte Upgrades rufen meinen Computer „localhost“ anstelle seines Hostnamens auf

Unbeaufsichtigte Upgrades rufen meinen Computer „localhost“ anstelle seines Hostnamens auf

Auf einigen meiner Computer wird bei unbeaufsichtigten Upgrades eine E-Mail mit der Meldung gesendet, dass ein Neustart erforderlich ist. Darin steht:

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

Auf anderen wird der korrekte Hostname anstelle von „localhost“ angegeben. Wo kann ich das ändern, damit der Hostname richtig angegeben wird?

Antwort1

Soweit ich das beurteilen kann, wird in oder 127.0.0.1verwendet .::1/etc/hosts

Zeilen wie:

127.0.0.1  server.yourdomain.xx server localhost
::1 server.yourdomain.xx server localhost ip6-localhost ip6-loopback

macht es Ausgabe von Nachrichten mit server.yourdomain.xx
Getestet auf Debian-Tests

Antwort2

Auf unseren Systemen lag es offenbar an Unterschieden in der Art und Weise, wie das /usr/bin/unattended-upgradePython3-Skript versucht, den Namen seines Hosts herauszufinden.

Auf einigen Maschinen (Ubuntu 18.04) passiert Folgendes:

import os

#...

def host():
    # type: () -> str
    return os.uname()[1]

... während dies auf neueren Maschinen (Ubuntu 22.04) der Fall ist:

import socket

#...

def host():
    # type: () -> str
    return socket.getfqdn()

Es ist die letztere Version, host()die einfach zurückkehrt, "localhost"denn das ist es, wassocket.getfqdn()ohne Argumente gibt zurück.

Diese Änderung des unattended-upgradeSkripts wareingeführtzwischen Versionen1.3Und1.4.

Dieser Pull-Request enthält bereits einige Diskussionendarüber, dass es zu der beobachteten localhostRegression kommt, und es weist auch auf einen Workaround hin, der tatsächlich funktioniert:

Anstatt den gewünschten Hostnamen /etc/hostswie folgt aufzulisten:

127.0.0.1 localhost
127.0.0.1       my-hostname

... listen Sie es wie folgt auf:

127.0.0.1 localhost
127.0.1.1       my-hostname

... alles was ich jetzt brauche, ist ein Verständnis vonWarumDie Verwendung 127.0.1.1anstelle von 127.0.0.1lässt dies funktionieren ...

https://www.debian.org/doc/manuals/debian-reference/ch05.en.html#_die_Hostnamenauflösungträgt zwar dazu bei, die Richtigkeit der Lösung glaubwürdiger zu machen, liefert meiner Meinung nach jedoch immer noch nicht genügend Hintergrundinformationen zu den beteiligten Mechanismen und der Begründung.

Die Manpage zu hostname(1) enthält einen Abschnitt über den FQDNdas hilft, die Feinheiten der Namensauflösung in den Griff zu bekommen:

Die empfohlene Methode zum Festlegen des FQDN besteht darin, den Hostnamen mit , DNS oder NIS als Alias ​​für den vollqualifizierten Namen festzulegen /etc/hosts. Wenn der Hostname beispielsweise " ursula" lautet, könnte eine Zeile mit /etc/hostsfolgendem Inhalt vorhanden sein:

127.0.1.1 ursula.example.com ursula

Technisch: Der FQDN ist der Name, den getaddrinfo(3) für den von (2) zurückgegebenen Hostnamen zurückgibt gethostname. Der DNS-Domänenname ist der Teil nach dem ersten Punkt.

Daher hängt es von der Konfiguration des Resolvers (normalerweise in /etc/host.conf) ab, wie Sie ihn ändern können. Normalerweise wird die Hosts-Datei vor DNS oder NIS analysiert, daher ist es am üblichsten, den FQDN in zu ändern /etc/hosts.

Antwort3

Ändern Sie den Inhalt der entsprechenden Datei:etc/mailname:

Die Debian-Richtlinie besagt:

Wenn Ihr Paket wissen muss, welcher Hostname (beispielsweise) für ausgehende Nachrichten und lokal generierte E-Mail-Nachrichten verwendet werden soll, sollten Sie die Datei verwenden /etc/mailname. Sie enthält den Teil nach dem Benutzernamen und dem @-Zeichen (at) für die E-Mail-Adressen der Benutzer auf dem Computer (gefolgt von einer neuen Zeile).

Normalerweise ist das der FQDN-Name (derlangDer Servername (engl.: Name) des Servers, wie er von anderen Systemen aufgelöst wird.

Um die Dinge einfacher zu machen, konfigurieren Sie einfach das entsprechende Paket neu. Für die Standardeinstellung von Debian 10exim4Paket ist es eigentlichexim4-config:

dpkg-reconfigure -pcritical exim4-config

-pcriticalstellt sicher, dass wahrscheinlich keine Frage gestellt wird. Sie können es weglassen oder verringern, um -ploweinige oder alle dieser Fragen anzuzeigen.

Da OP nicht verwendetexim4Abermsmtp, in diesem Fall kann die Konfiguration mit folgendem ausgelöst werden:

dpkg-reconfigure msmtp

Wenn dies noch nie zuvor getan wurde, ist es wichtig, dass die Create a system wide configuration file?Antwort auf die erste Frage ( ) „Ja“ lautet, um die Folgefragen zu erhalten.

Es scheint auch, dass im Gegensatz zuexim4, das Konfigurationsskript (nach der Installation in /var/lib/dpkg/info/msmtp.config) sucht nicht nach /etc/mailnameund befolgt somit nicht die empfohlene Debian-Richtlinie.

verwandte Informationen