Lösung: Absender beim mail-Kommando

Post Reply
Message
Author
frank

Lösung: Absender beim mail-Kommando

#1 Post by frank »

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

User avatar
max
Posts: 806
Joined: 14. May 2000 12:55
Location: Ruhrpott

Re: Lösung: Absender beim mail-Kommando

#2 Post by max »

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

frank

Re: Lösung: Absender beim mail-Kommando

#3 Post by frank »

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

Post Reply