무인 업그레이드는 Systemd에서 실행할 때 mailx를 사용하지 않습니다.

무인 업그레이드는 Systemd에서 실행할 때 mailx를 사용하지 않습니다.

unattended-upgradesRaspbian( )을 실행하는 Raspbian GNU/Linux 9.4 (stretch)서버에 설정했습니다 . 무인 업그레이드 버전:0.93.1+nmu1

업데이트는 작동하지만 이메일 보고에 문제가 있습니다. 보고서를 보내는 데 사용하고 싶습니다 mailx. 명령을 사용하여 업데이트를 실행하면 unattended-upgrade -v -d보고서가 전송되고 /root/.mailrc.

unattended upgrades그러나 Systemd 타이머()가 실행 중일 때는 apt-daily-upgrade.timer사용되지 않습니다 mailx.

존재 하는 경우 sendmail메일을 보내는 데 사용됩니다. 이 경우 메시지가 전송되지만 보낸 사람은 이며 root@hostname해당 메시지는 스팸으로 표시됩니다.

그렇지 않은 경우 sendmail로그에 다음 오류가 표시됩니다 apt-daily-upgrade.

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

작업 시작 방법에 따라 다른 메일러가 사용되는 이유를 이해할 수 없습니다.

unattended-upgradesPython 프로그램을 편집하여 강제로 사용하려고 했습니다 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

SENDMAIL_BINARY존재하지 않는 경로를 가리키도록 변수를 변경했기 때문에 강제 로 mailx. unattended-upgrades(위의 사용 시도에 대한 오류는 sendmail계속 기록됩니다.)

systemd가 자동으로 실행되더라도 강제 unattended upgrades로 사용하려면 어떻게 해야 합니까? 사용되는 메일 프로그램의 차이가 발생하는 이유는 무엇입니까?mailx

편집하다:

무인 업그레이드를 실행하기 위한 시스템 장치 파일:

[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

답변1

귀하의 질문은 FAQ의 변형입니다.systemd에서 상황이 다른 이유는 무엇입니까?.

이점 중 하나 systemd는 일관된 실행 환경을 제공한다는 것입니다. 보안과 단순성을 위해 환경 변수 설정은 최소화됩니다.

관련 문서systemd실행 환경설정을 자세히 설명합니다.

root구성이 홈 디렉터리 에 있다고 말씀하셨습니다 . 고정 경로가 아닌 을 man mailx찾고 있는지 확인하세요 .~/.mailrc/root/.mailrc

설명서에서는 systemd이 변수가 $HOME지시어를 사용할 때만 설정된다는 점을 명시하고 있습니다. 서비스 파일을 User=공유하지 않았지만 systemd루트로 작업을 실행했기 때문에 해당 지시문을 사용하지 않았다고 가정합니다 User=. 따라서 이것은 문제의 일부를 설명할 수 있습니다.

$PATH또한 실행 시 환경 변수가 원하는 경로로 설정되지 않은 것 같습니다 systemd. ExecStart=서비스의 줄을 다음으로 바꾸면 이를 확인할 수 있습니다 .

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

mailx경로가 나열되지 않은 경우 Environment=지시어를 사용하여 명시적으로 설정할 수 있습니다.

이러한 명확한 팁으로 문제가 해결되지 않으면 위에 링크된 FAQ를 확인하여 더 많은 가능성을 확인하세요.

답변2

msmtp업데이트를 이메일로 받을 수 있도록 Ubuntu 18.04를 사용하고 있습니다 . 나는 당신과 같은 문제에 직면했다고 생각합니다. 나는 그것을 구성했고 명령줄을 사용하여 이메일을 보낼 수 있습니다. 명령줄에서 직접 실행하면 이메일도 보내지만 자동으로 실행하면 이메일을 받지 못합니다. 내가 본 로그를 보면 다음과 같습니다.bsd-mailxunattended-upgradesmsmtpmailxunattended-upgradesunattended-upgrades/var/log/msmtp/msmtp.log

<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

그래서 설정에 뭔가 문제가 있는 것입니다 From header. 좀 더 자세히 살펴보면 from기본적으로 사용되는 이메일 주소가 로 보이지만 추가하여 직접 맞춤설정할 수도 있습니다. 이것은 나를 위해 문제를 해결했습니다.unattended-upgradesroot/etc/apt/apt.conf.d/50unattended-upgradesUnattended-Upgrade::Sender "<EMAIL_ADDRESS>";

관련 정보