Instalar un servidor de correo en Ubuntu 20.04 con PostfixAdmin 1/2

Instalar un servidor de correo en Ubuntu 20.04 con PostfixAdmin, parte 1 de 2.

PostfixAdmin es una aplicación web escrita en PHP (open source), que nos facilita la labor de crear dominios virtuales y cuentas de correo electrónico en un servidor de mail Postfix.

PostfixAdmin nos permite administrar buzones de correo y alias, establecer cuotas, configurar mensajes de respuesta automática, y mucho más. La interfaz basada en web, hace que todas las tareas sean muy simples.

Instalar un servidor de correo con PostfixAdmin. Parte 1 de 2.

Sus principales características son:

  • Dominios / alias / buzones ilimitados.
  • Cuota de almacenamiento (opcional).
  • Caducidad de contraseña (opcional).
  • Múltiples formatos de hash para la contraseña.
  • Admite base de datos PostgreSQL, MySQL, MariaDB, etc.
  • Recuperación de correo desde un servidor POP3 remoto (a través de fetchmail).
  • Soporte para mensajes de respuesta automáticos.
  • Los usuarios pueden iniciar sesión, cambiar la contraseña o situar el estado fuera de la oficina.
  • Es posible integrarlo con Squirrelmail y Roundcube.
  • API basada en XMLRPC (opcional).
  • A partir de PHP5.6 +.

En este artículo, veremos como instalar un servidor de correo en Ubuntu 20.04 con PostfixAdmin, pero al ser demasiado extenso lo partiremos en dos, hoy vemos la primera parte. Esta instalación no es apta para usuarios noveles, ya que es fácil cometer un error y tirar por la borda todo el trabajo realizado.

 

Instalar un servidor de correo en Ubuntu 20.04 con PostfixAdmin

Como es habitual, lo primero que debes hacer es actualizar tu sistema. Después iniciaremos la instalación del servidor.

sudo apt update
sudo apt full-upgrade

Crear una cuenta de usuario

PostfixAdmin puede crear múltiples dominios virtuales, usuarios y alias. Esto nos ahorra el tener que crear nuevos usuarios en el sistema, cada vez que necesitamos agregar una nueva cuenta de correo electrónico. Es interesante crear un nuevo usuario llamado «vmail» con los permisos necesarios, para poder guardar los correos electrónicos en el directorio /var/mail/.

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

 

Instalar Apache y PHP

Por defecto, Ubuntu 20.04 viene con PHP 7.4 y Apache2. Lo puedes instalar todo, incluyendo las extensiones necesarias con el siguiente comando.

sudo apt install apache2 libapache2-mod-php php php-common php-mbstring php-imap php-mysql

 

Instalar MariaDB

Necesitamos una base de datos, nosotros elegimos MariaDB para nuestro servidor de correo.

sudo apt install mariadb-server mariadb-client mariadb-common

La iniciamos y habilitamos.

systemctl start mariadb 
systemctl enable mariadb

Aseguramos la instalación. Ten cuidado.

mysql_secure_installation

Ejemplo…

oot@solo-linux:~# mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none): 
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

You already have a root password set, so you can safely answer 'n'.

Change the root password? [Y/n] n
 ... skipping.

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] 
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] 
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] 
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] 
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Ahora accedes a la consola de MySQL.

mysql -u root -p

Ejecuta lo siguiente (linea por línea), introduciendo tu password.

CREATE USER 'postfixadmin'@'localhost' IDENTIFIED BY 'tupassword';

CREATE DATABASE postfixadmin;

GRANT ALL PRIVILEGES ON postfixadmin.* TO 'postfixadmin'@'localhost';

FLUSH PRIVILEGES;

\q

 

Instalar Postfix

Instalamos los paquetes de postfix necesarios para nuestro servidor de correo.

sudo apt install postfix postfix-mysql

Durante la instalación de Postfix, nos pide el tipo de configuración de correo. Seleccionamos «Sitio de internet» y aceptamos. Después introducimos el nombre del host.

Configurar Postfix en servidor de correo

Configurar Postfix en servidor de correo

Ahora debemos crear todos los archivos de configuración del servidor de correo. Este proceso es muy delicado, debes tener cuidado. Sigue los pasos indicados.

mkdir -p /etc/postfix/sql/

Definimos la configuración de conexión de la base de datos, encargada de consultar los mapas de captura de dominio, y de alias virtuales. Revisa bien las lineas e introduce tus datos reales. Después de terminar con cada archivo debes guardar y cerrar el editor.

nano /etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf

Copia y pega (con tus datos).

user = postfixadmin
password = mypassword
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'

Ahora para los mapas del buzón de correo del dominio de alias virtual.

nano /etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf
user = postfixadmin
password = mipassword
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'

Continuamos…

nano /etc/postfix/sql/mysql_virtual_alias_domain_maps.cf
user = postfixadmin
password = mypass
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'

Más archivos…

nano /etc/postfix/sql/mysql_virtual_alias_maps.cf
user = postfixadmin
password = mipassword
hosts = localhost
dbname = postfixadmin
query = SELECT goto FROM alias WHERE address='%s' AND active = '1'
nano /etc/postfix/sql/mysql_virtual_domains_maps.cf
user = postfixadmin
password = mypassword
hosts = localhost
dbname = postfixadmin
query = SELECT domain FROM domain WHERE domain='%s' AND active = '1'

Aún no hemos terminado.

nano /etc/postfix/sql/mysql_virtual_mailbox_limit_maps.cf
user = postfixadmin
password = mipassword
hosts = localhost
dbname = postfixadmin
query = SELECT quota FROM mailbox WHERE username='%s' AND active = '1'
nano /etc/postfix/sql/mysql_virtual_mailbox_maps.cf
user = postfixadmin
password = mipassword
hosts = localhost
dbname = postfixadmin
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1'

Por último, necesitamos hacer una serie de modificaciones en el archivo principal. Ejecuta linea por línea los siguientes comandos en tu terminal.

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"

Reiniciamos y habilitamos el servicio.

systemctl enable postfix
systemctl restart postfix

 

Instalar Dovecot

……………………………………………. Siguiente artículo…………………………………………………

 

Canales de Telegram: Canal SoloLinux – Canal SoloWordpress

Espero que este artículo te sea de utilidad, puedes ayudarnos a mantener el servidor con una donación (paypal), o también colaborar con el simple gesto de compartir nuestros artículos en tu sitio web, blog, foro o redes sociales. Instalar un servidor de correo en Ubuntu 20.04 con PostfixAdmin.

 

Agregar comentario