GNU/Linux >> Tutoriales Linux >  >> Panels >> Panels

Cómo instalar un servidor de correo con PostfixAdmin en Ubuntu 20.04

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 y mysql 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!


Panels
  1. Cómo instalar FastPanel en Ubuntu 20.04

  2. Cómo instalar MySQL en Ubuntu 16.04

  3. Cómo instalar NextCloud 13 en Ubuntu 16.04

  4. Cómo instalar osTicket en Ubuntu 16.04

  5. Cómo instalar WordPress con LAMP Stack en Ubuntu 16.04

Cómo instalar DKIM en el servidor Ubuntu

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

Cómo instalar un servidor de correo con PostfixAdmin en CentOS 7

Cómo instalar aaPanel en Ubuntu 20.04

Cómo instalar WordPress con LAMP Stack en Ubuntu 20.04

Cómo instalar Vanilla Forums con OpenLiteSpeed ​​en Ubuntu 20.04