===== Configuración de Mutt con Gmail + GPG (optativo) fácil + Teclas útiles de Mutt=====
**Manual de Mutt recomendado**: {{:mutt.pdf|}}\\
**Software**: [[http://www.mutt.org/|Mutt]], [[https://www.gnupg.org/|Gnupg]] (optativo) y [[http://w3m.sourceforge.net/|w3m]] (optativo pero recomendable).\\
**Atajos de teclado**: [[http://www.busindre.com/_media/mutt_keys.tx| 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 ([[proteger_passwords_en_la_configuracion_de_mutt|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 ([[https://www.busindre.com/modificar_locales_del_sistema_es_es.utf8|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]] / [[http://www.busindre.com/_media/mutt_keys.tx| mutt keys]]\\
**Moverse por el framework**.
* Entra en el correo / avanza una linea hacia abajo
* Avanza una linea hacia arriba.
* 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" ( [[https://kapeli.com/cheat_sheets/Mutt.docset/Contents/Resources/Documents/index|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 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. ([[http://mutt-users.mutt.narkive.com/M117hOwP/backspace-problems-in-xterm|Link 1]] / [[http://www.ibb.net/~anne/keyboard.html|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).
- Verde: Enviado por nosotros.
- Rojo negrita: Fichero de tamaño superior a la media.
- Amarillo: Correos ya leídos.
- Blanco: El correo estaba destinado a más personas.
- Fondo blanco: Correos sin leer.
- Fondo Rojo: Destacados (Estrella de Gmail).
==== Ficheros de configuración ====
Fichero $HOME/.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]>" #
color body brightwhite default "<[Bb][Gg]>" #
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 " =[Gmail]/Enviados" "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.
# 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' '?^K='
##########
# 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**
#!/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}"
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 \
"\
unset wait_key\
rm -f /tmp/mutt-attach\
/tmp/mutt-attach\
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**.
* [[http://www.sromero.org/ext/articulos/sololnx/sololnx6.html]]
* [[http://rhonda.deb.at/config/mutt/keys]]
* [[https://gist.github.com/kaleb/1289741]]
* [[http://aperiodic.net/phil/configs/mutt/colors]] (Colores)