Disons que j'ai 5 messages dans /var/mail/ et que je veux lire un message à la fois, puis faire une recherche de chaîne dans ce courrier avant de passer au message suivant. Existe-t-il une commande que je peux utiliser pour analyser un message à la fois ?
Je cherche à écrire un script bash qui lira tous les messages dans un fichier mbox, puis les lira un par un afin que je puisse ensuite extraire l'objet, le destinataire, l'expéditeur et l'état du message (code de rebond). Mon plan était d'utiliser grepmail pour obtenir le nombre d'e-mails dans le fichier, puis d'utiliser ce nombre dans une boucle for pour obtenir un e-mail à la fois et effectuer une opération sur le texte. Quelque chose comme :
$count = grepmail -r . /var/mail/user | awk '{print $2}'
for($i=1;$i<=$count;$i++) {
$content = *GetMessage* -number $i /var/mail/user
...
Do string operation on this message & save to $DelimitedData
...
}
$Delimiteddata
Je n'arrive pas à comprendre comment récupérer un seul message à la fois pour effectuer une opération de chaîne sur eux. Quelqu'un peut-il m'indiquer quelle commande/programme peut m'aider à le faire de manière non interactive.
Réponse acceptée :
Le formail
L'outil de procmail (disponible dans n'importe quelle distribution, c'est un classique) est conçu précisément à cet effet.
Utilisation de base :
formail -s myprogram --option
exécute myprogram --option
sur chaque courrier à tour de rôle. Le programme reçoit chaque mail sur son entrée standard.