5. Integrar Dovecot con MySQL
Tras configurar Exim4 ahora toca usar un servidor IMAP/POP para que los clientes de correo puedan acceder. Se realizará lo siguiente:
Instalar Dovecot como servidor IMAP/POP3
Integrarlo con la configuración MySQL de Exim4 con MySQL y usuarios virtuales
Configurar la seguridad SSL usando el mismo procedimiento usando en la sección Certificados digitales
Ajustes adicionales: incrementar usuarios por IP y configurar la carpeta de spam
5.1. Instalación
Para que se pueda integrar Dovecot con MySQL se requieren al menos estos paquetes:
apt-get install dovecot-core dovecot-mysql dovecot-imapd dovecot-pop3d
La configuración predeterminada trae muchas opciones deshabilitadas. Así, toda
la configuración se realizará en un nuevo fichero
/etc/dovecot/local.conf
donde se harán los siguientes cambios:
Activar los protocolos deseados.
Fijar el UID y GUI del usuario de correo al correspondiente usuario virtual vmail.
Activar MySQL el soporte MySQL configurar las consultas
Establecer la ubicación de los buzones maildir mediante consultas SQL.
protocols = imap pop3
disable_plaintext_auth = no
verbose_proctitle = yes
# Debug: Cuando algo falle lo activo y curioseo el log
# auth_verbose = yes
mail_uid = vmail
mail_gid = vmail
mail_location = maildir:%h
passdb {
args = /etc/dovecot/dovecot-sql.conf.ext
driver = sql
}
# Necesario para las variables %h
userdb {
args = /etc/dovecot/dovecot-sql.conf.ext
driver = sql
}
Nota
Existe una configuración alternativa consistente en activar en
10-auth.conf
la inclusión !include auth-sql.conf.ext
y
se podrían eliminar las 2 directivas passdb de local.conf
La configuración MySQL se debe realizar en un fichero separado y Debian propone
usar /etc/dovecot-sql.conf.ext
. Este fichero trae ejemplos comentados, y
sin tocar nada, al final añado lo siguiente:
# Configuración MySQL concordante con la configuración de Exim4
driver = mysql
connect = host=localhost dbname=DB_NAME user=DB_USER password=DB_PASS
# Consultas
user_query = SELECT CONCAT('/home/vmail/',maildir) AS home \
FROM mod_exim4_mailboxes WHERE email = '%u'
password_query = SELECT NULL AS password, 'Y' as nopassword, email AS user \
FROM mod_exim4_mailboxes WHERE email = '%u' AND password = sha2('%w',256);
Atención
No te olvides de poner la la base de datos, usuario y contraseña en la línea resaltada.
También es recomendable desactivar la autenticación predeterminada PAM, que
viene activada en Debian, así, ningún usuario del sistema con login activo pueda
entrar por IMAP/POP. De nuevo en el fichero /etc/dovecot/conf.d/10-auth
,
al final del mismo está activa la directiva indicada que hay que comentar:
#!include auth-system.conf.ext
5.2. Configuración SSL
La configuración para IMAP/POP se realizará de la siguiente forma:
Forzar SSL usando el modo required, la seguridad ante todo.
De nuevo usar el certificado del dominio principal, es decir, el que se configuró como resolución inversa para Exim4 y obtenido con Certbot/LetsEncrypt
Se puede añadir al final del fichero /etc/dovecot/local.conf
ssl = required
ssl_ca = /etc/letsencrypt/live/mail.art-website.com/chain.pem
ssl_cert = </etc/letsencrypt/live/mail.art-website.com/fullchain.pem
ssl_key = </etc/letsencrypt/live/mail.art-website.com/privkey.pem
ssl_dh = </etc/dovecot/dh.pem
Para generar los parámetros Diffie-Hellman para el intercambio de claves
dh.pem
se puede usar openssl pero deben de ser del mismo tamaño que la
clave, para ello se puede mirar el certificado, en mi caso 2048 bits. Así el
comando es:
openssl dhparam -out /etc/dovecot/dh.pem 2048
5.3. Gran cantidad de usuarios y Dovecot
Otro problema adicional encontrado con Dovecot es que la configuración predeterminada trae los límites de recursos muy bajos. Si no se cambia se puede encontrar en los logs el siguiente aviso de log podrás encontrar avisos como:
Warning: service(imap-login): process_limit (100) reached, client connections are being dropped
Si se tienen muchos usuarios hay que adaptar la configuración. El primer ajuste que suelo hacer es aumentar la memoria permitida mediante los cambios indicados a continuación:
default_process_limit = 500
default_client_limit = 5000
default_vsz_limit = 512M
Un segundo cambio es aumentar el número de conexiones desde la misma IP. Aunque esto es menos habitual, si se da servicio a algún cliente con muchas cuentas, puede que se conecten todos desde el mismo sitio con NAT. La solución es añadir lo siguiente al final del fichero indicado:
# Demasiadas conexiones desde el mismo router
protocol imap {
mail_max_userip_connections = 50
}
5.4. Carpeta de SPAM predeterminada
Este último ajuste es importante hacerlo para conseguir que los clientes de correo (Thunderbird, Outlook, etc. ) reconozcan adecuadamente la carpeta de Spam. Esta carpeta debe coincidir con la que se configuró previamente en Exim4. Los programas / webs gestores de correo identifican ciertas carpetas de uso especial siguiendo el RFC 6154 y Dovecot por defecto tiene la carpeta de correo no deseado establecida a Junk. Sólo hay que revisar lo siguiente en el fichero indicado:
namespace inbox {
mailbox Drafts {
special_use = \Drafts
}
mailbox Junk {
special_use = \Junk
}
mailbox Trash {
special_use = \Trash
}
}