Through some missconfiguration i've a lot of emails in /var/mail/root and /var/mail/www-data
How can i "loop" over these files and send each mail another time?
Thanks in advance!
migrated from stackoverflow.com Dec 2 '09 at 2:40
This question came from our site for professional and enthusiast programmers.
formail, part of procmail (and probably already available on your system) can take a mailbox, split it up into messages, and then run a command on each one. From the man page:
So you can do what I think you want like this:
Then within mutt...
T puts it into tagging mode, and .* tags all messages. The semi-colon applies the next command to all tagged messages, and finally b "bounces" the messages to an address it will prompt for.
From memory, I think either
Will then empty the mailbox.
The /var/spool/mail/xxx unix mailbox files are simple text files where mail messages are kept in sequence. Each mail message begin by a "From" line (taht is not part of the message) with sender and date of reception, then you get mail headers, then mail body.
Basically you can just loop on the file detecting such From lines and extract every messages then send them using tools like python smtp module or perl Net::SMTP module from cpan.
If target is another local mailbox you can just append the messages (including the From line) to it. You could even append the whole root mailbox to another mailbox if you don't care also getting of messages really targeted to root.
I should have some scripts that do that and will post exemples if you want.
The problem may be to get the real target of the message because if they ended in root mailbox they were probably targeted to root from the begining ?