
Em algumas das minhas máquinas, as atualizações autônomas enviam um e-mail informando que é necessária uma reinicialização e dizem:
[reboot required] unattended-upgrades result for localhost: SUCCESS
Enquanto em outros, especifica o nome do host correto em vez de localhost. Onde posso alterar isso para especificar o nome do host corretamente?
Responder1
Pelo que eu sei, ele usa o 127.0.0.1
or ::1
in /etc/hosts
.
Linhas como:
127.0.0.1 server.yourdomain.xx server localhost
::1 server.yourdomain.xx server localhost ip6-localhost ip6-loopback
faz com que ele produza mensagens com server.yourdomain.xx
testes Tested on Debian
Responder2
Em nossos sistemas, isso pareceria ser devido a diferenças em como o /usr/bin/unattended-upgrade
script python3 tenta descobrir o nome de seu host.
Em algumas máquinas (Ubuntu 18.04) isso acontece:
import os
#...
def host():
# type: () -> str
return os.uname()[1]
... enquanto em máquinas mais recentes (Ubuntu 22.04) isso acontece:
import socket
#...
def host():
# type: () -> str
return socket.getfqdn()
É a última versão host()
que simplesmente retorna "localhost"
porque é isso quesocket.getfqdn()
sem argumentos retorna.
Essa mudança no unattended-upgrade
roteiro foiintroduzidoentre versões1.3
e1.4
.
Essa solicitação pull já inclui alguma discussãosobre isso, introduzindo a localhost
regressão observada, e também sugere uma solução alternativa que realmente funciona:
Em vez de listar o nome do host desejado /etc/hosts
como:
127.0.0.1 localhost
127.0.0.1 my-hostname
... liste-o como:
127.0.0.1 localhost
127.0.1.1 my-hostname
... tudo que preciso agora é uma compreensão depor queusar 127.0.1.1
em vez de 127.0.0.1
faz isso funcionar ...
https://www.debian.org/doc/manuals/debian-reference/ch05.en.html#_the_hostname_resolutionserve para fornecer alguma credibilidade extra quanto à correcção da solução, mas para mim ainda não fornece informações suficientes sobre os mecanismos envolvidos e a fundamentação.
A página de manual para hostname
(1) possui uma seção no FQDNisso ajuda a entender as complexidades da resolução de nomes:
O método recomendado para configurar o FQDN é fazer com que o nome do host seja um alias para o nome totalmente qualificado usando
/etc/hosts
, DNS ou NIS. Por exemplo, se o nome do host for "ursula
", pode-se ter uma linha na/etc/hosts
qual se lê127.0.1.1 ursula.example.com ursula
Tecnicamente: O FQDN é o nome
getaddrinfo
(3) retornado para o nome do host retornado porgethostname
(2). O nome de domínio DNS é a parte após o primeiro ponto.Portanto, depende da configuração do resolvedor (geralmente em
/etc/host.conf
) como você pode alterá-lo. Normalmente o arquivo hosts é analisado antes do DNS ou NIS, por isso é mais comum alterar o FQDN no formato/etc/hosts
.
Responder3
Altere o conteúdo do arquivo relevante:etc/mailname
:
Se o seu pacote precisa saber qual nome de host usar (por exemplo) em notícias de saída e mensagens de email geradas localmente, você deve usar o arquivo
/etc/mailname
. Ele conterá a parte após o nome de usuário e o sinal @ (arroba) para endereços de e-mail de usuários na máquina (seguido por uma nova linha).
Geralmente esse é o nome FQDN (olongonome) do servidor conforme resolvido por outros sistemas.
Para simplificar as coisas, basta reconfigurar o pacote relevante. Para o padrão do Debian 10exim4pacote é na verdadeexim4-config
:
dpkg-reconfigure -pcritical exim4-config
-pcritical
garante que provavelmente nenhuma pergunta será feita. Você pode omiti-lo ou diminuí-lo para -plow
ver algumas ou todas essas perguntas.
Como o OP não está usandoexim4masmsmtp, para este caso a configuração pode ser acionada com:
dpkg-reconfigure msmtp
Se isso nunca foi feito antes, é importante que a Create a system wide configuration file?
resposta da primeira pergunta ( ) seja Sim, para obter as perguntas de acompanhamento.
Parece também que, ao contrário do queexim4, o script de configuração (uma vez instalado, em /var/lib/dpkg/info/msmtp.config
) não verifica /etc/mailname
, portanto não segue a política Debian recomendada.