?CORREO LINUX ? INSTALAR y Configurar Postfix? (Dovecot+⚡Thunderbird+Gmail) ?Ubuntu
Tabla de contenido:
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.
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:
… 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
:
… 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:
… 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.
… 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
:
… protocol imap {… mail_plugins = $mail_plugins imap_quota… }…
Abra el
conf.d/20-lmtp.conf
y
conf.d/20-lmtp.conf
siguiente manera:
… protocol lmtp { postmaster_address = [email protected] mail_plugins = $mail_plugins }…
Defina los buzones predeterminados en el
conf.d/20-lmtp.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:
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:
… 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 palomarEsta 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 WebmailConfigurar y configurar AVG Antivirus Gratis para tareas adicionales
AVG Antivirus Free para Windows 10 / 8.1 se puede usar para configurar varias tareas adicionales y permanezca protegido cuando navega en línea o pasa por correo electrónico.
Configurar y configurar Exchange ActiveSync en Windows Phone 7
Este tutorial le dice cómo configurar Exchange ActiveSync en su dispositivo Windows Phone 7, Usar mi cuenta de Office 365 como ejemplo.
Configurar o configurar Hotmail en iPad / iPhone / iPod Touch usando Active Sync
Este artículo le mostrará paso a paso paso a paso cómo configurar Windows Live Hotmail en su iPad, iPhone y iPod Touch utilizando Active Sync.







