В вашем .muttrc
добавьте следующую строку:
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\""
Это изменит Date:
заголовок в сообщении (только для отображения) на ваш местный часовой пояс, если заголовок содержал действительную дату в формате RFC. Если предоставленный формат даты был неправильным (мы имеем дело с ненадежным пользовательским вводом в конце концов), он будет сохранен. Для борьбы с возможной попыткой ввести код оболочки через заголовок sed
шаблон реализует белый список на основе RFC 5322 (этот RFC определяет формат Date:
поля).
Обратите внимание, что mutt
длина командной строки не должна превышать 255 символов, поэтому я оптимизировал исходную sed
команду с более строгим белым списком, чтобы он умещался в 255 байтов. Если вы планируете делать с сообщением другие вещи, то полная sed
команда, которую вы можете поместить в скрипт:
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
файл. Благодарность!sed
команды зависят отe
модификатораs
команды. Этот модификатор является расширением GNU, а macOSsed
- BSD.Форматирование в индексе контролируется
index_format
настройкой - оно генерируется Mutt.Date
Заголовок не контролируется собачонка, это заголовок , который включается с сообщением , что только получает отображается. Если он показывает время UTC, это потому, что отправляющий сервер решил использовать UTC при создании заголовка. Единственный способ изменить его - это изменить само сообщение, когда вы его получаете или просматриваете.Чтобы изменить его, нужно добавить фильтр к агенту доставки почты, но он должен быть достаточно сложным, чтобы проанализировать существующий
Date
заголовок и переписать его. Почти наверняка лучше, чтобы mutt переформатировал сообщение, когда вы на него смотрите. Вы можете установить дляdisplay_filter
свойства исполняемый файл, и он будет передавать любое сообщение, открытое вами, через исполняемый файл перед его отображением.Вам нужно написать сценарий программы или оболочки , который считывает каждую строку сообщения и заменяет один с заголовком Date, или найти существующий скрипт (есть один здесь , что может работать, хотя это не кажется , что это действительно надо нужно будет задействовать временный файл)
источник
http://www.mail-archive.com/mutt-users@mutt.org/msg44341.html
Это предлагает использовать 'pager_format', чтобы он отображал дату письма в местном часовом поясе:
set pager_format = "% 4C% Z% [!% b% e при% I:% M% p]% .20n% s% * - (% P)"
источник
Принимая совет Жиля, вот версия, которая использует временный файл и
formail
.источник
Date:
заголовок - если вы заходите в подоболочку, вам нужно проверить / санировать ввод.Вот решение procmail:
И отобразить LocalDate: в muttrc:
источник
display_filter
in.muttrc
.set display_filter="/PATH/TO/THIS/PYTHON/FILE"
в вашем.muttrc
.Python 3.3:
источник
Date:
заголовок - если вы заходите в подоболочку, вам нужно проверить / дезинфицировать вход, иначе сценарий в порядке с точки зрения безопасности. Однако это довольно тяжело для сценария, который запускается для каждого просматриваемого сообщения.Обязательное решение Perl, которое сохраняет заголовок «Date» при добавлении дополнительного заголовка «Local-Date», чтобы содержать версию localtime:
источник
Я сделал сценарий оболочки, как описано в конце ответа Майкла, который делает эту работу за меня:
источник
formail
(часть пакета procmail ) илиreformail
(часть maildrop ), чтобы извлечь существующийDate:
заголовок и поставить новый на место. Позаботьтесь о крайних случаях, таких как отсутствующий или неправильно отформатированныйDate:
заголовок.