User Tools

Site Tools


buena_configuracion_de_mutt_con_gmail_gpg

Configuración de Mutt con Gmail + GPG (optativo) fácil + Teclas útiles de Mutt

Manual de Mutt recomendado: mutt.pdf
Software: Mutt, Gnupg (optativo) y w3m (optativo pero recomendable).
Atajos de teclado: Mutt Keys
Aclaración: GNU Privacy Guard = GnuPG = GPG.

Manual GPG en español: http://www.dewinter.com/gnupg_howto/spanish/index.html

Funcionalidades.

  • Poder administrar Gmail desde la terminal de forma completamente funcional.
  • Cifrar / Firmar correos electrónicos sin complicaciones.
  • Autocompletado de direcciones de correo con el tabulador.
  • Visualización del html de forma amigable (w3m).
  • Visualizar las carpetas / etiquetas de Gmail (Enviados, Borradores, Papelera, SPAM, etc.)
  • Uso de colores para identificar tipos de correos.
  • Posibilidad de enviar correos las carpetas / etiquetas: SPAM, etiquetarlos como Destacados, etc…
  • Credenciales de IMAP cifradas en los ficheros de configuración (leer).
  • Mil cosas más.

NOTA: Se debe activar IMAP en Gmail (Configuración) y configurar las carpetas que se pueden acceder desde el protocolo IMAP.

Si se va a utilizar Mutt en un entorno sin escritorio (SSH) con GPG, este debe tener la siguiente configuración para poder hacer uso de pinentry-curse y no pinentry-gtk-2. Esa aplicación pertenece a Gnugp y pedirá la clave para almacenarla en memoria un periodo de tiempo y que no moleste cada poco tiempo solicitando la clave. En entornos con escritorio se arrancará la aplicación gtk-2.

Fichero /etc/bash.bashrc o ~/.bashrc

export GPG_TTY=$(tty)

Enlace simbólico (/usr/bin/pinentry-curses).

unlink /usr/bin/pinentry
ln -s /usr/bin/pinentry-curses /usr/bin/pinentry

Fichero ~/.gnupg/gpg-agent.conf

# Keyboard control.
no-grab
 
# PIN entry program.
pinentry-program /usr/bin/pinentry-curses

El demonio pgp-agent se arranca de forma predeterminada al usar el primer comando gpg o aplicación que lo requiera. Si el fichero de configuración gpg-agent.conf no parece tener ningún efecto, otra posibilidad para forzar el uso de pinentry-curses es arrancar el demonio gpg-agent con las siguientes opciones.

gpg-agent --homedir /home/busi/.gnupg --use-standard-socket --pinentry-program /usr/bin/pinentry-curses --daemon

Ficheros y su ubicación:

  • ~/.muttrc Fichero de configuración general.
  • ~/.muttrc_gpg Fichero con las opciones de GPG.
  • ~/.mutt/aliases.sh Script que recoge direcciones de correos que se leen (genera lista de contactos).
  • ~/.mutt/mailcap Indicará a Mutt que los correos con html los abra un navegador (w3m).

Adaptar los ficheros de configuración: Completar donde pone XXXX en los ficheros de configuración (Usuarios, claves y llavero GPG). El script ~/.mutt/aliases.sh debe tener permisos de ejecución. Se recomienda utilizar una terminal UTF-8 y sistemas con locales UTF-8 (Leer)

NOTA: Si no se va a utilizar GPG, el fichero .muttrc_gpg no es necesario crearlo.

Teclas fundamentales de Mutt

Documentación completa: http://www.mutt.org/doc/manual/

Mutt cheat sheets: http://sheet.shiar.nl/mutt / mutt keys

Moverse por el framework.

  • <enter> Entra en el correo / avanza una linea hacia abajo
  • <backspace> Avanza una linea hacia arriba.
  • <space> Muestra la siguiente página o el siguiente mensaje si ya estamos en el finalmente).
  • - Paginación hacia arriba al leer un correo.
  • l Permite filrar los correos que contengan un determinado texto. Con “all” se desactiva el filtro.
  • / Permite realizar búsquedas (Expresiones regulares soportadas).
  • / ~b XX Buscar dentro del cuerpo de los correos. Por rango de fechas “~d 2015/01/01-2016/09/11” ( Más información).
  • / ~B XX Buscar en todos sitios (cabeceras, cuerpo, asuntos, etc).
  • / ~g Busca mensajes con firma digital.
  • / ~G Busca mensajes cifrados.
  • ! Ejecuta un comando. Ejecutar bash para apartar Mutt momentáneamente sin cerrarlo y regresar con “exit”.
  • n Permite realizar búsquedas / seguir buscando con el mismo patrón de búsqueda anterior.
  • S Salta la parte de texto citado.
  • T Esconde / Visualiza la parte citada.
  • ? Muestra las combinaciones de teclas.
  • ^ Se dirige a la parte superior del mensaje (Pulsar dos veces).
  • o Permite ordenar por campos: date/form/recv/subj/to/thread/unsort/size/score/spam
  • Ctrl+g Cancela la acción que se esté realizando / limpia el prompt.

@ Muestra la dirección del emisor (From:) usada en el correo.

Acciones

  • s Mover un correo a una carpeta imap (también llamadas etiqueta), si no existe la crea.
  • v Visualiza los adjuntos y el email en forma de fichero para descargarse (s) o abrirlo (macros). El email no contiene cabeceras ni asunto, solo el cuerpo del mensaje.
  • c Cambiar de directorio (Enviados, Papelera, SPAM, etc). Muy útil para reconectar cuando se insertó erróneamente las credenciales IMAP sin necesidad de volver a arrancar Mutt. Si se usan múltiples cuentas en Mutt es recomendable usar un macro especial (mirar configuración propuesta) para que funcione con más de una cuenta.
  • $ Sincronización con el servidor IMAP de Gmail (leídos, eliminados,…). (Mutt → IMAP)
  • G Refresca la bandeja de entrada del servidor IMAP de Gmail. (IMAP → Mutt)
  • m Crear un nuevo correo electrónico.
  • r Responder al mensaje actual.
  • g Responder a todos en un grupo.
  • d Borrar mensaje actual. (No irá a la papelera de Gmail!)
  • D Borrar adjunto.
  • d Cambiar el nombre del fichero adjunto que será recibido.
  • u Recuperar mensaje borrado (Simplemente escribiendo el número se puede seleccionar al correo deseado).
  • e Edita un correo en bruto (Útil para ver las cabeceras).
  • N Marcar mensaje como no leído.
  • q Salir de Mutt o del visualizador de mensajes.
  • h Muestra las cabeceras (muestra el correo original).
  • w Permite insertar una flag (Borrado, destacado, leído, etc).
  • W Elimina una flag del mail (Borrado, destacado, leído, etc).
  • t Marca correos para luego realizar alguna acción, como por ejemplo rebotarlos todos a otra dirección de correo mediante la tecla “b” (Leer los riesgos de rebotar más abajo).

NOTA: Al eliminar un correo (tecla d), este correo no irá a la carpeta / etiqueta “Papelera” de Gmail, para ello se debe crear un marco para otra tecla o bien utilizar la tecla “s” y guardarlo en la carpeta “Papelera”.

Modo de solo lectura.

  • % Permite activar / desactivar el modo de solo lectura.

Reenvío de correos con Mutt.

  • f Reenvía un correo (Sin adjuntos).
  • Pulsar v para mostrar adjuntos, marcarlos con “t” y luego pulsar la “f” para reenviar solo algunos adjuntos.
  • b Rebota (Reenvía) un correo pero no permite editar el cuerpo ni lo marca como reenviado, solo pregunta por el nuevo destinatario y lo manda. Al ser una copia idéntica los adjuntos están siempre incluidos.
  • Esc + e Reenvía un correo con todos los adjuntos. Se debe editar el “From” (Esc + f) y el “To:” (t).

CUIDADO !!: La opción de rebotar no edita el emisor (from:), por lo tanto los correos suelen ser calificados como SPAM o simplemente descartados, dependerá del servicio que los reciba.

Al querer reenviar correo con cuerpos de mensaje en formato “multipa/alternativ”, usado para enviar el cuerpo del mensaje en formatos de texto y html, lo mejor es seleccionar uno de los dos y reenviarlo. La combinaciones de teclas sería “v” para mostrar los ficheros adjuntos (el cuerpo es un fichero adjunto también), marcar los adjuntos que se quieran con la tecla “t” evitando el del tipo multipa. Por último se pulsa “f” para reenviarlos.

Si se reenvían correos que tienen el cuerpo del mensaje en formato “multipa/alternativ” es muy posible que el cuerpo del mensaje no se envíe ya que mutt no edita las cabeceras y las adapta para este tipo de cuerpos de mensaje (rfc1341: https://www.w3.org/Protocols/rfc1341/7_2_Multipart.html).

Otra opción sería reenviar el correo usando “Esc+e” y posteriormente editar el tipo de fichero adjunto mediante “Cntrl+t” para indicar que es un fichero de texto. De esta manera se enviaría el cuerpo en bruto (delimitadores multipa y los textos en formato html y texto plano). Ejemplo de como se debe adaptar el tipo MIME:

Content-Type: multipart/alternative; boundary="_----------=_1551732836237023" 
Content-Type: text/plain

Teclas una vez se muestra la pantalla con el resumen del correo a enviar.

  • A: Permite adjuntar cuerpo de otros correos, se deben seleccionar con la tecla “t”.
  • t: Permite editar el destinatario (To:).
  • p: Cuando tengamos escrito un correo, la letra p ofrece cifrar, firmar y ambos juntos.
  • ESC + k: Adjunta una clave pública para enviarla a un contacto.
  • Esc + f: Edita la dirección del emisor (“From:”)
  • Cntrl + Y: Cifra / Descifra el cuerpo del correo (no usa MIME/GPG).
  • Cntrl + V: Verifica / Firma el cuerpo del correo (no usa MIME/GPG).
  • Cntrl + K: Extrae y guarda (importa) llaves de contactos que las hayan enviado como adjunto en correos.

Descripción de Flags.

  • D Marcado para el borrado (Al salir, actualizar o cambiar de carpeta se borra).
  • d Contiene adjuntos marcados para eliminar.
  • K Contiene una clave pública.
  • N Nuevo correo.
  • O Mensaje viejo.
  • P El correo está cifrado (PGP).
  • r El correo ha sido respondido.
  • S Mensaje firmado y la firma ha sido verificada exitosamente.
  • s Mensaje firmado.
  • ! Mensaje Marcado (Importante).
  • * Mensaje Etiquetado.
  • n Hilo que contiene nuevo mensaje (Se muestra si está el hilo muy saturado).
  • o Hilo que contiene viejos mensajes (Se muestra si está el hilo muy saturado).
  • + El correo estaba únicamente destinado a ti.
  • T El correo estaba destinado a ti y además otros CC.
  • C El mensaje es para ti pero estando tu dirección dentro del campo CC.
  • F El mensaje procede de ti.
  • L Mensaje enviado a una lista de correo.

Solución: La tecla <backspace> no funciona en Mutt .

Depende de como interprete la terminal en uso la tecla de retroceso (backspace) puede que Mutt no la vincule a la acción de subir a “linea anterior” al leer correos. Un mensaje como el siguiente puede ser mostrado.

Tecla sin enlace. Presione '?' para obtener ayuda.

Si la combinación “Cntrl + h” funciona adecuadamente en Mutt, lo más probable es que el backspace devuelva “^?”, se puede probar pulsando “cntrl + v” y posteriormente la tecla retroceso. (Link 1 / Link2). La solución sería configurar en el archivo .muttr el bind previous-line con ^?.

bind pager ^? previous-line

NOTA: Recordemos que “^?” no son dos caracteres, se debe generar usando “Cntrl + v” a la hora de editar .muttrc, no copiando y pegando desde la web.

Autocompletado. Usar el tabulador, es funcional en varias zonas de Mutt (Adjuntar, escribir direcciones, etc).

Arrancar navegador al pulsar una URL en consola.

Lo más simple es usar las opción de la propia consola sobre la que estamos utilizando Mutt. Por ejemplo en lxterminal, vale con pulsar el enlace con la tecla Cntrl pulsada y nos arrancará el navegador predeterminado.

Colores (Según nuestra configuración).

  1. Verde: Enviado por nosotros.
  2. Rojo negrita: Fichero de tamaño superior a la media.
  3. Amarillo: Correos ya leídos.
  4. Blanco: El correo estaba destinado a más personas.
  5. Fondo blanco: Correos sin leer.
  6. Fondo Rojo: Destacados (Estrella de Gmail).

Ficheros de configuración

Fichero $HOME/.muttrc

.muttrc
# Juego de caracteres de los mensajes que enviamos:
set send_charset = "utf-8"
set assumed_charset = "iso-8859-1"
 
# Editor. Si no se declara se usa $EDITOR.
set editor = "vim -c 'set syntax=mail ft=mail enc=utf-8'"
set menu_scroll = "yes"
 
# Remitente de los mails:
set from = "XXXX@gmail.com"
set realname = "XXXX"
 
# Configuraciones servidor IMAP:
set imap_user = "XXXX@gmail.com"
set smtp_url = "smtp://XXXXX@gmail.com@smtp.gmail.com:587/"
# Opcional (no lo recomiendo porque queda almacenada la contraseña en texto plano):
set imap_pass = "XXXXXXXX"
set smtp_pass = "XXXXXXXX"
# En caso de no introducir los dos valores anteriores, se nos pedirá ingresar la contraseña al enviar o recibir mails.
set folder = "imaps://XXXX@gmail.com@imap.gmail.com:993"
# Coonfiguramos el Inbox
set spoolfile = "+INBOX"
# Configuramos la carpeta de borradores (Debe llamarse igual que en el webmail):
set postponed = "+[Gmail]/Borradores"
# Guardamos los mails en Enviados:
set record ="+[Gmail]/Enviados"
# Ajustes para la conexión IMAP:
set mail_check=60
set imap_keepalive=300
 
# Buzones extra que queremos comprobar (si tenemos carpetas extra en Gmail):
#mailboxes "+[Gmail]/Spam"
#mailboxes "+[Gmail]/Papelera"
 
#### Refrescar con la G
bind index G imap-fetch-mail
 
# Muy útil cuando estamos suscritos a una lista de correos, nos ordena los mensajes por threads:
set sort=threads
set strict_threads=yes
set sort_aux=reverse-last-date-received       
set sort_re
 
# Crear los directorios para no obtener errores, 
# 'mkdir -p ~/.mutt/cache/{bodies,headers}':
set message_cachedir = "~/.mutt/cache/bodies"
set header_cache = "~/.mutt/cache/headers"
 
# El siguiente archivo debe existir y contiene la firma, que va al pie de cada mail que escribamos, naturalmente:
set signature = ".mutt/.firma"
 
set pager_format = " %C - %[%H:%M] %.20v, %s%* %?H? [%H] ?"
set index_format="%3C %4Z %4[!%d.%m %H:%M] %-40.40F (%5c) %s"  
#set pager_format="%S %C/%T?%n: %-50.50n %s"
 
# No mostrar todos los campos de la cabecera del mensaje, solo algunos:
ignore          *
unignore        From To Cc Bcc Date Subject
# y en este orden:
unhdr_order     *
hdr_order       From: To: Cc: Bcc: Date: Subject:
 
##################################################### Color settings for mutt.
 
# Default color definitions
color normal     white         default
color hdrdefault green         default
color quoted	 green         default
color quoted1    yellow        default
color quoted2    red           default
color signature  cyan          default
color indicator  brightyellow  red
color error      brightred     default
color status	 brightwhite   blue
color tree	 brightmagenta default
color tilde	 blue          default
color attachment brightyellow  default
color markers	 brightred     default
color message    white         default
color search     brightwhite   magenta
color bold       brightyellow  default
 
# Color definitions when on a mono screen
mono bold      bold
mono underline underline
mono indicator reverse
mono error     bold
 
# Colors for items in the reader
color header brightyellow default "^(From|Subject):"
color header brightcyan   default ^To:
color header brightcyan   default ^Cc:
mono  header bold                 "^(From|Subject):"
 
# Many of these formulas were stolen from Jeremy Blosser
# These would be much simpler if colors were additive.
 
# regular new messages
color index black         white   "~N !~T !~F !~p !~P"
# regular tagged messages
color index black         cyan    "~T !~F !~p !~P"
# regular flagged messages
color index black         red     "~F !~p !~P"
# messages to me
color index yellow        default "~p !~N !~T !~F !~P"
color index brightyellow  white   "~p ~N !~T !~F !~P"
color index yellow        cyan    "~p ~T !~F !~P"
color index yellow        red     "~p ~F !~P"
# messages from me
color index green         default "~P !~N !~T !~F"
color index green         white   "~P ~N !~T !~F"
color index green         cyan    "~P ~T !~F"
color index green         red     "~P ~F"
# big messages
color index brightred     default "!~N ~z 102400-"
color index brightred     cyan    "~T !~F !~p !~P ~z 102400-"
color index brightred     white   "~N ~z 102400-"
 
# deleted messages
color index red           default "!~N ~D"
color index red           white   "~N ~D"
 
 
# Highlights inside the body of a message.
 
# Attribution lines
color body magenta default "\\* [^<]+ <[^>]+> \\[[^]]+\\]:"
color body magenta default "(^|[^[:alnum:]])on [a-z0-9 ,]+( at [a-z0-9:,. +-]+)? wrote:"
 
# URLs
color body brightyellow default "([a-z][a-z0-9+-]*://(((([a-z0-9_.!~*'();:&=+$,-]|%[0-9a-f][0-9a-f])*@)?((([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?|[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+)(:[0-9]+)?)|([a-z0-9_.!~*'()$,;:@&=+-]|%[0-9a-f][0-9a-f])+)(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?(#([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?|(www|ftp)\\.(([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?(:[0-9]+)?(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?(#([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?)[^].,:;!)? \t\r\n<>\"]"
 
# email addresses
color body brightmagenta default "((@(([0-9a-z-]+\\.)*[0-9a-z-]+\\.?|#[0-9]+|\\[[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\]),)*@(([0-9a-z-]+\\.)*[0-9a-z-]+\\.?|#[0-9]+|\\[[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\.[0-9]?[0-9]?[0-9]\\]):)?[0-9a-z_.+%$-]+@(([0-9a-z-]+\\.)*[0-9a-z-]+\\.?|#[0-9]+|\\[[0-2]?[0-9]?[0-9]\\.[0-2]?[0-9]?[0-9]\\.[0-2]?[0-9]?[0-9]\\.[0-2]?[0-9]?[0-9]\\])"
 
# PGP messages
color  body            brightyellow    default "^gpg: Good signature .*"
color  body            white           default "^gpg: "
color  body            brightwhite     red     "^gpg: BAD signature from.*"
mono   body            bold                    "^gpg: Good signature"
mono   body            bold                    "^gpg: BAD signature from.*"
 
# Various smilies and the like
color body brightwhite default "<[Gg]>"                            # <g>
color body brightwhite default "<[Bb][Gg]>"                        # <bg>
color body brightwhite default " [;:]-*[})>{(<|]"                  # :-) etc...
# *bold*
color body brightblue  default "(^|[[:space:][:punct:]])\\*[^*]+\\*([[:space:][:punct:]]|$)"
mono  body bold                "(^|[[:space:][:punct:]])\\*[^*]+\\*([[:space:][:punct:]]|$)"
# _underline_
color body brightblue  default "(^|[[:space:][:punct:]])_[^_]+_([[:space:][:punct:]]|$)"
mono  body underline           "(^|[[:space:][:punct:]])_[^_]+_([[:space:][:punct:]]|$)"
# /italic/  (Sometimes gets directory names)
#color body brightblue  default "(^|[[:space:][:punct:]])/[^/]+/([[:space:][:punct:]]|$)"
#mono  body underline           "(^|[[:space:][:punct:]])/[^/]+/([[:space:][:punct:]]|$)"
 
# Border lines.
color body blue default "( *[-+=#*~_]){6,}"
 
#########
source ~/.muttrc_gpg
 
#########
macro index \Cs  "<change-folder> =[Gmail]/Enviados"<enter>  "go to Sent Items"
 
######## Los ficheros no leídos nuevos no los marque como Old al salir de mutt.
set mark_old=no
 
######## Alias
set alias_file = "~/.mutt/aliases.txt"
set sort_alias = alias
set reverse_alias = yes
source $alias_file
set display_filter    = '$HOME/.mutt/aliases.sh'
 
######## w3c
set mailcap_path        = ~/.mutt/mailcap
auto_view text/html
 
# Si hay versión en modo texto del correo (Depende del emisor) es mejor evitar que mutt lo renderice como HTML, para eso se debe usar la siguiente opción.
 
alternative_order text/plain text/html

NOTA: Cuando un correo tiene mucho contenido html y no puede ser bien representado en la terminal, siempre se puede pulsar la tecla “x” y que nuestro gestor de archivos se encargará del resto. Por norma abrirá el navegador con el contenido del correo.

.muttrc_gpg
# Verificar por defecto las firmas de todos los mensajes recibidos.
set pgp_verify_sig
 
## Uso de GPG en el mismo cuerpo y no como adjunto MIME
# Esto puede ser necesario si nuestro destinatario no soporta PGP/MIME
# ATENCION: si se aplica sobre adjunto _ES MODIFICADO_ (firmado o
# cifrado)
 
# CTRL+V para firmar en el mismo cuerpo sin usar adjuntos PGP/MIME el
# "s" es para que no pregunte si desea sobreescribir
# /tmp/mutt-host-XXXX-Y
macro compose \CV "Fgpg --clearsign\ns"
 
# CTRL+V para verificar la firma sin usar adjuntos PGP/MIME
macro pager \CV "|gpg --verify\n"
 
# CTRL+Y para cifrar en el mismo cuerpo sin usar adjuntos PGP/MIME el
# "s" es para que no pregunte si desea sobreescribir
# /tmp/mutt-host-XXXX-Y
macro compose \CY "Fgpg -ea\ns"
 
# CTRL+Y para descifrar del mismo cuerpo sin usar adjuntos PGP/MIME se
# sale del visor less con una "q" de quit...
macro pager \CY "|gpg --decrypt|less\n"
 
# Macro para que al usar múltiples cuentas se puedan abrir directorios sin problemas (Tecla c), 
macro index 'c' '<change-folder>?<change-dir><home>^K=<enter>'
##########
 
# decode application/pgp
set pgp_decode_command="gpg --status-fd=2 %?p?--passphrase-fd 0? --no-verbose --quiet --batch --output - %f"
# verify a pgp/mime signature
set pgp_verify_command="gpg --status-fd=2 --no-verbose --quiet --batch --output - --verify %s %f"
# decrypt a pgp/mime attachment
set pgp_decrypt_command="gpg --status-fd=2 %?p?--passphrase-fd 0? --no-verbose --quiet --batch --output - %f"
# create a pgp/mime signed attachment
# set pgp_sign_command="gpg-2comp --comment '' --no-verbose --batch --output - %?p?--passphrase-fd 0? --armor --detach-sign --textmode %?a?-u %a? %f"
set pgp_sign_command="gpg --no-verbose --batch --quiet --output - %?p?--passphrase-fd 0? --armor --detach-sign --textmode %?a?-u %a? %f"
# create a application/pgp signed (old-style) message
# set pgp_clearsign_command="gpg-2comp --comment '' --no-verbose --batch --output - %?p?--passphrase-fd 0? --armor --textmode --clearsign %?a?-u %a? %f"
set pgp_clearsign_command="gpg --no-verbose --batch --quiet --output - %?p?--passphrase-fd 0? --armor --textmode --clearsign %?a?-u %a? %f"
# create a pgp/mime encrypted attachment
# set pgp_encrypt_only_command="pgpewrap gpg-2comp -v --batch --output - --encrypt --textmode --armor --always-trust -- -r %r -- %f"
set pgp_encrypt_only_command="pgpewrap gpg --batch --quiet --no-verbose --output - --encrypt --textmode --armor --always-trust -- -r %r -- %f"
# create a pgp/mime encrypted and signed attachment
# set pgp_encrypt_sign_command="pgpewrap gpg-2comp %?p?--passphrase-fd 0? -v --batch --output - --encrypt --sign %?a?-u %a? --armor --always-trust -- -r %r -- %f"
set pgp_encrypt_sign_command="pgpewrap gpg %?p?--passphrase-fd 0? --batch --quiet --no-verbose --textmode --output - --encrypt --sign %?a?-u %a? --armor --always-trust -- -r %r -- %f"
# import a key into the public key ring
set pgp_import_command="gpg --no-verbose --import %f"
# export a key from the public key ring
set pgp_export_command="gpg --no-verbose --export --armor %r"
# verify a key
set pgp_verify_key_command="gpg --verbose --batch --fingerprint --check-sigs %r"
# read in the public key ring
set pgp_list_pubring_command="gpg --no-verbose --batch --quiet --with-colons --list-keys %r" 
# read in the secret key ring
set pgp_list_secring_command="gpg --no-verbose --batch --quiet --with-colons --list-secret-keys %r" 
# fetch keys
# set pgp_getkeys_command="pkspxycwrap %r"
# pattern for good signature - may need to be adapted to locale!
# set pgp_good_sign="^gpgv?: Good signature from "
# OK, here's a version which uses gnupg's message catalog:
set pgp_good_sign="`gettext -d gnupg -s 'Good signature from "' | tr -d '"'`"
# This version uses --status-fd messages
set pgp_good_sign="^\\[GNUPG:\\] GOODSIG"
 
###########
set pgp_autosign=no
set pgp_sign_as=XXXXXX
set pgp_replyencrypt=yes
set pgp_timeout=3600
# Verificar por defecto las firmas de todos los mensajes recibidos.
set pgp_verify_sig

Dentro del directorio $HOME/.mutt

aliases.sh
#!/bin/bash
#
# From http://wcm1.web.rice.edu/mutt-tips.html
 
MESSAGE=$(cat)
 
#NEWALIAS=$(echo "${MESSAGE}" | grep -m 1 ^"From: " | sed s/[\,\"\']//g | awk '{$1=""; if (NF == 3) {print "alias" $0;} else if (NF == 2) {print "alias" $0 $0;} else if (NF > 3) {print "alias", tolower($(NF-1))"-"tolower($2) $0;}}')
make_new_alias() {
    echo "${MESSAGE}" | grep -m 1 ^"From: " | sed s/[\,\"\']//g | awk '{$1=""; if (NF == 3) {print "alias" $0;} else if (NF == 2) {print "alias" $0 $0;} else if (NF > 3) {print "alias", tolower($(NF-1))"-"tolower($2) $0;}}'
}
NEWALIAS=$(make_new_alias)
 
if grep -q 'notification\|noreply\|no-reply\|\(^bugs@\)' <(echo "$NEWALIAS"); then
    # This is an automated message.
    :
else
    if grep -Fxq "$NEWALIAS" $HOME/.mutt/aliases.txt; then
        # This alias already exists.
        :
    else
        # Create the new alias.
        echo "$NEWALIAS" >> $HOME/.mutt/aliases.txt
    fi
fi
 
echo "${MESSAGE}"
mailcap
text/html; w3m -I %{charset} -T text/html; copiousoutput;

Descargar ficheros adjuntos con Mutt

  • Visualizamos los ficheros adjuntos con la tecla “v”
  • con la tecla “s” guardamos el fichero en el disco.

Visualización de nombres de adjuntos

Si la visualización de ficheros adjuntos tienen problemas de codificación, muy posible sea por el uso de clientes como outlook que siguen usando codificaciones no recomendadas.

=?UTF-8?B?MS0...
=?iso-8859-1?...

Ejemplo:
# Codificación erronea.
A     6 =?UTF-8?Q?AB=5FL=C3=B6sung_Wissenswertes                                                                                                                                                                                                  [applica/pdf, base64, 202K]
# Así debería de verse.
A     6 AB_Lösung Wissenswertes.pdf                                                                                                                                                                                                                    [applica/pdf, base64, 202K]

la solución es ejecutar el siguiente comando en mutt y volver a listar los adjuntos (tecla v)

:set rfc2047_parameters

Abrir ficheros adjuntos con Mutt sin descargarlos

Es posible jugar con los fichero mailcap o bien usar un macro para abrir ficheros. Un truco muy socorrido, es usar el gestor de ficheros de la distribución en uso para abrir archivos, ya que este suele tener mapeadas las aplicaciones. Por ejemplo para escritorios LXDE se podría usar pcmanfm en un macro de la siguiente manera (Tecla “x”). En otros escritorio como xfce sería “thunar” el encargado de abrir los ficheros.

## Macro Open files (pcmanfm).
macro attach x \
"\
<enter-command>unset wait_key<enter>\
<shell-escape>rm -f /tmp/mutt-attach<enter>\
<save-entry><kill-line>/tmp/mutt-attach<enter>\
<shell-escape> pcmanfm /tmp/mutt-attach &^A\
"

Con este macro, al pulsar la tecla “x” sobre un un adjunto (tecla “v” para listarlos) guardará el fichero en /tmp/ y lo abrirá con pcmanfm.

Abrir un fichero mbox con Mutt.

mutt -f fichero.mbox

Descargar todos los adjuntos a partir de un fichero mbox: extraer_adjuntos_de_ficheros_mbox

Enlaces de interés.

buena_configuracion_de_mutt_con_gmail_gpg.txt · Last modified: 2023/03/07 11:11 by busindre