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