Fügen .muttrcSie folgende Zeile hinzu:
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\""
Dadurch wird der Date:Header in der Nachricht (nur zur Anzeige) in Ihre lokale Zeitzone geändert, wenn der Header ein gültiges Datum im RFC-Format enthielt. Wenn das angegebene Datumsformat falsch war (es handelt sich immerhin um nicht vertrauenswürdige Benutzereingaben), wird es beibehalten. Um einem möglichen Versuch, den Shell-Code durch den Header sedeinzufügen, entgegenzuwirken, implementiert das Muster eine auf RFC 5322 basierende Whitelist (diese RFC definiert das Format des Date:Felds).
Beachten Sie, dass muttdie Befehlszeile nicht länger als 255 Zeichen ist. Daher habe ich den ursprünglichen sedBefehl optimiert, der eine strengere Whitelist für 255 Bytes enthält. Wenn Sie vorhaben, andere Aktionen mit der Nachricht auszuführen, können Sie den folgenden vollständigen sedBefehl in ein Skript einfügen:
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.sedAkte aufnehmen. Vielen Dank!