Servidor de Correo – Casillas y usuarios virtuales

Configuración de Dovecot

Configuración de Dovecot

Dovecot es un servidor IMAP y POP. Además implementa seguridad/autenticación para IMAP/POP así como también SMTP (vía Postfix).
Usamos dovecot versión 2.3.4.1. Esto se puede verificar usando el comando:

# dovecot --version

Un usuario de linux real – vmail

Los siguientes comandos crean un usuario y un grupo llamado vmail. Se trata de un usuario de linux que será propietario de los correos electrónicos de todo el mundo (No hay que entrar en pánico por este hecho…)

# groupadd -g 5000 vmail
# useradd -g vmail -u 5000 vmail -d /var/vmail -m

Reiniciamos postfix

# service postfix restart

Dovecot está configurado de manera modular con archivos en /etc/dovecot/conf.d/
que son incluidos desde /etc/dovecot/dovecof.conf.
A Efectos prácticos es preferible tener un solo archivo de configuración en lugar de varios, así que resguardamos una copia del original. Y creamos unos nuevo copiando la salida de
dovecot -n a dovecot.conf:

# doveconf -n > /etc/dovecot/dovecot.conf.new
# mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.orig
# mv /etc/dovecot/dovecot.conf.new /etc/dovecot/dovecot.conf
# nano /etc/dovecot/dovecot.conf

Configurar la ubicación de almacenamiento de correo

mail_location = maildir:/var/vmail/%d/%n

Habilitamos los protocolos necesarios

# Enable installed protocols
!include_try /usr/share/dovecot/protocols.d/*.protocol
protocols = imap lmtp sieve

Buscamos la linea ssl = no, y la eliminamos. Luego insertamos el siguiente bloque:

service imap-login {
 inet_listener imap {
 port = 0
 }
 inet_listener imaps {
 port = 993
 }
}
ssl = required
ssl_cert = </etc/apache2/md/domains/midominio.edu.ar/pubcert.pem
ssl_key = </etc/apache2/md/domains/midominio.edu.ar/privkey.pem
ssl_prefer_server_ciphers=yes
### Protocolos
ssl_protocols = !SSLv3 !TLSv1 !TLSv1.1 #Dovecot 2.2.x
ssl_min_protocol=TLSv1.2 #Dovecot 2.3.x o superior

Con esto forzamos el uso de TLS/SSL, especificamos nuestros certificados, deshabilitamos IMAP (definiendo el puerto igual a 0) y configuramos el servicio imap-login en el puerto 993 (IMAPS).

Configurar la autenticación

disable_plaintext_auth = no
auth_mechanisms = plain login

Finalmente agregamos soporte para autenticación basada en mariadb en la parte inferior:

passdb {
 driver = sql
 args = /etc/dovecot/dovecot-sql.conf.ext
}
userdb {
 driver = static
 args = uid=5000 gid=5000 home=/var/vmail/%d/%n allow_all_users=yes
}

El Protocolo de Transferencia de Correo Local, o LMTP, es en esencia el que permite a Postfix y Dovecot hablar entre sí. Y es necesario, además, para establecer reglas de filtrado u otro tipo de procesamiento inteligente de la entrega de correo.

service lmtp {
 unix_listener /var/spool/postfix/private/dovecot-lmtp {
 mode = 0600
 user = postfix
 group = postfix
 }
}
protocol lmtp {
 postmaster_address = administrador@midominio.edu.ar
}

Configurar los parámetros mariadb en dovecot

# nano /etc/dovecot/dovecot-sql.conf.ext

Pegar lo siguiente al final:

default_pass_scheme = SHA512-CRYPT
driver = mysql
connect = host=localhost dbname=vimbadmin user=vimbadmin password=password
password_query = \
 SELECT username AS user, password, \
 homedir AS userdb_home, uid AS userdb_uid, gid AS userdb_gid \
 FROM mailbox WHERE username = '%u'
# iterate_query = SELECT username AS user FROM mailbox

Resulta fundamental para el funcionamiento de nuestro sistema que se defina el esquema utilizado para almacenar las contraseñas en la base de datos, en este caso SHA512-CRYPT.
Por otro lado, en toda la configuración relacionada al vínculo entre mariadb y dovecot puede ser necesario reemplazar la referencia al localhost por 127.0.0.1

Verificar configuración de dovecot

Nos aseguramos que contenga lo siguiente:

service auth {
 unix_listener /var/spool/postfix/private/auth {
 mode = 0666
 user = postfix
 group = postfix
 }
 unix_listener auth-userdb {
 mode = 0600
 user = vmail
 }
 user = dovecot
}
service auth-worker {
 user = vmail
}

Registro de Errores

Dovecot siempre registra un mensaje detallado del error en caso que algo salga mal. Estos mensajes pueden registrarse en un archivo diferente que los mensajes informativos. Podemos encontrar la ubicación tales archivos con:

doveadm log find

Para más detalles acerca del registro de errores, se recomienda ver los parámetros disponibles en la documentación de dovecot.

Doveconf

Al hacer tantos cambios resulta fácil perderse. En esos casos se pueden listar los cambios hechos en toda la configuración de dovecot, para ello:

# doveconf -n

De manera similar, doveconf -a muestra la configuración completa de dovecot (incluyendo los valores predeterminados).

Reiniciar dovecot

# systemctl restart dovecot