Fügen .muttrc
Sie 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 sed
einzufügen, entgegenzuwirken, implementiert das Muster eine auf RFC 5322 basierende Whitelist (diese RFC definiert das Format des Date:
Felds).
Beachten Sie, dass mutt
die Befehlszeile nicht länger als 255 Zeichen ist. Daher habe ich den ursprünglichen sed
Befehl 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 sed
Befehl 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.sed
Akte aufnehmen. Vielen Dank!