W swoim .muttrc
dodaj następujący wiersz:
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\""
Spowoduje to zmianę Date:
nagłówka w komunikacie (tylko do wyświetlania) na lokalną strefę czasową, jeśli nagłówek zawierał prawidłową datę sformatowaną w formacie RFC. Jeśli podany format daty był niepoprawny (w końcu mamy do czynienia z niezaufanymi danymi użytkownika), zostanie on zachowany. Aby zwalczyć ewentualną próbę wstrzyknięcia kodu powłoki przez nagłówek, sed
wzorzec implementuje białą listę opartą na RFC 5322 (ta RFC określa format Date:
pola).
Zauważ, że mutt
limit linii poleceń nie może być dłuższy niż 255 znaków, dlatego zoptymalizowałem oryginalne sed
polecenie, które miało ściślejszą białą listę, aby zmieściło się w 255 bajtach. Jeśli planujesz robić inne rzeczy z wiadomością, wtedy pełne sed
polecenie, które możesz umieścić w skrypcie, to:
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
pliku. Dzięki!