Thread EMails empfangen und weiterverarbeiten
(15 answers)
Opened by Gustl at 2013-05-06 13:43
Ich habe es nun mit Perl::Sockets gelöst, da das andere Modul nicht funktioniert (siehe oben)
Hier mein Skript: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 #!/usr/bin/perl use Socket; use warnings; use strict; my $port = 25; my $sockaddr = 'S n a4 x8'; my $authcount=0; my ($name, $aliases, $proto) = getprotobyname('tcp'); print "Port = $port\n"; my $thisaddr = gethostbyname('157.163.168.131'); my $this = pack($sockaddr, AF_INET, $port, $thisaddr); socket(S, AF_INET, SOCK_STREAM, $proto); bind(S,$this) || die "bind: $!"; listen(S,5) || die "connect: $!"; select(S); $| = 1; select(STDOUT); my $pid; for(;;) { print "Listening for connection....\n"; my $mail_content = ""; my $bool_data = 0; my $addr; ($addr = accept(NS,S)) || die $!; send(NS,"220 okey-dokey\r\n",0); my ($af,$port,$inetaddr) = unpack($sockaddr,$addr); my @inetaddr = unpack('C4',$inetaddr); #print "$af $port @inetaddr\n"; my $ctr=0; while (my $t=<NS>) { $ctr++; if( substr($t,0,4) eq "QUIT") { send(NS,"221 Bye\r\n",0); last; } print $t; #print FIL $t; if( substr($t,0,1) eq '.') { send(NS,"250 okey-dokey\r\n",0); $bool_data = 0; next; } if($bool_data){ $mail_content .= $t; } my $x=substr($t,0,4); if( ($x eq "EHLO") ||($x eq "HELO") || ($x eq "RCPT") || ($x eq "MAIL") || ($x eq "RSET") || ($x eq "QUIT")) { send(NS,"250 " . $t . " okey-dokey\r\n",0); } if($x eq "DATA"){ send(NS,"354 End data with .\r\n",0); $bool_data = 1; } } close(NS); analyse_email($mail_content); } sub analyse_email{ my $mail = shift; print "\n\nEMAIL:\n".$mail; } Hier der Ablauf: Code: (dl
)
1 1: > 220 mail.example.com SMTP Foo Mailserver Bei einigen Zeilen verstehe ich zwar nicht was da genau gemacht wird, aber ich bekomme die Email und kann mit dieser weiter arbeiten. Vielen Dank. modedit Editiert von GwenDragon: Logeinträge in CODE-Tags gestellt; wg. besserer Formatierung; Bitte mal auch Vorschau beim Posten verwenden Last edited: 2013-05-22 15:26:17 +0200 (CEST) |