web-dev-qa-db-ja.com

systemdMAILTO-交換に失敗しました

ユニットに障害が発生した場合に電子メールで通知するようにsystemdを設定しようとしています。たとえば、Cronを設定できます。私は Arch Linux wikiのガイド に従いました。

そこで、/usr/local/bin/systemd-emailsendmailシェルスクリプトを設定しました。

#!/bin/bash
/usr/bin/sendmail -t <<ERRMAIL
To: $1
From: systemd <root@$HOSTNAME>
Subject: $2
Content-Transfer-Encoding: 8bit
Content-Type: text/plain; charset=UTF-8

$(systemctl status --full "$2")
ERRMAIL

次に、/etc/systemd/system/[email protected]でsystemdサービスを設定します。

[Unit]
Description=status email for %I to user1

[Service]
Type=oneshot
ExecStart=/usr/local/bin/systemd-email [email protected] %i
User=nobody
Group=systemd-journal

ただし、systemctl start [email protected]を実行してこのセットアップをテストすると、次の失敗メッセージが表示されます。

[email protected] - status email for dbus to user1
   Loaded: loaded (/etc/systemd/system/[email protected]; static; vendor preset: disabled)
   Active: failed (Result: exit-code) since Sun 2015-06-14 10:19:36 MDT; 20min ago
  Process: 31229 ExecStart=/usr/local/bin/systemd-email [email protected] %i (code=exited, status=1/FAILURE)
 Main PID: 31229 (code=exited, status=1/FAILURE)

Jun 14 10:19:36 sindhu systemd[1]: Starting status email for dbus to user1...
Jun 14 10:19:36 sindhu sSMTP[31230]: /etc/ssmtp/ssmtp.conf not found
Jun 14 10:19:36 sindhu sSMTP[31230]: Unable to locate mailhub
Jun 14 10:19:36 sindhu systemd-email[31229]: sendmail: Cannot open mailhub:25
Jun 14 10:19:36 sindhu systemd[1]: [email protected]: main pro...RE
Jun 14 10:19:36 sindhu systemd[1]: Failed to start status email for dbus to ...1.
Jun 14 10:19:36 sindhu systemd[1]: Unit [email protected] ente...1.
Jun 14 10:19:36 sindhu systemd[1]: [email protected] failed.
Hint: Some lines were ellipsized, use -l to show in full.

しかし、/etc/ssmtp/ssmtp.confは実際に存在し、適切に構成されているため(SSMTPは既にセットアップされています)、次のようなものを実行すると次のようになります。

echo -e "To: [email protected]\nFrom: [email protected]\nSubject: Hello Notification\n\n Hello, this is a test"|ssmtp [email protected]

期待どおり/希望どおりにメールが届きます。

同様に、シェルスクリプトsystemd-email [email protected] dbusを実行すると、メールも届きます。

したがって、すべてのsystemd-外部部分が機能しているように見えます。したがって、私が理解できる限り、それはsystemd内の何かでなければなりません。しかし、私はそれを何を、どのように修正するかを知るのに迷っています。

5
emacsomancer

このスレッドは私の同様の問題を修正しました。基本的に、systemdは、メールを送信する前にメールを送信する必要がある子プロセスを強制終了します。修正は「setsendwait」を/etc/mail.rcに追加することでしたが、私の設定はあなたが説明したものとは少し異なります。

ExecStartでの/ usr/bin/mail呼び出しがメールを送信しない

1
siliconrockstar