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で状況が異なるのはなぜですか?。
利点の1つsystemd
は、一貫した実行環境を提供することです。セキュリティとシンプルさのために、環境変数の設定は最小限に抑えられます。
関連文書systemd
実行環境設定について詳しく説明します。
root
設定がホームディレクトリにあると言われました。固定パスではなく探してman mailx
いることを確認してください。~/.mailrc
/root/.mailrc
このマニュアルでは、systemd
この変数が$HOME
ディレクティブを使用する場合にのみ設定されることを示しています。サービスファイルをUser=
共有していないがsystemd
rootとしてジョブを実行したため、そのディレクティブを使用しなかったとしますUser=
。したがって、これは問題の一部を説明できます。
$PATH
また、実行時に環境変数が目的のパスに設定されていないようですsystemd
。ExecStart=
サービスの行を次に置き換えると、これを確認できます。
ExecStart=/bin/echo "My path is $PATH"
mailx
パスがリストされていない場合は、Environment=
ディレクティブを使用して明示的に設定できます。
これらの明確なヒントで問題が解決しない場合は、上記のFAQを確認してより多くの可能性を確認してください。
答え2
msmtp
アップデートをEメールで受け取るために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>";