Diciamo che ho 5 messaggi in /var/mail/ e voglio leggere un messaggio alla volta e quindi eseguire una ricerca di stringhe in quella posta prima di passare al messaggio successivo. C'è un comando che posso usare per analizzare un messaggio alla volta?
Sto cercando di scrivere uno script bash che leggerà tutti i messaggi in un file mbox e quindi li leggerà uno alla volta in modo da poter estrarre Oggetto, A, Da e Stato del messaggio (codice di rimbalzo). Il mio piano era di utilizzare grepmail per ottenere il conteggio delle e-mail nel file e quindi utilizzare questo conteggio in un ciclo for per ottenere una posta alla volta ed eseguire operazioni sul testo. Qualcosa come:
$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
Non riesco a capire come raccogliere un singolo messaggio alla volta per eseguire operazioni di stringa su di essi. Qualcuno può per favore guidarmi quale comando/programma può aiutarmi a farlo in modo non interattivo.
Risposta accettata:
Il formail
strumento di procmail (disponibile in qualsiasi distribuzione, è un classico) è progettato proprio per questo scopo.
Utilizzo di base:
formail -s myprogram --option
esegue myprogram --option
su ogni mail a turno. Il programma riceve ogni e-mail sul suo input standard.