LinuxParty
En el artículo anterior explicamos cómo configurar y administrar la base de datos del servidor de correo de forma segura utilizando phpMyAdmin.
Ahora es el momento de configurar los programas internos que harán que el envío y la recepción de correos electrónicos sea una realidad: Postfix y Dovecot (para manejar los correos salientes y entrantes, respectivamente).
Configurar el servidor de correo Postfix
Antes de comenzar a configurar Postfix, valdría la pena ver 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, debe saber que hay dos archivos de configuración para Postfix :
- /etc/postfix/main.cf (Parámetros de configuración de Postfix, consulte man 5 postconf para más detalles).
- /etc/postfix/master.cf (configuración de daemon maestro de Postfix, consulte man 5 master para más detalles).
En /etc/postfix/main.cf
, busque (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
Las siguientes tres configuraciones 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 archivo arriba, siempre y cuando se asegure de crearlos e insertar los siguientes contenidos en ellos. En cada caso, reemplace YourPassword con la contraseña que eligió para el usuario de dba en la Parte 1 , o también puede usar las credenciales de root de MariaDB para usuario y 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 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 a 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 para usuario root y 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 las 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 crítica; de lo contrario, la comprobación de postfix devolverá un error:
Antes de guardar los cambios, agregue las siguientes líneas en la parte inferior 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 esencial verificar si Postfix tiene acceso a las tablas de la base de datos y los dominios, cuentas y alias que creamos en la Parte 1 .
Para hacerlo, utilizaremos el comando postmap , una utilidad para probar la comunicación con las tablas que Postfix buscará durante la operación, pero antes que nada 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 Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo. mysql:/etc/postfix/mariadb-vusers.cf # postmap -q Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo. mysql:/etc/postfix/mariadb-vusers.cf # postmap -q Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo. mysql:/etc/postfix/mariadb-vusers.cf # postmap -q Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo. mysql:/etc/postfix/mariadb-valias.cf
En la imagen siguiente, podemos ver que para los registros existentes en la base de datos, se devuelve 1 . De lo contrario, no se muestra nada en la pantalla. En el caso del control de alias, tenga en cuenta que se devuelve la cuenta de correo electrónico real al que se asigna el alias:
Tenga en cuenta que NO estamos autenticando contra 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 obtienes un resultado diferente al anterior, asegúrate de estar usando un par de usuario / contraseña válido en mariadb-vdomains.cf , mariadb-vusers.cf y mariadb-valias.cf (o lo que sea que elijas para llamar esos archivos) )
Configurando Dovecot
Como servidor IMAP / POP3 , Dovecot proporciona una forma para 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 los correos electrónicos (lo necesitaremos ya que nuestras cuentas de correo electrónico no están asociadas con un usuario del sistema). Puede usar otro UID y GID (que no sea 5000 como lo hacemos a continuación) siempre que no esté en uso y que 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 las configuraciones indicadas 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
(solo habilite la autenticación a través de SQL y deje comentados otros métodos de autenticación):
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 correos electrónicos dentro de un directorio llamado tudominio.com dentro de /home/vmail , que debe crear si no existe. nuestro caso lo hicimos mkdir/home/vmail/linuxnewz.com para administrar correos electrónicos para 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 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 está planeando 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á adjuntar 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 que Dovecot esté separado de Postfix en
/etc/dovecot/conf.d/10-logging.conf
:
log_path = /var/log/dovecot.log
Finalmente, asegúrese de que el registro de Dovecot sea accesible para el usuario dovecot :
# chown vmail:dovecot /var/log/dovecot.log # chmod 660 /var/log/dovecot.log
Verificar y corregir la configuración de Postifix y habilitar SMTP, POP3 e IMAP en Firewall
Si se encuentra con 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 comentario) 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 del correo electrónico sean legibles solo por vmail :
# chown –R vmail:vmail /home/vmail
Los archivos de configuración también deben ser legibles por 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 un cliente de correo electrónico para Postfix
Al tener acceso seguro a través del firewall para los puertos utilizados en las comunicaciones por correo electrónico, es hora de configurar un cliente de correo electrónico. Usando Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo. y su contraseña correspondiente, junto con mail.linuxnewz.com como IMAP (o POP3) y servidor SMTP, estamos listos para comenzar a enviar y recibir correos electrónicos desde y hacia dicha cuenta:
Puede ignorar de forma segura el mensaje de advertencia que se muestra porque está utilizando un certificado que no está firmado por una CA de terceros confiable:
Vamos a redactar un breve correo electrónico de prueba y haga clic en Enviar:
Cuando se le solicite que acepte 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 envía de vuelta 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 la resolución de problemas) :
Ahora tiene un servidor de correo Postfix y Dovecot que funciona y puede comenzar a enviar y recibir correos electrónicos.
Resumen
En este artículo, explicamos 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 revisar 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 todos los administradores del sistema.
Si después de revisar los documentos sigue teniendo problemas con Postfix y / o Dovecot , no dude en enviarnos una nota usando el formulario de comentarios a continuación y estaremos encantados de ayudarle (no olvide cargarlo 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).
Yo te invitaría (y te recomiendo), que en vez de usar MariaDB / MySQL, usaras Berkeley DB. Así, una repentida detención de la base de datos, no afectaría al servidor de correo. Esto te tocará probarlo a ti.
Te hechamos un cable, mira éste artículo, te gustará
Cómo configurar Postfix usando bases de datos Berkeley DB
Otros artículos que te gustarán:
- Introducción a la Instalación y Configuración de un Servidor de Correo (postfix y dovecot)
- Instalar y configurar Postfix y Dovecot, con autenticación y TLS
- Comandos de Postfix (servidor de correo)
- Cómo configurar un servidor de correo con Postfix y Dovecot para diferentes necesidades
- Cómo configurar el servidor de correo Postfix y Dovecot con base de datos (MariaDB) de forma segura: parte 1
- Cómo configurar Postfix usando bases de datos Berkeley DB
-
Email
- Crear o generar un certificado digital para Postifx y Dovecot.
- Instalar y configurar Postfix y Dovecot, con autenticación y TLS
- Detectar y encontrar envíos de Spam desde los propios servidores con Postfix
- Como evitar que el servidor envíe Spam
- Prevenir o evitar el envío de spam saliente (verificando si existe el remitente)
- Mostrar y vaciar la cola de postfix
- Introducción a la Instalación y Configuración de un Servidor de Correo (postfix y dovecot)
- Sustituir MS Exchange: por Linux Email Servers II
- Visualizar la ruta que ha seguido un email con Mail Hops (Thunderbird)
- RainLoop Webmail - Un moderno cliente Web de Email para Linux
- Monitorizar / Vigilar usuario de correo Postfix y eMails
- Tutorial de mailman con postfix
- Usuarios virtuales y dominios con Postfix & Courier
- Cómo combatir virus usando Postfix
- Usando DSPAM & ClamAV con Postfix (Virtual Users) en Debian Etch