Versión 1.1 - marzo de 2019
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']