Я пытался отладить это в течение 2 дней безуспешно. Это скрипт, который я пытаюсь запустить:
#!/bin/bash
emailaddress='my_username@gmail.com'
output=`sudo rsync -av --delete /media/sync/1/backup /media/sync/2/`
echo $output|mail -s "backup_rsync.sh: backup_rsync run" $emailaddress;
Я могу получить желаемые результаты, когда я запускаю его, прямо из командной строки или как задание cron, как обычный пользователь. Вот почему я не думаю, что с самим сценарием что-то не так. Сценарий имеет следующие разрешения:
-rwxr--r-- 1 pi pi 190 Jan 4 08:52 scripts/backup_rsync.sh
Проблема в том, что когда я пытаюсь запустить один и тот же сценарий (другой файл находится в /root) с помощью sudo или даже вошел в систему как root, я получаю следующие результаты:
send-mail: 550 5.1.0 Не наш клиент
Это разрешения для скрипта, расположенного в /root:
-rwxr - r-- 1 корневой корень 190 4 января 13:43 /root/backup_rsync.sh
Моя ОС - последняя версия Raspbian на моей RaspberryPi Model B+. Я установил ssmtp heirloom-mailx для обработки электронной почты. Мой файл ssmtp.conf выглядит следующим образом:
#
# Config file for sSMTP sendmail
#
# The person who gets all mail for userids < 1000
# Make this empty to disable rewriting.
root=my_login@comcast.net
# The place where the mail goes. The actual machine name is required no
# MX records are consulted. Commonly mailhosts are named mail.domain.com
mailhub=smtp.comcast.net:587
# Where will the mail seem to come from?
rewriteDomain=comcast.net
# The full hostname
hostname=raspberrypi
# Are users allowed to set their own From: address?
# YES - Allow the user to specify their own From: address
# NO - Use the system generated From: address
FromLineOverride=YES
UseTLS=Yes
UseSTARTTLS=Yes
AuthUser=my_login
AuthPass=my_password
Где "my_login" и "my_password" перечислены выше, это просто заполнители. В настоящий файл мне вставлена правильная информация, и, как я уже сказал, она работает, когда я пишу как обычный пользователь. Любая помощь будет оценена. Дайте мне знать, если потребуется дополнительная информация.
Отредактировано ниже для получения дополнительной информации
Это строки из моего корневого crontab:
38 9 * * * /root/backup_rsync.sh >> /tmp/mylog 2>&1
38 9 * * * touch /tmp/my_cronjob_ran1
Как вы видите, я пытался отладить эту вещь. Он производит файл "my_cronjob_ran1", поэтому я знаю, что работает корневой crontab. В файле "mylog" я получаю сообщение «send-mail: 550 5.1.0 Not our Customer».
Вот строка из моего пользовательского crontab (тот, который дает желаемые результаты):
00 03 * * * /home/pi/scripts/backup_rsync.sh
Окончательное редактирование. Я понял проблему.
Я проверил /var /log /syslog и увидел эти сообщения, когда попытался провести еще одно тестирование:
Jan 5 20:07:15 raspberrypi sSMTP[3507]: Creating SSL connection to host
Jan 5 20:07:16 raspberrypi sSMTP[3507]: SSL connection using RSA_AES_128_CBC_SHA1
Jan 5 20:07:17 raspberrypi sSMTP[3507]: Sent mail for pi@comcast.net (221 2.0.0 resomta-ch2-04v.sys.comcast.net comcast closing connection) uid=1000 username=pi outbytes=494
Jan 5 20:07:31 raspberrypi sSMTP[3513]: Creating SSL connection to host
Jan 5 20:07:31 raspberrypi sSMTP[3513]: SSL connection using RSA_AES_128_CBC_SHA1
Jan 5 20:07:32 raspberrypi sSMTP[3513]: Sent mail for pi@comcast.net (221 2.0.0 resomta-ch2-01v.sys.comcast.net comcast closing connection) uid=1000 username=pi outbytes=490
Jan 5 20:09:44 raspberrypi sSMTP[3532]: Creating SSL connection to host
Jan 5 20:09:45 raspberrypi sSMTP[3532]: SSL connection using RSA_AES_128_CBC_SHA1
Jan 5 20:09:46 raspberrypi sSMTP[3532]: 550 5.1.0 Not our Customer
Первые 6 строк я отправлял сообщение с моего логина (пи). В последних трех строках я снова пытался отправить письмо от (root). Это сказало мне, что он устанавливал соединение с Comcast, и сообщение об ошибке, которое я получал, было от них. Затем я открыл Thunderbird на своем компьютере с Windows и попытался отправить сообщение на root@comcast.net (с моего обычного адреса электронной почты). Затем я получил эту ошибку в Thunderbird:
Произошла ошибка при отправке почты. Почтовый сервер ответил: 5.1.1 Не наш Клиент. Пожалуйста, проверьте получатель сообщения root@comcast.net и повторите попытку.
Так что это подтвердило сообщение от Comcast. Чтобы устранить проблему, я изменил эту строку (rewriteDomain = comcast.net) в своем файле ssmtp.conf на эту (rewriteDomain = gmail.com). Теперь все работает как надо. Я предполагаю, что это потому, что Comcast не может знать, является ли это действительный адрес электронной почты, только то, что gmail.com является действительным доменом.
Спасибо всем, кто просмотрел это и попытался помочь. Если я не согласен с моими рассуждениями или если кому-то есть что добавить, пожалуйста, дайте мне знать.