Administración del servidor

Instalar, asegurar, acceder y configurar servidor de correo Linux (Postfix)

Si deseas enviar o recibir un correo electrónico, debes tener un servidor de correo. En esta publicación, analizaremos el servidor de correo Linux y cómo el SMTP (Protocolo Simple de Transferencia de Correo) funciona tan bien como otros protocolos relacionados al correo, como el Protocolo de Post Office (POP) y el Protocolo de Acceso a Mensajes de Internet (IMAP) y la relación entre ellos.

 


 

Servidor SMTP de Linux

El SMTP define cómo se envía un correo de un host a otro, también es independiente del sistema, lo que significa que el emisor y el receptor pueden tener diferentes sistemas operativos.

SMTP solo requiere que un servidor pueda enviar texto ASCII a otro servidor, y esto se hace conectándose al servidor en el puerto 25, que es el puerto SMTP estándar.

La mayoría de las distribuciones de Linux incluyen dos de las implementaciones más comunes de SMTP que son sendmail y Postfix.

Sendmail es un servidor de correo famoso y gratuito, pero tiene un diseño un poco complejo y menos seguro.

El Postfix llevó la implementación de un servidor de correo un paso más allá, se desarrolló teniendo en cuenta la seguridad.

 

Componentes del servicio de correo

El servicio de correo en cualquier servidor de correo tiene tres componentes:

Agente de usuario de correo (MUA): con este componente usuario ve e interactúa con los correos electrónicos, entre estos están Thunderbird y Microsoft Outlook, estos agentes de usuario son responsables de leer y redactar los correos.

Agente de transporte de correo (MTA): este componente es responsable de mover el correo de un sitio a otro, estos pueden ser Sendmail y Postfix.

Agente de entrega de correo (MDA): este componente es responsable de distribuir los mensajes recibidos en la máquina local al buzón de usuario apropiado, estos pueden ser postfix- maildrop y Procmail.

 

Configurar el servidor de correo electrónico

Elegimos el servidor de correo Postfix, el cual es muy popular y común entre los administradores de sistemas en la actualidad.

Postfix es el servidor de correo predeterminado en la mayoría de las distribuciones modernas de Linux.

Primero, verifica si está instalado en tu sistema:

$ rpm -qa | grep postfix

Si no está, puedes instalar el servidor de correo Postfix de la siguiente forma en distribuciones basadas ​​en Red Hat:

$ dnf -y install postfix

Luego, inicia el servicio postfix y habilítalo al inicio del sistema:

En distribuciones basadas en Debian como Ubuntu, se instala de esta manera:

$ apt-get -y install postfix

Se te solicitara que selecciones un tipo de configuración para el servidor de correo Postfix durante el proceso de instalación.

Entre las cuatro opciones se encuentran, No configuration, Internet Site, Internet with smarthost, Satellite system y Local only, elegiremos la opción No configuration.

 



Configurar el servidor de correo de Linux

Después de instalar el servidor de correo Postfix, tendrás que configurarlo, la mayoría de sus archivos de configuración se pueden encontrar en el directorio /etc/postfix/.

La configuración principal para el servidor de correo Postfix la puedes encontrar en el archivo /etc/postfix/main.cf.

Este archivo contiene muchas opciones como:

 

myhostname

Esta opción se utiliza para especificar el nombre de host del servidor de correo. Este es el nombre de host de Internet en el cual Postfix recibirá correos.

Los nombres de host podrían ser como mail.example.com, smtp.example.com.

Está escrito así:

myhostname = mail.example.com

mydomain

Esta opción es el dominio de correo al que le realizaras el servicio, como example.com

La sintaxis es la siguiente:

mydomain = example.com

myorigin

Todos los correos electrónicos enviados desde este servidor de correo se verán como si provinieran de esta opción. Puede establecer este valor modificando la variable $ mydomain.

myorigin = $mydomain

Puede usar cualquier valor de opción, simplemente escribe antes un $ mydominio.

mydestination

Esta opción enumera los dominios que utiliza el servidor de Postfix para los correos electrónicos entrantes.

Puede tomar valores como los que se muestran a continuación:

mydestination = $myhostname, localhost.$mydomain, $mydomain, mail.$mydomain, www.$mydomain

mail_spool_directory

Hay dos modos de entrega que el servidor de correo Postfix puede utilizar:

  • Directamente al buzón de un usuario.
  • En un directorio central de spool, de esta manera, el correo estará en /var/spool/mail con un archivo para cada usuario.

mail_spool_directory = /var/spool/mail

mynetworks

Esta opción te permite configurar qué servidores pueden reenviar a través de tu servidor Postfix.

Esta opción debe tomar direcciones locales, como scripts de correo local en tu servidor solamente.

De lo contrario, los spammers pueden utilizar tu servidor de correo para transmitir sus mensajes y tu servidor de correo electrónico entrará en la lista negra y, como resultado, no podrás recibir muchos correos electrónicos.

Esta opción tiene la siguiente sintaxis:

mynetworks = 127.0.0.0/8, 192.168.1.0/24

smtpd_banner

Esta variable establece el mensaje que se envía al cliente después de una conexión exitosa.

Es mejor cambiar el banner a algo que no de una indicación sobre el servidor que se está utilizando.

inet_protocols

Esta opción especifica la versión del protocolo IP utilizada para las conexiones del servidor.

inet_protocols = ipv4

Si cambias los archivos de configuración del servidor de correo Postfix, debes volver a cargar el servicio:

$ systemctl reload postfix

Cuando escribes cualquier configuración, puede cometer un error, para verificar si hay errores utiliza el siguiente comando:

$ postfix check

Esta herramienta te ayudará a encontrar exactamente la línea y el error para que puedas solucionarlo.

 

Comprobando la cola de correo

A veces, las colas de correo en tu sistema se llenan. Esto puede deberse a muchos motivos, como fallas en la red o cualquier otra razón que pueda retrasar la entrega del correo.

Para verificar la cola de correo en tu servidor de correo de Linux, utiliza el siguiente comando:

$ mailq

Este comando muestra la cola de correo de Postfix.

Si la cola está llena y el mensaje tarda varias horas en enviarse, debe hacer flush a esta.

$ postfix flush

Ahora, si revisas tu cola de correo, debería estar vacío.

 

Probar el servidor de correo Linux

Después de configurar correctamente el servidor de correo Postfix, debes probarlo.

El primer paso es utilizar un agente de usuario de correo local como mailx o mail, el cual es un enlace simbólico a mailx.

Intenta enviar un correo a otra persona en el mismo servidor, si esto funciona, luego intenta enviar un correo a un sitio remoto.

$ echo "This is message body" | mailx -s "This is Subject" -r "likegeeks<[email protected]>" -a /path/to/attachment someone@example.com

Luego intenta recibir un correo de un sitio remoto.

Si tiene algún problema, revisa los registros. El archivo de registro en distribuciones basadas en Red Hat está en /var/log/mail.log  y en distribuciones basadas en Debian en el archivo /var/log/mail.log como se define en la configuración rsyslogd.

Te recomiendo revisar el Servidor Syslog de Linux para conseguir una explicación detallada acerca de los registros y cómo configurar el rsyslogd.

Si todavía tienes problemas, intente verificar tu configuración de DNS y verifique los registros MX utilizando los comandos de red de Linux.

 


Bandejas de correo libres de spam utilizando SpamAssassin

Una de las formas de combatir el spam es escanear los buzones mediante alguna herramienta, buscando ciertos patrones asociados con este.

Una de las mejores soluciones es SpamAssassin, el cual código abierto.

Puedes instalarlo de la siguiente manera:

$ dnf -y install spamassassin

Luego, inicia el servicio y habilítalo para que se ejecute al inicio:

Una vez que lo hayas instalado, puedes verificar su configuración en el archivo  /etc/mail/spamassassin/local.cf.

SpamAssassin determina si un correo electrónico es spam o no basándose en el resultado de los diferentes puntajes de scripts.

Si el mensaje tiene una puntuación más alta, eso significa tiene mayor posibilidad de sea un correo spam.

En el archivo de configuración, el parámetro required_hits 5 indica que SpamAssassin marcará un correo electrónico como correo no deseado si su puntaje es de cinco o más.

La opción report_safe toma los valores 0, 1 o 2. Si se establece en 0 significa que el correo electrónico marcado como spam se envía tal como está, solo modificando los encabezados para mostrar que es spam.

Si toma el valor 1 o 2, SpamAssassin genera un nuevo mensaje de informe y se envía al destinatario.

Si el valor es 1, eso significa que el mensaje de spam se codifica como message/rfc822, mientras que, si el valor es 2, significa que el mensaje se codifica como texto / contenido simple.

El texto / contenido simple es más seguro ya que algunos clientes de correo ejecutan el message /rfc822 y podría infectar la computadora del cliente.

Ahora tenemos que integrarlo en postfix. La forma más sencilla de hacerlo probablemente es utilizando procmail.

Tendremos que crear un archivo, llamado /etc/procmailrc, y agregar el contenido siguiente

Luego editamos el archivo de configuración de Postfix /etc/postfix/main.cf y cambiamos  mailbox_command de la siguiente forma:

mailbox_command = /usr/bin/procmail

Por último, tenemos que reiniciar los servicios Postfix y SpamAssassin:

Sin embargo, SpamAssassin a veces no reconoce los mensajes de spam, lo que puede llevar buzones llenos de mensajes de spam.

Afortunadamente, puedes filtrar los mensajes antes de que ingresen al servidor de Postfix utilizando Realtime Blackhole Lists ( RBLs ). Esto disminuirá la carga en tu servidor de correo y lo mantendrá limpio.

Abre el archivo de configuración del servidor postfix /etc/postfix/main.cf   y cambia la opción smtpd_recipient_restrictions y agrega las siguientes opciones:

Luego reinicia tu servidor de postfix:

$ systemctl restart postfix

Los RBL anteriores son los más comunes, puedes encontrar más listas en la web y probarlas.

 

Asegurar la conexión SMTP

Es mejor transferir tu tráfico SMTP a través de TLS para evitar que se modifique en el medio.

Primero, necesitamos generar el certificado y la clave utilizando el comando openssl:

A continuación, agrega la siguiente opción al archivo de configuración de Postfix /etc/postfix/main.cf:

Finalmente, reinicia tu servicio postfix:

$ systemctl restart postfix

Ahora, debes elegir el TLS en tu cliente cuando te conectas al servidor.

Recibirás una advertencia cuando envíe un correo la primera vez después de cambiar la configuración debido a que el certificado no está firmado.

 


Utilizando certificados Let’s Encrypt

Let’s Encrypt es un proveedor gratuito de certificados SSL que te permite encriptar el tráfico.

En lugar de utilizar certificados autofirmados que molestan a los usuarios, puedes utilizar esta solución.

Primero, instala letsencrypt:

$ yum install letsencrypt

O si está utilizando una distribución basada en Debian, puede usar el siguiente comando:

$ apt-get install letsencrypt

Luego ejecuta letsencrypt así:

$ letsencrypt certonly --standalone -d yourdomain.com

Debes reemplazar yourdomain.com con tu dominio real.

Después de responder las preguntas acerca del correo electrónico de contacto, el dominio del servidor de correo electrónico y la licencia, todo debería estar bien ahora.

Los certificados se almacenarán en /etc/letsencrypt/live/yourdomain.com/

Una última cosa que debes hacer es que postfix use esos certificados a través de los siguientes comandos:

No te olvides de reemplazar yourdomain.com con tu dominio real.

Finalmente, reinicie tu servidor de postfix

$ systemctl restart postfix

Conceptos básicos del protocolo POP3 e IMAP

Hasta ahora hemos visto cómo el servidor de correo SMTP envía y recibe correos electrónicos sin problemas, pero piensa las siguientes situaciones:

  • Los usuarios necesitan copias locales del correo electrónico para verlas sin conexión.
  • Elformato de archivo mbox no es compatible. El formato mbox es utilizado por muchos agentes de usuarios de correo como mailx y mutt.
  • Los usuarios no pueden permanecer conectados a una red rápida para tomar una copia local y leerla sin conexión.
  • Algunos servidores de correo no dan acceso a los directorios de spool de correo compartido por razones de seguridad.

Para manejar estos casos, se introdujo otra clase de protocolos. Este tipo de protocolos se pueden describir como protocolos de acceso de correo.

Los dos protocolos de acceso al correo más comunes son el Protocolo de Post Ofice (POP) y el Protocolo de acceso a mensajes de Internet (IMAP).

La idea detrás de POP es muy simple: un servidor central de correo de Linux permanece en línea todo el tiempo y recibe y almacena correos electrónicos para todos los usuarios. Todos los correos electrónicos recibidos se ponen en cola en el servidor hasta que un usuario los toma.

Cuando un usuario desea enviar un correo electrónico, el cliente de correo electrónico lo retransmite a través del servidor de correo central de Linux a través de SMTP normalmente.

Ten en cuenta que el servidor SMTP y el servidor POP pueden estar en el mismo sistema sin ningún problema. La mayoría de los servidores hacen esto hoy en día.

Las funciones como mantener una copia maestra del correo electrónico de un usuario en el servidor faltaban, eso llevó al desarrollo de IMAP.

Al usar IMAP, tu servidor de correo de Linux admitirá tres modos de acceso:

  • Elmodo en línea es similar a tener acceso directo al sistema de archivos del servidor de correo Linux.
  • Elmodo fuera de línea es similar a cómo funciona POP, donde el cliente está desconectado de la red, excepto cuando toma su correo electrónico. En este modo, el servidor normalmente no conserva una copia del correo electrónico.
  • Elmodo desconectado funciona al permitir a los usuarios conservar copias en caché de sus correos electrónicos y además conservando una copia del correo electrónico en el servidor.

Hay varias implementaciones para IMAP y POP, la más popular es el servidor Dovecot que proporciona ambos protocolos.

POP3, POP3S, IMAP e IMAPS escuchan en los puertos 110995143 y 993, respectivamente.

 


Instalando Dovecot

La mayoría de las distribuciones de Linux vienen con dovecot preinstalado, sin embargo, puedes instalar dovecot en distribuciones basados ​​en Red Hat de la siguiente forma:

$ dnf -y install dovecot

En las distribuciones basadas en Debian, la funcionalidad IMAP y POP3 se proporcionan en dos paquetes separados, puedes instalarlos así:

$ apt-get -y install dovecot-imapd dovecot-pop3d

Se te solicitará que cree certificados autofirmados para usar IMAP y POP3 en SSL/ TLS. Seleccione Sí e ingresa el nombre de host para tu sistema cuando se te solicite.

Luego puedes ejecutar el servicio y habilitarlo en el inicio de esta manera:

 

Configurar Dovecot

El archivo de configuración principal para Dovecot es  /etc/dovecot/dovecot.conf.

Algunas distribuciones de Linux ponen la configuración en el directorio  /etc/dovecot/conf.d/

y utilizan la directiva include para incluir las configuraciones en los archivos.

La siguiente lista son algunos de los parámetros utilizados para configurar dovecot:

protocols: los protocolos que desea admitir.

protocols = imap pop3 lmtp

lmtp significa protocolo de transferencia de correo local.

Listen: direcciones IP para escuchar.

listen = *, ::

El asterisco significa todas las interfaces de ipv4 y : significa todas las interfaces de ipv6

userdb: base de datos de usuarios para autenticar usuarios.

passdb : base de datos de contraseñas para autenticar usuarios.

mail_location: esta entrada en el archivo  /etc/dovecot/conf.d/10-mail.conf festá escrita así:

mail_location = mbox:~/mail:INBOX=/var/mail/%u

Secure Dovecot

Dovecot viene con certificados SSL genéricos y archivos de claves que se utilizan en  /etc/dovecot/conf.d/10-ssl.conf

Cuando un usuario intenta conectarse al servidor dovecot, se mostrará una advertencia porque los certificados no están firmados, puede comprar un certificado de una autoridad certificadora si así lo deseas.

O si vas con los certificados Let’s Encrypt, puede señalarlos en su lugar:

No olvide abrir los puertos del servidor dovecot en tu firewall de iptables agregando reglas de iptables para los puertos 110, 995, 143, 993, 25.

Luego guarda las reglas.

O si estás utilizando firewalld puedes hacer lo siguiente::

Y de nuevo, para la solución de problemas, comprueba los archivos de registro /var /log /messages,/var/log/mailog y /var/log/mail.log

El servidor de correo Linux es uno de los servidores más fáciles de trabajar, especialmente el servidor de correo Postfix.

Espero que encuentres la publicación útil e interesante. Vuelve pronto.

Gracias.

Mokhtar Ebrahim
Estoy trabajando como administrador de sistemas Linux desde 2010. Soy responsable de mantener, proteger y solucionar problemas de servidores Linux para múltiples clientes de todo el mundo. Me encanta escribir guiones de shell y Python para automatizar mi trabajo.

Deja un comentario

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