En su .muttrc
agregar la siguiente línea:
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\""
Esto cambiará el Date:
encabezado del mensaje (sólo pantalla) a su zona horaria local si el encabezado contenía un RFC fecha válida con formato. Si el formato de fecha proporcionado era incorrecto (después de todo, estamos tratando con una entrada de usuario no confiable) se conservará. Para combatir un posible intento de inyectar el código de shell a través del encabezado, el sed
patrón implementa una lista blanca basada en RFC 5322 (este RFC define el formato del Date:
campo).
Tenga en cuenta que mutt
limita la línea de comando para que no tenga más de 255 caracteres de largo, por lo tanto, optimicé el sed
comando original que tenía una lista blanca más estricta para caber en 255 bytes. Si planea hacer otras cosas con el mensaje, entonces el sed
comando completo que puede poner en un script es:
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
archivo. ¡Gracias!sed
comandos anteriores se basan en ele
modificador dels
comando. Ese modificador es una extensión GNU y macOS'essed
es el BSD.El formato en el índice se controla mediante la
index_format
configuración: se genera mediante mutt. ElDate
encabezado no está controlado por mutt, es un encabezado incluido con el mensaje que solo se muestra. Si muestra la hora UTC es porque el servidor remitente decidió usar UTC al generar el encabezado. La única forma de cambiarlo es cambiar el mensaje en sí, ya sea cuando lo reciba o cuando lo vea.Cambiarlo tal como viene significa agregar un filtro a su agente de entrega de correo, pero debe ser lo suficientemente sofisticado como para analizar el
Date
encabezado existente y reescribirlo. Es casi seguro que mutt vuelva a formatear el mensaje cuando lo mire. Puede establecer ladisplay_filter
propiedad en un archivo ejecutable y canalizará cualquier mensaje que abra a través del ejecutable antes de mostrarlo.Tendrá que escribir un script o programa de shell que lee cada línea del mensaje y reemplaza el uno con el encabezado Fecha, o encontrar un guión existente (hay uno aquí que el trabajo de fuerza, aunque no parece que en realidad debería ser necesario para involucrar un archivo temporal)
fuente
http://www.mail-archive.com/[email protected]/msg44341.html
Esto sugiere usar 'pager_format' para que muestre la fecha de la letra en la zona horaria local:
set pager_format = "% 4C% Z% [!% b% e en% I:% M% p]% .20n% s% * - (% P)"
fuente
Siguiendo el consejo de Gilles, aquí hay una versión que usa un archivo temporal y
formail
.fuente
Date:
encabezado con formato incorrecto ; si ingresa a una subshell, debe validar / desinfectar la entrada.Aquí hay una solución de procmail:
Y mostrar LocalDate: en muttrc:
fuente
display_filter
en.muttrc
.set display_filter="/PATH/TO/THIS/PYTHON/FILE"
en su.muttrc
.Python 3.3:
fuente
Date:
encabezado con formato incorrecto : si ingresa a una subshell, debe validar / desinfectar la entrada; de lo contrario, el script está bien desde el punto de vista de la seguridad. Sin embargo, es bastante pesado para un script que se ejecuta en cada mensaje que navega.Solución Perl obligatoria que conserva el encabezado "Fecha" al tiempo que agrega un encabezado "Fecha-Local" adicional para contener la versión de hora local:
fuente
Hice un script de shell como se describe al final de la respuesta de Michael que hace el trabajo por mí:
fuente
formail
(parte del paquete procmail ) oreformail
(parte de maildrop ) para extraer elDate:
encabezado existente y colocar uno nuevo. Tenga cuidado con casos extremos como unDate:
encabezado faltante o mal formateado.