私の設定には、eximコマンドラインを介してローカルユーザーにメールを送信するスクリプトが含まれています。スクリプトはルートと呼ばれます(現実はもちろんより複雑ですが、これは最小限の作業例のようです)。
/home/jens/send_mail:
#!/bin/sh
cat /home/jens/testmail | /usr/bin/exim -bm jens
ルートシェルでこのスクリプトを実行すると、正常に動作します。メールが正常に配信されました。
これで、このスクリプトを自動化してsystemdサービスから呼び出そうとします。
/etc/systemd/system/send_mail.service:
[Unit]
Description=Send mail to jens
[Service]
Type=oneshot
ExecStart=/home/jens/send_mail
[Install]
WantedBy=multi-user.target
実行はsystemctl start send_mail.service
メッセージを転送しませんが、後で転送するためにeximキューに入れます。実際の設定では、その行が読んでいることがわかりました。
... exim[275968]: 2020-07-16 23:09:40 1jwB8O-0019n4-Lj failed to write to main log: length=91 result=-1 errno=9 (Bad file descriptor)
... exim[275968]: write failed on panic log: length=116 result=-1 errno=9 (Bad file descriptor)
私の日記帳に。私が知る限り、私のルートシェルにはexim関連の環境変数はありません。このように他の行動が現れるのはなぜでしょうか。
私はArch Linuxでexim 4.94を使用しています。詳細が必要な場合はお問い合わせください。
答え1
send_mail
この問題は、実行が完了するとすぐに作成された exim プロセスを終了する systemd が原因で発生したようです。
この問題は、終了時に適切な時間待つsend_mail
か、KillMode
systemdデバイスのオプションをまたはprocess
に設定することでnone
解決できます(マニュアルではこれを行わないことをお勧めします)。
源泉: