ubuntuusers.de

e-mails aus Konsole versenden (Script, Telnet?)

Status: Gelöst | Ubuntu-Version: 8.04 (Hardy Heron)
Antworten |

Dakuan

Avatar von Dakuan

Anmeldungsdatum:
2. November 2004

Beiträge: 6479

Wohnort: Hamburg

Situation: Netzwerk mit mehreren PCs, auf einem davon läuft postfix.

Problem: Ich möchte jetzt von jedem gerade angeschlossenen PC die Möglichkeit haben E-Mails zu verschicken, ohne viel konfigurieren oder installieren zu müssen.

Mein erster Test mit

telnet server.lan 25

war schonmal erfolgreich, ist aber nicht sehr komfortabel. Ich suche jetzt nach einer Möglichkeit das Ganze in ein Script zu packen. Soweit ich das bisher gesehen habe, lässt sich Telnet nicht verscripten. Gibt es da noch weitere Möglichkeiten oder habe ich da etwas wichtiges übersehen?

P.s. Da auf dem Server auch ein HTTP-Server läuft, ist es kein Problem das evtl. erforderliche Script zuvor herunterzuladen.

d1rk

Anmeldungsdatum:
5. April 2006

Beiträge: 2420

Dakuan schrieb:

Problem: Ich möchte jetzt von jedem gerade angeschlossenen PC die Möglichkeit haben E-Mails zu verschicken, ohne viel konfigurieren oder installieren zu müssen.

mail -s "betreff der nachricht" user@example.org << EOF
hier der inhalt der mail
EOF

Oder halt manuell mit Interaktion.

mail user@example.com

Zuerst wird der Betreff abgefragt, danach kann der Inhalt angegeben werden, gesendet wird die Mail mit Strg+D.

Jacore

Anmeldungsdatum:
25. Mai 2008

Beiträge: 550

eine "mail" installation zieht allerdings auch eine Installation eines MTA (zb Postfix 😉) nach sich.

Wenn Du den Mailversand nur über den einen vorhandenen MTA realisieren möchtest, kannst du z.B.

  • netcat (nc) anstelle von telnet verwenden, und das mit einem Shellscript machen, oder

  • vielleicht eine andere Sprache verwenden, die MEthoden zum Mailversand anbietet. z.B. PERL, Python oder PHP

Gruß

dominator

Avatar von dominator

Anmeldungsdatum:
18. März 2008

Beiträge: 90

Wohnort: Meistens im Bierparadies Oberfranken

Installiere dir ssmtp auf deinen "Clients" und trage dort den Postfix Server als mailhub ein 💡

SSMTP bringt ein eigenes sendmail Binary mit !

Dakuan

(Themenstarter)
Avatar von Dakuan

Anmeldungsdatum:
2. November 2004

Beiträge: 6479

Wohnort: Hamburg

War wohl doch wieder zu spät gestern. Auf nc hätte ich auch selber kommen können, aber zu angestrengt über ein Problem nachdenkt, sieht man den Wald vor lauter Bäumen nicht mehr.

Ein PHP Script zum Mailversand habe ich bereits, aber sowas ist nicht zum Versand von automatisch generierten Alarmmeldungen von anderen Rechnern geeignet.

Sid_Burn

Anmeldungsdatum:
23. Oktober 2004

Beiträge: 2159

Ich würde dir aber definitiv empfehlen einen lokalen MTA zum Mailversand zu nutzen, anstatt dich direkt mit dem MailServer zu verbinden.

Das direkte Verbindnden mit dem Mail Server hat einige Nachteile:

  • Sofern eine Verbindung nicht aufgebaut werden konnte (Server nicht erreichbar, interface gerade down, routing probleme, ...) geht deine email komplett verloren

  • Es bremst deine Shell Skripte oder programme aus, da hier I/O läuft und du entsprechend warten musst.

  • Selber SMTP auf protokoll ebene nutzen finde ich z.B. eher lästig und komplizierter

Nutzt du einen lokalen MTA:

  • Skripte/Programme sind schneller da sie emails nur in eine queue in den lokalen server packen. Dieser kümmert sich dann um den versand der dann parallel geschieht.

  • Es gehen keine Mails verloren. Sollte ein Server mal nicht erreichbar sein, du lokale netzwerk probleme etc. haben dann fühlt sich die queue auf deinen MTA, und sobald das problem behoben ist, werden die emails versendet. Postfix als Beispiel hat hier sogar noch ein intelligentes management, da es den zielserver nicht mit anfragen überhäuft und ihn gleich wieder DDoS wenner erreichbar ist, oder dein netzwerk so auslastet das deine eigene verbindung komplett dadrunter leidet.

  • Du musst dich eben nicht um das SMTP Protokoll kümmern.

Von daher würde ich schon lieber auf der shell soetwas wie "mailx" nutzen. Hast du Postfix kannst du auch "sendmail" nutzen, da Postfix den gleichen Befehl zur verfügung stellt. Oder du nutzt eben Bibliotheken in diversen Sprachen wie unter Perl z.B. Mime::Lite das dir auch erlaubt Mails mit anhängen zu generieren etc.

Echte Nachteile eines lokal installierten MTA kenne ich keine. Auser das du eben ein MTA installiert hast.

d1rk

Anmeldungsdatum:
5. April 2006

Beiträge: 2420

Sid Burn schrieb:

Nutzt du einen lokalen MTA:

… wirst du keine Mails an andere Andressen schicken können, außer …@localhost, da Mails von Dialup-IPs generell von allen Mailservern geblockt werden.

Sid_Burn

Anmeldungsdatum:
23. Oktober 2004

Beiträge: 2159

Dirk Sohler schrieb:

Sid Burn schrieb:

Nutzt du einen lokalen MTA:

… wirst du keine Mails an andere Andressen schicken können, außer …@localhost, da Mails von Dialup-IPs generell von allen Mailservern geblockt werden.

Du musst ihn nur richtig Konfigurieren, zum Beispiel als Smarthost. Es geht hier nicht um einen lokalen MTA der als voller Mail-Server dienen soll, sondern der nur für die Auslieferung der Mails zum Haupt eMail server dienen soll!

Anstatt mit dem Hauptemail server direkt mittels "nc" oder ähnlichem zu kommunizieren.

Dakuan

(Themenstarter)
Avatar von Dakuan

Anmeldungsdatum:
2. November 2004

Beiträge: 6479

Wohnort: Hamburg

@Sid Burn: In einer Produktivumgebung treffen deine Argumente sicherlich zu, aber bei meinen 6 PCs handelt es sich mehr um eine Testumgebung. Und alleine dafür ist der administrative Aufwand schon recht hoch.

Sollte ein Server mal nicht erreichbar sein, du lokale netzwerk probleme etc. haben dann fühlt sich die queue auf deinen MTA, und sobald das problem behoben ist, werden die emails versendet.

Damit hatte ich schon Bekanntschaft gemacht. Was da alles rausgekommen ist nachdem ich die Konfiguration endlich richtig hatte ...

Sid_Burn

Anmeldungsdatum:
23. Oktober 2004

Beiträge: 2159

Dakuan schrieb:

@Sid Burn: In einer Produktivumgebung treffen deine Argumente sicherlich zu, aber bei meinen 6 PCs handelt es sich mehr um eine Testumgebung. Und alleine dafür ist der administrative Aufwand schon recht hoch.

Was für ein Administrativer Aufwand? Wenn ich "Postfix" installiere dann bietet er mir in einer Ncurses GUI schon verschiedene Setups aus. Darunter auch "Satellite System" das dann deine Mails die er erreicht weiter leitet. Wohin etc. fragt er alles ab. Das ist in 1Min eingerichtet.

Die eigentliche Arbeit ist dein Hauptemail Server der dann deine emails wirklich versendet, dort musst du aber auch nur die IP erlauben, oder am besten gleich dein ganzes Netz, so dass dies auch eine einmal Konfiguration bleibt.

Sendest du deine Mails über einen Mailserver vom ISP. Musst du Authentifzieren einrichten. http://www.cyberciti.biz/faq/postfix-smtp-authentication-for-mail-servers/ So eine Anleitung ist auch nur knapp 1 Din A4 Seite groß, in 5 Min erledigt und nicht wirklich ein großer Administrativer aufwand.

Wenn du es nicht machst und die nachteile für dich okay sind dann okay. Aber die Ausrede das es ein "großer Administrativer aufwand" ist, kann ich so nicht stehen lassen, das ist blödsinn. Da sind normale Routine aufgaben wie updaten Zeitintensiver als eine einmaleinrichtung.

Dakuan

(Themenstarter)
Avatar von Dakuan

Anmeldungsdatum:
2. November 2004

Beiträge: 6479

Wohnort: Hamburg

Darunter auch "Satellite System" das dann deine Mails die er erreicht weiter leitet. Wohin etc. fragt er alles ab. Das ist in 1Min eingerichtet.

Genau 2 Dinge wurde ich gefragt und den Rest hatte ich laut Wiki eingerichtet. Das funktionierte aber nicht sofort. Ging erst nachdem ich von 1&1 auf t-online gewechselt hatte. Ist jetzt aber auch egal.

Ausserdem geht es mir nicht einfach nur darum nur nach Kochrezept eine schnelle Lösung zu haben, sondern auch darum die technischen Möglichkeiten auszuprobieren. Dabei ist uninteressant, wie lange ich für die für mich richtige Lösung brauche, wenn die Lösung nur einfach, schnell und zuverlässig reproduzierbar ist, d.h. auch ohne viel Konfigurationsaufwand.

BTW, die Lösung mit netcat erscheint mir inzwischen zu kompliziert. Eine Kombination von Telnet und Expect scheint da einfacher realisierbar.

Sid_Burn

Anmeldungsdatum:
23. Oktober 2004

Beiträge: 2159

Dakuan schrieb:

Ausserdem geht es mir nicht einfach nur darum nur nach Kochrezept eine schnelle Lösung zu haben, sondern auch darum die technischen Möglichkeiten auszuprobieren. Dabei ist uninteressant, wie lange ich für die für mich richtige Lösung brauche, wenn die Lösung nur einfach, schnell und zuverlässig reproduzierbar ist, d.h. auch ohne viel Konfigurationsaufwand.

Irgendwie ist der Satz ein Wiederspruch in sich selbst. Dir geht es nicht darum eine schnelle Lösung zu haben. Das du die technischen Möglichkeiten ausprobierst, und es ist ja total uninteressant wie lange es dauert, aber danach schreibst du das eine Lösung ja auf einmal, einfach und schnell sein muss ohne großen Aufwand?

BTW, die Lösung mit netcat erscheint mir inzwischen zu kompliziert. Eine Kombination von Telnet und Expect scheint da einfacher realisierbar.

Genau das ist das was ich mit

* Selber SMTP auf protokoll ebene nutzen finde ich z.B. eher lästig und komplizierter

meinte.

Mir kommt es manchmal vor als wenn die Leute nicht weit genug denken. Du hast jetzt wie lange bisher gebraucht um eine lösung für dein Problem zu finden? Und nachdem du meintest eine einfache Lösung mit "nc" gefunden zu haben stellst du fest das es ja eigentlich doch viel zu kompliziert ist. Die einrichtung eines MTAs ist zum einen nicht so komplex, und du kannst danach eben Tools wie "mailx" auf der Shell nutzen, oder ohne Probleme Module für das Versenden von mails die dir solch eine Arbeit abnehmen. Irgendwo hast du einen aufwand, und die aussage, "aber ich muss dann eine konfiguration anpassen" ist nicht wirklich ein Grund dagegen. Vorallem wenn die Alternative dann auf einmal heißt. "Dann kommuniziere ich lieber auf SMTP ebene und programmier lieber alles nach".

Nebenbei du kannst auch mit MIME::Lite direkt Mails versenden und dich mit einem Mail Server verbinden.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
use MIME::Lite;
MIME::Lite->send(smtp => $host, AuthUser => $user, AuthPass => $pass);

### Create a new single-part message, to send a GIF file:
$msg = MIME::Lite->new(
    From     => 'me@myhost.com',
    To       => 'you@yourhost.com',
    Cc       => 'some@other.com, some@more.com',
    Subject  => 'Helloooooo, nurse!',
    Type     => 'image/gif',
    Encoding => 'base64',
    Path     => 'hellonurse.gif'
);
$msg->send(); # sends mail via smtp

Ansonsten bleiben die nachteile ohne einen lokalen MTA bei solch einem weg bestehen, nutzt du einen lokalem MTA, kannst du die zweite Zeile "MIME::Lite->send..." löschen und es würde genauso gehen. Allerdiengs eben mit den Vorteilen die die benutzung eines MTAs so bringt.

Antworten |