Как заставить crontab отправить мне электронное письмо с выводом?

В конце концов я использовал sSMTP. Это намного, намного проще, чем любой из них. Postfix или sendmail и прекрасно справляется со своей работой.

Для дальнейшего использования, вот как использовать sSMTP с Yahoo Mail (не волнуйтесь, это гораздо менее сложно, чем кажется):

  • Используйте Synaptic для загрузки ssmtp. В качестве альтернативы вы могли бы запустить sudo apt-get install ssmtp.

  • Откройте конфигурационный файл по адресу /etc/ssmtp/ssmtp.conf.

  • Сделайте так, чтобы конфигурация выглядела следующим образом:

    root=[yourRealEmail@yahoo.com.au]mailhub=smtp.mail.yahoo.com:587FromLineOverride=YESUseSTARTTLS=YESAuthUser=[yourRealEmail@yahoo.com.au]AuthPass=[yourRealYahooPassword]TLS_CA_File=~/cert.pem
  • Создайте файл cert.pem с помощью OpenSSL. Я использовал команду openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 9999 -nodes (более подробная информация на сайте Как создать самозаверяющий сертификат с помощью OpenSSL). Вы можете вставить файл куда угодно, но я просто вставил его в ~/. Куда бы вы его ни положили, убедитесь, что вы направили TLS_CA_File= строку в файле ssmtp.conf в правильное место.

  • Откройте файл /etc/ssmtp/revaliases и добавьте строку:

    [yourPCUsername]:[yourRealEmail@yahoo.com.au]:smtp.mail.yahoo.com:587

    Если вы работаете от имени root, я бы подумал, что вам нужно добавить еще одну строку, заменяющую ваше имя на "root".

  • Вот и все, ты готов идти! Для тестирования самый простой способ (IMO) - создать файл со следующим в нем:

    To: [yourRealEmail@yahoo.com.au]From: "whateverYaWant" <[yourRealEmail@yahoo.com.au]>Subject: Some Notifying EmailMIME-Version: 1.0Content-Type: text/plainBody of your email goes here! Hello world!
  • Сохраните и закройте файл, а затем проверьте, нет ли у вас реального отправить почту установлен, запустите sendmail -V - там должно быть написано "sSMTP".

  • Наконец, беги cat fileWithEmailInIt.txt | sendmail -i -t, затем подождите несколько секунд (10-30) и проверьте свою электронную почту!

Очевидно, заменить [yourRealEmail@yahoo.com.au] с вашим адресом электронной почты (без скобок) и [yourRealYahooPassword] с вашим паролем Yahoo Mail (опять же, без скобок).

Дополнительное примечание 1: Если у вас возникли проблемы с Gmail, попробуйте вариант 1 из этот ответ.
(Благодаря Бен Кризи!)

Дополнительное примечание 2: Если почта отправляется из командной строки, но не через crontab, попробуйте изменить FromLineOverride к NO в /etc/ssmtp/ssmtp.conf. Вы также можете получить более подробное ведение журнала, добавив Debug=YES к ssmtp.conf - дополнительная регистрация идет на /var/log/mail.log.
(Спасибо Якуб Кукул!)