hehe ...nach langem probieren hab ich endlich eine (es gibt mehrere) Lösung gefunden.
eine mail besteht aus smtp-kommandos. wenn man per telnet auf den port 25 eines mailservers zufreift kann man die einzelnen kommandos eingeben.
beispiel: telnet mailserver 25
> EHLO: test.org
> MAIL FROM: absender@domain
> RCPT: empfänger
> SUBJECT: test
> data
> From: absender
> To: empfänger
> Subject: testmail
> hier der text
> auch über mehrere zeilen. ende der nachricht mit einem einzelnen punkt
> .
> quit
die zeilen FROM, TO und Subject unter data (was ja eigentlich nur der Message Text ist) braucht man um auf die Mail die man verschickt auch wieder einen reply machen zu können. Ansonsten zeigt das Mailprogram weder Absender noch Betreff. quit beendet die Verbindung.
das ganze kann man auch in ein 0815-Script einbauen:
Folgendes Script erhält seinen Text aus einer pipe z.B.
echo testtext | mymail sender@sender.de Betreff empfänger@empfänger.de
#!/bin/bash
# Mymail - Mails mit echter E-Mail-Adresse aus Shellscripten heraus
# verschicken
# Benutzung: mymail <Absender> Subject <Empfänger>
tempfile="temp.$!.$$"
if [ "$1" = "" -o "$2" = "" -o "$3" = "" -o "$#" -ne 3 ]
then
echo "ERROR ! Usage: mymail SENDER SUBJECT RCPT"
exit 1
fi
cat << E!O!F! > $tempfile
EHLO test.org
MAIL FROM: $1
RCPT TO: $3
SUBJECT: $2
data
From: $1
To: $3
Subject: $2
E!O!F!
while read a
do
echo $a >> $tempfile
done
cat <<E!O!F!>> $tempfile
.
quit
E!O!F!
#
#verschicken
cat $tempfile | netcat localhost 25
# Löschen
rm -f $tempfile
So .. das ist die Lösung. Macht aber keinen Mist damit. Das Script ist nicht dazu gedacht Fakemails zu verschicken sondern für sinvolle Anwendungen. Wer trozdem mist baut sollte sich drüber im klaren sein das man auch bei falscher Absender-Adresse den Sender ausfindig machen kann.
Gruß Frank
Lösung: Absender beim mail-Kommando
Re: Lösung: Absender beim mail-Kommando
Naja, nettes Skript, aber das setzt einen SMTP-Server voraus der auf Port 25 lauscht.
M.E. macht das mail Komando nicht anderes als die Mail zum Programm (sendmail) zu pipen(oder wie auch immer)
Will sagen, man müßte mal gucken im welchen Format sendmail|qmail-send(-inject)|exim die Daten erwartet.
Dann schreibt man sich einen echten Ersatz für mail.
Habe mir jetzt mal die qmail Doku angesehen.
TEST.deliver:
% echo to: me@whereever | /var/qmail/bin/qmail-inject
Dies schickt eine leere Mail an me@whereever
Das sollte dann auch mit allen SMTP-Kommandos klappen. (ungetestet)
Habe jetzt keine sendmail Maschine, aber das würde mich interessieren.
Wenn das mal einer mit dem sendmail-Binarie testen könnte?
Max
M.E. macht das mail Komando nicht anderes als die Mail zum Programm (sendmail) zu pipen(oder wie auch immer)
Will sagen, man müßte mal gucken im welchen Format sendmail|qmail-send(-inject)|exim die Daten erwartet.
Dann schreibt man sich einen echten Ersatz für mail.
Habe mir jetzt mal die qmail Doku angesehen.
TEST.deliver:
% echo to: me@whereever | /var/qmail/bin/qmail-inject
Dies schickt eine leere Mail an me@whereever
Das sollte dann auch mit allen SMTP-Kommandos klappen. (ungetestet)
Habe jetzt keine sendmail Maschine, aber das würde mich interessieren.
Wenn das mal einer mit dem sendmail-Binarie testen könnte?
Max
Re: Lösung: Absender beim mail-Kommando
stimmt .. das script braucht immer einen Mailserver der auf Port 25 lauscht.
zum einen kann man (ist im script auch so )
auf localhost 25 gehen .. oder alternativ mail.gmx.net.. die meisten server im netz sind dazu geeignet.
Ich denke das ist der simpelste weg...
konkret ging es bei diesem Script darum eine möglichkeit zu schaffen mails OHNE eigenen Server zu verschicken (z.B. von einer Sun aus). Sendmail auf Localhost war nur zum testen. mit der konfig der anderen kenne ich mich leider nicht aus.. werde aber mal testen wie sich das bewährt.
Andere Frage : Authentifizierung im SMTP ... hast du da noch eine Idee ?
Gruß Frank
zum einen kann man (ist im script auch so )
auf localhost 25 gehen .. oder alternativ mail.gmx.net.. die meisten server im netz sind dazu geeignet.
Ich denke das ist der simpelste weg...
konkret ging es bei diesem Script darum eine möglichkeit zu schaffen mails OHNE eigenen Server zu verschicken (z.B. von einer Sun aus). Sendmail auf Localhost war nur zum testen. mit der konfig der anderen kenne ich mich leider nicht aus.. werde aber mal testen wie sich das bewährt.
Andere Frage : Authentifizierung im SMTP ... hast du da noch eine Idee ?
Gruß Frank