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

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

En esta guía, explicaremos cómo instalar y configurar un servidor de correo con PostfixAdmin, Postfix, Dovecot, MariaDB y SpamAssasin en un CentOS VPS. PostfixAdmin es un front-end web basado en PHP que le permite administrar dominios virtuales y usuarios para un agente de transporte de correo de Postfix. Esta guía también debería funcionar en otros sistemas VPS de Linux, pero fue probada y escrita para un VPS CentOS 7.

Si usa un VPS con Ubuntu, siga nuestro tutorial para configurar un servidor de correo con Postfix, Dovecot, Spamassassin, SQLite y PostfixAdmin en un VPS con Ubuntu 16.04

Si desea utilizar SQLite en lugar de MariaDB, siga nuestro tutorial para configurar un servidor de correo con Postfix, Dovecot, Spamassassin, SQLite y PostfixAdmin en un CentoOS 7 VPS

1. Actualice el sistema e instale los paquetes necesarios

yum update && yum install wget nano

2. Crear usuario del sistema

Por razones de seguridad, crearemos un nuevo usuario del sistema que será el propietario de todos los buzones.

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

3. Instalar MariaDB

MariaDB 5.5 se envía en el repositorio predeterminado de CentOS 7, para instalarlo simplemente ejecute:

yum install mariadb-server

Para iniciar el servicio MariaDB y permitir que se inicie en el arranque, ejecute los siguientes comandos:

systemctl start mariadb.service
systemctl enable mariadb.service

Ejecute el siguiente comando para asegurar su instalación de MariaDB:

mysql_secure_installation

A continuación, debemos crear una base de datos para nuestra instancia postfixadminHQ.

mysql -uroot -p
MariaDB [(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

4. Instale PHP y todos los módulos PHP necesarios

CentOS 7 viene con PHP versión 5.4, para instalar PHP y los módulos necesarios, ejecute:

yum install php php-mysql php-imap php-mbstring php-common

Si no tiene Apache instalado, instálelo con:

yum install httpd

5. Instalar PostfixAdmin

La última versión de PostfixAdmin, versión 3, admite bases de datos MySQL/MariaDB, PostgreSQL y SQLite. En esta guía, utilizaremos MariaDB.
Descargue el archivo PostfixAdmin de SourceForge y extráigalo en el directorio /var/www/html/:

wget -q -O - "https://downloads.sourceforge.net/project/postfixadmin/postfixadmin/postfixadmin-3.0.2/postfixadmin-3.0.2.tar.gz" | tar -xzf - -C /var/www/html

Abra el archivo de configuración de correo y edite los siguientes valores:

nano /var/www/html/postfixadmin-3.0.2/config.inc.php
$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';
chown -R apache: /var/www/html/postfixadmin-3.0.2

Para completar la base de datos, vaya a https://Your_IP_Address/postfixadmin-3.0.2/setup.php y debería ver algo como a continuación:
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.0.2/scripts/postfixadmin-cli admin add admin@your_domain_name.com --password strong_password22 --password2 strong_password22 --superadmin 1 --active 1

6. Instalar y configurar postfix

Para instalar Postfix, ejecute el siguiente comando:

yum install postfix

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

mkdir -p /etc/postfix/sql/
nano /etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf
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
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
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
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
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
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
user = postfixadmin
password = strong_password
hosts = localhost
dbname = postfixadmin
query           = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1'
#expansion_limit = 100

[ecko_alert color=”blue”]¿Atrapado en algún lugar? Obtenga un VPS de nosotros y haremos todo esto por usted, ¡gratis! Instalaremos y configuraremos completamente un servidor de correo para usted. [/ecko_alert]

Edite el main.cf archivo:

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 submission inet n y smtps inet n secciones y editar de la siguiente manera:

nano /etc/postfix/master.cf
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

Habilitar el servicio de sufijo

systemctl enable postfix
systemctl restart postfix

7. Instalar y configurar Dovecot

Instale dovecot con soporte MySQL usando el siguiente comando:

yum install dovecot dovecot-mysql

Abra el /etc/dovecot/conf.d/10-mail.conf archivo y cambie los siguientes valores:

nano /etc/dovecot/conf.d/10-mail.conf
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 y cambie los siguientes valores:

nano /etc/dovecot/conf.d/10-auth.conf
auth_mechanisms = plain login
#!include auth-system.conf.ext
!include auth-sql.conf.ext

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

nano /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'

En el /etc/dovecot/conf.d/10-ssl.conf archivo habilitar soporte SSL:

ssl = yes

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

postmaster_address = postmaster@your_domain_name.com

Abra el /etc/dovecot/conf.d/10-master.conf archivo, busque la sección de servicio lmtp y cámbiela 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
}

Establecer los permisos:

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

Habilite y reinicie el servicio dovecot

systemctl enable dovecot 
systemctl restart dovecot 

8. Instalar y configurar Spamassassin

Instale spamassassin usando el siguiente comando:

yum install spamassassin

Cree un usuario del sistema spamassassin:

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

9. Configurar Postfix para usar SpamAssassin

Abra el master.cf archivo y edite de la siguiente manera:

nano /etc/postfix/master.cf

cambiar

smtp      inet  n       -       n       -       -       smtpd

con

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

agregue la siguiente línea al final del archivo:

spamassassin unix - n n - - pipe flags=R user=spamd argv=/usr/bin/spamc -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}

Habilite y reinicie el servicio spamassassin

systemctl enable spamassassin 
systemctl restart spamassassin 

Reinicie el servicio postfix

systemctl restart postfix

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.

Por supuesto, no tiene que configurar un servidor de correo con PostfixAdmin y MariaDB en CentOS 7, si utiliza uno de nuestros servicios de hospedaje de servidores de correo, en cuyo caso simplemente puede solicitar a nuestros administradores expertos de Linux que configuren un servidor de correo. para ti. Están disponibles las 24 horas del día, los 7 días de la semana y atenderán su solicitud de inmediato.

PD . Si le gustó esta publicación sobre cómo configurar un servidor de correo con PostfixAdmin y MariaDB en CentOS 7, compártala con sus amigos en las redes sociales usando los botones a continuación o simplemente deje un comentario en la sección de comentarios a continuación. Gracias.


Cent OS
  1. Configurar un servidor de correo con PostfixAdmin

  2. Cómo instalar y configurar el servidor de correo Postfix en CentOS 8

  3. Instale Zenario con Apache, PHP y MariaDB en CentOS 7

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

  5. Configurar un servidor de correo con PostfixAdmin en Debian 9

Cómo configurar fácilmente un servidor de correo con todas las funciones en CentOS 7 con iRedMail

Cómo configurar fácilmente un servidor de correo con todas las funciones en CentOS 8 con iRedMail

Parte 4:configurar SPF y DKIM con Postfix en el servidor de correo CentOS 8/RHEL 8

Parte 3:PostfixAdmin:cree buzones virtuales en el servidor de correo CentOS 8/RHEL 8

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

Cómo configurar un servidor de correo con todas las funciones con IRedMail en Centos 7 VPS