GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Cómo instalar y configurar Postfix en Ubuntu 18.04

Postfix es un servidor de correo electrónico gratuito desarrollado originalmente como una alternativa, más simple y más segura para enviar correo. Este tutorial le mostrará cómo configurar un servidor de correo postfix en su servidor Ubuntu 18.04. Postfix te permite administrar usuarios virtuales y para eso, creamos un grupo virtual. Administraremos fácilmente nuestro servidor de correo usando postfixadmin para los usuarios virtuales y dovecot para los correos electrónicos entrantes.

Lo que necesitas entender

Para recibir correo, un requisito previo es tener una IP fija, un servidor DNS que se ejecute en su propio servidor o en un proveedor de alojamiento en el que pueda modificar las grabaciones. Definamos algunas siglas que se utilizarán en esta configuración:

  • Postfijo es el Agente de Transferencia de Correo (MTA ) utilizado para enviar y recibir correos electrónicos
  • Palomar es el Agente de Entrega Local (LDA ) que utilizan el servidor Protocolo de aplicación de mensajería de Internet (IMAP) y Protocolo de oficina postal (POP3).
  • SASL definido por Simple Authentication y Secure Layer, agrega una autenticación entre el usuario y el servidor para asegurar los intercambios.
  • Administrador de Postfix la interfaz web que le permite administrar buzones, dominios virtuales y alias
  • LEMP: el servidor web con Nginx y PHP para acceder a postfixadmin y administrar fácilmente los usuarios y dominios virtuales, MySQL para almacenar toda la información.

Hay dos tipos de dominios en Postfix:

  • Dominios locales se utiliza para enviar correos electrónicos a los usuarios del sistema que se enumeran en /etc/passwd archivo.
  • Dominios virtuales que no necesitan una cuenta del sistema presente en /etc/passwd expediente. Proporciona una manera de manejar miles de cuentas de correo muy fácilmente en el sistema del servidor de correo usando MySQL, PostgreSQL o LDAP para la administración de cuentas de usuario.

Paso 1) Instalar y configurar Postfixadmin

Postfixadmin es un módulo web que le permite manipular fácilmente dominios virtuales y usuarios en una base de datos.

a) Descargar postfixadmin

Primero, instalaremos los paquetes necesarios

# apt install php-imap php-mbstring php7.2-imap php7.2-mbstring
Reading package lists... Done
Building dependency tree 
Reading state information... Done
...
...

Normalmente, postfixadmin está presente en los repositorios predeterminados de Ubuntu 18.04, pero intentará instalar Apache y PostgreSQL en lugar de Nginx y MySql. Entonces, para mantener nuestra configuración, descargaremos la última versión actual 3.2 desde la fuente en el proyecto del sitio de Github y guárdelo en /opt carpeta

# wget -P /opt https://github.com/postfixadmin/postfixadmin/archive/postfixadmin-3.2.tar.gz
--2018-06-11 21:53:14--  https://github.com/postfixadmin/postfixadmin/archive/postfixadmin-3.2.tar.gz
Resolving github.com (github.com)... 192.30.255.113, 192.30.255.112
Connecting to github.com (github.com)|192.30.255.113|:443... connected.
HTTP request sent, awaiting response... 302 Found

Ahora ve a esa carpeta y descomprímela.

# cd /opt && tar xvf postfixadmin-3.2.tar.gz

Ahora deberíamos cambiarle el nombre

# mv postfixadmin-postfixadmin-3.2/ postfixadmin

Postfixadmin usa un script llamado setup.php que utilizaremos a través del servidor web durante la instalación. En la versión anterior de postfix (3.1 y más antigua), este script está directamente en la carpeta raíz de Postfixadmin pero en la versión actual (3.2), está contenido en el subdirectorio public de la carpeta postfixadmin. Normalmente, deberíamos mover postfixadmin a la carpeta raíz de nuestro servidor web Nginx, pero con esta nueva versión, solo crearemos un enlace simbólico de la carpeta pública que contiene el script y luego, cámbiele el nombre por seguridad

# ln -s /opt/postfixadmin/public/ /var/www/html/pfa
root@li1002-235:~# ls -l /var/www/html/
total 4
-rw-r--r-- 1 root root 612 Jun 10 04:51 index.nginx-debian.html
lrwxrwxrwx 1 root root  25 Jun 12 04:01 pfa -> /opt/postfixadmin/public/

b) Crear la base de datos de sufijos

Ahora debemos conectarnos a la base de datos mysql para algunas configuraciones

# mysql -u root -p
Enter password:

Luego crea la base de datos y el usuario

mysql> CREATE DATABASE postfix;
Query OK, 1 row affected (0.00 sec)

mysql> CREATE USER 'postfix'@'localhost' IDENTIFIED BY 'postfix-db-password';
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON `postfix` . * TO 'postfix'@'localhost';
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql> exit
Bye

c) Configurar postfixadmin

Ahora que tenemos configurada la base de datos, debemos indicárselo a postfixadmin para que sepa de dónde sacar la información. Para hacer esto, cree el /opt/postfixadmin/config.local.php archivo y agregue el contenido a continuación

# vim /opt/postfixadmin/config.local.php

<?php
$CONF['database_type'] = 'mysqli';
$CONF['database_user'] = 'postfix';
$CONF['database_password'] = 'postfix-db-password';
$CONF['database_name'] = 'postfix';

$CONF['configured'] = true;
?>

postfixadmin requiere permiso para una subcarpeta llamada templates_c eso no existe Entonces, para evitar algunos errores durante la instalación, como los siguientes,

Deberíamos necesitar crearlo manualmente y darle www-data propiedad usando el comando chown.

# mkdir /opt/postfixadmin/templates_c && chmod 755 -R /opt/postfixadmin/templates_c
# chown -R www-data:www-data /opt/postfixadmin/templates_c

Luego inténtalo de nuevo, verás que funciona ahora y revisa toda la configuración, muestra la versión de tu php y Ubuntu

Ahora debemos crear una contraseña para la configuración y generar su hash

Ahora te permitirá crear la cuenta de superadministrador y usarás la contraseña de configuración que has creado. Pero para esto, necesitas editar el /opt/postfixadmin/config.local.php para agregar el valor del hash de contraseña generado. Luego proceda a la creación de la cuenta de superadministrador

Ahora verá que la cuenta ha sido agregada.

Ahora, como puede ver, puede iniciar sesión en postfixadmin con la cuenta usando el enlace http://su-ip-o-dominio/pfa

Si esta página no puede aparecer, verifique el archivo de registro de errores de nginx

# tail -n 20 -f /var/log/nginx/error.log

Y asegúrese de tener los permisos correctos en /opt/postfixadmin/templates_c carpeta. Puede ver la descripción de cada menú cuando inicie sesión.

d) Crear dominios virtuales, usuarios y alias

Ahora crearemos los dominios virtuales, luego los usuarios. Un dominio es un nombre de dominio como mytuto.com . Puede tener correos electrónicos en su dominio usando el mismo servidor. Cuando empiezas no tienes ningún dominio. Para agregar un dominio, vaya a Lista de dominios -> Nuevo dominio .

Luego ingrese la información sobre el dominio. Puede limitar el número de alias y buzones. Recuerda agregar el registro MX. Cuando termine de elegir sus valores, agregue el dominio.

Ahora que nuestro dominio virtual está creado, puede ver en la lista de Dominios

Ahora podemos crear nuestros usuarios virtuales. Para hacer esto, vaya a Lista virtual -> Agregar buzón .

También podemos crear alias. Estas son direcciones de correo electrónico que redirigirán los correos a otra cuenta. Normalmente cualquier servidor de correo debe tener una dirección de correo electrónico abuso , para que podamos por ejemplo reportar un spam desde un dominio. Así que simplemente cree un abuso de alias de su dominio a su usuario que acaba de crear anteriormente. Para hacer esto, vaya a Lista virtual -> Agregar alias .

Puede crear todos esos parámetros virtuales al final, pero nos ayudará en el siguiente paso para la configuración de postfix.

Paso 2) Instalar y configurar postfix

a) Instalar sufijo

Ahora podemos instalar los paquetes postfix.

# apt install postfix postfix-mysql sasl2-bin
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  db-util db5.3-util libmysqlclient20 ssl-cert
Suggested packages:
  procmail postfix-pgsql postfix-ldap postfix-pcre postfix-lmdb
...
...

Deberá responder dos preguntas sobre el tipo de correo y el nombre de su servidor de correo. Asegúrese de reemplazar el nombre de host y dominio valores con los tuyos

  • el tipo de configuración de correo:Sitio de Internet
  • el nombre de correo del sistema:hostname.domain.com

Asegúrese de que sasl se ejecute al inicio editando su archivo de configuración

# vim /etc/default/saslauthd

# Should saslauthd run automatically on startup? (default: no)
START=yes

Ahora reinicie el servicio

# systemctl restart saslauthd

Como estamos configurando un servidor de correo con usuarios virtuales, necesitamos un propietario de todos los buzones de correo, por lo que crearemos un usuario del sistema que será utilizado por todos los usuarios virtuales para acceder al correo electrónico en el servidor. Primero, cree el propietario del grupo y la carpeta que almacenará los buzones.

# groupadd -g 5000 vmail && mkdir -p /var/mail/vmail

Ahora crea el propietario

# useradd -u 5000 vmail -g vmail -s /usr/sbin/nologin -d /var/mail/vmail

Asegúrese de otorgar el permiso del directorio de correo al propietario para que pueda almacenar los correos en los directorios apropiados.

# chown -R vmail:vmail /var/mail/vmail

Si no hace esto, Dovecot no podrá crear las carpetas requeridas para almacenar los correos electrónicos.

b) Crear los archivos de configuración para la base de datos

Ahora crea una carpeta que contendrá algunos archivos de base de datos

# mkdir -p /etc/postfix/sql

Postfix necesita 03 archivos de base de datos que le permitirán acceder a la base de datos que creamos anteriormente:

  • Dominios para contener la lista de nombres de dominio alojados en el servidor. permitirá a postfix determinar si nuestro servidor está a cargo de un dominio (mytuto.com) cuando recibe un correo electrónico ([email protected]) en eso. Si es el caso, significará que el dominio está en nuestra base de datos.
# vim /etc/postfix/sql/mysql_virtual_domains_maps.cf
user = postfix
password = postfix-db-password
hosts = 127.0.0.1
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' AND active = '1'

Habilitaremos la configuración y la agregaremos automáticamente al /etc/postfix/main.cf y vuelva a cargar la configuración de postfix para evitar tener que hacerlo manualmente. Entonces, el archivo se actualizará cada vez que use este comando con nuevos valores.

# postconf -e virtual_mailbox_domains=mysql:/etc/postfix/sql/mysql_virtual_domains_maps.cf

Ahora podemos comprobar la configuración. Ejecutaremos un comando que ejecutará la consulta contenida en el archivo para buscar un dominio en nuestra base de datos. Se debe devolver un elemento (el dominio buscado) o nada si el dominio no está presente.

# postmap -q mytuto.com mysql:/etc/postfix/sql/mysql_virtual_domains_maps.cf
mytuto.com

Como puede ver, postfix puede recuperar los dominios almacenados en nuestra base de datos

  • Buzón para almacenar todas las direcciones de correo electrónico virtuales. Se utilizará para verificar también si los buzones existen
# vim /etc/postfix/sql/mysql_virtual_mailbox_maps.cf
user = postfix
password = postfix-db-password
hosts = 127.0.0.1
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1'

Ahora actualicemos el archivo de configuración

# postconf -e virtual_mailbox_maps=mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf

Ejecute el comando para probar la consulta en la base de datos

# postmap -q [email protected] mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf
mytuto.com/alain/
  • Alias para contener los diferentes alias de correo electrónico.
# vim /etc/postfix/sql/mysql_virtual_alias_maps.cf
user = postfix
password = postfix-db-password
hosts = 127.0.0.1
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = '1'

Ahora agregue la configuración

# postconf -e virtual_alias_maps=mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf

Ahora ejecute el comando para probar la consulta. Es el usuario de destino ([email protected]) que debe mostrarse y no la dirección de abuso. Muestra que postfix puede hacer la coincidencia.

# postmap -q [email protected] mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf
[email protected]

Asegúrese de que los usuarios normales no puedan leer esos archivos porque las contraseñas se almacenan en claro.

# ls -l /etc/postfix/sql/
total 12
-rw-r--r-- 1 root root 138 Jun 13 06:53 mysql_virtual_alias_maps.cf
-rw-r--r-- 1 root root 140 Jun 13 05:18 mysql_virtual_domains_maps.cf
-rw-r--r-- 1 root root 144 Jun 13 07:04 mysql_virtual_mailbox_maps.cf

Para que postfix lea esos archivos, podemos cambiar el propietario del grupo a postfix

# chgrp postfix /etc/postfix/sql/mysql_*.cf
# ls -l /etc/postfix/sql/
total 12
-rw-r--r-- 1 root postfix 138 Jun 13 06:53 mysql_virtual_alias_maps.cf
-rw-r--r-- 1 root postfix 140 Jun 13 05:18 mysql_virtual_domains_maps.cf
-rw-r--r-- 1 root postfix 144 Jun 13 07:04 mysql_virtual_mailbox_maps.cf

c) Configurar sufijo

Ahora editaremos manualmente el archivo de configuración principal de Postfix. Entonces, haga una copia antes de editar

# cp /etc/postfix/main.cf /etc/postfix/main.cf.bak

Ahora activaremos SASL para forzar la autenticación para enviar correos electrónicos y pasar la autenticación a Dovecot. Asegúrese de agregar líneas a continuación

# vim /etc/postfix/main.cf

# Allow authenticated users to send email, and use Dovecot to authenticate them. Tells Postfix to use Dovecot for authentication
smtpd_sasl_type = dovecot
## Path to the Postfix auth socket
smtpd_sasl_path = private/auth
## Tells Postfix to let people send email if they've authenticated to the server.
## Otherwise they can only send if they're logged in (SSH)
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
# Enable authentication only for those with a TLS connection.
smtpd_tls_security_level = may
smtpd_tls_auth_only = no
# Tells Postfix who can send email: SASL-authenticated users connecting from a network specified in 'mynetworks'
smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated reject_unauth_destination

Ahora editemos el /etc/postfix/master.cf archivo de configuración. Es el archivo de configuración del proceso. Habilitaremos puertos SMTP seguros agregando o descomentando las líneas a continuación y haciendo una copia antes

# cp /etc/postfix/master.cf /etc/postfix/master.cf.bak
# vim /etc/postfix/master.cf
submission inet n       -       y       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
#  -o smtpd_tls_auth_only=yes
#  -o smtpd_reject_unlisted_recipient=no
#  -o smtpd_client_restrictions=$mua_client_restrictions
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#  -o smtpd_helo_restrictions=$mua_helo_restrictions
#  -o smtpd_sender_restrictions=$mua_sender_restrictions
#  -o smtpd_recipient_restrictions=
#  -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING
smtps     inet  n       -       y       -       -       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=
#  -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING

Ahora puede ejecutar postconf -n comando para comprobar algunos errores

# postconf -n
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
...
...

Si no tiene mensajes de advertencia, significa que sus archivos no contienen errores. Ahora puede reiniciar el servicio postfix

# systemctl restart postfix
# systemctl status postfix
● postfix.service - Postfix Mail Transport Agent
   Loaded: loaded (/lib/systemd/system/postfix.service; enabled; vendor preset: enabled)
   Active: active (exited) since Wed 2018-06-13 10:16:02 UTC; 27s ago
  Process: 12225 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
 Main PID: 12225 (code=exited, status=0/SUCCESS)

Paso 3) Instalar y configurar Dovecot

Ahora que Postfix está instalado y configurado, necesitamos instalar Postfix para administrar los protocolos pop e imap, que nos permiten recuperar nuestros correos electrónicos.

a) Instalación de Palomar

Los paquetes de Dovecot están presentes en los repositorios predeterminados de Ubuntu 18.04. Lo instalaremos con el soporte mysql. Instalaremos tamiz lo cual es útil porque colocará automáticamente los correos en las carpetas correspondientes. Significa que, para cada dominio, creará una carpeta correspondiente que contenga la carpeta correspondiente de un usuario virtual para almacenar sus archivos de correo electrónico.

# apt install dovecot-imapd dovecot-mysql dovecot-managesieved
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  dovecot-core dovecot-sieve libexttextcat-2.0-0 libexttextcat-data
Suggested packages:
...
...

Comprende eso, si no quieres usar tamiz , para cada dominio, probablemente necesitará crear manualmente las carpetas correspondientes para almacenar sus correos electrónicos y esto no es fácil si tiene muchos dominios.

b) Configuración de palomar

La configuración de Dovecot está contenida en múltiples archivos en /etc/dovecot/conf.d . Primero, verifique el contenido de /etc/dovecot/dovecot.conf tener estas líneas sin comentar

!include_try /usr/share/dovecot/protocols.d/*.protocol
!include conf.d/*.conf

Ahora ve a la carpeta que contiene los archivos de configuración

# cd /etc/dovecot/conf.d

Editaremos:

  • el 10-auth.conf archivo para modificar los mecanismos de conexión agregando o descomentando las líneas. Dovecot usa los usuarios del sistema por defecto, pero nosotros usamos usuarios de Mysql
# cp 10-auth.conf 10-auth.conf.bak
# vim 10-auth.conf

auth_mechanisms = plain login
#!include auth-system.conf.ext
!include auth-sql.conf.ext
  • el auth-sql.conf.ext archivo para la configuración sql
# cp auth-sql.conf.ext auth-sql.conf.ext.bak
# vim auth-sql.conf.ext

passdb {
  driver = sql
  args = /etc/dovecot/dovecot-sql.conf.ext
}

userdb {
  driver = static
  args = uid=vmail gid=vmail home=/var/mail/vmail/%d/%n
}
  • ahora editemos el /etc/dovecot/dovecot-sql.conf.ext para decirle a Dovecot cómo conectarse a la base de datos SQL
# cp /etc/dovecot/dovecot-sql.conf.ext /etc/dovecot/dovecot-sql.conf.ext.bak
# vim /etc/dovecot/dovecot-sql.conf.ext

driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=postfix-db-password
password_query = SELECT username,domain,password FROM mailbox WHERE username='%u';
default_pass_scheme = MD5-CRYPT
  • Ahora editaremos el 10-mail.conf archivo para configurar el directorio de ubicación de correo
# cp 10-mail.conf 10-mail.conf.bak
# vim 10-mail.conf
mail_location = maildir:/var/mail/vmail/%d/%n/Maildir
mail_privileged_group = mail
  • Ahora editaremos el 10-master.conf archivo para la conexión al socket.
# cp 10-master.conf 10-master.conf.bak
# vim 10-master.conf

service auth {
  unix_listener auth-userdb {
    mode = 0600
    user = vmail
  }

  unix_listener /var/spool/postfix/private/auth {
    mode = 0660
    user = postfix
    group = postfix
  }

  user = dovecot
}
  • Ahora necesitamos configurar el LDA 15-lda.conf archivo para indicar tamiz para organizar automáticamente el correo en la carpeta correspondiente
# cp 15-lda.conf 15-lda.conf.bak
# vim 15-lda.conf

protocol lda {
  # Space separated list of plugins to load (default is global mail_plugins).
  mail_plugins = $mail_plugins sieve
}

Deberíamos dar permiso si queremos que el usuario de vmail pueda iniciar dovecot

# chgrp vmail /etc/dovecot/dovecot.conf

Ahora puede reiniciar el servicio Dovecot

# systemctl restart dovecot

Puede consultar el registro de correo para ver si hay algún error

# tail -n 20 -f /var/log/mail.log

c) Integrar palomar a posfijo

Ahora que hemos configurado dovecot, debemos indicar postfix para trabajar con dovecot. Edite el archivo de configuración de posfijo maestro y agregue las siguientes líneas al final del archivo

# vim /etc/postfix/master.cf

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

Ahora edite el archivo de configuración de postfix principal

 # vim /etc/postfix/main.cf
virtual_transport = dovecot
dovecot_destination_recipient_limit = 1

Luego reinicie postfix

# systemctl restart postfix

Puede consultar el registro de correo para ver si hay algún error

# tail -n 20 -f /var/log/mail.log
Jun 14 08:10:00 myserver postfix/postfix-script[28361]: starting the Postfix mail system
Jun 14 08:10:00 myserver postfix/master[28363]: daemon started -- version 3.3.0, configuration /etc/postfix

Se puede ver que toda la configuración es buena. ahora tenemos que hacer una prueba

Paso 4) Prueba del servidor de correo

Para las pruebas en la línea de comandos, necesitamos instalar el paquete mailutils antes de enviar el correo electrónico

# apt install mailutils
Reading package lists... Done
Building dependency tree 
Reading state information... Done
The following additional packages will be installed:
 guile-2.0-libs libgc1c2 libgsasl7 libkyotocabinet16v5 libltdl7 libmailutils5 libntlm0 libpython2.7 libpython2.7-minimal libpython2.7-stdlib
 mailutils-common
...
...

Ahora debemos enviar un correo electrónico y verificar si las carpetas correspondientes a los dominios y usuarios se crearon efectivamente. Para eso, primero enviaremos un correo a nuestro usuario actual creado en postfixadmin durante su configuración

# echo "Hello Alain" | mail -s "test mail" [email protected]

Primero, revisemos el registro de correo

 # tail -n 20 -f /var/log/mail.log

Jun 14 08:17:04 myserver postfix/qmgr[28374]: 1715240BF9: from=<[email protected]>, size=384, nrcpt=1 (queue active)
Jun 14 08:17:04 myserver dovecot: lda([email protected]): msgid=<[email protected]>: saved mail to INBOX
Jun 14 08:17:04 myserver postfix/pipe[28406]: 1715240BF9: to=<[email protected]>, relay=dovecot, delay=0.05, delays=0.02/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service)
Jun 14 08:17:04 myserver postfix/qmgr[28374]: 1715240BF9: removed

Podemos ver que el correo ha sido enviado con éxito. Ahora vamos a comprobar si se han creado las carpetas correspondientes

# ls -R /var/mail/vmail/
/var/mail/vmail/:
mytuto.com

/var/mail/vmail/mytuto.com:
alain

/var/mail/vmail/mytuto.com/alain:
Maildir

/var/mail/vmail/mytuto.com/alain/Maildir:
cur  dovecot.index.cache  dovecot.index.log  dovecot-uidlist  dovecot-uidvalidity  dovecot-uidvalidity.5b222480  new  tmp

/var/mail/vmail/mytuto.com/alain/Maildir/cur:

/var/mail/vmail/mytuto.com/alain/Maildir/new:
'1528964224.M129536P28407.myserver,S=455,W=467'

/var/mail/vmail/mytuto.com/alain/Maildir/tmp:

Puede ver que las carpetas se presentan automáticamente. Para una mejor vista, intentemos con el árbol de comandos. Primero instálalo

 apt install tree

Ahora veamos las carpetas de correo con una mejor vista

# tree /var/mail/vmail/
/var/mail/vmail/
└── mytuto.com
    └── alain
        └── Maildir
            ├── cur
            ├── dovecot.index.cache
            ├── dovecot.index.log
            ├── dovecot-uidlist
            ├── dovecot-uidvalidity
            ├── dovecot-uidvalidity.5b222480
            ├── new
            │   └── 1528964224.M129536P28407.myserver,S=455,W=467
            └── tmp

6 directories, 6 files

Ahora puedes ver perfectamente. Podemos hacer otra prueba creando un nuevo dominio virtual y usuario en postfixadmin. Vamos a crear el dominio virtual example.com

y el usuario virtual [email protected]

Ahora enviemos un correo al nuevo usuario virtual

# echo "Hello Francois" | mail -s "test config" [email protected]

Ahora revisa el registro de correo

# tail -n 20 -f /var/log/mail.log

Jun 14 08:35:10 myserver postfix/qmgr[28374]: CE43F40C5E: from=<[email protected]>, size=393, nrcpt=1 (queue active)
Jun 14 08:35:10 myserver dovecot: lda([email protected]): msgid=<[email protected]>: saved mail to INBOX
Jun 14 08:35:10 myserver postfix/pipe[28481]: CE43F40C5E: to=<[email protected]>, relay=dovecot, delay=0.06, delays=0.02/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service)
Jun 14 08:35:10 myserver postfix/qmgr[28374]: CE43F40C5E: removed

Ahora verifique el árbol de carpetas

# tree /var/mail/vmail/
/var/mail/vmail/
├── example.com
│   └── francois
│       └── Maildir
│           ├── cur
│           ├── dovecot.index.cache
│           ├── dovecot.index.log
│           ├── dovecot-uidlist
│           ├── dovecot-uidvalidity
│           ├── dovecot-uidvalidity.5b2228be
│           ├── new
│           │   └── 1528965310.M888145P28482.myserver,S=468,W=480
│           └── tmp
└── mytuto.com
    └── alain
        └── Maildir
            ├── cur
            ├── dovecot.index.cache
            ├── dovecot.index.log
            ├── dovecot-uidlist
            ├── dovecot-uidvalidity
            ├── dovecot-uidvalidity.5b222480
            ├── new
            │   └── 1528964224.M129536P28407.myserver,S=455,W=467
            └── tmp

Puede ver que tenemos dos subdirectorios con los dominios mytuto.com y ejemplo.com cual es el archivo para cada usuario virtual de los diferentes dominios. Ahora hagamos la última prueba, los usuarios virtuales intercambiarán correos electrónicos

# echo "Hello Francois, it's Alain" | mail -s "Subject" -aFrom:alain\<[email protected]\> [email protected]

Verifique el registro de correo

# tail -n 20 -f /var/log/mail.log

Jun 14 23:15:01 myserver postfix/pickup[28373]: 8558240BDA: uid=0 from=<[email protected]>
Jun 14 23:15:01 myserver postfix/cleanup[28595]: 8558240BDA: message-id=<[email protected]>
Jun 14 23:15:01 myserver postfix/qmgr[28374]: 8558240BDA: from=<[email protected]>, size=398, nrcpt=1 (queue active)
Jun 14 23:15:01 myserver dovecot: lda([email protected]): msgid=<[email protected]>: saved mail to INBOX
Jun 14 23:15:01 myserver postfix/pipe[28597]: 8558240BDA: to=<[email protected]>, relay=dovecot, delay=0.05, delays=0.02/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service)
Jun 14 23:15:01 myserver postfix/qmgr[28374]: 8558240BDA: removed

Ahora podemos ver la carpeta de correo

# tree /var/mail/vmail/
/var/mail/vmail/
├── example.com
│   └── francois
│       └── Maildir
│           ├── cur
│           ├── dovecot.index.cache
│           ├── dovecot.index.log
│           ├── dovecot-uidlist
│           ├── dovecot-uidvalidity
│           ├── dovecot-uidvalidity.5b2228be
│           ├── new
│           │   ├── 1528965310.M888145P28482.myserver,S=468,W=480
│           │   └── 1528966081.M582572P28598.myserver,S=455,W=467
...
...

puede ver que la carpeta nueva contiene ahora dos archivos. Podemos abrir el archivo que contiene el correo

# cat /var/mail/vmail/example.com/francois/Maildir/new/1528966081.M582572P28598.hostname\,S\=455\,W\=467 
Return-Path: <[email protected]>
Delivered-To: [email protected]
Received: by myserver.domain.com (Postfix, from userid 0)
        id 8558240BDA; Thu, 14 Jun 2018 23:15:01 +0000 (UTC)
Subject: Subject
From: alain<[email protected]>
To: <[email protected]>
X-Mailer: mail (GNU Mailutils 3.4)
Message-Id: <[email protected]>
Date: Thu, 14 Jun 2018 23:15:01 +0000 (UTC)

Hello Francois, it's Alain

Puedes ver el contenido que muestra que también funciona.

Conclusión

Sabes configurar un sistema de correo completamente funcional con Postfix, Dovecot y Postfixadmin con Nginx. Lo más importante es dar el permiso adecuado para no enfrentar problemas. Debe notar que puede usar dovecot con otros protocolos en lugar de LDA. La próxima vez le mostraremos cómo instalar RoundCube para que los usuarios virtuales puedan tener una interfaz web para leer fácilmente sus correos electrónicos e integraremos PhpMyAdmin para manipular fácilmente la base de datos. No dude en enviarnos sus comentarios para mejorar este tutorial.

Lea también:

  • Cómo configurar el servidor de correo Postfix en Ubuntu 16.04 (Dovecot - MySQL)
  • Cómo configurar Postfix con Webmail en Ubuntu 18.04
  • How to Setup Greylisting Service on Postfix Mail Server
  • How to Setup Postfix Mail Server with DKIM
  • How to Setup Mail Server Using Postfix, MariaDB, Dovecot and Roundcube

Ubuntu
  1. Cómo instalar y configurar el servidor Algo VPN en Ubuntu 20.04

  2. Cómo instalar y configurar el servidor DHCP en Ubuntu 20.04

  3. Cómo instalar y configurar el servidor Redis en Ubuntu

  4. Cómo instalar y configurar Squid Proxy en Ubuntu 20.04

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

Cómo instalar y configurar el servidor LAMP en Ubuntu

Cómo instalar y configurar el servidor OpenLDAP en Ubuntu 16.04

Cómo instalar y configurar el servidor VNC en Ubuntu 20.04

Cómo instalar y configurar VNC en Ubuntu Server 20.04

Cómo instalar y configurar el servidor DNS en Ubuntu 16.04 LTS

Cómo instalar y configurar Parse Server en Ubuntu 20.04