Episodio II: Integrar Dovecot con la configuración de MySQL

Nota: Este post pertenece a una saga de configuración de correo, para entenderlo debes ir primero a la página de índice en saga de servidores de correo.

Continuando con la configuración ahora se usará Dovecot como servidor IMAP. Se requieren al menos estos paquetes:

apt-get install dovecot-core dovecot-mysql dovecot-imapd dovecot-pop3d

Toda la configuración local es recomendable realizarla en un nuevo fichero /etc/dovecot/local.conf siendo los cambios necesarios para:

  • Activar los protocolos deseados
  • Fijar el UID y GUI del usuario de correo al correspondiente usuario virtual vmail
  • Establecer la ubicación de los buzones maildir
  • Activar MySQL y configurar las consultas
  • Aumentar el número de conexiones desde una IP ya que hay muchos usuarios con NAT
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                                                                                                                 
}

# Demasiadas conexiones desde el mismo router
protocol imap {
    mail_max_userip_connections = 50
}                                                                                                                                     

La configuración MySQL se debe realizar en un fichero separado, Debian propone usar /etc/dovecot-sql.conf.ext este fichero trae ejemplos comentados, al final del fichero añado:

driver = mysql
connect = host=localhost dbname=mypanel user=mypanel password=??????
# Base de datos con encrypt
default_pass_scheme = CRYPT
# Consultas
password_query = SELECT email AS user, password \                                                                                    
	FROM mod_exim4_mailboxes WHERE email = '%u'

user_query = SELECT CONCAT('/home/vmail/',maildir) AS home \ 
    FROM mod_exim4_mailboxes WHERE email = '%u'

No te olvides de poner la contraseña correcta para la base de datos en la línea resaltada.

Es recomendable desactivar la autenticación predeterminada de Dovecot en Debian, que es con PAM. Para ello en el fichero /etc/dovecot/conf.d/10-auth encontrarás activo (incluido) el archivo auth-system.conf.ext, sólo hay que comentar esa línea:

#!include auth-system.conf.ext

Configuración SSL

Sólo 2 detalles:

  1. Activar SSL en modo required, la seguridad ante todo.
  2. Usar un certificado válido obtenido, por ejemplo, con certbot (letsencrypt) gratuitamente.

Se puede añadir al final del fichero /etc/dovecot/local.conf

ssl = required
ssl_ca = /etc/letsencrypt/live/yo.com/chain.pem
ssl_cert = </etc/letsencrypt/live/yo.com/fullchain.pem
ssl_key = </etc/letsencrypt/live/yo.com/privkey.pem

Gran cantidad de usuarios y Dovecot

Otro problema adicional encontrado con Dovecot son unos límites muy bajos por defecto, tanto de memoria como de número de usuarios permitidos. En el fichero de log (/var/log/mail.log) podrás encontrar avisos como:

Warning: service(imap-login): process_limit (100) reached, client connections are being dropped

Los cambios recomendados son el aumento de la memoria disponible y del número de conexiones en el fichero y son tres directivas que están comentadas /etc/dovecot/conf.d10-master.conf:

default_process_limit = 500
default_client_limit = 5000
default_vsz_limit = 512M

Carpeta de SPAM predeterminada

En la configuración de exim4 se le indicó que guardara el correo basura en la carpeta maildir SPAM. Los programas / webs gestores de correo identifican ciertas carpetas de uso especial siguiendo el estándar [RFC6154].

Por defecto Dovecot tiene la carpeta de correo no deseado establecida a Junk. Sólo hay que cambiar lo siguiente en el fichero /etc/dovecot/conf.d/15-mailboxes.conf:

namespace inbox {
  mailbox Drafts {
    special_use = \Drafts
  }
  mailbox SPAM {
    special_use = \Junk
  }
  mailbox Trash {
    special_use = \Trash
  }

....

}

paulino

paulino escribió 18 entradas

Navegación de la entrada


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

Puede usar las siguientes etiquetas y atributos HTML:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>