Dans votre, .muttrc
ajoutez la ligne suivante:
set display_filter="exec sed -r \"s/^Date:\\s*(([F-Wa-u]{3},\\s*)?[[:digit:]]{1,2}\\s+[A-Sa-y]{3}\\s+[[:digit:]]{4}\\s+[[:digit:]]{1,2}:[[:digit:]]{1,2}(:[[:digit:]]{1,2})?\\s+[+-][[:digit:]]{4})/date +'Date: %a, %d %b %Y %H:%M:%S %z' -d '\\1'/e\""
Cela changera l'en- Date:
tête du message (pour l'affichage uniquement) en votre fuseau horaire local si l'en-tête contenait une date au format RFC valide. Si le format de date fourni était incorrect (nous avons affaire à des entrées utilisateur non fiables après tout), il sera conservé. Pour lutter contre une éventuelle tentative d'injection du code shell à travers l'en-tête, le sed
modèle implémente une liste blanche basée sur le RFC 5322 (ce RFC définit le format du Date:
champ).
Notez que mutt
limite la ligne de commande à pas plus de 255 caractères, j'ai donc optimisé la sed
commande d' origine qui avait une liste blanche plus stricte pour tenir dans 255 octets. Si vous prévoyez de faire autre chose avec le message, alors la sed
commande complète que vous pouvez mettre dans un script est:
sed -r "s/^Date:\s*(((Mon|Tue|Wed|Thu|Fri|Sat|Sun),\s*)?[[:digit:]]{1,2}\s+(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s+[[:digit:]]{4}\s+[[:digit:]]{1,2}:[[:digit:]]{1,2}(:[[:digit:]]{1,2})?\s+[+-][[:digit:]]{4})/date +'Date: %a, %d %b %Y %H:%M:%S %z' -d '\1'/e"
filter.sed
dossier. Merci!