Mailheader auf pop3 auf commandline runterladen
Hi, kennt jemand von Euch ein tool, mit dem man sich die Header aller auf einer pop3-Box liegenden Mails auf der commandline so runterladen kann, dass man sie irgendwo reinpipen kann o.ä.? Thx für jeden Tipp cu jth -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo zusammen, On Mittwoch 02 Juni 2010, Joerg Thuemmler wrote:
kennt jemand von Euch ein tool, mit dem man sich die Header aller auf einer pop3-Box liegenden Mails auf der commandline so runterladen kann, dass man sie irgendwo reinpipen kann o.ä.?
Spontan fällt mir telnet und netcat ein. Letzteres ist wahrscheinlich besser, wenn Du pipen willst. Hier habe ich ein Skript gefunden (ungeprüft), was sowas machen soll: http://tinyurl.com/358evvs Liebe Grüße Erik -- "Als ich die erste Havanna ansteckte, war das mein wahrer Geburtstag." Lord Grade of Elstree Erik P. Roderwald * Uhlenhoffweg 18 * 21129 Hamburg Telefon: +49 (0)40 8510 3150 * Fax: +49(0)40 8510 3148 http://www.zigarren-rollen.de http://www.roderwald.de http://blogs.roderwald.de http://forum.roderwald.de http://twitter.com/erikrode -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Erik P. Roderwald schrieb:
Hallo zusammen,
On Mittwoch 02 Juni 2010, Joerg Thuemmler wrote:
kennt jemand von Euch ein tool, mit dem man sich die Header aller auf einer pop3-Box liegenden Mails auf der commandline so runterladen kann, dass man sie irgendwo reinpipen kann o.ä.?
Spontan fällt mir telnet und netcat ein. Letzteres ist wahrscheinlich besser, wenn Du pipen willst. Hier habe ich ein Skript gefunden (ungeprüft), was sowas machen soll:
Liebe Grüße
Erik
Hi, ja, mit netcat auf die Box + top müßte was zu machen sein, werde mich mal etwas reinvertiefen. Telnet im "Batchmodus" sieht mir etwas zu krude aus, aber netcat versteht ja i/o-Umlenkungen wohl perfekt... Danke cu jth -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Joerg Thuemmler schrieb:
Erik P. Roderwald schrieb:
Hallo zusammen,
On Mittwoch 02 Juni 2010, Joerg Thuemmler wrote:
kennt jemand von Euch ein tool, mit dem man sich die Header aller auf einer pop3-Box liegenden Mails auf der commandline so runterladen kann, dass man sie irgendwo reinpipen kann o.ä.? Spontan fällt mir telnet und netcat ein. Letzteres ist wahrscheinlich besser, wenn Du pipen willst. Hier habe ich ein Skript gefunden (ungeprüft), was sowas machen soll:
Liebe Grüße
Erik
Hi,
ja, mit netcat auf die Box + top müßte was zu machen sein, werde mich mal etwas reinvertiefen. Telnet im "Batchmodus" sieht mir etwas zu krude aus, aber netcat versteht ja i/o-Umlenkungen wohl perfekt...
Danke
cu jth
Hi,
also netcat funzt perfect dafür (heißt ja nicht umsonst das "Schweizer
Messer fürs Netzwerk". Worauf man achten muss (zumindest bei meinem
Mailserver), sind Verzögerungen.
netcat mail.domain.tld 110 <
Am Wed, 02 Jun 2010 12:57:09 +0200
schrieb Joerg Thuemmler
Hi,
kennt jemand von Euch ein tool, mit dem man sich die Header aller auf einer pop3-Box liegenden Mails auf der commandline so runterladen kann, dass man sie irgendwo reinpipen kann o.ä.?
Die komplette Information findest du hier: http://www.rfc-editor.org/rfc/rfc1939.txt Im Prinzip geht es so: telnet my.mailserver 110 USER franz PASS blafasel LIST RETR 1 RETR 2 ... QUIT Falls dein Mailserver TLS verlangt, nimm statt telnet openssl s_client connect my.mailserver:110 \ -starttls pop3 -CApath /etc/ssl/certs man s_client(1) liefert weitere Informationen -Dieter -- Dieter Klünter | Systemberatung sip: +49.40.20932173 http://www.dpunkt.de/buecher/2104.html GPG Key ID:8EF7B6C6 -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Moin moin, Am 02.06.2010 14:21, schrieb Dieter Kluenter:
Am Wed, 02 Jun 2010 12:57:09 +0200 schrieb Joerg Thuemmler
: Hi,
kennt jemand von Euch ein tool, mit dem man sich die Header aller auf einer pop3-Box liegenden Mails auf der commandline so runterladen kann, dass man sie irgendwo reinpipen kann o.ä.?
Die komplette Information findest du hier: http://www.rfc-editor.org/rfc/rfc1939.txt Im Prinzip geht es so:
telnet my.mailserver 110 USER franz PASS blafasel LIST RETR 1 RETR 2 ... QUIT
Und wenn man TOP <msg-nr> 0 angibt erhält man die Mailheader von Nachricht <msg-nr> Setzt man statt der 0 ein x mit x>0 dann erhät man noch x-Zeilen des Bodies, sofern der Mailserver das TOP Command beherrscht.
Falls dein Mailserver TLS verlangt, nimm statt telnet openssl s_client connect my.mailserver:110 \ -starttls pop3 -CApath /etc/ssl/certs
man s_client(1) liefert weitere Informationen
-Dieter
lg max -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Dieter Thalmayr schrieb:
Joerg Thuemmler schrieb: Hi,
kennt jemand von Euch ein tool, mit dem man sich die Header aller auf einer pop3-Box liegenden Mails auf der commandline so runterladen kann, dass man sie irgendwo reinpipen kann o.ä.?
fetchmail?
Hi, fetchmail liefert mir, wenn Mails da sind... aber nicht die Header, habe zumindest keine Info dazu in der manpage gefunden. cu jth -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Mittwoch, 2. Juni 2010 12:57:09 schrieb Joerg Thuemmler: Hallo Jörg,
kennt jemand von Euch ein tool, mit dem man sich die Header aller auf einer pop3-Box liegenden Mails auf der commandline so runterladen kann, dass man sie irgendwo reinpipen kann o.ä.?
okay, ich hab sowas mal mit perl gemacht ... ---------------------------------------------------------------------------------------- #!/usr/bin/perl use Net::POP3; use Digest::MD5; #brauchts nur bei apop $hostname = "<popservername>"; $username = "<username>"; $password = "password"; $cnt = 1; # Pop - Server anrufen: $mailserv = new Net::POP3 ( $hostname ); unless ( $mailserv ) { die "Could not connect to Server $hostname; $!\n"; } $num_msg = $mailserv->login( $username, $password ); # ab hier schreiben wir nach outputfile ... open(OUTFILE, ">/tmp/outfilename.txt") or die " Datei konnte nicht geoeffnet werden: $!\n"; print OUTFILE "Total $num_msg messages\n"; # Aller Header abrufen: $headers = $mailserv->list(); foreach $message (keys ( %$headers ) ) { $size = $mailserv->list( $message ); # wir geben zuerst die groesse aus ... print OUTFILE "$cnt\n"; print OUTFILE $size; print OUTFILE "\n"; # Nur From: und Subject anzeigen: foreach $line (@$header ) { if ( ( $line =~ /^Subject/ ) || ( $line =~ /^From/ ) ) { print OUTFILE $line; } } print OUTFILE "ENDE\n"; # Leerzeile zwischend den Zeilen $cnt = $cnt + 1; } # Vebindung beenden $mailserv->quit(); close OUTFILE ---------------------------------------------------------------------------------------------- sicherlich mit Verbesserungspotential, aber lief bis vor einiger Zeit ohne Probleme... -- Beste Grüße Christian Paul Why you can't find your system administrators: Is engaged in a staring contest with a pack of evil dogs -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Christian Paul schrieb:
Am Mittwoch, 2. Juni 2010 12:57:09 schrieb Joerg Thuemmler:
Hallo Jörg,
kennt jemand von Euch ein tool, mit dem man sich die Header aller auf einer pop3-Box liegenden Mails auf der commandline so runterladen kann, dass man sie irgendwo reinpipen kann o.ä.?
okay, ich hab sowas mal mit perl gemacht ... ---------------------------------------------------------------------------------------- #!/usr/bin/perl
use Net::POP3; use Digest::MD5; #brauchts nur bei apop
$hostname = "<popservername>"; $username = "<username>"; $password = "password"; $cnt = 1;
# Pop - Server anrufen: $mailserv = new Net::POP3 ( $hostname ); unless ( $mailserv ) { die "Could not connect to Server $hostname; $!\n"; }
$num_msg = $mailserv->login( $username, $password );
# ab hier schreiben wir nach outputfile ...
open(OUTFILE, ">/tmp/outfilename.txt") or die " Datei konnte nicht geoeffnet werden: $!\n";
print OUTFILE "Total $num_msg messages\n";
# Aller Header abrufen:
$headers = $mailserv->list(); foreach $message (keys ( %$headers ) ) {
$size = $mailserv->list( $message );
# wir geben zuerst die groesse aus ... print OUTFILE "$cnt\n"; print OUTFILE $size; print OUTFILE "\n";
# Nur From: und Subject anzeigen:
foreach $line (@$header ) { if ( ( $line =~ /^Subject/ ) || ( $line =~ /^From/ ) ) { print OUTFILE $line; } } print OUTFILE "ENDE\n"; # Leerzeile zwischend den Zeilen
$cnt = $cnt + 1; }
# Vebindung beenden $mailserv->quit(); close OUTFILE
----------------------------------------------------------------------------------------------
sicherlich mit Verbesserungspotential, aber lief bis vor einiger Zeit ohne Probleme...
Hi, danke, daran bastle ich gerade. Allerdings in bash, da ich mich mit perl immer nicht so recht anfreunden kann (liegt an mir, gebe ich zu ;-) ). Einziger Wermutstropfen bislang: die benötigten Verzögerungen (netcat -i 1), weil sonst die top und list-Befehle ins leere laufen. Vielleicht geht das im Perl besser (im Grunde bräuchte ich die Verzögerung wohl nur nach dem "pass <geheim>", weil der Mailserver hier offensichtlich eine kleine Pause macht, netcat aber unverdrossen weitermacht, wenn es aus Dateien liest). Danke jedenfalls cu jth -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo zusammen, On Donnerstag 03 Juni 2010, Joerg Thuemmler wrote:
Vielleicht geht das im Perl besser
Du liest ja in Perl die Datei zeilenweise über eine foreach-Schleife aus. Man könnte z. B. in die foreach-Schleife am Ende eine if-Anweisung schreiben. Ungefähr so: $i=1; foreach ... { Code; if ($i>4) { machne_Pause $i++; } } Dann würden nur die ersten drei Zeilen verzögert ausgeführt und der Rest ohne. Nur sonne Idee. Liebe Grüße Erik -- "Die beste Zigarre der Welt ist die, die Ihnen schmeckt." Hendrik Kelner Erik P. Roderwald * Uhlenhoffweg 18 * 21129 Hamburg Telefon: +49 (0)40 8510 3150 * Fax: +49(0)40 8510 3148 http://www.zigarren-rollen.de http://www.roderwald.de http://blogs.roderwald.de http://forum.roderwald.de http://twitter.com/erikrode -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, Am Don, 03 Jun 2010, Erik P. Roderwald schrieb:
On Donnerstag 03 Juni 2010, Joerg Thuemmler wrote:
Vielleicht geht das im Perl besser
Du liest ja in Perl die Datei zeilenweise über eine foreach-Schleife aus. Man könnte z. B. in die foreach-Schleife am Ende eine if-Anweisung schreiben. Ungefähr so:
Unnötig. Um den ganzen Kram kümmert sich schon Net::POP3. Genau deswegen will man ja perl statt bash/netcat zu verwenden. BTW: netcat ist überflüssig, die bash kann das auch selber. exec 3<>/dev/tcp/MAILHOST/110 echo "USER" >&3 read <&3 ... Aber es ist mühsam, selber direkt POP3 zu reden, geschweige den POP3S oder gar IMAPS ... Mit Perl alles kein Problem. -dnh --
Leider Gottes ist es so, daß wenn man einen Spammer zu Strecke gebracht hat, dafür drei neue auftauchen. Das ist wie bei den Fliegen. Schlägst Du eine Tot, kommen 40 zur Beerdigung. ;) [> Martin Mewes und Michael Raab in suse-linux] -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
David Haller schrieb:
Hallo,
Am Don, 03 Jun 2010, Erik P. Roderwald schrieb:
On Donnerstag 03 Juni 2010, Joerg Thuemmler wrote:
Vielleicht geht das im Perl besser Du liest ja in Perl die Datei zeilenweise über eine foreach-Schleife aus. Man könnte z. B. in die foreach-Schleife am Ende eine if-Anweisung schreiben. Ungefähr so:
Unnötig. Um den ganzen Kram kümmert sich schon Net::POP3.
Genau deswegen will man ja perl statt bash/netcat zu verwenden.
BTW: netcat ist überflüssig, die bash kann das auch selber.
exec 3<>/dev/tcp/MAILHOST/110 echo "USER" >&3 read <&3 ...
Aber es ist mühsam, selber direkt POP3 zu reden, geschweige den POP3S oder gar IMAPS ... Mit Perl alles kein Problem.
-dnh
Hi, ja, Danke. Ihr habt mir wieder mal bewiesen, dass die Welt ohne Perl nix ist ;-) Im Ernst - um damit mehr als abkopierte Scripte zum Laufen zu bringen, bräuchte ich nicht nur ein gutes Tutorial (wovon sich im Netz gewiss was finden ließe) sondern vor allem Zeit, die mir mein Job als Verantwortlicher für alles, was mehr Intelligenz als ein Lichtschalter hat, leider nicht läßt. Ich werde es also machen, wie immer: Copy+Paste, ausdrucken, das Prinzip verstehen (ist bei diesem Skript wohl kein Problem) und mir gut aufheben, falls ich mal Zeit für die Syntax habe. Das mir perl die Pause klärt, habe ich vermutet. Das mit der Bash ist hübsch, kannte ich natürlich nicht... Danke allen und v.a. Christian fürs Script. cu jth -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, Am Fre, 04 Jun 2010, Joerg Thuemmler schrieb:
David Haller schrieb:
Unnötig. Um den ganzen Kram kümmert sich schon Net::POP3. Genau deswegen will man ja perl statt bash/netcat zu verwenden. [..] ja, Danke. Ihr habt mir wieder mal bewiesen, dass die Welt ohne Perl nix ist ;-)
man perlintro ;) Es gibt hervorragende Einsteigerdoku. Und perl gibt's quasi überall und immer vorinstalliert. Außer auf Windows, da muß man's nachinstallieren. Einzelne Module können fehlen, die kann man ggfs. in sein ~/ nachinstallieren, wenn man keinen anderen Zugriff hat. Bei SUSE hängt übrigens schon das Boot-Krams von perl ab[1]. Und so ab ca. 5-10 ext. Programm-Aufrufen(!) (sed,grep usw.) lohnt es sich perl zu verwenden (rein von der Laufzeit her). Perl kann man sehr lesbar schreiben -- aber auch sehr unlesbar. -dnh [1] wenn ich mehr Zeit hätte würd ich mir das mal vornehmen, das ist z.Z. bei SUSE ein recht komplexes Gewurstel aus eher weniger sauberern Perlscripten... -- "[Film-] Schnitte sind fuer feige Verlierer" -- Leander Haussmann -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo zusammen, On Freitag 04 Juni 2010, David Haller wrote:
Du liest ja in Perl die Datei zeilenweise über eine foreach-Schleife aus. Man könnte z. B. in die foreach-Schleife am Ende eine if-Anweisung schreiben. Ungefähr so:
Unnötig. Um den ganzen Kram kümmert sich schon Net::POP3.
Noch besser. ;) Deshalb liebe ich Perl. Es gibt für fast jedes Problem schon eine Lösung. Liebe Grüße Erik -- "Eine gute Zigarre schließt die Tür vor den Gemeinheiten des Lebens." Franz Liszt Erik P. Roderwald * Uhlenhoffweg 18 * 21129 Hamburg Telefon: +49 (0)40 8510 3150 * Fax: +49(0)40 8510 3148 http://www.zigarren-rollen.de http://www.roderwald.de http://blogs.roderwald.de http://forum.roderwald.de http://twitter.com/erikrode -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Christian Paul schrieb:
Am Mittwoch, 2. Juni 2010 12:57:09 schrieb Joerg Thuemmler:
Hallo Jörg,
kennt jemand von Euch ein tool, mit dem man sich die Header aller auf einer pop3-Box liegenden Mails auf der commandline so runterladen kann, dass man sie irgendwo reinpipen kann o.ä.?
okay, ich hab sowas mal mit perl gemacht ... ---------------------------------------------------------------------------------------- #!/usr/bin/perl
use Net::POP3; use Digest::MD5; #brauchts nur bei apop
$hostname = "<popservername>"; $username = "<username>"; $password = "password"; $cnt = 1;
# Pop - Server anrufen: $mailserv = new Net::POP3 ( $hostname ); unless ( $mailserv ) { die "Could not connect to Server $hostname; $!\n"; }
$num_msg = $mailserv->login( $username, $password );
# ab hier schreiben wir nach outputfile ...
open(OUTFILE, ">/tmp/outfilename.txt") or die " Datei konnte nicht geoeffnet werden: $!\n";
print OUTFILE "Total $num_msg messages\n";
# Aller Header abrufen:
$headers = $mailserv->list(); foreach $message (keys ( %$headers ) ) {
$size = $mailserv->list( $message );
# wir geben zuerst die groesse aus ... print OUTFILE "$cnt\n"; print OUTFILE $size; print OUTFILE "\n";
# Nur From: und Subject anzeigen:
foreach $line (@$header ) { if ( ( $line =~ /^Subject/ ) || ( $line =~ /^From/ ) ) { print OUTFILE $line; } } print OUTFILE "ENDE\n"; # Leerzeile zwischend den Zeilen
$cnt = $cnt + 1; }
# Vebindung beenden $mailserv->quit(); close OUTFILE
----------------------------------------------------------------------------------------------
sicherlich mit Verbesserungspotential, aber lief bis vor einiger Zeit ohne Probleme...
Hi, Nachdem ich das script getestet habe und es nicht so lief, wie erwartet, ist es mir tatsächlich gelungen, das Problem (welches vielleicht der Mailserver unseres Providers hat) zu lösen. Ich weiß nicht, was standardmäßig ein LIST zurückzuliefern hat, bei uns kommt 1 13114 2 34252 3 334242 ... 12 33445 . ohne header o.ä. Damit ich header sehe, muß ich TOP <msgnr> 0 (0=nur Header oder >0, wenn ich Text will) verwenden. Clever, wie ich bin ;-) , habe ich also nach
# Nur From: und Subject anzeigen:
ein $header = $mailserv->top( $message ); eingefügt. Jetzt funzts... außerdem ist es mir gelungen, mit $hostname = $ARGV[0]; ... den konkret abgefragten account von der cmdline zu übernehmen. Alles in allem ist das doch schon ein großer Schritt auf dem Weg zum Perl-Experten, oder ;-) Thx & cu jth -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Moin moin, Am 04.06.2010 13:29, schrieb Joerg Thuemmler:
Hi,
Nachdem ich das script getestet habe und es nicht so lief, wie erwartet, ist es mir tatsächlich gelungen, das Problem (welches vielleicht der Mailserver unseres Providers hat) zu lösen. Ich weiß nicht, was standardmäßig ein LIST zurückzuliefern hat, bei uns kommt
1 13114 2 34252 3 334242 ... 12 33445
Also im Normalfall sollte List die in der POBOX liegenden Nachrichten in der Form <nr> <msg-bytes> anzeigen, wobei <nr> fortlaufend um 1 erhöht wird.
. ohne header o.ä. Damit ich header sehe, muß ich TOP <msgnr> 0 (0=nur Header oder >0, wenn ich Text will) verwenden.
Clever, wie ich bin ;-) , habe ich also nach
# Nur From: und Subject anzeigen:
ein $header = $mailserv->top( $message );
eingefügt. Jetzt funzts... außerdem ist es mir gelungen, mit
$hostname = $ARGV[0]; ...
den konkret abgefragten account von der cmdline zu übernehmen. Alles in allem ist das doch schon ein großer Schritt auf dem Weg zum Perl-Experten, oder ;-)
Thx & cu jth
lg max p.s. sonniges WE -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
participants (6)
-
Christian Paul
-
David Haller
-
Dieter Kluenter
-
Erik P. Roderwald
-
Joerg Thuemmler
-
Markus Heinze