Was bedeutet "mta" hier, gibt es einen vollständigen Namen oder einen Link? Das möchte ich als Anfänger wissen. Da mir die Erfahrung dazu fehlt.
Zen
5
@Zen MTA steht für Mail Transport Agent. Postfix, Sendmail, Qmail usw.
Francesco Laurita
@Zen Zum größten Teil können Sie MTA als SMTP- oder IMAP-Server bezeichnen.
user151841
1
Wenn Sie sich nicht sicher sind, wie Sie installieren / konfigurieren sollen, und Ubuntu: verwenden sudo apt-get install mailutilsund die Internetseite auswählen : E-Mails werden direkt über SMTP gesendet und empfangen. .
user1717828
86
Wenn Sie einen sauberen und einfachen Ansatz in bash wollen, und Sie wollen nicht verwenden cat, echoetc., wäre der einfachste Weg:
mail -s "subject here" email@address.com <<<"message"
<<<wird verwendet, um die Standardeingabe umzuleiten. Es ist schon lange ein Teil von Bash.
Hey, das hat super für mich funktioniert, danke! Wie würde ich mehrere Adressen angeben, an die geliefert werden soll?
E. Owen
1
@ E.Owen Sie können die Option -t verwenden, um an mehrere durch Leerzeichen getrennte Adressen zu senden
Jon
25
Wenn sowohl exim als auch ssmtp ausgeführt werden, können Probleme auftreten. Wenn Sie also nur einen einfachen MTA ausführen möchten, nur um einen einfachen SMTP-Client zum Senden von E-Mail-Benachrichtigungen zu haben, müssen Sie den eventuell vorinstallierten MTA wie exim oder postfix zuerst löschen und ssmtp neu installieren.
Dann ist es ganz einfach, nur 2 Dateien (revaliases und ssmtp.conf) zu konfigurieren - siehe ssmtp doc - und die Verwendung in Ihrem Bash- oder Bourne-Skript ist wie folgt:
#!/bin/sh
SUBJECT=$1
RECEIVER=$2
TEXT=$3
SERVER_NAME=$HOSTNAME
SENDER=$(whoami)
USER="noreply"[[-z $1 ]]&& SUBJECT="Notification from $SENDER on server $SERVER_NAME"[[-z $2 ]]&& RECEIVER="another_configured_email_address"[[-z $3 ]]&& TEXT="no text content"
MAIL_TXT="Subject: $SUBJECT\nFrom: $SENDER\nTo: $RECEIVER\n\n$TEXT"
echo -e $MAIL_TXT | sendmail -t
exit $?
Vergessen Sie natürlich nicht, Ihre Firewall-Ausgabe für den SMTP-Port (25) zu öffnen.
Wo kann ich die Portnummer in diesem Skript ändern? Auf meinem Server funktioniert der SMTP-Port über 8181.
Manix
Ich würde dies in dieser Shell nicht tun, sonst werden Sie früher oder später stecken bleiben. Sie können es in der Konfigurationsdatei tun: Siehe unix.stackexchange.com/a/132731
hornetbzz
1
Warum werden Zeilenumbrüche bearbeitet, wenn ich ein einfaches Echo $ MAIL_TXT mache?
KernelPanic
1
@ Marko: Bitte sehen Sie Mann Echo mit -e Option: Interpretation von Backslash
Escape aktivieren
Entschuldigung, habe den Parameter -e falsch gemacht
Downvoted, da mehr als ein Prozess das Skript gleichzeitig aufrufen kann. Dies kann zu einer beschädigten / falschen tmp-Datei führen. Außerdem wird die / tmp-Datei nicht jedes Mal überschrieben, wenn sie verwendet wird - sie wächst tatsächlich mit jeder E-Mail, die alle vorherigen E-Mails enthält. Nicht gut.
Taterhead
1
Das erste Schreiben in / tmp / mailtest ist ein Überschreiben, sodass alles entfernt wird, was zuvor darin enthalten war. Dennoch ist diese Methode aus den anderen von Ihnen beschriebenen Gründen nicht ideal.
Simon
8
Im Allgemeinen möchten Sie den mailBefehl verwenden, um Ihre Nachricht mit lokalem MTA zu senden (der sie entweder über SMTP an das Ziel übermittelt oder einfach an einen leistungsstärkeren SMTP-Server weiterleitet, z. B. an Ihren ISP). Wenn Sie keinen lokalen MTA haben (obwohl es für ein UNIX-ähnliches System etwas ungewöhnlich ist, einen wegzulassen), können Sie entweder einen minimalistischen MTA wie ssmtp verwenden .
ssmtpist recht einfach zu konfigurieren. Grundsätzlich müssen Sie nur angeben, wo sich der SMTP-Server Ihres Anbieters befindet:
# The place where the mail goes. The actual machine name is required# no MX records are consulted. Commonly mailhosts are named mail.domain.com# The example will fit if you are in domain.com and you mailhub is so named.
mailhub=mail
Eine andere Möglichkeit besteht darin, eines von unzähligen Skripten zu verwenden, die sich direkt mit dem SMTP-Server verbinden, und zu versuchen, dort eine Nachricht zu posten, z. B. Smtp-Auth-E-Mail-Skript , SMTP-CLI , SendEmail usw.
Ändern somehost, someportund someaccount@somedomaindie tatsächlichen Werte , die Sie verwenden würden. In diesem Beispiel wird keine Verschlüsselung und keine Authentifizierung durchgeführt.
Der mailBefehl macht das (wer hätte das gedacht ;-). Öffnen Sie Ihre Shell und geben Sie ein man mail, um die Handbuchseite für den mailBefehl für alle verfügbaren Optionen aufzurufen.
Ich habe das getan, aber es gibt keine Option, einen zu verwendenden Server anzugeben
appshare.co
1
Dies ist Teil Ihrer lokalen Mail Transfer Agent-Konfiguration, z. B. Sendmail oder Postfix.
DarkDust
2
Sie brauchen nicht einmal einen MTA. Das SMTP-Protokoll ist einfach genug, um es direkt auf Ihren SMTP-Server zu schreiben. Sie können sogar über SSL / TLS kommunizieren, wenn Sie das OpenSSL-Paket installiert haben. Überprüfen Sie diesen Beitrag: https://33hops.com/send-email-from-bash-shell.html
Das obige Beispiel zeigt, wie Sie Text- / HTML-E-Mails senden, die sofort funktionieren. Wenn Sie Anhänge hinzufügen möchten, kann die Sache etwas komplizierter werden. Sie müssen die Binärdateien mit base64 codieren und zwischen Grenzen einbetten. Dies ist ein guter Ort, um Nachforschungen anzustellen: http://forums.codeguru.com/showthread.php?418377-Send-Email-w-attachments-using-SMTP
Unter Linux kann das Mail- Dienstprogramm zum Senden von Anhängen mit der Option "-a" verwendet werden. Lesen Sie die Manpages, um mehr über die Option zu erfahren. Zum Beispiel sendet folgender Code einen Anhang:
mail -s "DAS IST SUBJEKT" -a Anhang.txt [email protected] <<< "Hallo Kumpel, bitte finden Sie Fehlerberichte."
Willkommen bei SO. Vielen Dank für die Beantwortung. Bitte lesen Sie die Informationen darüber, wie Sie eine gute Antwort schreiben und entsprechend ändern können. Viel Spaß SO ;-)
Wo Benutzer durch Ihren Mail-Namen und Passwort ersetzen, ist Ihr Google Mail- Passwort
[smtp.gmail.com]:587 user@gmail.com:password
Speichern und schließen Sie die Datei und machen Sie sie nur über root zugänglich: da es sich um einen vertraulichen Inhalt handelt, der Ihr Passwort enthält
smtp_sasl_security_options, die in der Konfiguration auf leer gesetzt werden , um sicherzustellen, dass keine mit Google Mail inkompatiblen Sicherheitsoptionen verwendet werden.
Fügen Sie nach Ihren Wünschen einen E-Mail- Text hinzu. Drücken Sie die Eingabetaste und dann Strg + D, um eine ordnungsgemäße Beendigung zu erreichen
wenn es nicht funktioniert , die alle Schritte überprüft erneut und überprüfen , ob u „ermöglicht weniger sicher app“ in Ihrem gmail
Starten Sie dann postfix neu, wenn Sie daran etwas ändern
Erstellen Sie für das Shell-Skript die .sh-Datei und fügen Sie den Befehl 6 step als Ihre Anforderung hinzu
Zum Beispiel nur für eine Probe
#!/bin/bash
REALVALUE=$(df /| grep /| awk '{ print $5}'| sed 's/%//g')
THRESHOLD=80if["$REALVALUE"-gt "$THRESHOLD"];then
mail -s 'Disk Space Alert' mailid@domainname.com << EOF
Your root partition remaining free space is critically low.Used: $REALVALUE%
EOF
fi
Das Skript sendet eine E-Mail, wenn die Festplattennutzung über den von der THRESHOLD-Variable angegebenen Prozentsatz steigt (hier 80%).
Sollte der Name dieser Antwort nicht "SENDEN SIE DIE MAIL VON LINUX AN [email protected] VIA GMAIL" lauten?
Cameron Hudson
1
Sie können den Befehl 'email' oder 'emailx' verwenden.
(1) $ vim /etc/mail.rc # oder # vim /etc/nail.rc
set from = xxx@xxx.com #set smtp = smtp.exmail.gmail.com #gmail's smtp server set smtp-auth-user = xxx@xxx.com #sender's email addressset smtp-auth-password = xxxxxxx #get from gmail, not your email account passwdset smtp-auth=login
Denn wenn es nicht von einem autorisierten Konto gesendet wird, wird die E-Mail an die Junk-Mail-Liste gesendet.
(2) $ echo "Bitte denken Sie daran, nicht verwendete Themen zu entfernen!" | mail -s "Abfallthemen" -a a.txt [email protected] #senden an Gruppenbenutzer '[email protected]'
Antworten:
Wenn der Server gut konfiguriert ist, z. B. über einen laufenden MTA, können Sie einfach den Befehl mail verwenden.
Um beispielsweise den Inhalt einer Datei zu senden, können Sie Folgendes tun:
man mail
für mehr Details.quelle
sudo apt-get install mailutils
und die Internetseite auswählen : E-Mails werden direkt über SMTP gesendet und empfangen. .Wenn Sie einen sauberen und einfachen Ansatz in bash wollen, und Sie wollen nicht verwenden
cat
,echo
etc., wäre der einfachste Weg:<<<
wird verwendet, um die Standardeingabe umzuleiten. Es ist schon lange ein Teil von Bash.quelle
cat << END
...END | mail -s "subject" [email protected]
Wenn sowohl exim als auch ssmtp ausgeführt werden, können Probleme auftreten. Wenn Sie also nur einen einfachen MTA ausführen möchten, nur um einen einfachen SMTP-Client zum Senden von E-Mail-Benachrichtigungen zu haben, müssen Sie den eventuell vorinstallierten MTA wie exim oder postfix zuerst löschen und ssmtp neu installieren.
Dann ist es ganz einfach, nur 2 Dateien (revaliases und ssmtp.conf) zu konfigurieren - siehe ssmtp doc - und die Verwendung in Ihrem Bash- oder Bourne-Skript ist wie folgt:
Vergessen Sie natürlich nicht, Ihre Firewall-Ausgabe für den SMTP-Port (25) zu öffnen.
quelle
Eine weitere Option für ein Bash-Skript:
/tmp/mailtest
wird bei jeder Verwendung dieses Skripts überschrieben.quelle
Im Allgemeinen möchten Sie den
mail
Befehl verwenden, um Ihre Nachricht mit lokalem MTA zu senden (der sie entweder über SMTP an das Ziel übermittelt oder einfach an einen leistungsstärkeren SMTP-Server weiterleitet, z. B. an Ihren ISP). Wenn Sie keinen lokalen MTA haben (obwohl es für ein UNIX-ähnliches System etwas ungewöhnlich ist, einen wegzulassen), können Sie entweder einen minimalistischen MTA wie ssmtp verwenden .ssmtp
ist recht einfach zu konfigurieren. Grundsätzlich müssen Sie nur angeben, wo sich der SMTP-Server Ihres Anbieters befindet:Eine andere Möglichkeit besteht darin, eines von unzähligen Skripten zu verwenden, die sich direkt mit dem SMTP-Server verbinden, und zu versuchen, dort eine Nachricht zu posten, z. B. Smtp-Auth-E-Mail-Skript , SMTP-CLI , SendEmail usw.
quelle
Wenn Sie zugeben, dass Sie einen SMTP-Server verwenden möchten, können Sie Folgendes tun:
Ändern
somehost
,someport
undsomeaccount@somedomain
die tatsächlichen Werte , die Sie verwenden würden. In diesem Beispiel wird keine Verschlüsselung und keine Authentifizierung durchgeführt.quelle
mailx
nicht installiert?Der
mail
Befehl macht das (wer hätte das gedacht ;-). Öffnen Sie Ihre Shell und geben Sie einman mail
, um die Handbuchseite für denmail
Befehl für alle verfügbaren Optionen aufzurufen.quelle
Sie brauchen nicht einmal einen MTA. Das SMTP-Protokoll ist einfach genug, um es direkt auf Ihren SMTP-Server zu schreiben. Sie können sogar über SSL / TLS kommunizieren, wenn Sie das OpenSSL-Paket installiert haben. Überprüfen Sie diesen Beitrag: https://33hops.com/send-email-from-bash-shell.html
Das obige Beispiel zeigt, wie Sie Text- / HTML-E-Mails senden, die sofort funktionieren. Wenn Sie Anhänge hinzufügen möchten, kann die Sache etwas komplizierter werden. Sie müssen die Binärdateien mit base64 codieren und zwischen Grenzen einbetten. Dies ist ein guter Ort, um Nachforschungen anzustellen: http://forums.codeguru.com/showthread.php?418377-Send-Email-w-attachments-using-SMTP
quelle
Unter Linux kann das Mail- Dienstprogramm zum Senden von Anhängen mit der Option "-a" verwendet werden. Lesen Sie die Manpages, um mehr über die Option zu erfahren. Zum Beispiel sendet folgender Code einen Anhang:
mail -s "DAS IST SUBJEKT" -a Anhang.txt [email protected] <<< "Hallo Kumpel, bitte finden Sie Fehlerberichte."
quelle
SENDEN SIE DIE MAIL VON LINUX AN GMAIL
POSTFIX VERWENDEN
1: Software installieren
Debian und Ubuntu:
OpenSUSE:
Fedora:
CentOS:
Arch Linux:
FreeBSD:
Wählen Sie in der Konfiguration die SASL-Unterstützung aus
2. Konfigurieren Sie Google Mail
/ etc / postfix. Erstellen oder bearbeiten Sie die Passwortdatei:
Ich benutze VIM. Du kannst jeden Dateibearbeiter wie Nano, Cat ... verwenden.
> Ubuntu, Fedora, CentOS, Debian, OpenSUSE, Arch Linux:
füge das hinzu
Wo Benutzer durch Ihren Mail-Namen und Passwort ersetzen, ist Ihr Google Mail- Passwort
Speichern und schließen Sie die Datei und machen Sie sie nur über root zugänglich: da es sich um einen vertraulichen Inhalt handelt, der Ihr Passwort enthält
> FreeBSD:
Verzeichnis / usr / local / etc / postfix.
Fügen Sie die Zeile hinzu:
Speichern und nur über root zugänglich machen:
3. Postfix-Konfiguration
Konfigurationsdatei main.cf
6 Parameter müssen wir im Postfix einstellen
Ubuntu, Arch Linux, Debian:
bearbeiten
Ändern Sie die folgenden Werte:
smtp_sasl_security_options, die in der Konfiguration auf leer gesetzt werden , um sicherzustellen, dass keine mit Google Mail inkompatiblen Sicherheitsoptionen verwendet werden.
speichern und schließen
wie für
OpenSUSE:
ändern
Außerdem muss die Datei master.cf konfiguriert werden
ändern:
wie durch Kommentieren dieser Zeile (# entfernen)
speichern und schließen
Fedora, CentOS:
ändern
FreeBSD:
ändern:
Speichern und schließen Sie diese
4. Passwortdatei verarbeiten:
Ubuntu, Fedora, CentOS, OpenSUSE, Arch Linux, Debian:
für freeBSD
4.1) Starten Sie Postfix neu
Ubuntu, Fedora, CentOS, OpenSUSE, Arch Linux, Debian:
für FreeBSD:
hinzufügen
Speichern und dann starten
5. Aktivieren Sie "Weniger sichere Apps" in Google Mail mithilfe des folgenden Links
https://support.google.com/accounts/answer/6010255
6. Senden Sie eine Test-E-Mail
Drücken Sie Enter
Fügen Sie nach Ihren Wünschen einen E-Mail- Text hinzu. Drücken Sie die Eingabetaste und dann Strg + D, um eine ordnungsgemäße Beendigung zu erreichen
wenn es nicht funktioniert , die alle Schritte überprüft erneut und überprüfen , ob u „ermöglicht weniger sicher app“ in Ihrem gmail
Starten Sie dann postfix neu, wenn Sie daran etwas ändern
Erstellen Sie für das Shell-Skript die .sh-Datei und fügen Sie den Befehl 6 step als Ihre Anforderung hinzu
Zum Beispiel nur für eine Probe
Das Skript sendet eine E-Mail, wenn die Festplattennutzung über den von der THRESHOLD-Variable angegebenen Prozentsatz steigt (hier 80%).
quelle
Sie können den Befehl 'email' oder 'emailx' verwenden.
(1) $ vim /etc/mail.rc # oder # vim /etc/nail.rc
Denn wenn es nicht von einem autorisierten Konto gesendet wird, wird die E-Mail an die Junk-Mail-Liste gesendet.
(2) $ echo "Bitte denken Sie daran, nicht verwendete Themen zu entfernen!" | mail -s "Abfallthemen" -a a.txt [email protected] #senden an Gruppenbenutzer '[email protected]'
quelle