Androide

Instalar y configurar postfix y dovecot

?CORREO LINUX ? INSTALAR y Configurar Postfix? (Dovecot+⚡Thunderbird+Gmail) ?Ubuntu

?CORREO LINUX ? INSTALAR y Configurar Postfix? (Dovecot+⚡Thunderbird+Gmail) ?Ubuntu

Tabla de contenido:

Anonim

Esta es la segunda publicación de nuestra serie Configuración y configuración de un servidor de correo. En esta publicación le mostraremos cómo instalar y configurar Postfix y Dovecot, los dos componentes principales de nuestro sistema de correo.

Postfix es un agente de transferencia de correo de código abierto (MTA), un servicio utilizado para enviar y recibir correos electrónicos. Dovecot es un servidor IMAP / POP3 y en nuestra configuración también se encargará de la entrega local y la autenticación del usuario.

Este tutorial fue escrito para Ubuntu 16.04, sin embargo, los mismos pasos con pequeñas modificaciones deberían funcionar en cualquier versión más nueva de Ubuntu.

Prerrequisitos

Antes de continuar con este tutorial, asegúrese de haber iniciado sesión como usuario con privilegios de sudo.

Instalar Postfix y Dovecot

Los paquetes Dovecot en los repositorios predeterminados de Ubuntu están desactualizados. Para aprovechar el módulo imap_sieve instalaremos Dovecot desde el repositorio de la comunidad Dovecot.

Agregue la clave GPG del repositorio a su llavero de fuentes apt con el siguiente comando wget:

wget -O- https://repo.dovecot.org/DOVECOT-REPO-GPG | sudo apt-key add -

Habilite el repositorio de la comunidad Dovecot con el siguiente comando:

echo "deb https://repo.dovecot.org/ce-2.3-latest/ubuntu/$(lsb_release -cs) $(lsb_release -cs) main" | sudo tee -a /etc/apt/sources.list.d/dovecot.list

sudo apt update sudo debconf-set-selections <<< "postfix postfix/mailname string $(hostname -f)" sudo debconf-set-selections <<< "postfix postfix/main_mailer_type string 'Internet Site'" sudo apt install postfix postfix-mysql dovecot-imapd dovecot-lmtpd dovecot-pop3d dovecot-mysql

Configuración de Postfix

Configuraremos Postfix para usar buzones y dominios virtuales.

Comience creando los archivos de configuración sql que le indicarán a postfix cómo acceder a la base de datos MySQL, creada en la primera parte de esta serie.

sudo mkdir -p /etc/postfix/sql

Abra su editor de texto y cree los siguientes archivos:

/etc/postfix/sql/mysql_virtual_domains_maps.cf

user = postfixadmin password = P4ssvv0rD hosts = 127.0.0.1 dbname = postfixadmin query = SELECT domain FROM domain WHERE domain='%s' AND active = '1' /etc/postfix/sql/mysql_virtual_alias_maps.cf

user = postfixadmin password = P4ssvv0rD hosts = 127.0.0.1 dbname = postfixadmin query = SELECT goto FROM alias WHERE address='%s' AND active = '1' /etc/postfix/sql/mysql_virtual_alias_domain_maps.cf

user = postfixadmin password = P4ssvv0rD hosts = 127.0.0.1 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' /etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf

user = postfixadmin password = P4ssvv0rD hosts = 127.0.0.1 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' /etc/postfix/sql/mysql_virtual_mailbox_maps.cf

user = postfixadmin password = P4ssvv0rD hosts = 127.0.0.1 dbname = postfixadmin query = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1' /etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf

user = postfixadmin password = P4ssvv0rD hosts = 127.0.0.1 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'

Una vez que se crean los archivos de configuración de SQL, actualice el archivo de configuración de postfix principal para incluir información sobre los dominios virtuales, los usuarios y los alias que se almacenan en la base de datos MySQL.

sudo postconf -e "virtual_mailbox_domains = mysql:/etc/postfix/sql/mysql_virtual_domains_maps.cf" sudo postconf -e "virtual_alias_maps = mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf, mysql:/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf, mysql:/etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf" sudo postconf -e "virtual_mailbox_maps = mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf, mysql:/etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf" El comando postconf muestra los valores reales de los parámetros de configuración, cambia los valores de los parámetros de configuración o muestra otra información de configuración sobre el sistema de correo Postfix.

El agente de entrega local entregará los correos electrónicos entrantes a los buzones de los usuarios. Ejecute el siguiente comando para configurar el servicio LMTP de Dovecot como un transporte de entrega de correo predeterminado:

sudo postconf -e "virtual_transport = lmtp:unix:private/dovecot-lmtp"

Establezca los parámetros TL utilizando el certificado SSL cifrado Let's generado anteriormente:

sudo postconf -e 'smtp_tls_security_level = may' sudo postconf -e 'smtpd_tls_security_level = may' sudo postconf -e 'smtp_tls_note_starttls_offer = yes' sudo postconf -e 'smtpd_tls_loglevel = 1' sudo postconf -e 'smtpd_tls_cert_file = /etc/letsencrypt/live/mail.linuxize.com/fullchain.pem' sudo postconf -e 'smtpd_tls_key_file = /etc/letsencrypt/live/mail.linuxize.com/privkey.pem'

Configure los ajustes SMTP autenticados y transfiera la autenticación a Dovecot:

sudo postconf -e 'smtpd_sasl_type = dovecot' sudo postconf -e 'smtpd_sasl_path = private/auth' sudo postconf -e 'smtpd_sasl_local_domain =' sudo postconf -e 'smtpd_sasl_security_options = noanonymous' sudo postconf -e 'broken_sasl_auth_clients = yes' sudo postconf -e 'smtpd_sasl_auth_enable = yes' sudo postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination'

También necesitaremos editar el archivo de configuración maestra Postfix master.cf y habilitar el puerto de envío ( 587 ) y el puerto smtps ( 465 ).

Abra el archivo con su editor de texto y descomente / edite las siguientes líneas:

/etc/postfix/master.cf

submission inet n - y - - 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=permit_sasl_authenticated, reject # -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 - y - - 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=permit_sasl_authenticated, reject # -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

Reinicie el servicio postfix para que los cambios surtan efecto.

sudo systemctl restart postfix

En este punto, ha configurado correctamente el servicio Postfix.

Configurar Dovecot

En esta sección configuraremos Dovecot para que coincida con nuestra configuración. Asegúrese de editar las líneas resaltadas en amarillo.

Comience configurando el archivo dovecot-sql.conf.ext que le indica a Dovecot cómo acceder a la base de datos y cómo encontrar la información sobre las cuentas de correo electrónico.

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

driver = mysql connect = host=127.0.0.1 dbname=postfixadmin user=postfixadmin password=P4ssvv0rD default_pass_scheme = MD5-CRYPT iterate_query = SELECT username AS user FROM mailbox user_query = SELECT CONCAT('/var/mail/vmail/', maildir) AS home, \ CONCAT('maildir:/var/mail/vmail/', maildir) AS mail, \ 5000 AS uid, 5000 AS gid, CONCAT('*:bytes=', quota) AS quota_rule \ FROM mailbox WHERE username = '%u' AND active = 1 password_query = SELECT username AS user, password FROM mailbox \ WHERE username = '%u' AND active='1'

No olvide usar las credenciales correctas de MySQL (dbname, usuario y contraseña).

A continuación, edite el conf.d/10-mail.conf y edite las siguientes variables:

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

… mail_location = maildir:/var/mail/vmail/%d/%n… mail_uid = vmail mail_gid = vmail… first_valid_uid = 5000 last_valid_uid = 5000… mail_privileged_group = vmail… mail_plugins = quota…

Para que la autenticación funcione, abra conf.d/10-auth.conf , edite las siguientes líneas e incluya el archivo auth-sql.conf.ext :

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

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

Abra el conf.d/10-master.conf y conf.d/10-master.conf la siguiente manera:

/etc/dovecot/conf.d/10-master.conf

… service lmtp { unix_listener /var/spool/postfix/private/dovecot-lmtp { mode = 0600 user = postfix group = postfix }… }… service auth {… unix_listener auth-userdb { mode = 0600 user = vmail group = vmail }… unix_listener /var/spool/postfix/private/auth { mode = 0666 user = postfix group = postfix }… }… service auth-worker { user = vmail }… service dict { unix_listener dict { mode = 0660 user = vmail group = vmail } }…

Abra conf.d/10-ssl.conf y habilite SSL / TLS.

/etc/dovecot/conf.d/10-ssl.conf

… ssl = yes… ssl_cert = Make sure you use the correct path to the SSL certificate files.


If you have followed this series from the beginning, you should already have the fullchain.pem , privkey.pem , dhparam.pem files created on your server. For more information about how to create a free Let's encrypt SSL certificate and Diffie–Hellman key check this tutorial.


Thanks to Nevyn for noticing the problem and providing a solution.
… ssl = yes… ssl_cert = Make sure you use the correct path to the SSL certificate files.


If you have followed this series from the beginning, you should already have the fullchain.pem , privkey.pem , dhparam.pem files created on your server. For more information about how to create a free Let's encrypt SSL certificate and Diffie–Hellman key check this tutorial.


Thanks to Nevyn for noticing the problem and providing a solution.

Abra el conf.d/20-imap.conf y active el complemento imap_quota :

/etc/dovecot/conf.d/20-imap.conf

… protocol imap {… mail_plugins = $mail_plugins imap_quota… }…

Abra el conf.d/20-lmtp.conf y conf.d/20-lmtp.conf siguiente manera:

/etc/dovecot/conf.d/20-lmtp.conf

… protocol lmtp { postmaster_address = [email protected] mail_plugins = $mail_plugins }…

Defina los buzones predeterminados en el conf.d/20-lmtp.conf :

/etc/dovecot/conf.d/15-mailboxes.conf

… mailbox Drafts { special_use = \Drafts } mailbox Spam { special_use = \Junk auto = subscribe } mailbox Junk { special_use = \Junk }…

Hay dos tipos diferentes de tamaños de cuota, uno está configurado para todo el dominio y el otro por buzón de usuario. En la parte anterior de esta serie, ya hemos habilitado el soporte de cuota en PostfixAdmin, lo que significa que la información de cuota se almacenará en la base de datos PostfixAdmin.

Ahora necesitamos configurar Dovecot para que se conecte a la base de datos, para manejar los límites de las cuotas y para ejecutar un script que envíe un correo al usuario cuando la cuota del usuario exceda un límite especificado. Para hacerlo, abra el conf.d/90-quota.conf y conf.d/90-quota.conf siguiente manera:

/etc/dovecot/conf.d/90-quota.conf

plugin { quota = dict:User quota::proxy::sqlquota quota_rule = *:storage=5GB quota_rule2 = Trash:storage=+100M quota_grace = 10%% quota_exceeded_message = Quota exceeded, please contact your system administrator. quota_warning = storage=100%% quota-warning 100 %u quota_warning2 = storage=95%% quota-warning 95 %u quota_warning3 = storage=90%% quota-warning 90 %u quota_warning4 = storage=85%% quota-warning 85 %u } service quota-warning { executable = script /usr/local/bin/quota-warning.sh user = vmail unix_listener quota-warning { group = vmail mode = 0660 user = vmail } } dict { sqlquota = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext }

También debemos decirle a Dovecot cómo acceder al diccionario SQL de cuotas. Abra el archivo dovecot-dict-sql.conf.ext y edite las siguientes líneas:

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

… connect = host=127.0.0.1 dbname=postfixadmin user=postfixadmin password=P4ssvv0rD… map { pattern = priv/quota/storage table = quota2 username_field = username value_field = bytes } map { pattern = priv/quota/messages table = quota2 username_field = username value_field = messages }… # map { # pattern = shared/expire/$user/$mailbox # table = expires # value_field = expire_stamp # # fields { # username = $user # mailbox = $mailbox # } # }… Asegúrese de utilizar las credenciales correctas de MySQL (dbname, usuario y contraseña).

Cree el siguiente script de shell que enviará un correo electrónico al usuario si su cuota excede un límite especificado:

/usr/local/bin/quota-warning.sh

#!/bin/sh PERCENT=$1 USER=$2 cat << EOF | /usr/lib/dovecot/dovecot-lda -d $USER -o "plugin/quota=dict:User quota::noenforcing:proxy::sqlquota" From: [email protected] Subject: Quota warning Your mailbox is now $PERCENT% full. EOF

Haga que el script sea ejecutable ejecutando el siguiente comando chmod :

sudo chmod +x /usr/local/bin/quota-warning.sh

Finalmente reinicie el servicio dovecot para que los cambios surtan efecto.

sudo systemctl restart dovecot

Conclusión

A estas alturas ya debería tener un sistema de correo totalmente funcional. En la siguiente parte de esta serie, le mostraremos cómo instalar e integrar Rspamd.

servidor de correo postfix palomar

Esta publicación es parte de la serie Configuración y configuración de un servidor de correo.

Otras publicaciones en esta serie:

• Configurar un servidor de correo con PostfixAdmin • Instalar y configurar Postfix y Dovecot • Instalar e integrar Rspamd • Instalar y configurar Roundcube Webmail