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を確認してより多くの可能性を確認してください。