[gelöst] Mailversand über Kommandozeile (mailx mit TLS)

Du suchst ein Programm für einen bestimmten Zweck?
Antworten
Benutzeravatar
manes
Beiträge: 958
Registriert: 27.08.2007 11:26:54
Wohnort: Köln
Kontaktdaten:

[gelöst] Mailversand über Kommandozeile (mailx mit TLS)

Beitrag von manes » 14.03.2012 15:00:41

hallo forum,

gnude hat auf seinem blog eine mailbenachrichtigung bei ssh-login vorgestellt.
das will ich auch haben! die mail soll aber an meinen privaten account (web.de, gmail, gmx, sowas halt) geschickt werden, und der verlangt eine authentifizierung, die Debianmailx nicht leisten kann (wenn ich das richtig sehe).
kann mir jemand ein schlankes programm empfehlen? cli bitte und mailversand reicht.

grüße
manes
Zuletzt geändert von manes am 14.03.2012 15:42:36, insgesamt 1-mal geändert.
Sometimes you have a programming problem and it seems like the best solution is to use regular expressions; now you have two problems.
David Mertz

Liffi
Beiträge: 2305
Registriert: 02.10.2004 01:33:05

Re: womit mailversand über kommandozeile

Beitrag von Liffi » 14.03.2012 15:08:22

manes hat geschrieben: cli bitte und mailversand reicht.
mutt laesst sich recht brauchbar scripten.

Benutzeravatar
manes
Beiträge: 958
Registriert: 27.08.2007 11:26:54
Wohnort: Köln
Kontaktdaten:

Re: womit mailversand über kommandozeile

Beitrag von manes » 14.03.2012 15:20:29

danke!
ich hatte an irgendetwas ganz schlankes gedacht: kann sonst nix und daher auch keine probleme bereiten.
wenn niemand mutt unterbieten kann, probiere ich es damit.

grüße
manes
Sometimes you have a programming problem and it seems like the best solution is to use regular expressions; now you have two problems.
David Mertz

Liffi
Beiträge: 2305
Registriert: 02.10.2004 01:33:05

Re: womit mailversand über kommandozeile

Beitrag von Liffi » 14.03.2012 15:25:39

Oder halt direkt mit mailx:

Code: Alles auswählen

mailx -v -s "$EMAIL_SUBJECT" \
-S smtp-use-starttls \
-S ssl-verify=ignore \
-S smtp-auth=login \
-S smtp=smtp://smtp.gmail.com:587 \
-S from="$FROM_EMAIL_ADDRESS($FRIENDLY_NAME)" \
-S smtp-auth-user=$FROM_EMAIL_ADDRESS \
-S smtp-auth-password=$EMAIL_ACCOUNT_PASSWORD \
-S ssl-verify=ignore \
-S nss-config-dir=~/.mozilla/firefox/xxxxxxxx.default/ \
$TO_EMAIL_ADDRESS
EDIT:: Siehe auch hier: http://fclose.com/b/linux/1411/
Das nss-config-dir wirst du dir vermutlich sparen koennen.

EDIT2: Ohne firefox wuerde ich Debianssmtp empfehlen. Klein und steht nicht im Weg.

Benutzeravatar
manes
Beiträge: 958
Registriert: 27.08.2007 11:26:54
Wohnort: Köln
Kontaktdaten:

Re: womit mailversand über kommandozeile

Beitrag von manes » 14.03.2012 15:41:31

cool! danke nochmal!
mailx ist auf der kiste schon drauf und kann das vermisste also doch.

grüße
manes
Sometimes you have a programming problem and it seems like the best solution is to use regular expressions; now you have two problems.
David Mertz

Benutzeravatar
manes
Beiträge: 958
Registriert: 27.08.2007 11:26:54
Wohnort: Köln
Kontaktdaten:

Mailversand Kommandozeile (mailx mit TLS)

Beitrag von manes » 14.03.2012 20:04:15

also für alle nochmal zum mitschreiben:
mailx ist ein virtuelles paket und enthält bsd-mailx oder heirloom-mailx. mit Debianbsd-mailx geht das hier nicht, aber Debianheirloom-mailx hat die notwendigen konfigurationsmöglichkeit.

in die ~/.bashrc des users einfügen:

Code: Alles auswählen

# mail schicken bei login in meinem useraccount
/home/<user>/login_news.sh
gleichnamiges script erstellen:

Code: Alles auswählen

echo 'Login on' `hostname` `who` | mailx -s "Login on `hostname` `who|awk '{print $1, $3, $4, $5}'`"  <mailanschrift_des_users>
und ausführbar machen.
~/.mailrc :

Code: Alles auswählen

#mailkonfiguration fürs skriptgesteuerte mailversenden
set smtp-use-starttls
set ssl-verify=ignore
set smtp=<smtp-zugang-des-mailproviders:port>  # z.b. smtp://mail.gmx.net:25 oder smtp://smtp.gmail.com:587
set smtp-auth=login
set smtp-auth-user=<mailanschrift_des_users>
set smtp-auth-password="<passwort_des_mailaccounts_im_klartext>"
set from=<mailanschrift_des_users>
ab sofort wird bei jedem login ratzfatz eine mail verschickt. so richtig glücklich wäre ich, wenn eine nachricht nur rausgeht, wenn der login nicht über eine lokale ip erfolgt…

security-problem: mailzugang im klartext im userverzeichnis.

vielen dank für die unterstützung!
Sometimes you have a programming problem and it seems like the best solution is to use regular expressions; now you have two problems.
David Mertz

Liffi
Beiträge: 2305
Registriert: 02.10.2004 01:33:05

Re: Mailversand Kommandozeile (mailx mit TLS)

Beitrag von Liffi » 15.03.2012 06:38:18

manes hat geschrieben: ab sofort wird bei jedem login ratzfatz eine mail verschickt. so richtig glücklich wäre ich, wenn eine nachricht nur rausgeht, wenn der login nicht über eine lokale ip erfolgt…
Kannst du $5 nicht danach untersuchen?

Benutzeravatar
manes
Beiträge: 958
Registriert: 27.08.2007 11:26:54
Wohnort: Köln
Kontaktdaten:

Re: Mailversand Kommandozeile (mailx mit TLS)

Beitrag von manes » 15.03.2012 15:14:40

Liffi hat geschrieben:Kannst du $5 nicht danach untersuchen?
ach, ich quäle mich (und gelegentlich das forum hier) seit jahren mit meinen bash-einzeilern. immer wieder tutorials lesen (und sie sind alle gleich!) macht langsam keinen spaß mehr, weil die lernkurve allzu flach verläuft. die antwort auf deine frage lautet: nein. :?

grüße
manes
Sometimes you have a programming problem and it seems like the best solution is to use regular expressions; now you have two problems.
David Mertz

Liffi
Beiträge: 2305
Registriert: 02.10.2004 01:33:05

Re: Mailversand Kommandozeile (mailx mit TLS)

Beitrag von Liffi » 16.03.2012 09:40:22

manes hat geschrieben: ach, ich quäle mich (und gelegentlich das forum hier) seit jahren mit meinen bash-einzeilern.
Vielleicht solltest du noch eine 'richtig' Skriptsprache dazunehmen.
Auch wenn in awk, sed und der bash eigentlich alles möglich ist, fühlen sich viele Dinge in Perl oder Python einfacher an.
Wenn du möglichst dich an der shell bleiben möchtest, würde ich Perl empfehlen.

Dann säh das möglicherweise so aus (orientiert sich sehr stark an deiner Lösung und ist nicht wirklich gut, zeigt aber, dass es nicht so schwer ist, das ganze in Perl umzusetzen):

Code: Alles auswählen

#!/usr/bin/perl

my $hostname     = `hostname`;
my $who_complete = `who`;
my $who_line     = `who|awk '{print \$1, \$3, \$4, \$5}'`;
my $from         = `who|awk '{print \$5}'`;
my $email        = "<mailanschrift_des_users>";

if ( not $from =~ /localhost/ ) 
{
    `echo "'Login on ' $hostname $who" | mailx -s "Login on $hostname $who_line " $email`;
}
EDIT:: Disclaimer: Getestet hab ichs allerdings nicht :-)

Benutzeravatar
manes
Beiträge: 958
Registriert: 27.08.2007 11:26:54
Wohnort: Köln
Kontaktdaten:

Re: [gelöst] Mailversand über Kommandozeile (mailx mit TLS)

Beitrag von manes » 02.04.2012 16:27:44

vielen dank für den perl-vorschlag!
ich will ihn wohl bedenken und, wenn mal ein bißchen zeit ist, ausprobieren.
grüße
manes
Sometimes you have a programming problem and it seems like the best solution is to use regular expressions; now you have two problems.
David Mertz

Antworten