#!/usr/bin/perl use File::Path; use Net::POP3; # # Daten fuer den POP3-Server festlegen # $user = "fax"; $passwd = "password"; $pop3server = "localhost"; $sendercfg = "/etc/mail2fax/users"; # # Temporaeres Verzeichnis festlegen # $tmpdir = "/tmp/mail2fax"; # # per POP3 einloggen und die Anzahl der # vorhandenen Mails ermitteln $pop3 = Net::POP3->new($pop3server, Timeout => 60); $msgnr = $pop3->login($user,$passwd) || "Konnte nicht in $pop3Server einloggen"; ###debug #print "$msgnr Nachrichten\n\n"; # # Falls keine Nachrichten: --> exit # if ( $msgnr == 0 ) { exit; } # # Testen, ob mail2fax noch aktiv ist # if ((open FILE, "$tmpdir/lock") == 1) { die "mail2fax ist noch aktiv!"; } # # Wenn nicht, Tempdir loeschen, neu erstellen und sperren # rmtree $tmpdir; mkdir $tmpdir; open (FILE, "> $tmpdir/lock"); close FILE; # # Schleife solange Mail vorhanden sind # for ($i=1;$i<=$msgnr ;$i++) { # # Header von Nachricht $i holen # $header = $pop3->top ($i); ###debug #print "@$header"; # # Subject aus dem Header extrahieren # foreach $zeile (@$header) { if (index($zeile,"Subject:")>=0) { $subject = $zeile; } if (index($zeile,"From:")>=0) { $sender = $zeile; } } # Sender herauscutten: @sender = split(/\s+/,$sender); foreach $i (@sender) { if ($i =~ /([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+)/gi) { $sender = $i; } } $sender =~ s/^<*(.*)/\1/; $sender =~ s/>*$//; $sender = lc $sender; # Herausfinden, ob Sender bekannt $user = ""; open(CFG,$sendercfg) || die "Kann $sendercfg nicht zum Lesen öffnen!\n"; while () { s/^#.*$//; s/^\ .*$//; chomp; if ($_ ne "") { @zeile = split(/\s+/); @zeile[0] = lc @zeile[0]; if (@zeile[0] eq $sender) { $user = @zeile[1]; $userexist = true; } } } close(CFG); # # Faxnummer finden # chomp($subject); @subject = split(/\s+/,$subject); foreach $i (@subject) { if ($i =~ /\d+/) { $faxnr = $i; } } ###debug #print $sender." - ".$faxnr." - ".$user; #exit; # # Body von Mail $i holen und in das Tempdir schreiben # $body = $pop3->get ($i); open (FILE, "> $tmpdir/mail.tmp"); print FILE @$body; close (FILE); ###debug #print @$body; # # PS-File aus der Mail extrahieren und in das Tempdir schreiben # system ("cd $tmpdir; uudeview -i +e .ps.pdf $tmpdir/mail.tmp"); # # Fax abschicken ##debug print "Sender: $sender\n"; print "User: $user\n"; print "Faxnr: $faxnr\n"; system ("/usr/bin/capisuitefax -u $user -d $faxnr $tmpdir/*.p{s,df}"); # # Mail $i zum loeschen markieren # $boolean = $pop3->delete($i); } # # Verbindung zum POP3-Server schliessen # $pop3->quit(); # # Tempdir loeschen und Ende im Gelaende # rmtree $tmpdir; exit;