Welcome to Our Website

16 Befehlsbeispiele zum Senden von E-Mails über die Linux-Befehlszeile

Unabhängig davon, ob Sie ein Entwickler sind, der ununterbrochen in der Linux-Befehlszeile arbeitet, oder ein Serveradministrator, der Protokolle oder andere Daten aus verwalteten Systemen möchte, ist es sehr nützlich, E-Mails über die Befehlszeile zu senden.

In diesem Beitrag finden Sie Beispiele zum Senden von E-Mails vom Terminal. Wir werden uns benutzerdefinierte Konfigurationen ansehen und erläutern, wie SMTP-Verbindungen zu E-Mail-Konten oder E-Mail-Dienstanbietern eingerichtet werden., Ich zeige Ihnen, wie Sie die erforderlichen Konsolen-Mailer-Pakete installieren und Hintergrundinformationen für Befehlszeilenoptionen basierend auf den Handbüchern des Pakets bereitstellen.

Einrichten von Kommandozeilen-Mailer-Paketen

Alle Mailer-Pakete im gesamten Tutorial sind über Debians Advanced Package Manager verfügbar, sodass die Installationsschritte im folgenden Beispiel für alle gezeigten Pakete verwendet werden können.,

Bitte beachten Sie, dass diese Software je nach Linux-Systemdistribution von anderen Standardpaketmanagern wie oder dnf installiert werden kann.

In den meisten Fällen ist entweder oder postfix in jeder sofort einsatzbereiten Linux-Distribution verfügbar oder zumindest sagen ähnliche Blog-Posts dies. Entweder habe ich Pech oder die anderen haben sich geirrt, aber ich musste einen manuell installieren. Sie benötigen jedoch definitiv eine davon für die E-Mail-Zustellung.,

Einrichten von Sendmail mit SSMTP-Paket

Ich werde mit und dem SSMTP-Paket fortfahren. SSMTP enthält das – Paket unter der Haube, wie Sie sehen werden, und erleichtert die Konfiguration, was für ansonsten ziemlich schwierig ist.

Schritt 1., Überprüfen Sie, ob das Befehlszeilen-Mailer-Paket installiert ist

Geben Sie den Namen des Mailer-Pakets genau so ein, wie Sie den Befehl ausführen würden, um zu überprüfen, ob er verfügbar ist:

  • Wenn das Paket installiert ist, wird der Befehl ausgeführt und die Eingabeaufforderung ändert sich — während Sie versuchen, den Befehl auszuführen — und Sie sehen einen blinkenden Cursor gefolgt von der Meldung Recipient names must be specified im Fall von sendmail. Fazit: Das Paket ist installiert.,

  • Wenn das Paket NICHT installiert ist, erhalten Sie eine Warnmeldung und einen Vorschlag, wie es installiert werden soll:

In diesem Beispiel habe ich versucht, ob der Befehl funktioniert. Nachdem wir das SSMTP-Paket hinzugefügt haben, funktionieren dieser Befehl und der Befehl ssmtp und ändern die Eingabeaufforderung im Terminal. Schauen wir uns das an!

Schritt 2., Installieren des Sendmail – Befehlszeilen-Mailer-Pakets

Wie in der Terminalausgabe vorgeschlagen, müssen wir den Installationsbefehl des Advanced Package Managers — normalerweise mit Root — Berechtigung-ausführen, um das erforderliche Paket zu installieren. Wie bereits erwähnt, sind die Konfigurationen für viel einfacher, wenn Sie die Komplexität der Konfiguration abstrahieren. Dies kann mit SSMTP erfolgen:

 sudo apt install ssmtp

Schritt 3. Überprüfen Sie die Installation

Nach Abschluss der Installation können Sie überprüfen, ob Nachrichten weiterleiten kann., Geben Sie den folgenden Code in das Terminal ein:

 echo "Subject: hello" | sendmail [email protected]

Es sollte die E-Mail senden, wenn alles richtig funktioniert. Hier ist die "hello" Zeichenfolge, die an den Befehl weitergeleitet wird, Gegenstand der gesendeten Nachricht, während die definierte E-Mail-Adresse natürlich der Empfänger der E-Mail ist.

Sie führen den Befehl aus… und, Hoppla: sendmail: Cannot open mailhub:25. Der Grund dafür ist, dass wir Mailhub-Einstellungen überhaupt nicht bereitgestellt haben. Um Nachrichten weiterzuleiten, müssen Sie einen SMTP-Server konfiguriert., Das ist, wo SSMTP wirklich gut funktioniert: Sie müssen nur einmal seine Konfigurationsdatei bearbeiten, und Sie sind gut zu gehen.

Schritt 4. Konfigurieren von SSMTP

Suchen wir die Konfigurationsdatei unter /etc/ssmtp/ssmtp.conf. Hier sollten Sie den folgenden Code eingeben, um ein SMTP-Relay zu konfigurieren:

Dies bedeutet, dass Sie einen externen Dienst einrichten, der Ihre E-Mails tatsächlich weiterleitet. Wenn Sie beispielsweise Anmeldeinformationen für Google Mail angeben, werden die vom Terminal gesendeten Nachrichten im Verzeichnis „Gesendete E-Mails“ Ihres Postfachs angezeigt. Die Konfigurationen sehen auch bei anderen Diensten ähnlich aus.,

Dies war die Grundkonfiguration für und die Installationsschritte für jedes häufig verwendete Befehlszeilen-Mailer-Paket. Als nächstes werden wir verschiedene andere Pakete installieren und ausprobieren.

Senden von E-Mails mit dem Befehl SSMTP

Dies ist ein nettes kleines Tool, das wir gerade für die E-Mail-Zustellung konfiguriert haben. Wie seineman Seite vorschlägt, ist es ein minimalistischer Emulator von. Daher können Benutzer mit SSMTP E-Mails über einen SMTP-Server über die Linux-Befehlszeile übertragen., Es bietet die Möglichkeit, eine Verbindung zu einem Mailhub mit einer geeigneten Konfigurationsdatei herzustellen. Wenn Ihre Konfigurationsdatei richtig eingerichtet wurde, können alle Ihre Sorgen bezüglich des Sendens von Befehlszeilen-E-Mails verschwinden.

Grundlegende Implementierung des Befehls SSTMP:

Wenn Sie nur SSMTP verwenden, sollte der Befehl wie folgt aussehen:

 ssmtp [email protected] < mail.txt

Nach dem Befehl ssmtp sollten Sie die Empfängeradresse eingeben und dann eine Datei einfügen, die im E-Mail-Text angezeigt wird. Hier können Sie Header für die Nachricht definieren, weitere Empfänger auflisten und den Inhaltstyp festlegen., Auf diese Weise können Sie HTML-E-Mails senden. SSMTP interpretiert Ihre Nachricht und verwendet die angegebenen Werte ordnungsgemäß. Hier ist ein Beispiel für einen HTML-Code, den Sie senden könnten:

Sie können mit SSMTP keine weiteren Optionen angeben, da sie durch ihr minimalistisches Design nicht respektiert werden.

Fehlerbehebung:

Falls Sie in der Befehlszeile auf den folgenden Fehler stoßen:

Das liegt wahrscheinlich daran, dass Google Mail SSMTP nicht als sichere Anwendung behandelt. Um diesen Fehler zu beheben, müssen Sie die Einstellungen in Ihrem Google Mail – Konto ändern-Sie können dort auch weitere Informationen zu potenziellen Risiken nachschlagen.,

Senden von E-Mails mit dem Befehl Sendmail

Seit geraumer Zeit ist sendmail der klassische Mailübertragungsagent aus der Welt von UNIX. Es wurde erstmals 1979 eingeführt und aufgrund seiner hochkonfigurierbaren Natur und Skalierbarkeit ist es die Standardeinstellung für Serveradministratoren.,

Wir haben bereits gesehen, wie Sie grundlegende E-Mails mit dem Befehl ssmtp senden, also lassen Sie uns den Unterschied mit :

 echo "Subject: hello" | sendmail -v [email protected] < mail.txt

Ich habe das Argument -v eingefügt, wodurch die Kommunikation zwischen dem Mailserver und Ihrem Mailübertragungsagenten sichtbar wird.

Es gibt viele Konfigurationen, die Sie verwenden können, wenn Sie Ihren eigenen Mailserver einrichten und Sendmail darauf implementieren. Dies liegt jedoch außerhalb des Geltungsbereichs dieses Artikels. Wir werden in einem kommenden auf das Thema zurückkommen. Stay tuned.,

Senden von E-Mails mit CURL Befehl

Dieses Tool ist auch enorm häufig für die Datenübertragung von einem Server. Es unterstützt viele Protokolle, wie HTTP -, FTP -, POP3-oder SMTP. Das CURL-Paket wird weltweit weit verbreitet verwendet, ein Hauptgrund ist, dass es eine native PHP-Implementierung hat und PHP lange Zeit die standardmäßige serverseitige Skriptsprache war.

Installation:

Prüfen Sie, ob das Paket bereits installiert ist., Wenn Sie das Folgende nicht ausführen:

 sudo apt install curl

Wenn Sie fertig sind, können Sie auf den Spickzettel für die verfügbaren Optionen für CURL zugreifen, indem Sie curl -hausführen. Auf die detailliertere Version kann entweder oder curl --manualzugegriffen werden. Wenn Sie mit cURL fundierte Kenntnisse erwerben möchten, gibt es dieses praktische Ebook, das alles enthält, was Sie jemals wissen möchten.

Grundlegende Implementierung für das Senden von E-Mails mit CURL:

Um eine E-Mail mit CURL zu senden, müssen Sie eine SMTP-Verbindung einrichten., Meistens werden die ausgehenden Mailserver von Google oder Yahoo zum Testen des E-Mail-Versands mit SMTP verwendet. Bitte beachten Sie, dass Sie den Zugriff für weniger sichere Apps in den Google Mail-Einstellungen aktivieren müssen und ähnliche zusätzliche Sicherheitseinstellungen möglicherweise auch für Yahoo gelten.

Im obigen Terminal-Befehlsausschnitt definieren die Parameter --url und --user die SMTP-Verbindungseinstellungen. Der Kennwortabschnitt für den Parameter --user ist das Kennwort Ihres Kontos für die angegebene E-Mail-Adresse. Natürlich können Sie auch Cloud-E-Mail-Dienstanbieter verwenden., Ich werde das mit Mailgun im folgenden Abschnitt zeigen.

Erweiterte Implementierung für das Senden von E-Mails mit CURL:

Wenn Sie mit E-Mail-Versandplattformen arbeiten, müssen Sie zuerst einen API-Schlüssel erhalten. In diesem Tutorial werde ich CURL E-Mail senden Beispiel mit Mailgun zeigen, so dass, wenn Sie während des Registrierungsprozesses stecken bleiben folgen Sie dieser Setup-Anleitung auf dem richtigen Weg zu bekommen.

Die syntax ist ziemlich einfach. Sie haben es vielleicht schon bemerkt, aber Sie müssen jede Zeile des Befehls mit \ Zeichen beenden., Dies ist ein Zeilenfortsetzungszeichen, der Befehl kann auch ohne sie alle in einer Zeile ausgeführt werden. Die andere Sache zu erinnern ist das -F option. Ein Auszug aus der Manpage:

 -F, --form <name=content> (HTTP) This lets curl emulate a filled-in form in which a user has pressed the submit button. This causes curl to POST data using the Content-Type multipart/form-data according to RFC 2388. This enables uploading of binary files etc. To force the 'content' part to be a file, prefix the file name with an @sign.

Wie ich bereits erwähnt habe, ist es eine gute Praxis, in die Handbücher einzutauchen, wenn Sie diese Befehlszeilen-Mailer-Befehle verwenden. Wie das CURL-Handbuch sagt, erstellen Sie im Grunde ein Formular zum Senden. Jede Zeile ist ein Eintrag als name=content Paar. Wenn Sie Dateien von Ihrem lokalen Computer anhängen, benötigen Sie eine @ vor dem Dateinamen.,

So sieht die zugestellte E-Mail aus:

Sie können dasselbe mit den meisten anderen E-Mail-Zustellplattformen wie Sendgrid tun.

Senden von HTML-E-Mails über die Befehlszeile mit CURL:

Sie können dieselbe Logik zum Erstellen eines Formulars in einer Textdatei anwenden, mit der Sie HTML-Nachrichten problemlos senden können:

Wenn Sie den einfachen Befehl aus dem ersten Beispiel ausführen…

Fehlerbehebung:

Möglicherweise benötigen Sie den Schalter --insecure, mit dem CURL „unsichere“ SSL-Verbindungen und-Übertragungen durchführen kann., CURL gibt eine Fehlermeldung zurück, wenn der Remoteserver ein selbstsigniertes Zertifikat verwendet oder wenn das Remoteserverzertifikat nicht von einer in der CA-Zertifikatdatei aufgelisteten Zertifizierungsstelle signiert wurde.

Senden von E-Mails mit dem Befehl Swaks

Wie in der Dokumentation angegeben, ist Swaks ein flexibles, skriptfähiges, transaktionsorientiertes SMTP-Testtool. Es kann SMTP-Funktionen und-Erweiterungen wie TLS, Authentifizierung und Pipelining sowie mehrere Versionen der SMTP-Protokolle verarbeiten. Es unterstützt auch mehrere Transportmethoden, einschließlich UNIX-Domain-Sockets, Internet-Domain-Sockets und Pipes zu erzeugten Prozessen.,

Installation:

 sudo apt install swaks

Grundlegende Implementierung für das Senden von E-Mails mit Swaks:

Um eine Verbindung zu einem SMTP-Konto herzustellen, müssen Sie den Server angeben -s, den Benutzer -au, das Passwort -ap und die Adresse -t (where you want to send your mail) flags. Das Flag -tls ist auch wichtig, wenn Sie eine Verbindung über Port 587herstellen.,

 swaks --to [email protected] -s smtp.gmail.com:587 -tls -au <user-account> -ap <account-password>

Die Anmeldeinformationen können auch über Befehlszeilenansagen bereitgestellt werden, wenn Sie nur angeben, dass -a authentifiziert werden soll, ohne den Benutzer und das Kennwort über Befehlszeilenoptionen auszufüllen.

Erweiterte Implementierung für das Senden von E-Mails mit Swaks:

 swaks --to [email protected] -s smtp.gmail.com:587 -tls -au <user-account> -ap <account-password> --attach -d ./mail.txt

Es gibt andere Optionen, die wir jetzt nicht berühren werden. Gehen wir zu unserem nächsten Mailer-Paket!

Senden von E-Mails mit dem Befehl Mutt

Mutt unterscheidet sich von den vorherigen E-Mail-Clients, da es sich um einen funktionsreichen Befehlszeilen-E-Mail-Client handelt., Sie können es zum Lesen von E-Mails vom Linux-Terminal, zum Herstellen einer Verbindung zu lokalen Benutzerpostfächern oder zu POP/IMAP-Servern verwenden. Mutt unterstützt verschiedene Postfachformate wie mbox, MH, Maildir, MMDF, volle Kontrolle über Nachrichtenkopfzeilen während der E-Mail-Komposition und mehrere Nachrichten-Tagging und Farben, um Nachrichten zu behandeln.

Installation:

 sudo apt install mutt

Grundlegende Implementierung für das Senden von E-Mails mit mutt:

Zu diesem Zeitpunkt werden Sie von der Struktur des Befehls nicht überrascht sein., Sie können einen leeren Nachrichtentext mit < /dev/null:

# mutt -s "Test Email" [email protected] < /dev/null

Erweiterte Implementierung für das Senden von E-Mails mit mutt:

Zum Senden von E-Mails einschließlich Anhängen benötigen Sie das Flag -a. Auf diese Weise können Sie nützliche Dateien wie Systemprotokolle an eine bestimmte Adresse senden.

# mutt -s "System logs" -a /opt/backup.sql [email protected] < /dev/null

Sie können auch HTML-E-Mails senden, wenn die Dateierweiterung, die Sie dem Nachrichtentext hinzufügen, im HTML-Format vorliegt., Mutt erkennt den Dateityp und löst ihn auf, damit Ihr HTML-Code nicht als Klartext gesendet wird:

mutt -s "Email subject" [email protected] < email.html

Dies ist es für das Senden von E-Mails mit Mutt. Wenn Sie es auf Ihrem Computer haben, würde ich vorschlagen, auszuprobieren, wie Sie mit eingehender Konfiguration Ihres Postfachs und Umgang mit eingehenden Nachrichten arbeiten können. Wenn Sie dies tun, teilen Sie bitte Ihre Gedanken im Kommentarbereich unten mit. Ich begrüße jede Meinung zu den im Tutorial gezeigten Paketen.

Senden von E-Mails mit dem Befehl Mailx

Die Mailutils sind ein zusammengesetztes Paket für mehrere Anwendungsfälle., Es wurde entwickelt, um regelmäßige Benutzer, Systemadministratoren und Entwickler zu bedienen. Wir werden nur auf die grundlegenden Funktionen der E-Mail-Weiterleitung eingehen. Wenn Sie an weiteren Funktionen interessiert sind, lesen Sie die man Seite.

Installation:

 sudo apt install mailutils

Grundlegende Implementierung für das Senden von E-Mails mit mailx:

Das mailx-Paket verfügt über 2 gleiche Befehlssyntax (mail und mailx beide arbeiten auf die gleiche Weise)., Der einfachste Befehl besteht aus dem Befehl mail/mailx und der Adresse, an die die E-Mail gesendet werden soll, aber Sie würden wahrscheinlich den Betreff und zumindest einen textbasierten Nachrichtentext einschließen. Ein solcher Befehl sollte folgendermaßen aussehen:

 echo "message body" | mail -s "subject" [email protected]

Wenn Sie den Befehl echo verwenden und die Ausgabe an den Befehl mail weiterleiten, können Sie die zusätzlichen Eingabeaufforderungen von mailx für Cc-Adressen und den Nachrichtentext vermeiden.,

Erweiterte Implementierung für E-Mail-Versand mit mailx:

Für das erweiterte Beispiel senden wir erneut eine vollwertige HTML-E-Mail. Wir müssen die E-Mail-HTML-Datei unserer Wahl mit dem Zeichen < versehen und das „append flag“ mit dem Inhaltstyp hinzufügen. Der vollständige Code sieht wie folgt aus:

Sie können auch eine Rücksendeadresse mit --return-address=<EMAIL-ADDRESS>, was nützlich sein kann., Eine weitere nützliche Option, die ich nicht für die parallele Arbeit mit HTML-E-Mails verwenden konnte, ist die Bereitstellung von Anhängen in derselben Nachricht: -A "mail.txt". Obwohl Sie mehrere Empfänger auflisten können, kann nur ein einzelner Anhang angehängt werden. Sie können einen externen SMTP-Server konfigurieren, wenn Ihnen das gefällt.

Mit Telnet Alternative Openssl Befehl

Telnet ist ein interaktives Kommunikationsprotokoll für die Kommunikation mit einem anderen Host. Es könnte verwendet werden, um eine SMTP-Verbindung zu einem anderen Server zu öffnen und E-Mail-Nachrichten zu übertragen., Da das Protokoll jedoch nicht gesichert ist, lehnen die meisten Server diesen Kommunikationstyp ab. Hier kommt Openssl ins Bild, da es mit SSL/TLS-Sicherheit ausgestattet ist. Es wird ähnlich wie telnet mit einem Hostargument aufgerufen und führt implizit einen offenen Befehl aus:

Ich habe die Eingaben eingerückt, die Sie bereitstellen müssen, während der Kommunikationskanal geöffnet ist. Diese Eingaben sind selbsterklärend, aber eine Sache, die ich detailliert beschreiben muss, ist der Passwort-Hash. Es kann sich um einen base64-codierten Hash handeln, den Sie mit dem folgenden Befehl erhalten: echo -en '\[email protected]\000gmailpassword' | base64., Die Escape-Zeichen aus der Zeichenfolge können nicht weggelassen werden. Wenn Sie das base64-Paket nicht installiert haben, ist es über Paketmanager verfügbar.

Wie Sie oben sehen können, bietet dieses Mittel zum Senden von E-Mails nur eine Schnittstelle für textbasierte Nachrichten, daher ist es in Anwendungsfällen eingeschränkt. Andererseits werden alle mit dem Mailserver ausgetauschten Informationen angezeigt, was das Debuggen sehr einfach macht.

Fehlerbehebung bei E-Mail-Problemen

Überprüfen Sie die E-Mail-Protokolle

Sie müssen Ihre Protokolldatei finden, indem Sie zum entsprechenden Ordner navigieren. Ich bevorzuge meinen Code-Editor (zB., Sublime Text), damit ich die Protokolle mit Syntaxhighlight haben kann:

$ sudo subl /var/log

Abhängig von Ihrer aktuellen Linux-Distribution müssen Sie sich möglicherweise eine andere Quelle ansehen.
Das Protokoll kann nützliche Informationen über Lieferbarkeitsprobleme enthalten. Wenn Sie zu diesem Zeitpunkt nach unten scrollen:

können Sie überprüfen, ob die Lieferung erfolgreich war, oder verstehen, warum der Prozess fehlgeschlagen ist.,
Es kann vorkommen, dass Ihre Konsole keine Fehler anzeigt, aber im Mail-Protokoll können Sie sehen, dass die Nachricht für die Zustellung in die Warteschlange gestellt wurde, sodass der Prozess auf Ihrem Computer nicht angehalten wurde, aber wahrscheinlich von dem Mailserver verweigert wurde, den Sie erreichen wollten.

Ausführen den Befehl Alle in eine Sequence

Also, alles ist bereit für den finalen test. Alle Mailer-Terminal-Befehle werden hier in einer Skriptdatei gesammelt. Sobald Sie den Arbeitsordner mit der Skriptdatei heruntergeladen haben, navigieren Sie zum enthaltenen Ordner und machen Sie das Skript ausführbar: chmod u+x mail.sh., Wenn Sie alle von mir bereitgestellten Dateien bereit haben, können Sie mit dem Testen der im Tutorial gezeigten Mailer-Befehle beginnen. Sie müssen nur die "<RECIPIENT ADDRESS>" durch Ihre Test-E-Mail-Adresse im Code ersetzen und ./mail.sh in der Befehlszeile ausführen.

Sobald das Skript ausgeführt wird, wird Ihr Posteingang mit den Test-E-Mails gefüllt.

– Gut gemacht!

Zusammenfassung

In diesem Artikel habe ich Ihnen viele Möglichkeiten gezeigt, E-Mails über die Linux-Befehlszeile zu senden. Hoffentlich können Sie diese Dienste basierend auf dem, was Sie gesehen haben, auch selbst auf Ihrem Computer installieren und konfigurieren.,

Der Beitrag zeigte die am häufigsten verwendeten Kommandozeilen-Mailer-Pakete und wie man E-Mails mit ihnen sendet, und am Ende habe ich ein Shell-Skript erstellt, das alle im Artikel verwendeten Befehle sammelt. Sie können die Projektarbeitsdateien hier herunterladen, und wenn Sie die im Tutorial eingeführten Pakete installieren und auch Ihre Anmeldeinformationen und Empfängerdetails eingeben, können Sie das Skript nach Belieben ausführen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.