Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

Datei aus Mail extrahieren per Skript

Alles rund um das Internet, Internet-Anwendungen (E-Mail, Surfen, Cloud usw.) und das Einrichten von Netzwerken einschl. VPN unter Linux

Moderator: Moderatoren

Gesperrt
Alhifi
Newbie
Newbie
Beiträge: 10
Registriert: 16. Nov 2004, 13:59

Datei aus Mail extrahieren per Skript

Beitrag von Alhifi »

Hallo Linux-Profis,

ich hab (mal wieder) ein kleines ... Problem? Mhhh ... also ...

Ich würde gerne auf meinem kleinen SuSE 9.1-Linux-Server folgendes realisieren:

Mails an eine bestimmte Mail-Adresse werden an ein Skript (oder was auch immer) übergeben und verarbeitet, dabei sollen einfach nur die Dateianhänge aus der Mail "rausgeholt" und gespeichert werden. Gibt es da eventuell schon was in der Richtung?

Als zweites schwebt mir noch folgendes vor: Wiederum eine Mail an eine bestimmte Mail-Adresse wird ebenfalls an ein Skript übergeben. Die Mail enthält im Subject/Body eine URL, die dann von wget verarbeitet sprich downgeloaded wird. Gibt es ebenfalls schon was in der Richtung?

Hintergrund: Hier @work findet man schonmal im Internet das eine oder andere File, welches aber für einen Download bzw. den anschließenden Transport nach Hause zu groß ist. Da mein kleiner Server allerdings auch während der Tageszeit Mails abholt, wäre es eine feine Sache, wenn Dateien, die man sich nach Hause schickt, bereits extrahiert auf Festplatte liegen würden oder ggf. bereits von wget während der Tageszeit aus dem Internet gesaugt würden.

Vielen Dank für eure Hilfe!

Ciaoi
Alhifi
Benutzeravatar
TeXpert
Guru
Guru
Beiträge: 2166
Registriert: 17. Jan 2005, 11:22

Beitrag von TeXpert »

Du möchtest procmail verwenden, hier kannst Du alles aufrufen und mit den Mails machen was Spass macht, z.B. mit procmail ein Script in einer beliebigen P*-Sprache basteln, dass die Mail entsprechend auseinander nimmt, attachments dekodiert und speichert
Alhifi
Newbie
Newbie
Beiträge: 10
Registriert: 16. Nov 2004, 13:59

Beitrag von Alhifi »

Danke für die schnelle Antwort!

Mhhh, procmail?

Ich vergaß zu erwähnen, das ich froh bin, das auf meinem System "erfolgreich" eMails per fetchmail, postfix, antivir, amavis, spamassasin und cyrus verarbeitet werden, kann man denn da procmail noch integrieren???

Problem: Ich kann nicht programmieren, also nix mit Perl oder Shell-Skripten.

Kann man denn procmail so konfigurieren, das es nur für 1-2 Mail-Adressen aktiv wird, also z.B. über die alias-Tabelle starten, wenn halt eine Mail auf einer bestimmten Adresse ankommt, die dann in procmail pipen?

Ciaoi
Alhifi
Benutzeravatar
TeXpert
Guru
Guru
Beiträge: 2166
Registriert: 17. Jan 2005, 11:22

Beitrag von TeXpert »

ich sammel bei mir auch Mails mit fetchmail ein, allerdings nutze ich courier :D da der mir die Mails aus dem Homedir nimmt, dazu geht das ganz einfach:

fetchmail sammelt Mails ein, übergibt die an den User, der hat eine .forward mit

Code: Alles auswählen

"| /usr/bin/procmail -t"
und die entsprechende Einsortierung wird über die .procmailrc gemacht

Bei cyrus könntest Du ähnlich vorgehen, indem Du die Einsortierung über (?) deliver in der procmailrc machst (Hint: ich hab keine cyrus Erfahrung) also ungefähr so:

Code: Alles auswählen

:0
*^TO.*Adresse@example\.org
|/usr/lib/cyrus/bin/deliver <PARAMETER>
aber bei der Einbettung kann Dir google sicherlich besser weiterhelfen :)

zum Script, tja... Du kannst ja auch php oder so nehmen, aber ganz ohne lesen und basteln wirds nicht gehen, also Einstieg: in http://lists.suse.com/archive/suse-linu ... /4799.html beschreibt Kristian Koehntopp, wie er mit procmail und php die Mails verarbeitet und in einer DB speichert, das hilft Dir evtl. schon mal weiter
Alhifi
Newbie
Newbie
Beiträge: 10
Registriert: 16. Nov 2004, 13:59

Beitrag von Alhifi »

Hallo TeXpert,

erstmal vielen Dank für deine ausführliche Antwort, das kommt der Sache schon etwas näher ... aber der Groschen ist leider bei mir noch nicht gefallen, sorry.

Ich war eigentlich davon ausgegangen, das ich meine aktuelle Konfiguration nicht großartig ändern muß, d.h. ich hatte mir überlegt, im meiner alias-Tabelle was einzutragen wie folgt:

archiv : "| /usr/local/skript.sh"

Wenn mein Verständnis dafür ausreicht, übergibt "irgendwer" der Komponenten (vermutlich doch postfix, oder?) die komplette Mail nach Abholung durch fetchmail an das Skript, welches dann die Mail verarbeiten soll.

Dein Link war dahingehend schon hilfreich bez. der Löschung des Headers aus der Mail, wie ich dann allerdings aus dem verbleibenden Rest des Bodys wieder eine Datei machen kann, wüßte ich aktuell leider nicht.

Ciaoi
Alhifi
Benutzeravatar
oc2pus
Ultimate Guru
Ultimate Guru
Beiträge: 6506
Registriert: 21. Jun 2004, 13:01

Beitrag von oc2pus »

Vielleicht kannst du sowas gebrauchen ;)
zum Studium und abändern ;)

dieses Script zerlegt eine mail in seine Komponenten:

Code: Alles auswählen

#! /bin/sh
# Usage: unmbox.sh dir < email

[ ! -d $1 ] && mkdir $1

cd $1
cat > input
formail -f -X '' < input > header # no blank lines
formail -I '' < input > body # blank lines at top/bottom

if grep -o "boundary=\"[A-Za-z0-9 '()+_,./:?-]*[A-Za-z0-9'()+_,./:?-]\"" header > boundary; then
	. boundary
	eboundary=`sed 's/[()+.?]/\\&/g' <<< "$boundary"`
	csplit body "/^--$eboundary/" '{*}' # xx00, xx01, ...
	for i in xx??; do
		if head -1 $i | egrep "^--$eboundary\$" > /dev/null; then
			sed '1d' $i | unmbox.sh $i.mbox
		fi
	done
else
	rm boundary
fi
dieses script baut aus den Komponenten eine email wieder zusammen:

Code: Alles auswählen

#! /bin/sh
# Usage: mbox.sh dir > email

cd $1
sed '/^$/ d' header # NO blank lines in header

if [ -f boundary ]; then
	. boundary
	echo
	for i in xx??.mbox; do
		echo "--$boundary"
		mbox.sh $i
	done
	echo "--$boundary--"
	echo
else
	[ "`head -1 body`" ] && echo # blank line at top
	cat body
	[ "`tail -1 body`" ] && echo # blank line at bottom
	: # dummy, so that return code is 0
fi
tell people what you want to do, and they'll probably help you to do it.
PackMan
LinWiki : Das Wiki für Linux User
Benutzeravatar
TeXpert
Guru
Guru
Beiträge: 2166
Registriert: 17. Jan 2005, 11:22

Beitrag von TeXpert »

Alhifi hat geschrieben: Ich war eigentlich davon ausgegangen, das ich meine aktuelle Konfiguration nicht großartig ändern muß, d.h. ich hatte mir überlegt, im meiner alias-Tabelle was einzutragen wie folgt:

archiv : "| /usr/local/skript.sh"

Wenn mein Verständnis dafür ausreicht, übergibt "irgendwer" der Komponenten (vermutlich doch postfix, oder?) die komplette Mail nach Abholung durch fetchmail an das Skript, welches dann die Mail verarbeiten soll.
wenn das so mit cyrus geht sollte das ja schon reichen, aber die Frage kann ja nur die Doku beantworten ;)

aber zur cyrus/procmail-Integration hab ich noch das hier in meinen Bookmarks gefunden: http://www.tuxfutter.de/wiki/Mailsystem ... -Filterung
Gesperrt