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
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.