Wenn Sie Raspbian und Ubunntu 16.04 LTS verwenden, benötigen Sie eine generische Linux-Lösung.
Anforderung ist einfach:
Ich benötige eine Möglichkeit, einzeilige E-Mail-Nachrichten über die Befehlszeile zu senden.
Ich habe nur für dieses Rpi3 ein Google Mail-Konto mit der Adresse [email protected] eingerichtet - ohne 2FA
Jetzt muss ich in der Lage sein, einzeilige E-Mail-Nachrichten von überall (einschließlich Cron) ohne Benutzereingriff zu senden.
Ich möchte auch, dass es in der Lage ist, Textdateien zu senden. grundsätzlich alles von stdin
.
Antworten:
Die einfachste Antwort auf das Senden von einzeiligen Nachrichten über Google Mail ist die Verwendung von ssmtp
Installieren Sie es mit den folgenden Befehlen:
Bearbeiten Sie
/etc/ssmtp/ssmtp.conf
, um wie folgt auszusehen:Senden Sie einen Einzeiler wie folgt:
oder
Dann erhalten Sie, wahr * nix, in wenigen Sekunden die Aufforderung zurück.
Überprüfen Sie Ihr Konto unter [email protected] und voila, es ist da!
Dies funktioniert auch beim Senden einer Datei:
Und das Programm wird in der Mailbox angezeigt
Wenn die Datei eine Textdatei ist, kann sie eine erste Zeile enthalten, die besagt
Subject: xxxxxx
Dies kann mit verschiedenen Cronjobs verwendet werden, die mir Daten mit Betreffzeilen senden, die den Inhalt angeben.
Dies funktioniert mit allem, was eine Nachricht vorbereitet, die über stdin an ssmtp weitergeleitet wird.
Weitere Informationen zum Sichern dieser Dateien gegen andere Benutzer und dergleichen finden Sie in diesem Artikel:
E-Mail über die Raspberry Pi-Befehlszeile senden
Lesen Sie auch die Antwort weiter unten, in der es
Rui
darum geht, dieFROM:
Adresse zu sperren, die ggf. in formatierten Nachrichtendateien geändert wird.Wenn ich nur herausfinden könnte, wie man SMS auf die gleiche Weise versendet.
quelle
ssmtp
in meinen VMs sehr leichte. +1sendmail
Alleine muss der MTA - Mail Transport Agent nicht außerhalb des Rechners kommunizieren. Standardmäßigsendmail
werden Nachrichten an andere Benutzer in derselben Box, jedoch nicht außerhalb, gesendet , da Unixen von Natur aus mehrere Benutzer umfasst .ssmtp
ist der MTA, der meiner Meinung nach am einfachsten für Google Mail zu konfigurieren ist.ssmtp
ist nur einer von vielen Sendmail-Wrappern. Alle diese akzeptieren eine Nachricht bei Standardeingabe und optional eine Liste von Adressen als Befehlszeilenargumente und bieten alle eine Binärdatei mit dem Namen,sendmail
die (zumindest die Grundfunktionen) der traditionellen Sendmail-Befehlszeilen-API implementiert. Richtigerweise muss diese Nachricht jedoch eine wohlgeformte RFC822-Nachricht sein. Zumindest sollte es einenSubject:
Header haben.(Mit
ssmtp
,sendmail
ist nur ein Symlink zussmtp
. Postfix, Exim und ich glauben, jeder andere MTA, derProvides: mail-transport-agent
eine ähnliche Anordnung hat, außer natürlich,sendmail
wo diesendmail
Binärdatei "die reale Sache" ist.)Üblicherweise können Sie eine einfache E-Mail-Nachricht mit einem Here-Dokument zusammenfügen.
(Die Sendmail-
-t
Option besagt, dass die Empfängerliste aus den Kopfzeilen der Nachricht entnommen werden soll, die Sie in der Standardeingabe erhalten. Der genaue Pfad zu Sendmail unterscheidet sich zwischen den Plattformen.)Eine andere übliche Variante besteht darin, die Ausgabe einiger Befehle zu kombinieren. Achten Sie darauf, dass zwischen den Kopfzeilen und dem Nachrichtentext eine leere Zeile (ein "Hals") steht.
Für alles, was über sehr einfache Nur-ASCII-Textnachrichten hinausgeht, müssen Sie wissen, wie eine richtige MIME-Nachricht erstellt wird. In diesem Fall ist es normalerweise sinnvoller, ein Tool wie dieses zu verwenden
mutt
. Einige Plattformen verfügen über einmail
oder,mailx
das weiß, wie Anhänge und Nicht-ASCII-Text gesendet werden, dies ist jedoch nicht vollständig portierbar.Hier besteht die Herausforderung darin, keinen Client zu finden, der eine E-Mail-Nachricht entgegennimmt und versucht, sie zu senden. Sie muss für die Besonderheiten von Google Mail konfiguriert werden. Dazu muss der MTA den Benutzernamen und das Kennwort kennen, die für den Remoteserver verwendet werden sollen um es als ausgehenden Smarthost verwenden zu können.
Hinter den Kulissen laufen die meisten Clients wie
mutt
,mailx
usw. normalerweise nursendmail
hinter den Kulissen, um die Nachricht vom System zu erhalten.quelle
Hinzufügen zur eigenen Antwort des OP:
Bei der Konfiguration
ssmtp
können Sie Benutzern auch das Definieren des Absenders verbieten oder erlauben und auch die Domäne überschreiben. Möglicherweise möchten Sie dies aus mehreren Gründen tun, einschließlich der Nachricht, die nicht in den Spam-Ordner fällt.Sie können hinzufügen
/etc/ssmtp/ssmtp.conf
:Bitte beachten Sie, dass YES zwar in einer Himbeere zu Hause verwendet werden kann, in einem System mit mehreren Benutzern aus Sicherheitsgründen jedoch möglicherweise nicht ratsam ist.
quelle
Was ist los mit "Mail"?
"mail" ist / etc / alternativer Link zu / usr / bin / bsd-mailx aus dem Paket bsd-mailx. Ich glaube, es ist standardmäßig da. Ein großartiges Dienstprogramm zum Senden von E-Mails beispielsweise aus Cron-Skripten.
Funktioniert auch unter Ubuntu und FreeBSD.
quelle
mailx
ist nur ein Frontend. Es muss ein MTA konfiguriert werden, damit die Nachricht tatsächlich vom lokalen System abgerufen wird. Es gibt mehrere inkompatible Versionen, die häufig verwendet werden. Wenn Ihre Zielplattform jedoch nur Debian ist, können Sie sich auf ein relativ aktuelles BSD-Verhalten verlassen.Ich bin sehr daran interessiert, dafür Folgendes zu verwenden
mailx
:quelle
-a
Option insbesondere wäre wunderbar , wenn es allgemein unterstützt wurde, sondern sieht nur diemailx
Fragen hier , um zu sehen , dass dies ganz sicher nicht der Fall.Ich verwende sendEmail, um einfache automatisierte E-Mails über den SMTP-Server eines externen Anbieters zu senden:
Ich übergebe alles in einer Zeile. Wenn Sie dies in einer Befehlszeile tun, werden wahrscheinlich alle Parameter (einschließlich des SMTP-Kennworts) für alle Benutzer angezeigt, wenn sie einen bestimmten Zeitraum ausführen
ps -ef
. Ich benutze es in einem Shell-Skript.quelle
Mein Server ist CEntOS 7 und hat sendmail, aber kein mailx usw. Anstatt ein neues Programm zu installieren, habe ich es direkt mit sendmail getestet und festgestellt, dass dies funktioniert:
Für mich scheint dies die einfachste Möglichkeit zu sein, eine kurze E-Mail zu senden, da kein Server oder Daemon ausgeführt oder konfiguriert werden muss und dies über eine einzige Befehlszeile erfolgen kann.
Die Idee ist, dass eine Nachricht mich lediglich darauf hinweist, dass ein bestimmtes Programm einen Fehler ausgelöst hat, ohne potenziell vertrauliche Informationen preiszugeben, und dann eine SSH-Verbindung zum Server herstellt, um dessen Protokolle zu überprüfen. Auf diese Weise müssen Sie sich nicht um Komplikationen wie das Anhängen von Dateien oder das Verschlüsseln des Transports kümmern.
Anmerkungen:
-e
Weist echo an, '\ n' und andere Escapezeichen zu interpretieren.-t
Weist sendmail an, Empfängeradressen von "An:" im Nachrichtenkopf abzurufen.tail /var/log/maillog
, um Fehlermeldungen anzuzeigen.quelle
sendmail
Diese Antwort zeigt jedoch nicht, dass es mit Google Mail funktioniert, wie in der ursprünglichen Frage angegeben ...