Inicio

Versión 1.1 - marzo de 2019

Correo en modo texto

Usaremos mutt para leer y enviar mensajes desde la terminal. Podemos configurar mutt para que se conecte directamente con el servidor IMAP. También podemos tener una copia local del servidor IMAP mediante el programa offlineimap y decirle a mutt que la lea. Otra posibilidad es querer manejar el correo cuando no tengamos conexión: para ello usaremos mutt en combinación con offlineimap y con msmtp. Con offlineimap nos bajamos el correo nuevo con el formato Maildir y con mutt lo leemos localmente. Cualquier cambio que hagamos en nuestro correo local lo podemos sincronizar en el servidor ejecutando de nuevo offlineimap. Y por último, para enviar correos, mutt usará msmtp. Si cuando envíamos un mensaje no tenemos conexión, msmtp lo envía a la cola y cuando tengamos conexión los enviamos todos a la vez. Para ello usamos el guión, msmtp-queue, que viene con el programa msmtp, el cual nos permite ver la cola y enviar los mensajes.

Por tanto instalamos mutt (mi versión es 1.10.1), offlineimap (mi versión es 7.2.3), msmtp (mi versión es 1.8.3) y ca-certificates . Creamos la carpeta ~/.mutt. En ella tendremos el archivo de configuración de mutt: .muttrc:


## configurar el remitente de los correos
set from = "pepito@juntadeandalucia.es"
set realname = "Pepito de los Palote"

set sort= last-date-received

#set allow_8bit=yes
# por defecto envía como quoted-printable
#set text_flowed=yes # no funciona en 1.5.24

set wrap=80
set mark_old=no # diferencia entre Nuevo y Viejo
set editor =vim

# prefer plain text
alternative_order text/plain text/enriched text/html

# auto convert text/html MIME type to text/plain
auto_view text/html

#muestra el índice y el cuerpo
#set pager_index_lines=12
#set pager_context=3

#set date_format="%y/%m/%d %I:%M:%S%p %Z"
set date_format="%y/%m/%d"


# formatos, consultar: http://www.mutt.org/doc/manual/#formatstrings

# condicionales: %???
# donde optional_string is the string you would like printed if 
# sequence_char is nonzero. Por ejemplo para imprimir el número de
# adjuntos solo si los hay: %?X?%X adjuntos? 

set index_format="%3C %Z %X %-40.40s  %-18.18F  %d"

set pager_format="%Z %C/%m: %-20.20n   %s%*  -- %P"
# %* justifica a la dcha.
set status_format="-%r-Carpeta:%f   Mensajes:%?M?%M/?%m%?n? Nuevos:%n?%?o? \
Viejos:%o?%?d? Eliminados:%d?%?F? Flag:%F?%?t? Tag:%t?%?p? Borradores:%p?%?b? \
Inc:%b?   ---ordenados:%s/%S-%>-(%P)---"
# diferencia entre nuevos y viejos, cuando reinicio mutt los nuevos se
# transforman en viejos.


# vaya tela para entenderlo:
#        1 2     3       1 2        3  1 2        3  1 2        3  1 2         3  1 2        3  1 2         3  1 2        3  1 2    3
#Msgs: % ?M? %M/ ?  %m % ?n? New:%n ? %?o? Old:%o ? %?d? Del:%d ? %?F? Flag:%F ? %?t? Tag:%t ? %?p? Post:%p ? %?b? Inc:%b ? %?l? %l ?              

set certificate_file=~/.mutt/mutt_certificates

# Maildir creado por offlineimap
set mbox_type=Maildir
set folder = "~/.mutt/directorio_offlineimap"
set spoolfile = "+INBOX"
set record = +INBOX.Sent
set trash = +INBOX.Trash
set postponed = +INBOX.Drafts

# comprueba si hay correo nuevo en estas carpetas. Para comprobar si
# entró correo en esas carpetas pulsar . y para cambiar fácilmente entre
# ellas pulsar y
mailboxes '+INBOX.CCOO entrada' +INBOX


# libreta de direcciones
source ~/.mutt/direcciones_correo
set alias_file= ~/.mutt/direcciones_correo
set sort_alias=alias

# no pregunta al borrar correos
set delete

## envío con msmtp
#set sendmail="/usr/bin/msmtp"

## envío con msmtpq a través de cola
set sendmail="/usr/local/bin/msmtpq"
set sendmail_wait = -1

Configuramos offlineimap mediante el archivo ~/offlineimaprc:

# Sample minimal config file.  Copy this to ~/.offlineimaprc and edit to
# suit to get started fast.

[general]
accounts = correo_corporativo

[Account correo_corporativo]
localrepository = Local

remoterepository = Remote

[Repository Local]
type = Maildir
localfolders = ~/.mutt/directorio_offlineimap


[Repository Remote]
sslcacertfile = /etc/ssl/certs/ca-certificates.crt
# esto es si sale el error de clave demasiado pequeña:
# https://200ok.ch/posts/2019-07-02_openssl_responded_ssl_dh_key_too_small.html
ssl_version=tls1_2
type = IMAP
remotehost = imap.juntadeandalucia.es
remoteuser = pepito
remoteport = 993
remotepass = clave
ssl = yes
maxconnections = 1

# directorio para logs
metadata = ~/.mutt/.offlineimap

# máximo número de cuentas que sincroniza a la vez
maxsynaccounts = 1
fsync = true

#no hace falta la seccion nbnames para mutt
#[mbnames]
#enable = yes
#filename = ~/.mutt/muttrc.mailboxes
#header = "mailboxes "
#peritem = "+%correo_corporativo/%.directorio_offlineimap"
#peritem = "+%/accountname)s/%(foldername)s"
#sep = " "
#footer = "\n"

Para configurar msmtp escribimos el fichero ~/.msmtprc con permiso rw solo para el usuario:


account default
host mail.juntadeandalucia.es
port 465
from pepito@juntadeandalucia.es
auth on
user pepito
password clave
tls on
tls_starttls off

##  tengo problemas con el ssl del servidor y con 
## tls_cercheck off me funciona.
tls_certcheck off
#tls_trust_file /etc/ssl/certs/ca-certificates.crt

, creamos los directorios ~/log y ~/.msmtp.queue y copiamos msmtpq y msmtp-queue de /usr/share/doc/msmtp/examples/msmtpq/ a /usr/local/bin.

El proceso sería ejecutar los comandos: offlineimap, mutt, msmtp-queue -r, y offlineimap (por si nos hemos enviado un correo a nosotros mismos).

Para pasar del formato mbox (que usa Thunderbird en sus carpetas locales) a Maildir (que usa Mutt) usar el programa mb2md:


mb2md -s ruta_a_fichero_mbox -d directorio_donde_crear_correo_maildir
Copiar las carpetas generadas cur, new y tmp a una carpeta dentro del directorio offlineimap. Para que estas carpetas locales no se sincronicen al remoto poner en .offlineimaprc en la sección del remoto:

folderfilter = lambda folder: folder not in ['carpeta_1', 'carpeta_2']

Inicio

HTML5 Powered