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.