Невозможно запустить скрипт, который отправляет мне по электронной почте результаты как суперпользователь. (возвращается: send-mail: 550 5.1.0 Не наш Клиент)

1

Я пытался отладить это в течение 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 является действительным доменом.

Спасибо всем, кто просмотрел это и попытался помочь. Если я не согласен с моими рассуждениями или если кому-то есть что добавить, пожалуйста, дайте мне знать.

драуг
источник
Получает ли root другую mailкоманду? Попробуйте использовать полный путь там. Кроме того: вам не нужно указывать ключи TLS, если у вас есть UseTLS=Yes?
wurtel
Я добавил некоторую информацию выше. Как проверить, получает ли root другую почтовую команду? Как должен выглядеть полный путь? Я не думаю, что мне нужны ключи для UseTLS = Да. Почта работает при входе пользователя в систему. Прости мое невежество, поскольку я новичок в среде Linux. Спасибо и я жду вашего ответа.
Драугр
@wurtel Извините за двойной комментарий, но здесь есть кое-что интересное. Как пользователь, когда я набираю это (echo "mail from rpi" | mail -s "test3" _my_email_@comcast.net), я получаю желаемый результат. Когда я использую sudo перед этим, я также получаю желаемый результат. Но, когда я вошел в систему как пользователь root, ни одна из команд не работает и возвращает строку «send-mail: 550 5.1.0 Not our Customer».
Драугр
Я понял. См окончательное редактирование выше.
Драугр