En este tutorial, cubriremos el proceso de configuración de un servidor de correo con Postfix, Dovecot, Postfixadmin y MariaDB en un Ubuntu 20.04 VPS. Pero primero, ¿qué es PostfixAdmin?
PostfixAdmin es una aplicación web de código abierto escrita en PHP que se utiliza para crear dominios virtuales y cuentas de correo electrónico para un servidor de correo de Postfix. Usando PostfixAdmin, podemos administrar buzones y alias, establecer cuotas, configurar mensajes de vacaciones/fuera de la oficina y más. Además, la interfaz basada en web le brinda la facilidad de uso de una ventana de navegador con una interfaz de usuario.
PostfixAdmin nos permite usar direcciones de correo electrónico virtuales y buzones de correo virtuales, por lo que no necesitamos crear una nueva cuenta de usuario del sistema para cada dirección de correo electrónico. Teniendo en cuenta todos estos detalles, PostfixAdmin es una herramienta versátil y se puede utilizar para casi todas sus necesidades de correo. Este tutorial es bastante profundo y puede llevar algún tiempo configurar todo correctamente. Comencemos con los pasos de instalación.
Requisitos de hardware/software
- Un servidor Ubuntu 20.04 o VPS con acceso raíz habilitado, o un usuario con privilegios sudo. Brindamos a todos nuestros usuarios acceso raíz completo en sus VPS.
- Es necesario instalar el agente de transferencia de correo Postfix (MTA) y el agente de entrega de correo Dovecot IMAP/POP3.
- Es necesario instalar un servidor de base de datos (MySQL/MariaDB, PostgreSQL o SQLite).
- El servidor web Apache debe instalarse con
mod_rewrite
módulo habilitado. - PHP 7.1 o superior debe estar instalado con
imap
,mbstring
ymysql
todas las extensiones habilitadas.
Paso 1. Primeros pasos
Para comenzar, necesitaremos iniciar sesión en nuestro servidor usando SSH. Puede hacerlo ingresando este comando:
ssh root@IP_Address -p Port_Number
Recuerde reemplazar "root" con su nombre de usuario si no está utilizando el usuario root. Cambie los valores en rojo según la dirección IP de su servidor y el número de puerto SSH (el número predeterminado es 22, así que pruébelo primero a menos que su servidor use un número de puerto personalizado).
Una vez que haya iniciado sesión, debe actualizar todos sus paquetes a sus últimas versiones disponibles.
apt-get update -y apt-get upgrade -y
Una vez que todos los paquetes estén actualizados, reinicie su servidor para aplicar los cambios de configuración y asegúrese de que todo el software se ejecuta en sus últimas versiones.
Paso 2. Crear una cuenta de usuario del sistema
PostfixAdmin tiene la capacidad de crear múltiples dominios virtuales, usuarios y alias. Esto nos ahorra la molestia de tener que crear nuevos usuarios del sistema cada vez que necesitamos agregar una nueva cuenta de correo electrónico. Por razones de seguridad, crearemos un nuevo usuario llamado 'vmail' con permisos para almacenar los correos electrónicos en el /var/vmail
directorio:
useradd -r -u 150 -g mail -d /var/vmail -s /sbin/nologin -c "Virtual Mail User" vmail mkdir -p /var/vmail chmod -R 770 /var/vmail chown -R vmail:mail /var/vmail
Paso 3. Instale PHP, Apache y las extensiones requeridas
PHP 7.4 y Apache2 están incluidos en el repositorio predeterminado de Ubuntu para 20.04. Podemos instalar Apache 2, PHP 7.4 y las extensiones de PHP requeridas usando el siguiente comando. También incluimos los módulos necesarios de PHP y Apache en el comando:
apt-get install apache libapache2-mod-php php php-common php-mbstring php-imap php-mysql
Paso 4. Instalar el servidor MariaDB
PostfixAdmin requiere una base de datos para poder almacenar la cuenta de correo electrónico y la información del dominio. A los efectos de este tutorial, utilizaremos un sistema de base de datos MariaDB, una versión de código abierto de MySQL que mantiene la paridad de características. Podemos instalar el servidor MariaDB usando el siguiente comando:
apt-get install mariadb-server mariadb-client mariadb-common
Inicie el servicio MariaDB y habilítelo para que se inicie en el arranque del servidor usando los siguientes comandos:
systemctl start mariadb systemctl enable mariadb
Para mejorar la seguridad de su instalación de MariaDB, ejecute mysql_secure_installation
guión:
mysql_secure_installation
Cuando se le solicite, puede configurar la contraseña raíz de MariaDB y con seguridad responder "S" a todas las preguntas.
Enter current password for root (enter for none): Just press the [Enter] key since there is no default password Set root password? [Y/n]: Y New password: Enter a strong password Re-enter new password: Repeat the same password from before Remove anonymous users? [Y/n]: Y Disallow root login remotely? [Y/n]: Y Remove test database and access to it? [Y/n]: Y Reload privilege tables now? [Y/n]: Y
Si siguió los pasos anteriores, tendrá una contraseña configurada para el usuario root de MariaDB.
Ejecute este comando para acceder a la consola de MySQL:
mysql -u root -p
E ingrese la contraseña de root que configuró previamente usando mysql_secure_installation
guion. Si elige no ejecutar ese script, no hay una contraseña configurada, por lo que solo necesita presionar la tecla [Enter] una vez.
A continuación, cree un usuario y una base de datos de MariaDB para PostfixAdmin:
MariaDB [(none)]> CREATE USER 'postfixadmin'@'localhost' IDENTIFIED BY 'Strong_Password'; MariaDB [(none)]> CREATE DATABASE postfixadmin; MariaDB [(none)]> GRANT ALL PRIVILEGES ON postfixadmin.* TO 'postfixadmin'@'localhost'; MariaDB [(none)]> FLUSH PRIVILEGES; MariaDB [(none)]> \q
No olvide reemplazar 'Strong_Password' con una contraseña buena y única.
Paso 5. Instalar Postfix
Instale Postfix y postfix-mysql
paquetes ejecutando el siguiente comando:
apt-get install postfix postfix-mysql
Durante la instalación de Postfix, se le pedirá el tipo de configuración de correo. Seleccione 'Sitio de Internet' y haga clic en Aceptar para continuar. Luego, ingrese el nombre de host del servidor en el campo 'nombre de correo del sistema'.
Una vez que se completa la instalación de Postfix, tenemos que crear varios archivos de configuración de Postfix. Esto llevará un tiempo ya que hay bastantes archivos que deben crearse y configurarse.
mkdir -p /etc/postfix/sql/
Defina la configuración de conexión de la base de datos para consultar los mapas generales del dominio de alias virtual creando este archivo. Estamos usando vi
, pero puedes usar cualquier editor de texto que prefieras:
vi /etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf
Una vez creado el archivo, inserte estos contenidos:
user = postfixadmin password = Strong_Password hosts = localhost dbname = postfixadmin query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1'
Cree este archivo para que podamos establecer la configuración de conexión de la base de datos para consultar los mapas de buzón de correo del dominio de alias virtual:
vi /etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf
Luego inserte estos contenidos:
user = postfixadmin password = Strong_Password hosts = localhost dbname = postfixadmin query = SELECT maildir FROM mailbox,alias_domain WHERE alias_domain.alias_domain = '%d' and mailbox.username = CONCAT('%u', '@', alias_domain.target_domain) AND mailbox.active = 1 AND alias_domain.active='1'
Después de eso, defina la configuración de conexión de la base de datos para consultar los mapas de dominio de alias virtual creando este archivo:
vi /etc/postfix/sql/mysql_virtual_alias_domain_maps.cf
Agrega lo siguiente:
user = postfixadmin password = Strong_Password hosts = localhost dbname = postfixadmin query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('%u', '@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1'
La siguiente configuración es para la configuración de conexión de la base de datos para consultar los mapas de alias virtuales. Crea este archivo:
vi /etc/postfix/sql/mysql_virtual_alias_maps.cf
Añade este texto:
user = postfixadmin password = Strong_Password hosts = localhost dbname = postfixadmin query = SELECT goto FROM alias WHERE address='%s' AND active = '1'
Hay algunos más para ir. Ahora, cree un archivo para la configuración de conexión de la base de datos para consultar los mapas de dominio virtual:
vi /etc/postfix/sql/mysql_virtual_domains_maps.cf
Asegúrese de establecer las contraseñas en todos estos archivos que ha estado agregando. Añade el contenido:
user = postfixadmin password = Strong_Password hosts = localhost dbname = postfixadmin query = SELECT domain FROM domain WHERE domain='%s' AND active = '1'
En el siguiente archivo. Créelo y agregue la configuración de conexión de la base de datos para consultar los mapas de límites del buzón virtual:
vi /etc/postfix/sql/mysql_virtual_mailbox_limit_maps.cf
Inserta esto y cambia la contraseña:
user = postfixadmin password = Strong_Password hosts = localhost dbname = postfixadmin query = SELECT quota FROM mailbox WHERE username='%s' AND active = '1'
Finalmente, cree este archivo y agregue la configuración de conexión de la base de datos para consultar los mapas de buzón virtual:
vi /etc/postfix/sql/mysql_virtual_mailbox_maps.cf
user = postfixadmin password = Strong_Password hosts = localhost dbname = postfixadmin query = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1'
NOTA : No olvide reemplazar 'Strong_Password' con su propia contraseña en todos los archivos de configuración anteriores.
Modifica el main.cf
Archivo de configuración de Postfix, que es el núcleo de la configuración de Postfix. Ejecute estos comandos para editar cada configuración:
postconf -e "myhostname = $(hostname -f)" postconf -e "virtual_mailbox_domains = proxy:mysql:/etc/postfix/sql/mysql_virtual_domains_maps.cf" postconf -e "virtual_alias_maps = proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf, proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf, proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf" postconf -e "virtual_mailbox_maps = proxy:mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf, proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf" postconf -e "smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem" postconf -e "smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key" postconf -e "smtpd_use_tls = yes" postconf -e "smtpd_tls_auth_only = yes" postconf -e "smtpd_sasl_type = dovecot" postconf -e "smtpd_sasl_path = private/auth" postconf -e "smtpd_sasl_auth_enable = yes" postconf -e "smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination" postconf -e "mydestination = localhost" postconf -e "mynetworks = 127.0.0.0/8" postconf -e "inet_protocols = ipv4" postconf -e "inet_interfaces = all" postconf -e "virtual_transport = lmtp:unix:private/dovecot-lmtp"
También podemos instalar Certbot, luego instalar un nuevo certificado Let's encrypt SSL para el nombre de host del servidor y reemplazar /etc/ssl/certs/ssl-cert-snakeoil.pem
y /etc/ssl/private/ssl-cert-snakeoil.key
con el certificado SSL recién creado y los archivos de clave pública.
Luego, edite el master.cf
archivo de configuración de Postfix y modifíquelo de la siguiente manera:
vi /etc/postfix/master.cf
Agregue o cambie el contenido para que el archivo se vea así:
smtp inet n - y - - smtpd #smtp inet n - y - 1 postscreen #smtpd pass - - y - - smtpd #dnsblog unix - - y - 0 dnsblog #tlsproxy unix - - y - 0 tlsproxy submission inet n - y - - 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= # -o smtpd_relay_restrictions=permit_sasl_authenticated,reject -o smtpd_client_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=permit_sasl_authenticated,reject # -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 milter_macro_daemon_name=ORIGINATING
Habilite el servicio de Postfix para que se inicie en el arranque del servidor y reinicie el servicio de Postfix:
systemctl enable postfix systemctl restart postfix
Postfix finalmente está instalado y configurado.
Paso 6. Instalar Dovecot
Dovecot es un Mail Delivery Agent que permite a un usuario recibir correos electrónicos con total seguridad a través de los protocolos IMAP y/o POP3. Podemos instalar Dovecot y el dovecot-mysql
paquete usando el siguiente comando:
apt-get install dovecot-core dovecot-lmtpd dovecot-imapd dovecot-pop3d dovecot-mysql
Edite el /etc/dovecot/conf.d/10-mail.conf
archivo:
vi /etc/dovecot/conf.d/10-mail.conf
Inserte esto como contenido:
mail_location = maildir:/var/vmail/%d/%n mail_privileged_group = mail mail_uid = vmail mail_gid = mail first_valid_uid = 150 last_valid_uid = 150
Abra el /etc/dovecot/conf.d/10-auth.conf
archivo:
vi /etc/dovecot/conf.d/10-auth.conf
Edítelo para que el archivo se vea así:
auth_mechanisms = plain login #!include auth-system.conf.ext !include auth-sql.conf.ext
Luego edite dovecot-sql.conf.ext
archivo y agregue estas líneas:
vi /etc/dovecot/dovecot-sql.conf.ext
driver = mysql connect = host=localhost dbname=postfixadmin user=postfixadmin password=Strong_Password default_pass_scheme = MD5-CRYPT password_query = SELECT username as user, password, '/var/vmail/%d/%n' as userdb_home, 'maildir:/var/vmail/%d/%n' as userdb_mail, 150 as userdb_uid, 8 as userdb_gid FROM mailbox WHERE username = '%u' AND active = '1' user_query = SELECT '/var/vmail/%d/%u' as home, 'maildir:/var/vmail/%d/%u' as mail, 150 AS uid, 8 AS gid, concat('dirsize:storage=', quota) AS quota FROM mailbox WHERE username = '%u' AND active = '1'
No olvide reemplazar Strong_Password con la contraseña real que configuró previamente en el Paso 4 al crear el usuario de MariaDB.
Edite el /etc/dovecot/conf.d/10-ssl.conf
y habilite la compatibilidad con SSL:
vi /etc/dovecot/conf.d/10-ssl.conf
ssl = yes
Guarde y cierre ese archivo, luego edite el /etc/dovecot/conf.d/15-lda.conf
archivo y establezca la postmaster_address
dirección de correo electrónico.
vi /etc/dovecot/conf.d/15-lda.conf
postmaster_address = [email protected]
Asegúrese de cambiar sudominio.com por el nombre de dominio real que apunta a su servidor.
Edite el /etc/dovecot/conf.d/10-master.conf
archivo, busque el service lmtp
sección y reemplácela con las siguientes líneas:
vi /etc/dovecot/conf.d/10-master.conf
service lmtp { unix_listener /var/spool/postfix/private/dovecot-lmtp { mode = 0600 user = postfix group = postfix } }
Una vez que haya editado esa parte, busque el service auth
y reemplácelo con el siguiente fragmento:
service auth { unix_listener /var/spool/postfix/private/auth { mode = 0666 user = postfix group = postfix } unix_listener auth-userdb { mode = 0600 user = vmail } user = dovecot }
Luego cambie el service auth-worker
sección a lo siguiente:
service auth-worker { user = vmail }
Guarde y cierre el archivo.
Establezca los permisos correctos de los archivos de configuración de Dovecot:
chown -R vmail:dovecot /etc/dovecot chmod -R o-rwx /etc/dovecot
Habilite el servicio Dovecot para que se inicie en el arranque del servidor y reinicie Dovecot para que todos estos nuevos archivos de configuración estén en vigor:
systemctl enable dovecot systemctl restart dovecot
Paso 7. Instalar PostfixAdmin
Ahora que todo nuestro software requerido está instalado y configurado, instalemos y configuremos PostfixAdmin y terminemos este tutorial.
Descargue la última versión disponible de PostfixAdmin de Github y extráigala en /var/www/html/postfixadmin
directorio.
apt-get install git cd /var/www/html/ git clone https://github.com/postfixadmin/postfixadmin.git
Edite el /var/www/html/postfixadmin/config.local.php
archivo y agregue estas líneas:
vi /var/www/html/postfixadmin/config.local.php
<?php $CONF['database_type'] = 'mysqli'; $CONF['database_host'] = 'localhost'; $CONF['database_user'] = 'postfixadmin'; $CONF['database_password'] = 'Strong_Password'; $CONF['database_name'] = 'postfixadmin'; $CONF['configured'] = true; $CONF['encrypt'] = 'md5crypt'; ?>
Reemplace Strong_Password con la contraseña de usuario de MariaDB.
mkdir /var/www/html/postfixadmin/templates_c chown -R www-data: /var/www/html/postfixadmin
Abra http://your_server_IP/postfixadmin/public/setup.php
. Compruebe si todo está bien y asegúrese de que no haya errores:
Desplácese hacia abajo e ingrese su nueva contraseña de configuración dos veces. Asegúrate de elegir uno fuerte:
Luego haga clic en el botón 'Generar hash de contraseña'.
Edite el config.local.php
y agréguele el hash generado:
$CONF['setup_password'] = '0584cbe2b03cad2e29c8be0127361e37:d41ceb2689b747cf143d1809aec7b8e6bdde983e';
Reemplace el hash que se muestra en el ejemplo con el generado para su instancia.
Guarde el config.local.php
archivo, abra la página de configuración una vez más y cree una cuenta de usuario administrador de PostfixAdmin. La contraseña de configuración en esa página es la misma contraseña que usó en el paso anterior, así que complete los otros campos obligatorios, como la dirección de correo electrónico y la contraseña del administrador, luego haga clic en el botón 'Agregar administrador'.
¡Eso es todo! La instalación de PostfixAdmin está completa.
Abra http://your_server_IP/postfixadmin/login.php
en su navegador web preferido. Verá la página de inicio de sesión:
Inicie sesión como usuario administrador y agregue los dominios alojados en el servidor:
Una vez que haga eso, puede crear direcciones de correo electrónico, establecer una cuota de correo, etc.:
Eso es todo lo que necesitará para instalar, configurar y comenzar a usar su instalación de PostfixAdmin en su Ubuntu 20.04 VPS.
Este proceso de instalación es muy complicado y es muy fácil estropearlo y terminar con una instalación fallida de Postfix, Dovecot o ambos. Sin embargo, si tiene un alojamiento VPS de Ubuntu administrado con nosotros, no necesitará hacer nada más que pedirnos que lo instalemos por usted. Nuestro equipo de expertos en soporte instalará y configurará completamente todos los aspectos de su servidor para que Postfix, Dovecot y PostfixAdmin funcionan perfectamente. También pueden ayudar a configurar el mantenimiento de rutina y optimizar su servidor para maximizar su velocidad.
Le agradeceríamos que compartiera esto en las redes sociales si encuentra útil este tutorial. O bien, puede escribir un comentario para informarnos cómo fue la instalación y si PostfixAdmin lo ayudó a administrar su servidor de correo más fácilmente. ¡Gracias!