AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 437931
Accepted
Madoc Comadrin
Madoc Comadrin
Asked: 2018-04-16 10:03:18 +0800 CST2018-04-16 10:03:18 +0800 CST 2018-04-16 10:03:18 +0800 CST

Atualizações autônomas não usarão mailx quando executadas pelo Systemd

  • 772

Eu configurei unattended-upgradesem servidores rodando Raspbian ( Raspbian GNU/Linux 9.4 (stretch)). Versão das atualizações autônomas:0.93.1+nmu1

As atualizações funcionam, mas estou tendo problemas com os relatórios por e-mail. Eu quero usar mailxpara enviar relatórios. Se eu executar a atualização com o comando unattended-upgrade -v -d, o relatório será enviado e usará a configuração de e-mail que tenho em /root/.mailrc.

Quando unattended upgradessão executados pelo timer Systemd ( apt-daily-upgrade.timer), no entanto, ele não usará mailx.

Se sendmailestiver presente, é usado para enviar o e-mail. Nesse caso, o e-mail é enviado, mas o remetente é root@hostnamee as mensagens são sinalizadas como spam.

Se não houver sendmail, vejo este erro no diário de apt-daily-upgrade:

Cannot start "/usr/sbin/sendmail": executable not found (adjust *sendmail* variable)

Não consigo entender por que diferentes programas de email são usados ​​dependendo de como a tarefa foi iniciada.

Eu tentei editar o unattended-upgradesprograma Python para forçá-lo a usar mailx:

if os.path.exists(SENDMAIL_BINARY):
        ret = _send_mail_using_sendmail(from_email, to_email, subject, body)
    elif os.path.exists(MAIL_BINARY):
        ret = _send_mail_using_mailx(from_email, to_email, subject, body

Eu mudei a variável SENDMAIL_BINARYpara apontar para um caminho inexistente para que fosse forçado a usar mailx. Isso também funcionou quando invocado unattended-upgradesmanualmente, mas falhou quando foi executado pelo Systemd. (E o erro acima sobre tentar usar sendmailainda é registrado.)

Como posso forçar unattended upgradeso uso mailxmesmo quando é executado automaticamente pelo systemd e o que está causando a diferença no programa Mail que é usado?

EDITAR:

Arquivo de unidade do sistema que executa atualizações autônomas:

[Unit]
Description=Daily apt upgrade and clean activities
Documentation=man:apt(8)
ConditionACPower=true
After=apt-daily.service

[Service]
Type=oneshot
ExecStart=/usr/lib/apt/apt.systemd.daily install
KillMode=process
TimeoutStopSec=900
systemd sendmail
  • 2 2 respostas
  • 1686 Views

2 respostas

  • Voted
  1. Best Answer
    Mark Stosberg
    2018-04-16T13:09:28+08:002018-04-16T13:09:28+08:00

    Sua pergunta é uma variação do FAQ Por que as coisas funcionam de maneira diferente no systemd? .

    Um dos benefícios do systemdé que ele fornece um ambiente de execução consistente. Para errar no lado da segurança e simplicidade, as variáveis ​​de ambiente definidas são mínimas.

    Os documentos relacionados ao systemdambiente de execução detalham o que está definido.

    Você mencionou que sua configuração estava no rootdiretório inicial. man mailxconfirma que está olhando para dentro ~/.mailrc, ao contrário do caminho fixo /root/.mailrc.

    Os systemddocumentos esclarecem que a $HOMEvariável só é definida quando a User=diretiva é usada. Você não compartilhou seu systemdarquivo de serviço, mas presumo que, como está executando a tarefa como root, não usou a User=diretiva. Isso pode explicar parte do seu problema.

    Também parece que um caminho que você deseja pode não ser definido por sua $PATHvariável de ambiente quando executado por systemd. Você pode confirmar isso substituindo a ExecStart=linha em seu serviço por:

     ExecStart=/bin/echo "My path is $PATH"
    

    Se o mailxcaminho não estiver listado, você pode definir explicitamente com uma Environment=diretiva.

    Se essas dicas explícitas não resolverem seu problema, verifique as perguntas frequentes no link acima para obter mais possibilidades.

    • 3
  2. Sicco
    2020-04-23T05:48:33+08:002020-04-23T05:48:33+08:00

    Eu uso msmtpe bsd-mailxno Ubuntu 18.04 para permitir unattended-upgradeso envio de atualizações por e-mail. Acho que passei pelo mesmo problema que você. Eu configurei msmtpe pude enviar e-mail usando mailxa linha de comando. unattended-upgradestambém me enviaria um e-mail se eu mesmo o executasse na linha de comando, mas se unattended-upgradesfosse executado automaticamente, não receberia nenhum e-mail. Olhando nos logs de /var/log/msmtp/msmtp.logvi:

    <DATE> host=<MY_SMTP_HOST> tls=on auth=on user=<MY_STMP_USERNAME> from=<MY_EMAIL_ADDRESS> recipients=<MY_EMAIL_ADDRESS> smtpstatus=550 smtpmsg='550 5.2.0 Mail format error: No domain in From header [1633]' errormsg='the server did not accept the mail' exitcode=EX_UNAVAILABLE
    

    Portanto, há um problema ao definir o arquivo From header. Mergulhando nisso, parece que o fromendereço de e-mail usado por unattended-upgradespadrão é root, mas você mesmo pode definir isso /etc/apt/apt.conf.d/50unattended-upgradesadicionando Unattended-Upgrade::Sender "<EMAIL_ADDRESS>";. Isso resolveu para mim.

    • 2

relate perguntas

  • Níveis diferenciadores no journalctl

  • Altere o editor padrão para vim para _ sudo systemctl edit [unit-file] _

  • systemd: como posso executar um script no início de um serviço, sem editar a definição do serviço

  • Use o suporte de watchdog do systemd para reiniciar o aplicativo

  • Inicie/pare o serviço systemd usando o atalho de teclado [fechado]

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    ssh Não é possível negociar: "nenhuma cifra correspondente encontrada", está rejeitando o cbc

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    Como descarregar o módulo do kernel 'nvidia-drm'?

    • 13 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add retorna com: "Erro ao conectar ao agente: nenhum arquivo ou diretório" 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya Por que o Linux usa LF como caractere de nova linha? 2017-12-20 05:48:21 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve