![무인 업그레이드는 Systemd에서 실행할 때 mailx를 사용하지 않습니다.](https://linux55.com/image/131521/%EB%AC%B4%EC%9D%B8%20%EC%97%85%EA%B7%B8%EB%A0%88%EC%9D%B4%EB%93%9C%EB%8A%94%20Systemd%EC%97%90%EC%84%9C%20%EC%8B%A4%ED%96%89%ED%95%A0%20%EB%95%8C%20mailx%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%A7%80%20%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
unattended-upgrades
Raspbian( )을 실행하는 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-upgrades
Python 프로그램을 편집하여 강제로 사용하려고 했습니다 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-mailx
unattended-upgrades
msmtp
mailx
unattended-upgrades
unattended-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-upgrades
root
/etc/apt/apt.conf.d/50unattended-upgrades
Unattended-Upgrade::Sender "<EMAIL_ADDRESS>";