GNU/Linux >> Tutoriales Linux >  >> Debian

Instale el servidor de correo Postfix y Dovecot en Ubuntu o Debian

Configurar el servidor Postfix Smtp en Ubuntu/Debian

Tiene su propio nombre de dominio y su propio vps/servidor dedicado y desea utilizar el nombre de dominio para los correos electrónicos. Por lo tanto, debe configurar un servidor de correo utilizando un servidor smtp y un servidor imap/pop.

Este tutorial le muestra cómo configurar Postfix (servidor smtp) y Dovecot (servidor imap/pop). La tarea del servidor smtp es aceptar correos entrantes y retransmitir correos salientes de usuarios autorizados en el sistema.

Mientras que Dovecot permite a los usuarios autorizados acceder a su bandeja de entrada y leer cualquier correo que haya.

La configuración simple:no estamos haciendo esto

En el tipo de configuración más simple para Postfix, simplemente especifique su nombre de dominio "xyz.com" en el parámetro de configuración "mydestination", luego podrá recibir correos para [email protected] si hay un usuario (linux) llamado silver en el sistema

Esta técnica es simple pero con grandes inconvenientes. En primer lugar, debe crear una nueva cuenta de usuario de Unix para cada nueva dirección de correo electrónico que necesitemos.

En segundo lugar, los usuarios deben iniciar sesión con sus contraseñas del sistema. Así que esta no es una estrategia muy flexible para configurar cuentas de correo.

Por separado, puede configurar Dovecot para leer los correos entrantes desde el directorio donde los almacena Postfix (/var/mail por defecto). Hay un artículo en DigitalOcean que muestra cómo configurar postfix con dovecot así.

Vamos a configurar las cosas de manera que pueda crear rápidamente direcciones de correo electrónico simplemente escribiéndolas en un archivo junto con la contraseña.

Agregaremos tantos dominios como queramos y crearemos tantos correos electrónicos y todo será encriptado y autenticado.

Since the email accounts we shall be creating are not related to any system users or system domains, they are called "virtual users" and "virtual domains".

Virtual means, that not related to any system specific thing.

¿Cómo funcionará? - La jerga técnica

1. Todos los correos entrantes destinados a su servidor serán recibidos por Postfix (SMTP) y luego entregados a Dovecot (LMTP) para almacenarlos en la Bandeja de entrada.

Esto es mejor porque el servicio lmtp incorporado de dovecot ofrece más funciones como cuotas, permisos, estructuras de directorio flexibles para buzones de correo, etc.

Incoming mail (From somewhere) -> Postfix (SMTP) -> Dovecot (LMTP) -> MailBox/Inbox
And due to this Postfix is reduced to just a "tranmission agent" that just moves mails in and out, and nothing else.

2. Todos los correos salientes serán enviados por Postfix. Pero solo de cuentas autenticadas.

Outgoing mail (Thunderbird) -> Postfix (SMTP) -> Destination (SMTP) like gmail

3. Dovecot proporcionará servicios IMAP/POP para permitir que los clientes de correo lean la Bandeja de entrada.

Thunderbird <==> Dovecot (IMAP) <==> Inbox

4. Dovecot proporcionará exclusivamente un mecanismo de autenticación a Postfix a través de SASL.
Las cuentas de correo electrónico - nombre de usuario + contraseñas se almacenarán en un archivo.

Si desea configurar dominios y cuentas de correo electrónico en una base de datos (en lugar de un archivo), siga este tutorial en linode.com

Configurar registros MX para dominio

Antes de continuar, asegúrese de que los registros MX para sus dominios que va a utilizar con su servidor de correo estén configurados correctamente. La mayoría de los proveedores de servidores como Linode proporcionan una interfaz sencilla para configurar entradas de zona para registros mx.

Si su dominio es example.com, su mx podría ser mail.example.com, por ejemplo. Use el comando de excavación para verificar -

# Find the MX (mail exchange) server
$ dig MX amazon.com +short
5 amazon-smtp.amazon.com.
# Find the ip address of the mx server
$ dig amazon-smtp.amazon.com +short
207.171.184.25

Asegúrese de que la dirección IP de su MX (servidor de correo) sea la de ese servidor en el que va a configurar postfix y dovecot.

Configuración del servidor de correo Postfix en ubuntu paso a paso

Lo primero que debe configurar es Postfix. No olvide que en nuestra configuración, Postfix transmitirá todos los correos salientes, pero para todos los correos entrantes, los entregará a Dovecot para su almacenamiento y posterior acceso por parte de los clientes de correo electrónico.

Cosas que debe saber primero

1. Postfix registra todas sus acciones en un archivo llamado /var/log/mail.log. Compruébelo para obtener información útil y ahorre tiempo en el diagnóstico de problemas.

2. El comando postconf es la herramienta para mirar dentro de las configuraciones de Postfix. Enumera todo en un formato de nombre =valor en línea. Así que usa el comando grep para encontrar lo que necesites.

3. Todos los parámetros de configuración de Postfix se encuentran en el archivo /etc/postfix/main.cf
Los parámetros se explican en las páginas man que se encuentran en - "man 5 postconf"

Instalar y configurar Postfix

Bien, si aún no lo ha hecho, instale Postfix. Está justo ahí en los repositorios, así que no deberías buscar en otro lado a menos que quieras algo más nuevo.

$ sudo aptitude install postfix

No te preocupes, el resto no va a ser tan fácil. Después de instalar Postfix, es posible que desee comprobar la versión. Aquí está el comando para hacer eso.

$ postconf mail_version
mail_version = 2.10.2
$ postconf | grep mail_version
mail_version = 2.10.2

Configurar principal.cf

En esta sección configuraremos varias cosas en el archivo de configuración principal de Postfix ubicado en /etc/postfix/main.cf .

Estos incluyen nombres de host, parámetros para la autenticación SASL, sockets unix para el servicio de autenticación dovecot lmtp y dovecot sasl y una lista de nuestros virtual_mailbox_domains de los cuales Postfix será responsable de recibir los correos entrantes.

Los parámetros complicados !!!

Los siguientes parámetros son los 3 parámetros súper confusos que debe comprender y configurar correctamente para evitar problemas inesperados.

myhostname
mydomain
myorigin

Podría hospedar múltiples dominios en su servidor, digamos abc.com + efg.com + xyz.com. Debe usar uno de ellos como dominio principal y usarlo para "myorigin". El campo myorigin es el que se configura automáticamente mientras postfix instala y te pide el dominio del servidor.

De forma predeterminada, myorigin está configurado para apuntar a /etc/mailname, por lo que puede completar su dominio predeterminado en /etc/mailname o especificarlo directamente en el archivo de configuración.

The domain specified with myorigin is used for mails generated by Postfix. For example when it fails to deliver a mail, it would reply with a from address of "Mail Delivery System<[email protected]>".

Se supone que el parámetro myhostname contiene el "nombre del servidor de correo" como lo indica su registro mx. Este es el nombre que utiliza Postfix en la comunicación smtp para identificarse. Por ejemplo, "HELO minombre de host".

If you set myhostname to a certain domain, then you should be able to setup the SPF records for that domain later. This is dictated by the SPF specifications.

También podría dejar myhostname solo en "localhost" y las cosas seguirían funcionando bien. Sin embargo, en ese caso, su servidor usaría un mensaje como "HELO localhost" al conectarse a otros servidores de correo como Gmail, y Gmail rechazaría con enojo el correo llamándolo no solicitado.

Por lo tanto, se recomienda configurar myhostname con un nombre de dominio adecuado con registros A y TXT (SPF) válidos. También asegúrese de establecer myorigin.

Ejemplo de configuración -

myhostname = mail.yoursite.com
myorigin = yoursite.com

Técnicamente, en un solo servidor, puede usar el mismo valor de myorigin para myhostname. Sin embargo, en diversas configuraciones que involucran múltiples servidores separados, los valores de estos campos deben configurarse con más cuidado.

Para obtener más información, lea la guía de configuración básica de Postfix.

Configure el socket LMTP en main.cf

El parámetro virtual_transport le dice a postfix que reenvíe/transporte los correos a Dovecot para aquellos dominios que se enumeran en "virtual_mailbox_domains".

# Handing off local delivery to Dovecot's LMTP
virtual_transport = lmtp:unix:private/dovecot-lmtp

La ruta "private/dovecot-lmtp" es relativa a "/var/spool/postfix/". El socket Unix real se configurará más adelante en la sección de configuración de Dovecot.

Configurar SASL en main.cf

Aquí establecemos los parámetros para configurar la autenticación basada en SASL para Postfix. Postfix internamente es capaz de comunicarse con el "servicio SASL de Dovecot" a través de un socket Unix.

#Enabling SMTP for authenticated users, and handing off authentication to Dovecot

smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes

smtpd_tls_auth_only = yes

Para verificar qué diferentes complementos smtpd_sasl_type admite su instalación de Postfix, ejecute el siguiente comando.

# postconf -a
cyrus
dovecot

Añadir dominios de buzón en main.cf

Aquí especificamos los dominios para los que Postfix "aceptará" correos entrantes. Así que especifique todos sus dominios internos aquí. Pondremos los dominios en un archivo llamado virtual_mailbox_domains.

#Virtual domains, users, and aliases
virtual_mailbox_domains = /etc/postfix/virtual_mailbox_domains
# virtual_mailbox_maps = /etc/postfix/virtual_mailbox_maps
# nano /etc/postfix/virtual_mailbox_domains

Introduzca los dominios, uno en una línea

example.com OK
mysite.com OK

Luego ejecute postmap en el archivo. Creará un archivo llamado virtual_mailbox_domains.db que será utilizado por Postfix

# postmap /etc/postfix/virtual_mailbox_domains

La tabla virtual_mailbox_maps se puede utilizar para especificar direcciones de correo electrónico válidas para los dominios enumerados en virtual_mailbox_domains.

However this is not necessary, since the SASL authentication via Dovecot would be doing the verification.

Habilitar SMTPS y MSA - master.cf

Además del servicio smtp en el puerto 25, necesitamos habilitar más servicios. SMTPS operará en el puerto 465 y MSA (agente de envío de correo) operará en el puerto 587. SMTP usa el tipo de autenticación SSL/TLS y MSA usa STARTTLS.

Busque la sección sobre "envío" y "smtps" en el archivo llamado /etc/postfix/master.cf y descomente las primeras líneas. SI SOLO LA PRIMERA LINEA

...
submission inet 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_client_restrictions=$mua_client_restrictions
#  -o smtpd_helo_restrictions=$mua_helo_restrictions
#  -o smtpd_sender_restrictions=$mua_sender_restrictions
#  -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING
smtps     inet  n       -       -       -       -       smtpd
#  -o syslog_name=postfix/smtps
#  -o smtpd_tls_wrappermode=yes
#  -o smtpd_sasl_auth_enable=yes
#  -o smtpd_reject_unlisted_recipient=no
#  -o smtpd_client_restrictions=$mua_client_restrictions
#  -o smtpd_helo_restrictions=$mua_helo_restrictions
#  -o smtpd_sender_restrictions=$mua_sender_restrictions
#  -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING
...

La línea "submission" habilita el servicio MSA en el puerto 587 y "smtps" inicia el servicio SMTP habilitado para SSL en el puerto 465.

Es posible que desee habilitar solo el servicio de envío, ya que SMTPS ahora está obsoleto y se mantiene solo por compatibilidad con las aplicaciones de Microsoft que no admiten STARTTLS.

Due to historic specifications, technically port 25, 465, 587 do almost the same thing. However as things are evolving they are being redefined.

Puerto 25:es para MTA (agente de transmisión de correo). El servicio MTA es para permitir que otros MTA y MSA se conecten y entreguen correos.

Puerto 465/587:es para MSA (agente de envío de correo). El servicio MSA es para que los MUA (agentes de usuario de correo como Thunderbird) se conecten y depositen correos electrónicos para su entrega.

Thunderbird (MUA) -> your server smtp(MSA/MTA) -> gmail (MTA) -> Inbox

Reiniciar postfijo

Hemos terminado de configurar Postfix. Ahora simplemente reinicie.

$ sudo service postfix restart

Instalar y configurar Dovecot

Hemos terminado con la instalación y configuración de Postfix. Lo que queda es Dovecot, el servidor IMAP/POP. Pero Dovecot hace mucho más que eso, como veremos ahora.

Cosas que debe saber

1. Dovecot tendrá una ubicación para almacenar los correos entrantes entregados por Postfix.

2. Se debe crear una cuenta de usuario del sistema separada y otorgarla a dovecot para que dovecot pueda leer/escribir el directorio de almacenamiento de correo. En nuestro ejemplo, el usuario se llama "vmail".

3. Dovecot alojará servicios IMAP y POP seguros para permitir que los clientes de correo electrónico lean la bandeja de entrada.

4. Dovecot proporcionará el servicio de autenticación SASL a Postfix a través de un socket Unix. El mismo nombre de usuario/contraseña funcionará tanto con Postfix (servidor SMTP) como con Dovecot (servidor IMAP/POP)

5. Usaremos la dirección de correo electrónico completa ([email protected]) como nombre de usuario y también estableceremos una contraseña cifrada.

Instalar Dovecot

Primero instale dovecot y algunos paquetes necesarios. Instale el paquete principal de dovecot y los paquetes para compatibilidad con imap, pop y lmtp.

# sudo apt-get install dovecot-core dovecot-imapd dovecot-pop3d dovecot-lmtpd

Comprobar versión

# dovecot --version
2.1.7

Configurar palomar

Ahora es el momento de configurar Dovecot para configurar cuentas de usuario y también sockets SASL para permitir que Postfix realice autenticaciones. Todos los archivos de configuración se encuentran dentro de /etc/dovecot/conf.d/ directorio.

Compruebe el /etc/dovecot/dovecot.conf y asegúrese de que el archivo de protocolos esté incluido. Incluye los archivos de configuración para varios protocolos que los habilitan.

# Enable installed protocols
!include_try /usr/share/dovecot/protocols.d/*.protocol

Los protocolos instalados se pueden enumerar así

# ls -l /usr/share/dovecot/protocols.d
total 12
-rw-r--r-- 1 root root 28 Nov 30 15:44 imapd.protocol
-rw-r--r-- 1 root root 28 Nov 30 15:44 lmtpd.protocol
-rw-r--r-- 1 root root 28 Nov 30 15:44 pop3d.protocol
#

Configurar la ubicación de la bandeja de entrada - 10-mail.conf

Le decimos a Dovecot que almacene correos dentro del directorio /var/mail/vhosts y luego los coloque en subdirectorios para cada dominio y el usuario bajo ese dominio.

Mails for [email protected] would be stored in /var/mail/vhosts/example.com/someone/

Edite el archivo 10-mail.conf

#mail_location = mbox:~/mail:INBOX=/var/mail/%u
mail_location = maildir:/var/mail/vhosts/%d/%n

Cree el directorio /var/mail/vhosts

# mkdir /var/mail/vhosts/

Ahora cree dentro de ese directorio, cree un directorio para cada dominio en el que desea recibir correo en este servidor.

# mkdir /var/mail/vhosts/example.com

Crear un usuario para leer los correos

Ahora cree un usuario con nombre y grupo de vmail y uid y gid de 5000. Aunque el uid puede ser cualquier número, estamos eligiendo 5000 para indicar que no es un usuario común. La opción "-r" especifica además que este usuario es un usuario de nivel de sistema y no tiene ningún inicio de sesión.

$ groupadd -g 5000 vmail
$ useradd -r -g vmail -u 5000 vmail -d /var/mail/vhosts -c "virtual mail user"

Otorgue privilegios completos a vmail para leer/escribir en /var/mail/vhosts

$ chown -R vmail:vmail /var/mail/vhosts/

Habilitar servicios IMAPS y POP3S - 10-master.conf

Ahora dígale a Dovecot que inicie los servicios de imaps y pops. Edite el archivo 10-master.conf y habilite los puertos para los servicios y especifique ssl en sí.

Deje los puertos para imap y pop comentados ya que no queremos alojar servicios no seguros.

Para IMAPS:IMAP seguro

service imap-login {
  inet_listener imap {
    #port = 143
  }
  inet_listener imaps {
    port = 993
    ssl = yes
  }

Para POP3S:POP3 seguro

service pop3-login {
  inet_listener pop3 {
    #port = 110
  }
  inet_listener pop3s {
    port = 995
    ssl = yes
  }
}

Configurar socket lmtp - 10-master.conf

La página wiki de dovecot en LMTP muestra un ejemplo simple de cómo configurar el socket lmtp en /etc/dovecot/conf.d/10-master.conf archivo.

Busque la sección denominada "service lmtp" y complete la ruta al archivo donde se crearía el socket de Unix. Postfix utiliza esta misma ruta para la configuración de "transporte_virtual".

service lmtp {
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
    mode = 0600
        user = postfix
        group = postfix

  }
.....

El socket debe tener privilegios de usuario:grupo postfix para que el proceso Postfix pueda usarlo.

Configurar socket de autenticación SASL

Busque la sección "autorización del servicio" y dentro de ella agregue lo siguiente. Si ya está allí, simplemente modifíquelo.

service auth {
.....
  # Postfix smtp-auth
  unix_listener /var/spool/postfix/private/auth {
    mode = 0666
user=postfix
group=postfix
  }
.....

Configurar autenticación

Abra el archivo conf.d/10-auth.conf y elimine el comentario de la línea disabled_plaintext_auth asegurándose de que esté configurado en sí. Esto garantiza que el cifrado TLS/SSL se utilice siempre con fines de autenticación.

disable_plaintext_auth = yes

Busque la configuración denominada auth_mechanism y elimínela. Esta configuración especifica el formato en el que se proporcionaría la contraseña a dovecot.

auth_mechanisms = plain login

Especificar archivos de autenticación

Lo último que hay que configurar en el archivo 10-auth.conf es la base de datos de contraseñas. Por defecto, Dovecot está configurado para autenticarse usando "usuarios del sistema" (usuarios de Linux de /etc/passwd).

Vamos a decirle que se autentique usando un archivo separado que contiene los nombres de usuario y las contraseñas

Busque y comente la línea auth-system.conf.ext y quite el comentario de la línea auth-passwdfile. Debería verse algo como esto

#!include auth-system.conf.ext
#!include auth-sql.conf.ext   
#!include auth-ldap.conf.ext
!include auth-passwdfile.conf.ext
#!include auth-checkpassword.conf.ext
#!include auth-vpopmail.conf.ext
#!include auth-static.conf.ext

A continuación, edite el archivo auth-passwdfile.conf.ext

/etc/dovecot/conf.d# nano auth-passwdfile.conf.ext

Haz que se vea así.

passdb {
  driver = passwd-file
  args = scheme=PLAIN username_format=%u /etc/dovecot/dovecot-users
}

userdb {
  driver = static
#  args = username_format=%u /etc/dovecot/dovecot-users
args = uid=vmail gid=vmail home=/var/mail/vhosts/%d/%n

  # Default fields that can be overridden by passwd-file
  #default_fields = quota_rule=*:storage=1G

  # Override fields from passwd-file
  #override_fields = home=/home/virtual/%u
}

La sección passdb le dice a dovecot dónde buscar el nombre de usuario y las contraseñas para autenticarse. El archivo es /etc/dovecot/dovecot-users.

El formato de nombre de usuario "%u" indica que se usará la dirección de correo electrónico completa como nombre de usuario. Esto significa que al iniciar sesión desde un cliente de correo electrónico, usaría la dirección de correo electrónico como nombre de usuario tanto para smtp como para imap/pop.

El nombre de usuario y las contraseñas se almacenan en un archivo llamado /etc/dovecot/dovecot-users que crearemos en el siguiente paso

La sección userdb le dice a dovecot dónde leer/escribir los correos de un usuario determinado. Estamos utilizando una estructura de directorio fija /var/mail/vhosts/%d/%n

Entonces, los correos para el usuario [email protected] se leerán desde el siguiente directorio -

/var/mail/vhosts/example.com/someone/

Crear buzones o cuentas de usuario

Cree un archivo de texto simple dentro de /etc/dovecot/ y llénelo con el nombre de usuario y las contraseñas en el formato usuario:contraseña. Aquí hay un ejemplo

# cat dovecot-users 
[email protected]:{plain}abc123
[email protected]:{MD5-CRYPT}$1$JdyRMcO6$qUwKZT40EVp/oIpVfAEXF1

Genere contraseñas usando el comando doveadm como este. El hash de contraseña devuelto por el comando anterior debe copiarse tal como está en el archivo dovecot-users.

# doveadm pw -s MD5-CRYPT
Enter new password:
Retype new password:
{MD5-CRYPT}$1$JdyRMcO6$qUwKZT40EVp/oIpVfAEXF1
#

El archivo de contraseña también puede contener información sobre el directorio y los permisos del buzón de correo de un usuario individual. Consulte el artículo wiki sobre el formato de archivo passwd.

Habilitar SSL en dovecot - 10-ssl.conf

Abra el archivo /etc/dovecot/conf.d/10-ssl.conf y descomente la línea ssl y configúrela como requerida

# SSL/TLS support: yes, no, required. <doc/wiki/SSL.txt>
ssl = required

También asegúrese de que ssl_cert y ssl_key apunten a los archivos adecuados (esto es por defecto)

ssl_cert = </etc/dovecot/dovecot.pem
ssl_key = </etc/dovecot/private/dovecot.pem
&#91;/pre&#93;

If you have your own certificates from a certificate authority then use them here.

<h3>Setup dovecot log files</h3>

Dovecot by default logs to /var/log/syslog which is already a giant warehouse of logs and would make it difficult to search in there. A neater way is to make dovecot log to a separate file that is easier to track. The configuration lies in the file /etc/dovecot/conf.d/10-logging.conf

Open the file and edit the log_path variable and set it to /var/log/dovecot.log
Also note that info_log_path and debug_log_path would use the same to log information and debugging messages respectively. If you want to separate them further then set a log file for each.

[pre]
# Log file to use for error messages. "syslog" logs to syslog,
# /dev/stderr logs to stderr.
log_path = /var/log/dovecot.log

# Log file to use for informational messages. Defaults to log_path.
#info_log_path =
# Log file to use for debug messages. Defaults to info_log_path.
#debug_log_path =

Configurar logrotate

Si cambiamos los archivos de registro de Dovecot, entonces es necesario configurar logrotate para garantizar que los archivos de registro se creen en partes en lugar de un archivo grande.

$ nano /etc/logrotate.d/dovecot

Y complete lo siguiente

/var/log/dovecot*.log {
  missingok
  notifempty
  delaycompress
  sharedscripts
  postrotate
    doveadm log reopen
  endscript
}

Para obtener más información, consulte la página wiki de dovecot sobre el registro.

Reiniciar Dovecot

Buen trabajo. Todas las configuraciones hechas. Ahora reinicia dovecot

$ sudo service dovecot restart

Prueba

Ahora que ha terminado de configurar todo, es hora de probar. Utilice un cliente de correo como Thunderbird y configure las conexiones SMTP e IMAP.

Luego intente enviar un correo a otra cuenta como Gmail. Si recibe el correo en gmail, intente responder. Si el correo aparece en su cliente de correo, ya está. ¡Felicitaciones!

Comprobando puertos abiertos con netstat

Use el comando netstat para verificar que los servicios estén funcionando

# netstat -ltnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:993             0.0.0.0:*               LISTEN      28791/dovecot
tcp        0      0 0.0.0.0:995             0.0.0.0:*               LISTEN      28791/dovecot
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      3315/mysqld
tcp        0      0 0.0.0.0:587             0.0.0.0:*               LISTEN      16218/master
tcp        0      0 0.0.0.0:110             0.0.0.0:*               LISTEN      28791/dovecot
tcp        0      0 0.0.0.0:143             0.0.0.0:*               LISTEN      28791/dovecot
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      3337/nginx
tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      16218/master
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      3252/sshd
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      16218/master

En el resultado anterior podemos ver que dovecot tiene los puertos 993, 995, 110 y 143
Mientras que Postfix (maestro) tiene los puertos 587, 465 y 25

Resolución de problemas

1. mail.log vacío

En servidores Ubuntu, el archivo /var/log/mail.log puede estar totalmente en blanco. Esto sucede debido a problemas de permisos y se puede solucionar con los siguientes comandos

# ls -l /var/log/mail.log
-rw-r----- 1 messagebus adm 0 Apr 26  2013 /var/log/mail.log

El propietario correcto del archivo debe ser syslog. Establezca el permiso de propiedad correcto con los siguientes comandos -

$ sudo chown syslog.adm /var/log/mail.log
$ sudo chmod 640 /var/log/mail.log

Ahora el archivo mail.log debería llenarse con los mensajes correctos para rastrear lo que está pasando con el servidor Postfix.

2. Acceso de retransmisión denegado

Al enviar correos, si el registro de postfix (/var/log/mail.log) muestra un mensaje de error de este tipo -

Dec  1 09:57:12 li240-5 postfix/smtpd[25795]: NOQUEUE: reject: RCPT from unknown[122.163.8.12]: 454 4.7.1 <...>: Relay access denied; from=<...> to=<...> proto=ESMTP helo=<&#91;192.168.1.2&#93;>

Asegúrese de que el campo smtpd_relay_restrictions (/etc/postfix/main.cf) tenga "permit_sasl_authenticated" en la lista para que los usuarios autenticados a través de SASL puedan enviar correos usando postfix como un servidor smtp.

smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination

3. Error al recibir correo

Si los registros de palomar muestran un mensaje de error de este tipo al recibir correos -

Dec 02 18:32:12 lmtp(4412): Fatal: Error reading configuration: Invalid settings: postmaster_address setting not given

Simplemente edite /etc/dovecot/conf.d/15-lda.conf y agregue un valor para postmaster_address

# Address to use when sending rejection mails.
# Default is [email protected]<your domain>. %d expands to recipient domain.
postmaster_address = [email protected]

Cree registros DNS SPF para permitir la validación y evitar el spam

Intente enviar un correo electrónico a alguna dirección de Gmail a través de un cliente de correo como Thunderbird y a través del servidor smtp de Postfix, y el correo llegará a la carpeta de correo no deseado de Gmail o podría ser rechazado por completo.

Para resolver esto, se deben configurar los registros SPF para el dominio del remitente. Si el servidor postfix envía correos electrónicos con "desde la dirección" de [email protected], entonces los registros TXT DNS de ejemplo.com deben contener la información de validación SPF para indicar que esto el servidor está autorizado para enviar correos electrónicos en nombre de ejemplo.com

Todo lo que necesita hacer es editar las entradas de zona de su servidor de nombres y agregar un registro TXT que contenga lo siguiente

"v=spf1 mx a -all"

La mayoría de los proveedores de vps como Linode proporcionan una interfaz ordenada para editar configuraciones de DNS como esas. Visite el sitio web del proyecto OpenSPF para obtener más información.

Verifique los registros SPF de su dominio con este simple comando -

$ dig -t TXT example.com

Notas

El ejemplo anterior utiliza un archivo para almacenar cuentas de correo electrónico y contraseñas. Esto lo hace conveniente cuando necesita pocas cuentas de correo electrónico en su servidor personal y no las modificará con demasiada frecuencia.

Sin embargo, a gran escala, cuando se proporcionan correos electrónicos a una gran cantidad de usuarios y se crean/eliminan cuentas con frecuencia, la forma recomendada es almacenar virtual_mailbox_domains y virtual_mailbox_maps en una base de datos y luego usar algún cliente de base de datos para modificar registros de forma rápida y sencilla.

Tanto Postfix como Dovecot son compatibles con Mysql/MariaDB.

Consulte los recursos en la parte inferior para ver enlaces a artículos útiles sobre cómo configurar Postfix y Dovecot de otras maneras usando una base de datos.

Qué sigue

1. Puede instalar un cliente de correo basado en web como Roundcube para poder iniciar sesión en su servidor desde el navegador y leer/enviar correos.

2. Algunos usuarios (como yo, por supuesto) prefieren usar Gmail de Google como cliente de correo agregando información de cuenta smtp y pop. Google le permitiría enviar correos rápidamente utilizando esta nueva configuración de servidor smtp anterior.

Pero Gmail no leerá los correos electrónicos del servidor IMAP/POP creado anteriormente, hasta que usemos un certificado real de una autoridad certificadora (CA) en Dovecot.

Los certificados SSL de las CA cuestan dinero, pero puede obtener un certificado gratuito de StartCom StartSSL PKI y usarlo con Dovecot y luego Gmail le permitirá leer los correos electrónicos de este servidor.

3. Además, también debe configurar DKIM (Domainkeys Identified Mail) para su dominio, para hacer cumplir la autenticidad de los correos y ser tratado como legítimo por los principales servicios de correo como gmail.

Recursos

Aquí hay algunos recursos más útiles sobre cómo instalar y configurar Postfix y Dovecot de varias maneras para obtener el tipo exacto de servidor de correo que desea.

Tutorial de Linode sobre cómo configurar Postfix y Dovecot con Mysql
https://www.linode.com/docs/email/postfix/email-with-postfix-dovecot-and-mysql

Documentación de los parámetros de configuración de Postfix para usar en main.cf
http://www.postfix.org/postconf.5.html

Explicación de los diferentes tipos de dominios que admite y usa Postfix
https://workaround.org/ispmail/squeeze/postfix-domain-types

Detalles de cómo Postfix maneja diferentes tipos de dominios virtuales
http://www.postfix.org/VIRTUAL_README.html

Documentación completa de Postfix
http://www.postfix.org/documentation.html


Debian
  1. Instale y proteja el servidor Redis en Debian 10

  2. Instalar Node.js en Ubuntu y Debian

  3. Cómo instalar y configurar Postfix en Ubuntu 20.04

  4. Cómo instalar Spamassassin con Postfix y Dovecot en Ubuntu/Debian Server

  5. Configurar el reenvío de correo en postfix en Ubuntu o Debian

Instalar y configurar OpenLDAP en Ubuntu 16.04 / Debian 8

Cómo instalar y configurar Postfix en Debian

Cómo instalar el servidor de correo Postfix en Ubuntu 20.04

Instalar y configurar Virtualmin en el servidor Ubuntu 20.04 / Debian 10

Configuración del servidor de correo Postfix en Ubuntu 14.04

Configuración del servidor de correo Postfix en Ubuntu 20.04