GNU/Linux >> Tutoriales Linux >  >> Cent OS

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

En este tutorial, le mostraremos cómo instalar y configurar el servidor de correo con PostfixAdmin en CentOS 7. Para aquellos de ustedes que no sabían, Postfixadmin es una interfaz web para MySQL o Base de datos MariaDB utilizada por Postfix. Con Postfixadmin podemos administrar fácilmente desde un navegador web nuestro servicio Postfix, agregando y eliminando usuarios y dominios de correo, alias de correo, cuotas de disco, etc.

Este artículo asume que tiene al menos conocimientos básicos de Linux, sabe cómo usar el shell y, lo que es más importante, aloja su sitio en su propio VPS. La instalación es bastante simple y asume que se están ejecutando en la cuenta raíz, si no, es posible que deba agregar 'sudo ' a los comandos para obtener privilegios de root. Le mostraré la instalación paso a paso de Mail Server With PostfixAdmin en un servidor CentOS 7.

Requisitos previos

  • Un servidor que ejecuta uno de los siguientes sistemas operativos:CentOS 7.
  • Se recomienda que utilice una instalación de sistema operativo nueva para evitar posibles problemas.
  • Acceso SSH al servidor (o simplemente abra Terminal si está en una computadora de escritorio).
  • Un non-root sudo user o acceder al root user . Recomendamos actuar como un non-root sudo user , sin embargo, puede dañar su sistema si no tiene cuidado al actuar como root.

Instalar servidor de correo con PostfixAdmin en CentOS 7

Paso 1. Primero, comencemos asegurándonos de que su sistema esté actualizado.

yum clean all
yum -y update

Paso 2. Instale el servidor LAMP.

Se requiere un servidor de pila LAMP de CentOS 7. Si no tiene un LAMP instalado, puede seguir nuestra guía aquí. Además, instale los módulos PHP necesarios:

yum install php70w-cli php70w-gd php70w-xml php70w-curl php70w-mysql php70w-zip php70w-mbstring php70w-mcrypt

Paso 3. Configuración de MariaDB para PostfixAdmin.

De forma predeterminada, MariaDB no está reforzado. Puede proteger MariaDB utilizando mysql_secure_installation texto. Debe leer y seguir cada paso cuidadosamente, que establecerá la contraseña raíz, eliminará a los usuarios anónimos, no permitirá el inicio de sesión raíz remoto y eliminará la base de datos de prueba y el acceso a MariaDB seguro:

mysql_secure_installation

Configúralo así:

- Set root password? [Y/n] y
- 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

A continuación, debemos iniciar sesión en la consola de MariaDB y crear una base de datos para PostfixAdmin. Ejecute el siguiente comando:

mysql -u root -p

Esto le pedirá una contraseña, así que ingrese su contraseña raíz de MariaDB y presione Enter. Una vez que haya iniciado sesión en su servidor de base de datos, debe crear una base de datos para Instalación de PostfixAdmin:

CMariaDB [(none)]> CREATE DATABASE postfixadmin;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON postfixadmin.* TO 'postfixadmin'@'localhost' IDENTIFIED BY 'strong_password';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> \q

Paso 4. Instalación de PostfixAdmin.

Lo primero que debe hacer es ir a la página de descarga de PostfixAdmin y descargar la última versión estable de PostfixAdmin:

cd /var/www/html
wget https://github.com/postfixadmin/postfixadmin/archive/refs/tags/postfixadmin-3.3.11.tar.gz
tar -xzf postfixadmin-3.3.11.tar.gz

Abra el archivo de configuración principal:

nano /var/www/html/postfixadmin-3.3.11/config.inc.php

Edite los siguientes valores:

$CONF['configured'] = true;
$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'strong_password';
$CONF['database_name'] = 'postfixadmin';
$CONF['domain_path'] = 'NO';
$CONF['domain_in_mailbox'] = 'YES';

Ahora debe asignar la propiedad de los archivos y carpetas al usuario y grupo de Apache. Para hacerlo, el comando es:

chown -R apache: /var/www/html/postfixadmin-3.3.11

Para completar la base de datos, vaya a https://Your_IP_Address/postfixadmin-3.0.2/setup.php y debería ver algo como lo siguiente:

Testing database connection - OK - mysqli://postfixadmin:xxxxx@localhost/postfixadmin
Everything seems fine... attempting to create/update database structure

Crear un nuevo usuario administrador:

bash /var/www/html/postfixadmin-3.3.11/scripts/postfixadmin-cli admin add admin@your_domain_idroot.us --password strong_password22 --password2 strong_password22 --superadmin 1 --active 1

Paso 5. Instalación y configuración de Postfix.

Instala postfix con el siguiente comando:

yum -y install postfix

Una vez completada la instalación, debemos crear los archivos de configuración:

mkdir -p /etc/postfix/sql/
nano /etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf

Edite los siguientes valores:

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'
nano /etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf

Edite los siguientes valores:

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'
nano /etc/postfix/sql/mysql_virtual_alias_domain_maps.cf

Edite los siguientes valores:

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'
nano /etc/postfix/sql/mysql_virtual_alias_maps.cf

Edite los siguientes valores:

user = postfixadmin
password = strong_password
hosts = localhost
dbname = postfixadmin
query = SELECT goto FROM alias WHERE address='%s' AND active = '1'
#expansion_limit = 100
nano /etc/postfix/sql/mysql_virtual_domains_maps.cf

Edite los siguientes valores:

user = postfixadmin
password = strong_password
hosts = localhost
dbname = postfixadmin
query          = SELECT domain FROM domain WHERE domain='%s' AND active = '1'
#query          = SELECT domain FROM domain WHERE domain='%s'
#optional query to use when relaying for backup MX
#query           = SELECT domain FROM domain WHERE domain='%s' AND backupmx = '0' AND active = '1'
#expansion_limit = 100
nano /etc/postfix/sql/mysql_virtual_mailbox_limit_maps.cf

Edite los siguientes valores:

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

Edite los siguientes valores:

user = postfixadmin
password = strong_password
hosts = localhost
dbname = postfixadmin
query           = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1'
#expansion_limit = 100

A continuación, edite el archivo main.cf:

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/pki/tls/certs/localhost.crt"
postconf -e "smtpd_tls_key_file = /etc/pki/tls/private/localhost.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"

Abra el master.cf archivo, busque las secciones de envío inet n y smtps inet n y edite de la siguiente manera:

nano /etc/postfix/master.cf

Edite los siguientes valores:

submission inet n       -       n       -       -       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 milter_macro_daemon_name=ORIGINATING
smtps     inet  n       -       n       -       -       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 milter_macro_daemon_name=ORIGINATING

Finalmente, habilite el servicio de sufijo:

systemctl enable postfix
systemctl restart postfix

Paso 6. Instalación y configuración de Dovecot.

Instala dovecot usando el siguiente comando:

yum install dovecot dovecot-mysql

Abra el archivo /etc/dovecot/conf.d/10-mail.conf:

nano /etc/dovecot/conf.d/10-mail.conf

Cambie los siguientes valores:

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 archivo /etc/dovecot/conf.d/10-auth.conf:

nano /etc/dovecot/conf.d/10-auth.conf

Cambie los siguientes valores:

auth_mechanisms = plain login
#!include auth-system.conf.ext
!include auth-sql.conf.ext

Cree un nuevo archivo dovecot-sql.conf.ext:

nano /etc/dovecot/dovecot-sql.conf.ext

Edite los siguientes valores:

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'

En el archivo /etc/dovecot/conf.d/10-ssl.conf habilite la compatibilidad con SSL:

ssl = yes

Abra el archivo /etc/dovecot/conf.d/15-lda.conf y configure la dirección de correo electrónico postmaster_address:

postmaster_address = postmaster@your_domain_name.com

Abra el archivo /etc/dovecot/conf.d/10-master.conf, busque la sección service lmtp y cámbielo a:

service lmtp {
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
    mode = 0600
    user = postfix
    group = postfix
  }
}

Busque la sección de autenticación del servicio y cámbiela a:

service auth {
  unix_listener /var/spool/postfix/private/auth {
    mode = 0666
    user = postfix
    group = postfix
  }
  unix_listener auth-userdb {
    mode = 0600
    user = vmail
    #group = vmail
  }
  user = dovecot
}

Cambie la sección del trabajador de autenticación del servicio a lo siguiente:

service auth-worker {
  user = vmail
}

Ahora necesita asignar la propiedad de los archivos y carpetas. Para hacerlo, el comando es:

chown -R vmail:dovecot /etc/dovecot
chmod -R o-rwx /etc/dovecot

Finalmente, habilite y reinicie el servicio dovecot:

systemctl enable dovecot 
systemctl restart dovecot

Paso 7. Instalación y configuración de Spamassassin.

Instalar SpamAssassin usando el siguiente comando:

yum -y install spamassassin

Crear un usuario del sistema SpamAssassin:

groupadd spamd
useradd -g spamd -s /bin/false -d /var/log/spamassassin spamd
chown spamd:spamd /var/log/spamassassin

A continuación, configure Postfix para usar SpamAssassin:

nano /etc/postfix/master.cf

Cambiar valores:

smtp      inet  n       -       n       -       -       smtpd

Con:

smtp      inet  n       -       n       -       -       smtpd -o content_filter=spamassassin

Agregue la siguiente línea al final del archivo:

systemctl enable spamassassin 
systemctl restart spamassassin

Finalmente, reinicie el servicio postfix:

systemctl restart postfix

Paso 8. Acceso a PostfixAdmin.

Si todo está configurado correctamente ahora, debería poder iniciar sesión en su backend de PostfixAdmin yendo a http://Your_IP_Address/postfixadmin-3.0.2.2 y crea tu primer dominio virtual y buzón.

¡Felicitaciones! Ha instalado correctamente PostfixAdmin. Gracias por usar este tutorial para instalar Mail Server With PostfixAdmin en el sistema CentOS 7. Para obtener ayuda adicional o información útil, le recomendamos que consulte el sitio web oficial de PostfixAdmin.


Cent OS
  1. Cómo instalar SpamAssassin en un servidor virtual con CentOS 6

  2. Cómo instalar Website Baker en un CentOS 7 VPS

  3. Configure un servidor de correo con PostfixAdmin y MariaDB en CentOS 7

  4. Cómo configurar un servidor de correo con PostfixAdmin en CentOS 7

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

Cómo administrar el servidor CentOS 7 con Webmin

Cómo instalar Lighttpd con PHP-FPM y MariaDB en CentOS 8

Cómo instalar Cacti Monitoring Server en CentOS 8

Cómo instalar el servidor Zabbix 5.0/4.0 en CentOS 8/RHEL 8

Cómo instalar el servidor de correo Exim en CentOS 6

Cómo instalar el servidor LEMP en CentOS 8