Servidor de correo con Dovecot en FreeBSD
Continuando la entrada anterior en la que montamos un MTA con OpenSMTPd, en esta ocasión facilitaremos el poder descargar el correo recibido utilizando cualquier cliente de correo que soporte IMAP. Al igual que en el anterior, utilizaremos a los usuarios del sistema para autenticarnos. También continuaremos manteniendo la simplicidad como principio básico, lo que nos lleva a utilizar Dovecot.
Requisitos
Como esta es la continuación del anterior, diremos que necesitamos un sistema FreeBSD actualizado y con OpenSMTPd instalado y funcional, tal y como lo dejamos la última vez.
Instalación
pkg install dovecot
Configuración
La configuración de ejemplo tras la instalación se ubica en un directorio diferente, por lo que necesitamos llevarlo a su ubicación definitiva, y una vez ahí podremos adaptarlo y utilizarlo.
cp -r /usr/local/etc/dovecot/example-config/* /usr/local/etc/dovecot/
Desactivar POP3 y Submission
El protocolo POP3 ya no tiene mucho sentido hoy día, con lo que vamos a impedir que Dovecot lo sirva. Por otro lado, ya dejamos configurado OpenSMTPd para que se encargue de gestionar submission, así que los deshabilitaremos. Hemos de dejar LMTP ya que nuestro MTA necesita poder entregarle el correo al MDA.
sed -ip 's/^protocols/protocols = imap lmtp/g' /usr/local/etc/dovecot/dovecot.conf
Configurar TLS
Vamos a utilizar los mismos certificados que teníamos para OpenSMTPd. Si la ubicación de los mismos o los nombres cambian, recordemos adaptar el fichero de configuración.
sed -ip 's/^ssl_key/ssl_key =<\/usr\/local\/etc\/mail\/ssl\/private\/mail.correo.com.key.pem/g' /usr/local/etc/dovecot/conf.d/10-ssl.conf
sed -ip 's/^ssl_cert/ssl_cert =<\/usr\/local\/etc\/mail\/ssl\/certs\/mail.correo.com.cert.pem/g' /usr/local/etc/dovecot/conf.d/10-ssl.conf
sed -ip 's/^#ssl = yes/ssl = required/' /usr/local/etc/dovecot/conf.d/10-ssl.conf
Configurar los buzones
Dovecot usa buzones estándar con carpetas Draft, Junk, Trash, Sent e Inbox. Además no se crean de manera automática, con lo cual los clientes de correo darán errores al conectarse e intentar suscribir las carpetas. Por este motivo vamos a hacer que Dovecot las cree automáticamente.
Editamos /usr/local/etc/dovecot/conf.d/15-mailboxes.conf
tal que:
...
namespace inbox {
# These mailboxes are widely used and could perhaps be created automatically:
mailbox Drafts {
special_use = \Drafts
auto = create
}
mailbox Junk {
special_use = \Junk
auto = create
}
mailbox Trash {
special_use = \Trash
auto = create
}
# For \Sent mailboxes there are two widely used names. We'll mark both of
# them as \Sent. User typically deletes one of them if duplicates are created.
mailbox Sent {
special_use = \Sent
auto = create
}
mailbox "Sent Messages" {
special_use = \Sent
}
...
Habilitar e iniciar el demonio
sysrc dovecot_enable="YES"
service dovecot start
Pruebas
Dovecot registra sus eventos en /var/log/maillog
, así que es el primer sitio al que acudiremos a comprobar cómo van las cosas y si el demonio inicia correctamente.
tail /var/log/maillog
<22>1 2022-12-25T06:45:33.699554+02:00 mail.correo.com dovecot 13317 - - master: Dovecot v2.3.19.1 (9b53102964) starting up for imap, lmtp
Y por supuesto comprobamos que se encuentran a la escucha los protocolos configurados:
sockstat -4l
USER COMMAND PID FD PROTO LOCAL ADDRESS FOREIGN ADDRESS
root dovecot 13317 35 tcp4 *:143 *:*
root dovecot 13317 36 tcp4 *:993 *:*
Configurar un cliente
Ahora podemos configurar un cliente de correo para suscribir y sincronizar el buzón. Como hasta ahora los únicos usuarios válidos son los del sistema, los que están en /etc/passwd
, omitiremos el @correo.com
en la configuración de autenticación.
IMAP
- Servidor de correo entrante: mail.correo.com:143
- Seguridad: STARTTLS
- Autenticación: Contraseña, normal
- Credenciales: usuario/contraseña
SMTP
- Servidor de correo saliente: mail.correo.com:587
- Seguridad: STARTTLS
- Autenticación: Contraseña, normal
- Credenciales: usuario/contraseña