
ÍNDICE
La documentación abarcará lo siguiente:
1.Implementación de un servidor de correo con buzones.
1.3. Implementación y configuración de ESMTP Postfix.
1.3.1. Selección de cifrados.
1.3.2. Configurando Postfix.
1.3.3. Creando los archivos de controles para Postfix-LDAP.
1.3.4. Comprobando la integración con LDAP y mapeos de aliases.
1.4.Implementación y configuración de Dovecot.
1.4.1.Configurando Dovecot
1.4.2.Creando archivo de control para Dovecot-LDAP
1.4.3.Script “quota-warnings.sh”
2. Implementación del cliente de correo web
2.2. Fortaleciendo la seguridad del cliente de correo web
2.3. Configuraciones desde la WebGUI de RainLoop
3.1. Outlook 2016
3.2. Outlook 2019
3.3. Thunderbird 78.8.0
4.1. Filtrado de correos por categorías
4.2. Filtrado para el remitente y destinatario
4.3. Filtrado para encabezado, adjuntos y cuerpo del correo
6. Listas de distribución con Mailman 2
6.1. Configuración de Nginx para Mailman 2
6.2. Instalación y configuración de Mailman 2
6.3. Integración de Mailman 2 a Postfix
6.4. Creando otras listas en Mailman 2
7. Rotación de logs y envío de reportes
8. Comprobando la encriptación TLS
9. Iptables
1.4. Implementación y configuración de Dovecot.
En los pasos anteriores ya usted instaló Dovecot y sus paquetes asociados, a continuación, se describe como configurar el mismo para que se integre a un AD DC.
Generando los certificados SSL para Dovecot:
cd /etc/dovecot openssl req -new -x509 -newkey rsa:2048 -days 730 -keyout privkey.pem -out dovecot.pem
-Pide entrar una contraseña: 123456
-Confirmar la contraseña: 123456
Deberá devolver algo como esto, a medida que se vayan respondiendo las preguntas:
Country Name (2 letter code) [AU]:CU State or Province Name (full name) [Some-State]:HABANA Locality Name (eg, city) []:LaHabana Organization Name (eg, company) [Internet Widgits Pty Ltd]:EMPRESA Organizational Unit Name (eg, section) []:REDES Common Name (e.g. server FQDN or YOUR name) []:dovecot.empresa.midominio.cu Email Address []:[email protected]
Generando archivo “.pem”:
openssl rsa -in privkey.pem -out privkey.pem
Pide entrar una contraseña: 123456
cat privkey.pem >> dovecot.pem
Generamos el certificado para Dovecot:
openssl req -new -x509 -days 730 -nodes -out /etc/dovecot/dovecot.pem -keyout /etc/dovecot/dovecot.pem
Deberá devolver algo como esto, a medida que se vayan respondiendo las preguntas:
Country Name (2 letter code) [AU]:CU State or Province Name (full name) [Some-State]:HABANA Locality Name (eg, city) []:LaHabana Organization Name (eg, company) [Internet Widgits Pty Ltd]:EMPRESA Organizational Unit Name (eg, section) []:REDES Common Name (e.g. server FQDN or YOUR name) []:dovecot.empresa.midominio.com Email Address []:[email protected]
Generando archivo “.pem”:
openssl rsa -in privkey.pem -out privkey.pem cat privkey.pem >> dovecot.pem
Otorgando los permisos correctos:
chmod 0444 /etc/dovecot/dovecot.pem chmod 0400 /etc/dovecot/privkey.pem
Haciendo una copia del archivo “dovecot.pem” para el directorio “/etc/dovecot/private/”:
cp /etc/dovecot/dovecot.pem /etc/dovecot/private/dovecot.pem
1.4.1 Configurando Dovecot
En este caso se utiliza un método de configuración no habitual para Dovecot, utilizando un único archivo de configuración, por tanto:
mv /etc/dovecot/dovecot.conf{,.orig} nano /etc/dovecot/dovecot.conf
Agregue el siguiente contenido, adaptando a su ejemplo:
listen = * protocols = pop3 imap login_log_format = %$: %s login_log_format_elements = user=<%u> method=%m rip=%r lip=%l %c deliver_log_format = msgid=%m: %$ : Subject: %s log_timestamp = "%Y-%m-%d %H:%M:%S " login_greeting = Dovecot ready OK+. mail_access_groups = vmail # Ruta para los buzones de correo mail_location = maildir:/home/vmail/%d/%n/Maildir:INDEX=/home/vmail/%d/%n/Maildir mail_log_prefix = "%Us(%u): " maildir_stat_dirs = yes log_path = syslog info_log_path = syslog mail_uid = 5000 mail_gid = 5000 first_valid_uid = 5000 last_valid_uid = 5000 mail_plugins = quota mailbox_alias acl mail_log notify mail_debug = no auth_verbose = no auth_debug = no auth_debug_passwords = no auth_verbose_passwords = plain debug_log_path = syslog verbose_proctitle = no #===== # TLS #============================================== # Ruta al certificado y llave ssl_cert = </etc/dovecot/dovecot.pem ssl_key = </etc/dovecot/private/dovecot.pem # Lista de cifrados a ser usados por el servidor ssl_cipher_list = ECDHE+AESGCM:-ECDSA:@STRENGTH # Deshabilitar auth sin el uso de la encriptacioon disable_plaintext_auth = yes ssl = yes verbose_ssl = no # Establecer la preferencia del orden de cifrado por el servidor ssl_prefer_server_ciphers = yes # Especificamos el protocol miinimo a usar # Debe entenderse que no todos los dispositivos soportan TLSv1.3, especificarlo incrementa a seguridad, pero sacrifica la conectividad de clientes de correo externos mas antiguos o incompatibles ssl_min_protocol = TLSv1.2 #============================================== mail_temp_dir = /tmp auth_username_chars = abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@ auth_mechanisms = plain login deliver_log_format = from=%{from}, envelope_sender=%{from_envelope}, subject=%{subject}, msgid=%m, size=%{size}, %$ service stats { unix_listener stats-reader { group = mail mode = 0666 } unix_listener stats-writer { group = mail mode = 0666 } } service anvil { unix_listener anvil { group = mail mode = 0666 } } service auth { unix_listener /var/spool/postfix/private/auth { user = postfix group = postfix mode = 0666 } unix_listener auth-master { user = vmail group = vmail mode = 0666 } unix_listener auth-userdb { user = vmail group = vmail mode = 0660 } user = root } # Mapeo de las cuentas virtuales de correo userdb { args = /etc/dovecot/dovecot-ldap.conf driver = ldap } passdb { args = /etc/dovecot/dovecot-ldap.conf driver = ldap } plugin { mailbox_alias_old = Sent mailbox_alias_new = Sent Messages mailbox_alias_old2 = Sent mailbox_alias_new2 = Sent Items mail_log_events = delete undelete copy expunge mailbox_delete mailbox_rename mail_log_fields = uid box msgid size from subject trash = /etc/dovecot/trash.conf # Cuota para el correo definida desde el AD DC quota = maildir:User quota quota_rule2 = Trash:storage=+100M quota_warning = storage=95%% quota-warning 95 %u quota_warning2 = storage=80%% quota-warning 80 %u quota_grace = 10%% # 10% es el valor por defecto quota_status_success = DUNNO quota_status_nouser = DUNNO quota_status_overquota = "552 5.2.2 Mailbox is full" } service dict { unix_listener dict { mode = 0660 user = vmail group = vmail } } namespace { type = private separator = / prefix = inbox = yes mailbox Sent { auto = subscribe special_use = \Sent } mailbox "Sent Messages" { auto = no special_use = \Sent } mailbox "Sent Items" { auto = no special_use = \Sent } mailbox Drafts { auto = subscribe special_use = \Drafts } mailbox Trash { auto = subscribe special_use = \Trash } mailbox "Deleted Messages" { auto = no special_use = \Trash } mailbox Junk { auto = subscribe special_use = \Junk } mailbox Spam { auto = no special_use = \Junk } mailbox "Junk E-mail" { auto = no special_use = \Junk } mailbox Archive { auto = no special_use = \Archive } mailbox Archives { auto = no special_use = \Archive } } protocol lda { mail_plugins = $mail_plugins lda_mailbox_autocreate = yes lda_mailbox_autosubscribe = yes info_log_path = syslog log_path = syslog mail_plugin_dir = /usr/lib/dovecot/modules mail_plugins = $mail_plugins postmaster_address = [email protected] sendmail_path = /usr/lib/sendmail } protocol imap { mail_max_userip_connections = 10 mail_plugin_dir = /usr/lib/dovecot/modules imap_client_workarounds = tb-extra-mailbox-sep mail_plugins = $mail_plugins imap_acl } protocol pop3 { mail_plugins = $mail_plugins pop3_client_workarounds = outlook-no-nuls oe-ns-eoh pop3_uidl_format = %08Xu%08Xv mail_max_userip_connections = 10 pop3_logout_format = top=%t/%p, retr=%r/%b, del=%d/%m, size=%s mail_plugin_dir = /usr/lib/dovecot/modules mail_plugins = $mail_plugins } # Procesos de auth habilitados service imap-login { inet_listener imap { address = * port = 143 } inet_listener imaps { address = * port = 993 ssl = yes } service_count = 1 } service pop3-login { inet_listener pop3 { address = * port = 110 } inet_listener pop3s { address = * port = 995 } service_count = 1 } service imap { process_limit = 512 vsz_limit = 1 G } service pop3 { process_limit = 512 vsz_limit = 1 G } service quota-warning { executable = script /config/scripts/quota-warning.sh unix_listener quota-warning { user = vmail } } service quota-status { executable = quota-status -p postfix inet_listener { port = 12340 } client_limit = 1 }
Agregando el archivo de configuración para la papelera:
nano /etc/dovecot/trash.conf
Agregue el siguiente contenido:
1 Spam 2 Trash
Reiniciamos el servicio:
systemctl restart dovecot.service
Comprobando el soporte para SSL/TLS para IMAPS:
openssl s_client -servername dovecot.empresa.midominio.cu -connect dovecot.empresa.midominio.cu:imaps
A lo que debe responder, algo similar a lo siguiente:
CONNECTED(00000003) depth=0 C = CU, ST = HABANA, L = LaHabana, O = EMPRESA, OU = REDES, CN = dovecot.empresa.midominio.cu, emailAddress = [email protected] verify error:num=18:self signed certificate verify return:1 depth=0 C = CU, ST = HABANA, L = LaHabana, O = EMPRESA, OU = REDES, CN = dovecot.empresa.midominio.cu, emailAddress = [email protected] verify return:1 # [...] +OK Dovecot ready OK+.
Comprobando el soporte para SSL/TLS para POP3S:
openssl s_client -servername dovecot.empresa.midominio.cu -connect dovecot.empresa.midominio.cu:pop3s
A lo que debe responder, algo similar a lo siguiente:
CONNECTED(00000003) depth=0 C = CU, ST = HABANA, L = LaHabana, O = EMPRESA, OU = REDES, CN = dovecot.empresa.midominio.cu, emailAddress = [email protected] verify error:num=18:self signed certificate verify return:1 depth=0 C = CU, ST = HABANA, L = LaHabana, O = EMPRESA, OU = REDES, CN = dovecot.empresa.midominio.cu, emailAddress = [email protected] verify return:1 # [...] +OK Dovecot ready OK+.
1.4.2 Creando archivo de control para Dovecot-LDAP
Creando el archivo de conexión con el AD DC:
nano /etc/dovecot/dovecot-ldap.conf
Agregue el siguiente contenido y modifiquesegún sus datos de red:
hosts = dc1.empresa.midominio.cu:389 auth_bind = yes ldap_version = 3 dn = [email protected] dnpass = Admin*123 base = OU=Usuarios,DC=empresa,DC=midominio,DC=cu deref = never scope = subtree user_filter = (&(objectClass=person)(mail=%u)(!(userAccountControl:1.2.840.113556.1.4.803:=2))) user_attrs = =home=/home/vmail/%Ld/%Ln/,=mail=maildir:/home/vmail/%d/%n/Maildir,=quota_rule=*:bytes=%{ldap:physicalDeliveryOfficeName} pass_filter = (&(objectClass=person)(mail=%u)(!(userAccountControl:1.2.840.113556.1.4.803:=2))) pass_attrs = userPassword=password default_pass_scheme = CRYPT
1.4.3. Script “quota-warnings.sh”
Creando script de aviso, en caso que un usuario sobrepase la cuota:
mkdir -p /config/scripts nano /config/scripts/quota-warning.sh
Agregue el siguiente contenido y modifique lo que aparece resaltado según sus datos de red:
#!/bin/sh PERCENT=$1 USER=$2 MAILDOMAIN=`/bin/cat /etc/mailname` cat << EOF | /usr/lib/dovecot/dovecot-lda -d $USER -o "plugin/quota=maildir:User quota:noenforcing" From: postmaster@$MAILDOMAIN Subject: Advertencia de cuota por $PERCENT% de uso. Su buzon solo puede almacenar una cantidad limitada de correo. Actualmente esta al $PERCENT% de su capacidad. Si usted alcanza el 100%, entonces los nuevos correos no podrán ser almacenados. Gracias por su comprensión. EOF
Asignando permisos de ejecución al script:
chmod 755 /config/scripts/quota-warning.sh
Integrando Postfix con el sistema de cuotas de Dovecot, integradas al AD DC:
nano /etc/postfix/main.cf
En el apartado “RESTRICCIONES”, el fragmento relacionado con “smtpd_relay_restrictions =” descomentamos la siguiente línea:
# [...] smtpd_relay_restrictions = # [...] check_policy_service inet:127.0.0.1:12340, # [...]
Recargamos Postfix y reiniciamos Dovecot:
systemctl reload postfix.service systemctl restart dovecot.service
Las cuotas pueden ser como figuran en los siguientes ejemplos:
- 520 = 520 KILOBYTE
- 1M = 1 MEGABYTE
- 1G = 1 GIGABYTE
- 0 (SIN CUOTA)
#========================================
NOTA:
En caso de no asignar cuota a algún usuario, tras intentar autenticarse con dicho usuario, nos dará un error de autenticación. En los logs el error de autenticación es reflejado:
LDA([email protected]): Fatal: Failed to initialize quota: Invalid quota root quota: Invalid rule *:bytes=: Invalid bytes limit:
Si se envían correos por IMAP, aún cuando se conecte por POP3, solo se descargarán aquellos correos que se encuentren en la bandeja de entrada y no los enviados. Esto provocara de que, aún se mantengan ocupando espacio en el buzón del usuario y consumiendo parte de su cuota. El usuario debe borrar dichos correos desde el webmail y de su papelera de reciclaje.
#========================================
Se puede prescindir de las RSAT de Windows y agregar la cuota del usuario por comandos de samba, especificando la opción: «–physical-delivery-office=», que corresponde al campo “physicalDeliveryOfficeName”, usando las opciones del comando “samba-tool”. En cambio, si se desea configurar las cuotas, haciendo uso de las RSAT de Windows, basta con ir a la pestaña “General”, en el combo editable “Oficina” y agregar la cuota del usuario.
Si se alcanza alguno de los limites para alerta de quota definidos en dovecot (80% y 90%), desde un cliente configurado por IMAP, como sería por ejemplo en el webmail, debería mostrarnos el siguiente mensaje:
Si se intenta enviar un mensaje que sobrepasa el límite de cuota definido para almacenamiento en el buzón de usuario, aparecerá lo siguiente en los logs del correo:
Mar 21 17:03:30 mail dovecot: LDA([email protected]): [email protected], envelope_sender=MAILER-DAEMON, subject=Rejected: test, msgid=<[email protected]>, size=1828, rejected: Quota exceeded (mailbox for user is full)
El usuario no podrá enviar correos hasta tanto no vacíe espacio en su buzón.
Después del primer inicio de sesión exitoso para los usuarios de correo, si listamos el directorio de los buzones, por ejemplo:
ls /home/vmail/empresa.midominio.cu/
Debería poder aparecer los buzones de los usuarios que lograron iniciar una conexión exitosa por vez primera:
u3apellido usuario1.apellido usuario2
Hasta este punto se tiene configurado Dovecot, con soporte para IMAP, IMAPS, POP3, POP3S y STARTTLS.
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36
Me pasa lo mismo con los comandos openssl, al final me da error
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:87.0) Gecko/20100101 Firefox/87.0
Saludos
Por fin, en lo que se muestra en el comentario anterior, es así
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:87.0) Gecko/20100101 Firefox/87.0
Da OK, pero también da otros errores cómo se muestra a continuación.
Favor de decirme si es algo normal.
openssl s_client -servername dovecot.empresa.midominio.cu -connect dovecot.empresa.midominio.cu:imaps
#devuelve al final
read R BLOCK
* OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ AUTH=PLAIN AUTH=LOGIN] Dovecot ready OK+.
* BAD Error in IMAP command received by server.
* BAD Error in IMAP command received by server.
* BYE Too many invalid IMAP commands.
closed
*******************************************************************
openssl s_client -servername dovecot.empresa.midominio.cu -connect dovecot.empresa.midominio.cu:pop3s
#devuelve al final
—
read R BLOCK
+OK Dovecot ready OK+.
-ERR Unknown command.
-ERR Unknown command.
-ERR Unknown command.
-ERR Too many invalid bad commands.
closed
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:87.0) Gecko/20100101 Firefox/87.0
No deberia dar error. Espero que estes adaptando a tu dominio y nombres FQDN propios de tu red o al menos, un escenario espejo con respecto al mio.
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:87.0) Gecko/20100101 Firefox/87.0
Sí, lo he adaptado a mi red. de todas formas seguiré probando. Saludos