Búsqueda de sitios web

Cómo configurar Postfix y Dovecot con usuarios de dominio virtual en Linux - Parte 2


En el artículo anterior de esta serie explicamos cómo configurar y administrar la base de datos del servidor de correo de forma segura usando phpMyAdmin.

Requisito:

  1. Instale Postfix Mail Server y Dovecot con MariaDB - Parte 1

Ahora toca configurar los programas internos que harán realidad el envío y la recepción de correos electrónicos: Postfix y Dovecot (para manejar los correos electrónicos salientes y entrantes, respectivamente).

Configurar el servidor de correo Postfix

Antes de comenzar a configurar Postfix, valdría la pena echar un vistazo a sus páginas de manual aquí, poniendo especial énfasis en la sección titulada “Información para nuevos usuarios de Postfix“ . Si lo hace, le resultará más fácil seguir este tutorial.

En pocas palabras, debes saber que existen dos archivos de configuración para Postfix:

  1. /etc/postfix/main.cf (Parámetros de configuración de Postfix, consulte man 5 postconf para obtener más detalles).
  2. /etc/postfix/master.cf (Configuración del demonio maestro Postfix, consulte man 5 master para obtener más detalles).

En /etc/postfix/main.cf, localice (o agregue, si es necesario) las siguientes líneas y asegúrese de que coincidan con los valores indicados a continuación:


append_dot_mydomain = no
biff = no
config_directory = /etc/postfix
dovecot_destination_recipient_limit = 1
message_size_limit = 4194304
readme_directory = no
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_banner = $myhostname ESMTP $mail_name (CentOS)
smtpd_tls_cert_file = /etc/pki/dovecot/certs/dovecot.pem
smtpd_tls_key_file = /etc/pki/dovecot/private/dovecot.pem
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = yes
virtual_transport = dovecot
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth

Los siguientes tres escenarios son de especial importancia. En los archivos indicados en amarillo configuraremos el acceso de Postfix a las tablas Domains_tbl, Users_tbl y Alias_tbl:


virtual_mailbox_domains = mysql:/etc/postfix/mariadb-vdomains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mariadb-vusers.cf
virtual_alias_maps = mysql:/etc/postfix/mariadb-valias.cf

Tenga en cuenta que puede elegir diferentes nombres de archivos arriba, siempre que se asegure de crearlos e insertar el siguiente contenido en ellos. En cada caso, reemplaza TuContraseña con la contraseña que elegiste para el usuario dba en la Parte 1, o también puedes usar MariaDB credenciales raíz para el usuario y la contraseña a continuación.

Además, asegúrese de utilizar exactamente los mismos nombres de la base de datos del servidor de correo electrónico y de las tablas creadas en la Parte 1.

En /etc/postfix/mariadb-vdomains.cf:


user = dba
password = YourPassword
hosts = 127.0.0.1
dbname = EmailServer_db
query = SELECT 1 FROM Domains_tbl WHERE DomainName='%s'

En /etc/postfix/mariadb-vusers.cf:


user = dba
password = YourPassword
hosts = 127.0.0.1
dbname = EmailServer_db
query = SELECT 1 FROM Users_tbl WHERE Email='%s'

En /etc/postfix/mariadb-valias.cf:


user = dba
password = YourPassword
hosts = 127.0.0.1
dbname = EmailServer_db
query = SELECT Destination FROM Alias_tbl WHERE Source='%s'

Finalmente, no olvides cambiar los permisos de estos archivos a 640:


chmod 640 /etc/postfix/mariadb-vdomains.cf
chmod 640 /etc/postfix/mariadb-vusers.cf
chmod 640 /etc/postfix/mariadb-valias.cf

Y la propiedad del usuario root y del grupo postfix:


chown root:postfix /etc/postfix/mariadb-vdomains.cf
chown root:postfix /etc/postfix/mariadb-vusers.cf
chown root:postfix /etc/postfix/mariadb-valias.cf

A continuación, para habilitar conexiones seguras, debemos asegurarnos de que las siguientes configuraciones no estén comentadas (o agregadas, si es necesario) en /etc/postfix/master.cf:


submission inet n       -       n       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_reject_unlisted_recipient=no
  -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING
pickup    unix  n       -       n       60      1       pickup
cleanup   unix  n       -       n       -       0       cleanup
qmgr      unix  n       -       n       300     1       qmgr
tlsmgr    unix  -       -       n       1000?   1       tlsmgr
rewrite   unix  -       -       n       -       -       trivial-rewrite
bounce    unix  -       -       n       -       0       bounce
defer     unix  -       -       n       -       0       bounce
trace     unix  -       -       n       -       0       bounce
verify    unix  -       -       n       -       1       verify
flush     unix  n       -       n       1000?   0       flush
proxymap  unix  -       -       n       -       -       proxymap
proxywrite unix -       -       n       -       1       proxymap
smtp      unix  -       -       n       -       -       smtp
relay     unix  -       -       n       -       -       smtp

showq     unix  n       -       n       -       -       showq
error     unix  -       -       n       -       -       error
retry     unix  -       -       n       -       -       error
discard   unix  -       -       n       -       -       discard
local     unix  -       n       n       -       -       local
#virtual   unix  -       n       n       -       -       virtual
lmtp      unix  -       -       n       -       -       lmtp
anvil     unix  -       -       n       -       1       anvil
scache    unix  -       -       n       -       1       scache

Nota: la sangría en las líneas que comienzan con la opción -o es fundamental; de lo contrario, la verificación de postfix devolverá un error:

Antes de guardar los cambios, agregue las siguientes líneas al final del archivo:


dovecot   unix  -       n       n       -       -       pipe
    flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -f ${sender} -d ${recipient}

En este punto es fundamental comprobar si Postfix tiene acceso a las tablas de la base de datos y a los dominios, cuentas y alias que creamos en la Parte 1.

Para hacerlo, usaremos el comando postmap, una utilidad para probar la comunicación con las tablas que Postfix buscará durante la operación, pero primero y ante todo necesitaremos reiniciar postfix:


systemctl postfix restart
postmap -q linuxnewz.com mysql:/etc/postfix/mariadb-vdomains.cf
postmap -q someotherdomain.com mysql:/etc/postfix/mariadb-vdomains.cf
postmap -q [email  mysql:/etc/postfix/mariadb-vusers.cf
postmap -q [email  mysql:/etc/postfix/mariadb-vusers.cf
postmap -q [email  mysql:/etc/postfix/mariadb-vusers.cf
postmap -q [email  mysql:/etc/postfix/mariadb-valias.cf

En la imagen a continuación podemos ver que para los registros existentes en la base de datos, se devuelve un 1. De lo contrario, no se muestra nada en la pantalla. En el caso de la verificación de alias, tenga en cuenta que se devuelve la cuenta de correo electrónico real a la que está asignado el alias:

Tenga en cuenta que NO nos estamos autenticando con las credenciales establecidas para cada cuenta de correo electrónico, solo estamos probando la capacidad de Postfix para detectar esos registros en la base de datos.

Por lo tanto, si obtiene un resultado diferente al anterior, asegúrese de estar utilizando un par de usuario/contraseña válido en mariadb-vdomains.cf, mariadb-vusers.cf y mariadb-valias.cf (o como elijas llamar a esos archivos).

Configurando Dovecot

Como servidor IMAP/POP3, Dovecot proporciona una manera para que los usuarios a través de un Agente de Usuario de Correo (MUA, o también conocido como cliente), como Thunderbird o Outlook, por nombrar algunos ejemplos para acceder a su correo.

Para comenzar, creemos un usuario y un grupo para manejar correos electrónicos (lo necesitaremos ya que nuestras cuentas de correo electrónico no están asociadas con un usuario del sistema). Puedes usar otro UID y GID (que no sea 5000 como lo hacemos a continuación) siempre que no esté en uso y sea un número alto:


groupadd -g 5000 vmail 
useradd -g vmail -u 5000 vmail -d /home/vmail -m

La configuración de Dovecot se divide en varios archivos de configuración (asegúrese de que las siguientes líneas no estén comentadas y/o edítelas para que coincidan con la configuración indicada a continuación).

En /etc/dovecot/dovecot.conf:


!include_try /usr/share/dovecot/protocols.d/*.protocol
protocols = imap pop3 lmtp
!include conf.d/*.conf
!include_try local.conf

En /etc/dovecot/conf.d/10-auth.conf (habilite solo la autenticación a través de SQL y deje otros métodos de autenticación comentados):


disable_plaintext_auth = yes
auth_mechanisms = plain login
!include auth-sql.conf.ext

En /etc/dovecot/conf.d/auth-sql.conf.ext (tenga en cuenta que almacenaremos los correos electrónicos dentro de un directorio llamado sudominio.com dentro de / home/vmail, que debes crear si no existe. En nuestro caso hicimos mkdir /home/vmail/linuxnewz.com para administrar los correos electrónicos de ese dominio):


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

Se crearán bandejas de entrada individuales para las cuentas de usuario cuando se reciban por primera vez los correos electrónicos de dichas cuentas.

En /etc/dovecot/conf.d/10-mail.conf:


mail_location = maildir:/home/vmail/%d/%n/Maildir
namespace inbox {
  inbox = yes
}
mail_privileged_group = mail
mbox_write_locks = fcntl

En /etc/dovecot/conf.d/10-master.conf:


service imap-login {
  inet_listener imap {
    port = 143
  }
  inet_listener imaps {
  }
}
service pop3-login {
  inet_listener pop3 {
    port = 110
  }
  inet_listener pop3s {
  }
}
service lmtp {
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
   mode = 0600
   user = postfix
   group = postfix
  }
}
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
}
service dict {
  unix_listener dict {
  }
}

En /etc/dovecot/conf.d/10-ssl.conf (reemplace el certificado y las rutas clave si planea usar un certificado firmado por una CA):


ssl = required
ssl_cert = </etc/pki/dovecot/certs/dovecot.pem
ssl_key = </etc/pki/dovecot/private/dovecot.pem

En /etc/dovecot/dovecot-sql.conf.ext ingrese la información de su base de datos y las credenciales del usuario administrativo creado en la Parte 1.

Importante: si su contraseña contiene un asterisco (#), deberá incluir la cadena de conexión como se indica en el siguiente ejemplo:


driver = mysql
connect = "host=127.0.0.1 dbname=EmailServer_db user=dba password=PassWith#Here"
default_pass_scheme = SHA512-CRYPT
password_query = SELECT Email as User, password FROM Users_tbl WHERE Email='%u';

Además, puede configurar el registro para Dovecot para que esté separado de Postfix en /etc/dovecot/conf.d/10-logging.conf:


log_path = /var/log/dovecot.log

Finalmente, asegúrese de que el usuario dovecot pueda acceder al registro de Dovecot:


chown vmail:dovecot /var/log/dovecot.log
chmod 660 /var/log/dovecot.log

Verifique y corrija la configuración de Postifix y habilite SMTP, POP3 e IMAP en el firewall

Si tiene algún problema al configurar Postfix y/o Dovecot, en lugar de enviar todos los archivos de configuración para pedir ayuda, puede obtener un resumen de la configuración (solo líneas sin comentar) con:


postconf –n # Summary for /etc/postfix/main.cf
postconf –M # Summary for /etc/postfix/master.cf
doveconf –n # Summary of all configuration files for Dovecot

Además, asegúrese de que las bandejas de entrada de correo electrónico solo sean legibles mediante vmail:


chown –R vmail:vmail /home/vmail

Los archivos de configuración también deben ser legibles para los usuarios de vmail y dovecot:


chown -R vmail:dovecot /etc/dovecot 
chmod -R o-rwx /etc/dovecot 

Finalmente, asegúrese de habilitar SMTP, POP3 e IMAP a través del firewall:


firewall-cmd --add-port=143/tcp
firewall-cmd --add-port=143/tcp --permanent
firewall-cmd --add-port=110/tcp
firewall-cmd --add-port=110/tcp --permanent
firewall-cmd --add-port=587/tcp
firewall-cmd --add-port=587/tcp --permanent

Configurar Thunderbird como cliente de correo electrónico para Postfix

Habiendo asegurado el acceso a través del firewall a los puertos utilizados en las comunicaciones por correo electrónico, es hora de configurar un cliente de correo electrónico. Utilizando [email  y su correspondiente contraseña, junto con mail.linuxnewz.com como servidor IMAP (o POP3) y SMTP ya estamos listos para empezar a enviar y recibir correos electrónicos a y de tal cuenta:

Puede ignorar con seguridad el mensaje de advertencia que se muestra porque está utilizando un certificado que no está firmado por una CA externa confiable:

Redactemos un breve correo electrónico de prueba y hagamos clic en Enviar:

Cuando se le solicite aceptar el certificado autofirmado para el servidor saliente, confírmelo previamente como antes:

Finalmente, vaya al correo electrónico de destino para ver si recibió el correo electrónico que acaba de enviar. Si es así, responda y vea si se devuelve a la bandeja de entrada del correo electrónico de origen (de lo contrario, consulte el registro de Postfix en /var/log/maillog o el registro de Dovecot en /var /log/dovecot.log para obtener información sobre solución de problemas):

Ahora tiene un servidor de correo electrónico Postfix y Dovecot en funcionamiento y puede comenzar a enviar y recibir correos electrónicos.

Resumen

En este artículo hemos explicado cómo configurar Postfix y Dovecot para manejar el tráfico de correo electrónico en su servidor Linux. Si algo no funciona como se indica en este artículo, asegúrese de tomarse el tiempo para consultar la documentación de Postfix y Dovecot.

Tenga en cuenta que, aunque configurar un servidor de correo Postfix no es una tarea fácil, es una experiencia gratificante para todo administrador del sistema.

Si después de leer los documentos todavía tienes problemas con Postfix y/o Dovecot, no dudes en enviarnos una nota utilizando el formulario de comentarios a continuación y estaremos encantados de ayudarte. ayudarle (no olvide cargar en un servicio de almacenamiento en línea la configuración de Postfix y Dovecot recuperada usando postconf y doveconf como se describe en este artículo).