Próxima revisión | Revisión previa |
es:howtos:network_services:postfix_dovecot_mysql [2019/02/11 12:19 (UTC)] – creado slackwarespanol | es:howtos:network_services:postfix_dovecot_mysql [2019/02/14 13:22 (UTC)] (actual) – slackwarespanol |
---|
====== Creating a Virtual Mail Server with Postfix, Dovecot and MySQL ====== | ====== Creación de un servidor de correo virtual con Postfix, Dovecot y MySQL ====== |
| |
This article shows how to build and set up a secure virtual mail server using Postfix, Dovecot and MySQL on a Slackware 14.1 platform. | Este artículo muestra cómo construir y configurar un servidor de correo virtual seguro utilizando Postfix, Dovecot y MySQL en una plataforma Slackware 14.1. |
| |
Because the build and installed platforms may very likely be different, and the configuration can seem complex to those not familiar with postfix, dovecot and mysql, I have organized this article in a way that I hope will help you separate and test individual tasks, without losing your way! | Debido a que las plataformas compiladas e instaladas pueden ser muy diferentes, y la configuración puede parecer compleja para aquellos que no están familiarizados con postfix, dovecot y mysql, he organizado este artículo de una manera que espero le ayude a separar y probar tareas individuales, sin perderse en el camino! |
| |
The article has been written as the result of my own experience in setting up a virtual mail server on my own Linode.com VPS, but I have avoided many overt references to Linode.com specific tools or configurations, so it should be easily adapted for any platform. The only Linode.com reference will be to list a few additional packages that will be needed for their Slackware 14.1 base. | El artículo fue escrito como resultado de mi propia experiencia en la configuración de un servidor de correo virtual en mi propio VPS de Linode.com, pero he evitado muchas referencias abiertas a las herramientas o configuraciones específicas de Linode.com, por lo que debería ser fácilmente adaptado para cualquier plataforma. La única referencia de Linode.com será enumerar algunos paquetes adicionales que serán necesarios para su base Slackware 14.1. |
| ===== Nuestro servidor de correo virtual de destino ===== |
| |
===== Our Target Virtual Mail Server ===== | Lo que entendemos por // servidor de correo virtual // es que los buzones de correo no necesitan corresponder a las cuentas de usuario en la máquina, sino que pertenecen a usuarios virtuales definidos en la base de datos. Esto permite servir el correo para muchos buzones de correo y en múltiples dominios. |
| |
What we mean by //virtual mail server// is that mail boxes need not correspond to user accounts on the machine, but instead belong to virtual users defined in the database. This allows for serving mail for many mail boxes and across multiple domains. | <note important>¡La ejecución de un servidor de correo virtual puede no ser la mejor opción para muchos casos de uso, ya que presenta algunos riesgos y requisitos de seguridad adicionales! En particular, ¡no debe ejecutar un servidor de correo virtual en una máquina que proporcione cuentas de inicio de sesión para múltiples usuarios! ¡Un MTA de correo virtual solo debe configurarse en un host bien seguro dedicado al propósito!</note> |
| |
<note important>Running a virtual mail server may not be the best choice for many use cases as it presents some additional security risks and requirements! In particular, you should not run a virtual mail server on a machine which provides login accounts for multiple users! A virtual mail MTA should only be configured on a well secured host dedicated to the purpose!</note> | Por seguridad, configuraremos Dovecot para proporcionar autenticación para Postfix a través de SASL en base a las credenciales del buzón de correo virtual. También requeriremos TLS/SSL para el acceso de todos los usuarios y, por supuesto, ¡nos aseguraremos de que no se convierta en un envío de correo no deseado abierto! |
| |
For security we will configure Dovecot to provide authentication for Postfix via SASL based on virtual mail box credentials. We will also require TLS/SSL for all user access, and of course will assure that it does not turn into a spam serving open relay! | Para comenzar, solo necesita una instalación básica de Slackware 14.1, con parches de seguridad actualizados, en particular para bash, openssl, openssl-solibs y gnutls. |
| |
To get started you simply need a Slackware 14.1 base installation, with updated security patches, particularly for bash, openssl, openssl-solibs and gnutls. | <note>Si está instalando en un VPS de Linode.com con su base Slackware 14.1, deberá agregar algunos paquetes faltantes además de mariadb, dovecot y postfix. Durante mi propia configuración (que incluye fail2ban, no se trata aquí) necesitaba agregar: |
| db48, cyrus-sasl, libaio, pidentd y sqlite |
<note>If you are installing to a Linode.com VPS with their Slackware 14.1 base, you will need to add a few missing packages in addition to mariadb, dovecot and postfix. During my own set up (which includes fail2ban, not covered here) I needed to add: | |
db48, cyrus-sasl, libaio, pidentd and sqlite | |
</note> | </note> |
| |
There are many parts to our virtual mail server which will be covered in separate sections. But the best way to organize them all is with a simple graphic showing the major installed components and their relationships. Figure 1, below, represents an overall view of the target virtual mail system described by this article. | Hay muchas partes en nuestro servidor de correo virtual que se cubrirán en secciones separadas. Pero la mejor manera de organizarlos todos es con un gráfico simple que muestre los principales componentes instalados y sus relaciones. La figura 1, a continuación, representa una vista general del sistema de correo virtual de destino descrito en este artículo. |
| |
==Figure 1: Virtual Email Overview== | == Figura 1: Descripción general del correo electrónico virtual == |
{{ howtos:network_services:vmail.png }} | {{ howtos:network_services:vmail.png }} |
| |
===== Component Installation ===== | ===== Instalación de componentes ===== |
| |
Listing of major items from Figure 1 provides a todo check-list for installing the major components of our virtual mail server. | La lista de elementos principales de la Figura 1 proporciona una lista de verificación de tareas pendientes para instalar los componentes principales de nuestro servidor de correo virtual. |
| |
Follow the links listed here and //carefully complete each item//. When finished you will have a secure, working virtual mail server which may then be further configured to meet your specific needs! | Siga los enlaces que se enumeran aquí y // complete cuidadosamente cada elemento //. Cuando termine, tendrá un servidor de correo virtual seguro y en funcionamiento, que luego podrá ser configurado para satisfacer sus necesidades específicas. |
| |
* [[howtos:network_services:postfix_dovecot_mysql:email_firewall|Firewall configuration]] | * [[:es:howtos:network_services:postfix_dovecot_mysql:email_firewall|Configuración de firewall]] |
* [[howtos:network_services:postfix_dovecot_mysql:database|Database initialization]] | * [[:es:howtos:network_services:postfix_dovecot_mysql:database|Inicialización de la base de datos]] |
* [[howtos:network_services:postfix_dovecot_mysql:uid_gid|Required users, groups and paths]] | * [[:es:howtos:network_services:postfix_dovecot_mysql:uid_gid|Usuarios requeridos, grupos y rutas.]] |
* [[howtos:network_services:postfix_dovecot_mysql:ssl|SSL configuration and certificates]] | * [[:es:howtos:network_services:postfix_dovecot_mysql:ssl|Configuración SSL y certificados.]] |
* [[howtos:network_services:postfix_dovecot_mysql:postfix|Postfix configuration]] | * [[:es:howtos:network_services:postfix_dovecot_mysql:postfix|ConfiguraciónPostfix]] |
* [[howtos:network_services:postfix_dovecot_mysql:dovecot|Dovecot configuration]] | * [[:es:howtos:network_services:postfix_dovecot_mysql:dovecot|Configuración dovecot]] |
* [[#DNS, MX Records and Hosts File|DNS, MX records and hosts file]] | * [[#DNS, MX Records and Hosts File|DNS, registros MX y archivos de hosts.]] |
* [[#Startup and troubleshooting|Startup and Troubleshooting]] | * [[#Startup and troubleshooting|Inicio y solución de problemas]] |
| |
===== DNS, MX Records and Hosts File ===== | ===== DNS, MX Records y Hosts File ===== |
| |
In order for your mail server to be found on a wider network, you must correctly configure the DNS and MX records for your host's domain. These records are external to the host itself and so are outside the scope of this article. | Para que su servidor de correo se encuentre en una red más amplia, debe configurar correctamente los registros DNS y MX para el dominio de su host. Estos registros son externos al propio host y, por lo tanto, están fuera del alcance de este artículo. |
| |
In general, you will need to configure the //DNS zone file// for your domain and create MX records within that zone file which point to your mail server. If your target system is a hosted platform such as a VPS, then the provider will supply the tools and guides for doing so. You must also be sure to provide a PTR record for reverse address lookup, many systems will not receive mail from hosts which they cannot identify. | En general, deberá configurar el // archivo de zona DNS // para su dominio y crear registros MX dentro de ese archivo de zona que apunten a su servidor de correo. Si su sistema de destino es una plataforma alojada como un VPS, entonces el proveedor proporcionará las herramientas y las guías para hacerlo. También debe asegurarse de proporcionar un registro PTR para la búsqueda de direcciones inversas, muchos sistemas no recibirán correo de hosts que no puedan identificar. |
| |
An internet search will also produce many helpful resources, which I will leave to you as an exercise. | Una búsqueda en Internet también producirá muchos recursos útiles, que les dejaré como ejercicio. |
| |
In addition, on the host machine itself, you will need to be sure that the hosts file includes the corresponding lines for your IP address, hostname, FQDN and domain as they are used by postfix and dovecot for resolving the disposition of messages: | Además, en la propia máquina host, deberá asegurarse de que el archivo de hosts incluya las líneas correspondientes a su dirección IP, nombre de host, FQDN y dominio, ya que son utilizados por postfix y dovecot para resolver la disposición de los mensajes: |
| |
<code> | <code> |
</code> | </code> |
| |
===== Startup and Troubleshooting ===== | ===== Inicio y solución de problemas ===== |
After you have completed each of the major tasks listed above from Figure 1, you should be ready to startup your virtual mail server. | Una vez que haya completado cada una de las tareas principales enumeradas anteriormente en la Figura 1, debe estar listo para iniciar su servidor de correo virtual. |
| |
You should verify each aspect of the system separately and in order, so that you can resolve any potential problems methodically. | Debe verificar cada aspecto del sistema por separado y en orden, de modo que pueda resolver cualquier problema potencial de forma metódica. |
| |
If something seems to not work as expected, //take the time to understand why// and avoid the urge to just "try this or that" - you will only corrupt and compromise your system by that method! | Si algo parece no funcionar como se espera, // tómese el tiempo para entender por qué // y evite la tentación de simplemente "probar esto o aquello": ¡solo corromperá y comprometerá su sistema con ese método! |
| |
First, lets start dovecot and postfix and look for any error messages - there really should be none. | Primero, comencemos dovecot y postfix y busquemos cualquier mensaje de error; realmente no debería haber ninguno. |
| |
<code>chmod +x /etc/rc.d/rc.dovecot | <code>chmod +x /etc/rc.d/rc.dovecot |
</code> | </code> |
| |
If you receive any other messages or errors from the shell or the log file, investigate and fix them before continuing! | Si recibe cualquier otro mensaje o error del shell o del archivo de registro, investigue y corrija antes de continuar. |
| |
Next let's do the same for postfix: | A continuación, hagamos lo mismo para postfix: |
| |
<code>chmod +x /etc/rc.d/rc.postfix | <code>chmod +x /etc/rc.d/rc.postfix |
</code> | </code> |
| |
Same as before, if you receive any other messages or errors from the shell or the log file, investigate and fix them before continuing! | Igual que antes, si recibe cualquier otro mensaje o error del shell o del archivo de registro, ¡investigue y corrija antes de continuar! |
| |
Next, with postfix and dovecot running, use netstat to confirm that things are as expected: | A continuación, con postfix y dovecot ejecutándose, use netstat para confirmar que las cosas son como se esperaba: |
<code> | <code> |
netstat -plntu | netstat -plntu |
</code> | </code> |
| |
You should see master (the postfix master process) listening on ports 25, 465 and 587, and dovecot on ports 993 and 995. | Debería ver el master (el proceso maestro de postfix) escuchando en los puertos 25, 465 y 587, y dovecot en los puertos 993 y 995. |
| |
You should also verify that your firewall rules are in fact loaded - you do not want to run your mail server without the firewall, even briefly! | También debe verificar que sus reglas de firewall estén de hecho cargadas. ¡No desea ejecutar su servidor de correo sin el firewall, ni siquiera brevemente! |
| |
<code>iptables -L | <code>iptables -L |
...</code> | ...</code> |
| |
If all looks good so far, check whether you can connect to the mailserver from the outside world. We should use port 25 for this, but many ISPs block port 25 so it is difficult to get a reliable test result. So see if you can connect to port 465 or 587 using telnet. | Si todo se ve bien hasta ahora, verifique si puede conectarse al servidor de correo desde el mundo exterior. Deberíamos usar el puerto 25 para esto, pero muchos ISP bloquean el puerto 25 por lo que es difícil obtener un resultado de prueba confiable. Así que vea si puede conectarse al puerto 465 o 587 usando telnet. |
| |
Type the line "telnet my-domain.com 465" and hit enter key: | Escriba la línea "telnet my-domain.com 465" y presione la tecla enter: |
<code> | <code> |
telnet my-domain.com 465 | telnet my-domain.com 465 |
</code> | </code> |
| |
If you do not receive a response similar to that shown then it is likely that your host is not reachable from your location. | Si no recibe una respuesta similar a la que se muestra, es probable que no se pueda acceder a su host desde su ubicación. |
| |
Most commonly this will be due to a bad DNS record or incorrect nameserver settings at the domain registrar. Verify that these are correct. | En la mayoría de los casos, esto se debe a un mal registro de DNS o una configuración incorrecta del servidor de nombres en el registrador de dominios. Verifique que estos sean correctos. |
| |
It can also result from incorrect or conflicting firewall rules. Remember that iptables rules are evaluated from top to bottom and the first match determines the fate of each request. Look carefully to see if any pre-existing rules may be dropping your requests before they reach the intended rule! | También puede resultar de reglas de firewall incorrectas o en conflicto. Recuerde que las reglas de iptables se evalúan de arriba a abajo y la primera coincidencia determina el destino de cada solicitud. ¡Mire cuidadosamente para ver si alguna regla preexistente puede estar eliminando sus solicitudes antes de que alcancen la regla deseada! |
| |
If it connects then you are ready to set up an inbox in a mail client like Thunderbird and give it a final test! | Si se conecta, ¡ya está listo para configurar una bandeja de entrada en un cliente de correo como Thunderbird y realizar una prueba final! |
| |
When you create an inbox in your mail client, remember to use the secure imap and pop3 connections - we are not listening on the insecure service ports. You must use the full mailbox name, name@my-domain.com, as the user name, and the password must be that used in the MySQL INSERT or UPDATE queries which created the virtual user. | Cuando cree una bandeja de entrada en su cliente de correo, recuerde utilizar las conexiones seguras de imap y pop3, no estamos escuchando en los puertos de servicio inseguros. Debe usar el nombre completo del buzón, nombre@dominio.com, como nombre de usuario y la contraseña debe ser la que se usó en las consultas de INSERTO o ACTUALIZACIÓN de MySQL que crearon al usuario virtual. |
| |
And remember - although this configuration is as secure as the machine it is running on, it is still a minimal configuration! | Y recuerde: aunque esta configuración es tan segura como la máquina en la que se está ejecutando, ¡todavía es una configuración mínima! |
| |
You will also definitely want to install fail2ban (available from SBo). You will also want a spam filtering application and possibly even a virus detection program for incoming and outgoing email. | Definitivamente también querrá instalar fail2ban (disponible desde SBo). También querrá una aplicación de filtrado de spam y posiblemente un programa de detección de virus para el correo electrónico entrante y saliente. |
| |
You should think carefully about your own specific requirements, read the postfix and dovecot documentation thoroughly, subscribe to their mail lists and learn to interpret the logs. Watch the system carefully and take it offline at the first sign of compromise! | Debe pensar detenidamente sus propios requisitos específicos, leer detenidamente la documentación de postfix y dovecot, suscribirse a sus listas de correo y aprender a interpretar los registros. ¡Observe cuidadosamente el sistema y desconéctelo a la primera señal de compromiso! |
| |
Running an email server on the internet is definitely not a click and forget past time! | ¡Ejecutar un servidor de correo electrónico en Internet definitivamente no es un clic y olvidarse del tiempo pasado! |
| |
====== Sources ====== | ====== Fuentes ====== |
* Originally written by [[wiki:user:astrogeek | astrogeek]] | * Escrito originalmente por [[wiki:user:astrogeek | astrogeek]] |
| * Traducido por: [[wiki:user: slackwarespanol | Victor]] 2019/02/14 13:21 (UTC) |
{{tag>howtos email postfix dovecot mysql ssl}} | {{tag>howtos email postfix dovecot mysql ssl}} |