it-swarm.com.de

Wie erstelle ich eine E-Mail mit crontab?

Wie kann ich mir von crontab eine E-Mail mit der Ausgabe seiner Jobs schicken lassen? Ich habe [email protected] über den Jobs, aber es funktioniert nicht.

Ich weiß, dass ich etwas wie Postfix oder Sendmail verwenden muss, aber für mein Leben kann ich nicht herausfinden, wie ich das erreichen kann. Ich habe nach einer einfachen Anleitung zum Einrichten von Postfix gesucht, aber sie sind alle wahnsinnig kompliziert und erwarten, dass Sie einen ganzen Server einrichten, um E-Mails zu senden und zu empfangen und alle Begriffe zu kennen (wie z. B. was ist ein Domainname?) für ausgehende E-Mails?).

Ich möchte nur eine E-Mail von crontab erhalten. Warum ist das so schwierig?

Additional Info:

Meine crontab-Datei sieht so aus:

[email protected]
1 0 * * * ~/Desktop/toskymesh.sh
59 6 * * * ~/Desktop/tooptus.sh
0 3 * * * snapraid sync

Weitere zusätzliche Informationen:

Die Ausgabe von ps -ef | grep '[s]endmail'

root 6840 1370 0 10:26 ? 00:00:00 sendmail: MTA: accepting connections

Ich weiß sicher, dass cron funktioniert, aber ich teste den Mail-Befehl trotzdem mit echo Test | mail -s Test [email protected].

45
Clonkex

Am Ende habe ich sSMTP verwendet. Es ist weit, weit einfacher als entweder Postfix oder sendmail und erledigt die Arbeit wunderbar.

Weitere Informationen zur Verwendung von sSMTP mit Yahoo Mail finden Sie hier (keine Sorge, es ist weitaus weniger komplex als es aussieht):

  • Verwenden Sie Synaptic, um ssmtp herunterzuladen. Alternativ können Sie Sudo apt-get install ssmtp ausführen.

  • Öffnen Sie die Konfigurationsdatei unter /etc/ssmtp/ssmtp.conf.

  • Lass die Konfiguration so aussehen:

root=[[email protected]]
mailhub=smtp.mail.yahoo.com:587
FromLineOverride=YES
UseSTARTTLS=YES
AuthUser=[[email protected]]
AuthPass=[yourRealYahooPassword]
TLS_CA_File=~/cert.pem
  • Erstellen Sie die Datei cert.pem mit OpenSSL. Ich habe den Befehl openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 9999 -nodes verwendet (weitere Informationen hier ). Sie können die Datei an eine beliebige Stelle kleben, aber ich habe sie einfach in ~/eingelegt. Stellen Sie sicher, dass Sie die Zeile TLS_CA_File= in der Datei ssmtp.conf auf die richtige Position verweisen.

  • Öffnen Sie die Datei /etc/ssmtp/revaliases und fügen Sie die Zeile [yourPCUsername]:[[email protected]]:smtp.mail.yahoo.com:587 hinzu. Wenn Sie als root ausgeführt werden, müssen Sie vermutlich eine weitere Zeile hinzufügen, in der Ihr Name durch 'root' ersetzt wird.

  • Das war's, du kannst loslegen! Zum Testen besteht der einfachste Weg (IMO) darin, eine Datei mit den folgenden Inhalten zu erstellen:

To: [[email protected]]
From: "whateverYaWant" <[[email protected]]>
Subject: Some Notifying Email
MIME-Version: 1.0
Content-Type: text/plain

Body of your email goes here! Hello world!
  • Speichern und schließen Sie die Datei. Um zu überprüfen, ob Sie nicht das echte sendmail installiert haben, führen Sie sendmail -V aus. Dort sollte 'sSMTP' stehen.
  • Führen Sie abschließend cat fileWithEmailInIt.txt | sendmail -i -t aus, warten Sie einige Sekunden (10-30) und überprüfen Sie Ihre E-Mails!

Offensichtlich ersetzen Sie [[email protected]] durch Ihre E-Mail-Adresse (ohne Klammern) und [yourRealYahooPassword] durch Ihr Yahoo Mail-Passwort (ebenfalls ohne Klammern).

Zusätzlicher Hinweis: Wenn Sie Probleme mit Google Mail haben, versuchen Sie Option 1 von diese Antwort (danke an Ben Creasy für diese Info) .

33
Clonkex

Ich hatte sehr viel Glück mit exim4.

Sudo apt-get install Alpine exim4 mailutils eximon4 spf-tools-Perl swaks

(Alpine ist nur der Mail-Client, den ich gerne benutze)

Danach rannte ich los

Sudo dpkg-reconfigure exim4-config

und folgte durch die Eingabeaufforderungen. Diese Seite: https://help.ubuntu.com/community/Exim4 war auch sehr hilfreich. Ich brauchte ungefähr 10 Minuten, um es zum Laufen zu bringen.

3
Oh Ar

Aus der sSMTP-Manpage: "Es wird kein Aliasing durchgeführt, was entweder im Benutzeragenten oder im Mailhub erfolgen muss. Es werden auch keine Weiterleitungen berücksichtigt, die auf dem empfangenden Host erfolgen müssen. Dies ist insbesondere nicht der Fall An Pipelines liefern. "

Wenn Sie also alle an root gesendeten Nachrichten in Ihrer externen E-Mail erhalten möchten, ist es eine schlechte Idee, sSMTP zu verwenden, da es keine Aliase unterstützt.

Stattdessen könnten Sie Benutzer Postfix. Es ist immer noch sehr einfach. So verwenden Sie es mit Google Mail als SMTP zum Senden von Nachrichten:

Sudo apt-get install postfix mailutils

Allgemeine Art der Mail-Konfiguration: Satellitensystem

System-Mail-Name: Der bevorzugte vollqualifizierte Name des Mail-Servers, z. B. mail.example.com

SMTP-Relay-Host (leer für keine): [smtp.gmail.com]: 587

Fügen Sie zu /etc/postfix/main.cf hinzu:

smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_tls_security_options = noanonymous

Erstellen Sie/etc/postfix/sasl/sasl_passwd

[smtp.gmail.com]:587 [email protected]:password

Dann:

Sudo postmap /etc/postfix/sasl/sasl_passwd
Sudo chown -R root:postfix /etc/postfix/sasl
Sudo chmod 750 /etc/postfix/sasl
Sudo chmod 640 /etc/postfix/sasl/sasl_passwd*

Bearbeiten Sie/etc/aliases und fügen Sie Folgendes hinzu:

root: [email protected]

Führen Sie zum Schluss Folgendes aus:

Sudo newaliases
Sudo systemctl stop postfix.service
Sudo systemctl start postfix.service

Jetzt können Sie testen, ob die Umleitung funktioniert:

echo "Test to root." | mail -s "Test message to root" root

Ich hoffe es hilft.

1
duli