Raspbian 10 Buster를 실행하는 Raspberry Pi에 ssmtp를 설치했습니다. 예를 들어 명령줄에서 이메일을 보내는 것은 mail
훌륭하게 작동합니다. 그러나 MAILTO
파일에 변수를 추가하여 이메일을 보내도록 사용자의 cron 작업도 구성했습니다.
# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').
#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
MAILTO="[email protected],[email protected]"
# we need to set the user path to add the system scripts directory /usr/local/sbin
# I tried with PATH=$PATH:/usr/local/sbin but it used this verbatim in the path
PATH=/usr/sbin:/usr/bin:/bin:/usr/local/sbin:
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h dom mon dow command
26 3 * * * cronic python3 ~/redacted_directory_name/redacted_script_name.py
24 22 * * * echo "Testing cron email"
다른 온라인 검색을 통해 제가 이해한 바에 따르면(틀렸다면 정정해 주십시오) cron은 기본적으로 sendmail을 사용하여 이메일을 보냅니다.
Sendmail은 시스템에서 사용할 수 있지만 실제로는 ssmtp입니다.
$ which sendmail
/usr/sbin/sendmail
$ ls -l /usr/sbin/sendmail
lrwxrwxrwx 1 root root 5 Jul 20 2014 /usr/sbin/sendmail -> ssmtp
이 컴퓨터에서는 외부 SMTP 서버를 사용하여 메일을 보내도록 ssmtp를 구성했습니다.
cron은 루트나 sudo가 아닌 다른 사용자에게 이메일을 보내지 않습니다.
메일 로그에 다음이 표시됩니다.
$ tail /var/log/mail.log
Jan 17 16:43:02 ed-mh-pi01 sSMTP[25679]: Cannot open mailhub:25
Jan 18 03:22:24 ed-mh-pi01 sSMTP[9846]: Creating SSL connection to host
Jan 18 03:22:25 ed-mh-pi01 sSMTP[9846]: SSL connection using ECDHE_RSA_AES_256_GCM_SHA384
Jan 18 03:22:26 ed-mh-pi01 sSMTP[9846]: Sent mail for root@[email protected] (221 2.0.0 Bye) uid=0 username=root outbytes=638
Jan 18 22:20:02 ed-mh-pi01 sSMTP[6924]: /etc/ssmtp/ssmtp.conf not found
Jan 18 22:20:02 ed-mh-pi01 sSMTP[6924]: Unable to locate mailhub
Jan 18 22:20:02 ed-mh-pi01 sSMTP[6924]: Cannot open mailhub:25
Jan 18 22:24:01 ed-mh-pi01 sSMTP[6988]: /etc/ssmtp/ssmtp.conf not found
Jan 18 22:24:01 ed-mh-pi01 sSMTP[6988]: Unable to locate mailhub
Jan 18 22:24:01 ed-mh-pi01 sSMTP[6988]: Cannot open mailhub:25
1월 18일 22:20:02 및 1월 18일 22:24:02에 대한 항목은 크론 작업 이메일과 관련된 것으로 보입니다. 그 당시에 몇 가지 테스트를 했습니다.
이메일을 보내는 프로세스에는 액세스 권한이 없다고 명시되어 있습니다 /etc/ssmtp/ssmtp.conf
.아치 리눅스 위키그것은 상태
/usr/bin/ssmtp 바이너리는 메일 그룹으로 실행되며 이 파일을 읽을 수 있습니다. 자신이나 다른 사용자를 메일 그룹에 추가할 이유가 없습니다.
이것이 Raspbian의 경우인지는 모르겠지만 아마도 그것이 문제일지도 모른다고 생각하게 됩니다. /etc/ssmtp/
그룹 소유권과 그 내용을 다음과 같이 메일로 변경해 보았습니다 .
$ ls -l /etc/ssmtp/
total 8
-rw-r--r-- 1 root mail 200 Jul 20 2014 revaliases
-rw-r----- 1 root mail 764 Jan 17 12:03 ssmtp.conf
그러나 문제는 여전히 존재합니다
[root] ~ $ tail /var/log/mail.log
<snip>
Jan 18 22:39:01 ed-mh-pi01 sSMTP[7559]: /etc/ssmtp/ssmtp.conf not found
Jan 18 22:39:01 ed-mh-pi01 sSMTP[7559]: Unable to locate mailhub
Jan 18 22:39:01 ed-mh-pi01 sSMTP[7559]: Cannot open mailhub:25
그러면 cron이 이메일을 보내지 않는 이유는 무엇이며 어떻게 해결합니까?
편집하다
모든 사용자가 읽을 수 있도록 권한을 (일시적으로) 변경하면 /etc/ssmtp/ssmtp.conf
이메일이 전송됩니다. 파일에 이메일 계정의 일반 텍스트 비밀번호가 포함되어 있고 일반 사용자가 명령줄에서 보낼 수 있지만 cron에서는 보낼 수 없는 이유를 설명하지 않기 때문에 이것은 해결책이 아닙니다.
편집 2
$ ls -l /usr/sbin/ssmtp
-rwxr-xr-x 1 root root 30588 Jul 20 2014 /usr/sbin/ssmtp
답변1
이미 작성하셨는데요,
/usr/bin/ssmtp 바이너리는 메일 그룹으로 실행되며 이 파일을 읽을 수 있습니다.
그러나 바이너리의 경우에는 그렇지 않다는 것을 입증했습니다.
-rwxr-xr-x 1 루트 루트 30588 2014년 7월 20일/usr/sbin/ssmtp
위키피디아는 말합니다.
이메일 비밀번호는 /etc/ssmtp/ssmtp.conf에 일반 텍스트로 저장되므로 이 파일을 안전하게 유지하는 것이 중요합니다. 기본적으로 전체 /etc/ssmtp 디렉토리는 루트 및 메일 그룹만 액세스할 수 있습니다. /usr/bin/ssmtp 바이너리는 메일 그룹으로 실행되며 이 파일을 읽을 수 있습니다. 자신이나 다른 사용자를 메일 그룹에 추가할 이유가 없습니다.
따라서 손상된 권한을 수정해야 합니다.
chown -R root:mail /etc/ssmtp /usr/sbin/ssmtp
chmod -R g=u,g-w,o= /etc/ssmtp
chmod a=rx,g+s /usr/sbin/ssmtp
그러나 나는 또한 Arch wiki가 말하는 첫 번째 내용이 다음과 같다는 점을 지적하고 싶습니다.
sSMTP는 유지되지 않습니다. msmtp 또는 OpenSMTPD와 같은 대안 사용을 고려해보세요.