systemd MAILTO 교체 실패

systemd MAILTO 교체 실패

systemdCron이 설정할 수 있는 것처럼 장치가 실패할 때 이메일을 통해 알림을 받도록 설정하려고 합니다 . 나는 팔로우한다Arch Linux 위키 가이드.

그래서 다음 위치에 sendmail쉘 스크립트를 설정했습니다 /usr/local/bin/systemd-email.

#!/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

그런 다음 다음 위치에 systemd 서비스를 설정했습니다./etc/systemd/system/[email protected]

[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제가 아는 한 내부적인 부분이 있는 것 같습니다. 하지만 그것이 무엇인지, 어떻게 고칠 수 있는지 모르겠습니다.

답변1

이 스레드는 나와 비슷한 문제를 해결했습니다. 기본적으로 systemd는 메일을 보내기 전에 메일을 보내야 하는 하위 프로세스를 종료합니다. 해결책은 /etc/mail.rc에 "set sendwait"를 추가하는 것이었지만 제 설정은 귀하가 설명한 것과 약간 달랐습니다.

ExecStart의 /usr/bin/mail 호출은 메일을 보내지 않습니다.

관련 정보