outside of the for loop just for aesthetic purposes and check for errors on your open statement:
but otherwise it performs as I would expect. Try saving a copy of your mail message to a file and invoke the program like so:open (MSG, ">>mailmessage") or die "File open failed: $!\n";
/tmp/mailparser.pl < mail.message.file
This suggests that you'll probably have to modify your procmail config line in some way, but I'm not familiar with procmail.
Update: I've had a similar problem using the /etc/aliases file to strip/redirect mail to a special account. I solved my problem by parsing the message and then resending it to a different account. This is sort of ugly, but it works until I can figure out the correct method:
The modified perl program:#/etc/aliases entry ## The below entry saves an unaltered copy on account original, and ## pipes the incoming message through our program which ## resends to the final destination account. Be sure to execute ## 'newaliases' after you modify the /etc/aliases for the changed ## entry to be updated. original: \original, "|/tmp/mailparser.pl"
## # MboxParser stuff here ## use MIME::Lite; my $msg = new MIME::Lite To => 'firstname.lastname@example.org', From => $from, Cc => $cc, Subject => $subject, Type => 'TEXT', Comments => $to, ## save original to: if needed Data => $body_str; MIME::Lite->send('smtp', "some.smtp.net", Timeout=>60); $msg->send;