Gestión de correos desde un cliente
Warning: This information may be outdated. Please note the date of the post.
Gestión de correos desde un cliente
Tarea 8: Configurar postfix con Maildir
Descripción:
Configura el buzón de los usuarios de tipo Maildir. Envía un correo a tu usuario y comprueba que el correo se ha guardado en el buzón Maildir del usuario del sistema correspondiente. Recuerda que ese tipo de buzón no se puede leer con la utilidad mail.
Configuración:
- Para hacer esta tarea vamos a indicar a postfix en su configuración dónde se van a guardar los nuevos correos.
nano /etc/postfix/main.cf
- Añadimos la siguiente línea
home_mailbox = Maildir/
- Reiniciamos el servicio
sudo systemctl restart postfix
- Ahora vamos a probar si se ha configurado correctamente para ello vamos a instalar el siguiente paquete
sudo apt-get install mailutils
- Una vez instalado vamos a enviar un correo desde la cuenta de debian, comprobaremos que utilizando mail ya no aparece si no que se almacena en el directorio Maildir
Enviamos un correo de prueba a debian
debian@kiara:~$ echo "prueba"| mail -s "email de prueba" debian
Comprobamos que con la utilidad mail ya no podemos visualizarlo.
debian@kiara:~$ mail
No mail for debian
debian@kiara:~$ mailq
Mail queue is empty
Comprobamos que el correo de prueba o los correos de prueba que hemos enviado se han incluido dentro del directorio /Maildir.
debian@kiara:~$ ls Maildir/
cur dovecot.list.index.log dovecot-uidvalidity subscriptions
dovecot.index.cache dovecot.mailbox.log dovecot-uidvalidity.601e9f0c tmp
dovecot.index.log dovecot-uidlist new
debian@kiara:~$ ls Maildir/new/
1612893822.V801I61e44M2366.kiara 1612893826.V801I61e43M8243.kiara
debian@kiara:~$ cat Maildir/new/161289382
1612893822.V801I61e44M2366.kiara 1612893826.V801I61e43M8243.kiara
debian@kiara:~$ cat Maildir/new/1612893826.V801I61e43M8243.kiara
Return-Path: <debian@iesgn05.es>
X-Original-To: debian
Delivered-To: debian@iesgn05.es
Received: by kiara.iesgn05.es (Postfix, from userid 1000)
id 0135161E45; Tue, 9 Feb 2021 18:03:46 +0000 (UTC)
To: debian@iesgn05.es
Subject: email de prueba
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
Message-Id: <20210209180346.0135161E45@kiara.iesgn05.es>
Date: Tue, 9 Feb 2021 18:03:46 +0000 (UTC)
From: Debian <debian@iesgn05.es>
Esto mismo lo podemos hacer con el usuario root y sería el mismo procedimiento.
Tarea 9: Instalación de dovecot. Protocolo IMAP.
Descripción: Instala configura dovecot para ofrecer el protocolo IMAP. Configura dovecot de manera adecuada para ofrecer autentificación y cifrado
9.11. Conceptos:
Dovecot: es un servidor de IMAP Y POP3 de código abierto para sistemas Linux. Puede trabajar con mbox y Maildir.
IMAP: Es un protocolo de acceso a mensajes de Internet, que permite el acceso a mensajes almacenados en un servidor de internet. A través de IMAP se puede tener acceso al correo electrónico teniendo acceso a la red. Se ejecuta en los puertos 143 y 993 (SSL).
Es importante saber que utiliza la sincronización para garantizar que se guarde una copia de los mensajes en los diferentes directorios inicados en el servidor y así quedarán ordenados los correos.
- Pop: Protocolo de oficina de correo. También es usado para la obtencion de mensajes de correo electrónico almacenados en un servidor remoto. Ya no se utliza normalmente.
Diferencias entre IMAP y POP: La diferencia principal entre estos dos protocolos es que IMAP almacena los mensajes en el servidor de correo y sus copias en los directorios de forma ordenada mientras que POP3 los descarga y almacena de forma local sólo en la bandeja de entrada.
Tipos de buzones
Hasta ahora hemos utilizado el buzon mbox a través del protocolo POP3, pero ahora vamos a utlizar el buzón Maildir, en el que los mensajes se guardan en un directorio llamado Maildir, imprescindible para el protocolo que vamos a usar IMAP.
La configuracion de maildir la hemos realizado en la tarea anterior.
9.2. Instalación de dovecot
- Instalamos los paquetes pertintentes que vamos a usar para dovecot.
No es necesario descargar dovecot-pop3d porque en esta práctica solo vamos a usar IMAP, pero puede ser interesante descargarlo para probar su funcionamiento.
sudo apt install dovecot-imapd dovecot-pop3d dovecot-core
9.3. Cifrado
Ahora vamos a crear los certificados con LET’S ENCRYPT. Para que sean de confianza. Los usaremos despues para configurar SSL.
Crear certificados con Let’s Encrypt
- Instalamos cerbot
nano /etc/apt/sources.list
# Agregamos:
deb http://ftp.debian.org/debian buster-backports main
# Actualizamos:
apt-get update
# Instalamos:
apt install certbot -t buster-backports
- Es importante que paremos el servicio de apache o nginx si están en funcionamiento
debian@kiara:~$ sudo systemctl stop nginx
Ejecutamos el proceso para crear los certificados para mail.iesgn05.es
debian@kiara:~$ sudo certbot certonly --standalone -d mail.iesgn05.es
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator standalone, Installer None
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for mail.iesgn05.es
Waiting for verification...
Cleaning up challenges
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/mail.iesgn05.es/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/mail.iesgn05.es/privkey.pem
Your cert will expire on 2021-05-07. To obtain a new or tweaked
version of this certificate in the future, simply run certbot
again. To non-interactively renew *all* of your certificates, run
"certbot renew"
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
9.4. Configuración de postfix y dovecot
- Adoptaremos la siguiente configuración en postfix
sudo nano /etc/postfix/main.cf
# See /usr/share/postfix/main.cf.dist for a commented, more complete version
# Debian specific: Specifying a file name will cause the first
# line of that file to be used as the name. The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
# appending .domain is the MUA's job.
append_dot_mydomain = no
# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h
readme_directory = no
# See http://www.postfix.org/COMPATIBILITY_README.html -- default to 2 on
# fresh installs.
compatibility_level = 2
# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = kiara.iesgn05.es
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = $myhostname, iesgn05.es, kiara.iesgn05.es, localhost.iesgn05.es, localhost
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all
# Con esta línea alojaremos los correos en /Maildir/
home_mailbox = Maildir/
# SMTP-Auth settings
# Esta es la configuración adoptada para dovecot
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions = permit_mynetworks,permit_auth_destination,permit_sasl_authenticated,reject
- Editamos el fichero de configuración de los permisos de acceso para postfix
nano /etc/dovecot/conf.d/10-auth.conf
# Disable LOGIN command and all other plaintext authentications unless
# SSL/TLS is used (LOGINDISABLED capability). Note that if the remote IP
# matches the local IP (ie. you're connecting from the same computer), the
# connection is considered secure and plaintext authentication is allowed.
# See also ssl=required setting.
disable_plaintext_auth = no
. . .
# En este fichero nos aseguramos que se encuentra esta configuracion
auth_mechanisms = plain
¡¡ATENCIÓN!!
En la primera linea si la descomentamos e indicamos un ’no’ , tenemos que ser conscientes de que la seguridad de nuestro servidor está en juego. Se recomienda dejarlo en ‘yes’ para que los usuarios se autentifiquen sólo a través de conexiones seguras con SSL/TLS. Utilizar IMAP sin SSL/TLS se considera imprudente. En este caso le indicaremos que no, ya que, tendremos la configuracion tipo SSL como ‘yes’.
- Cambiamos la configuracion del siguiente fichero de la siguiente manera, estamos modificando la ruta de donde se guardan los correos al directorio personal en la raiz donde se encuentra Maildir.
sudo nano /etc/dovecot/conf.d/10-mail.conf
#mail_location = mbox:~/mail:INBOX=/var/mail/%u
mail_location = maildir:~/Maildir
. . .
# Group to enable temporarily for privileged operations. Currently this is
# used only with INBOX when either its initial creation or dotlocking fails.
# Typically this is set to "mail" to give access to /var/mail.
mail_privileged_group = mail
mail_access_groups = mail
Tendremos que crear también un CNAME en la zona dns que apunte a imap, y asegurarnos que el puerto 143 y el 993 estén abiertos.
Miramos si los puertos están abiertos
debian@kiara:~$ sudo netstat -putona | grep '143'
tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN 313/dovecot off (0.00/0/0)
tcp6 0 0 :::143 :::* LISTEN 313/dovecot off (0.00/0/0)
debian@kiara:~$ sudo netstat -putona | grep '993'
tcp 0 0 0.0.0.0:993 0.0.0.0:* LISTEN 1096/dovecot off (0.00/0/0)
tcp6 0 0 :::993 :::* LISTEN 1096/dovecot off (0.00/0/0)
- Creamos el CNAME en la zona DNS

- Habilitamos la opción ‘protocols’ estableciendo como valor imap
sudo nano /etc/dovecot/dovecot.conf
# Añadir la siguiente linea
protocols = imap
# Buscar y descomentar la siguiete línea
listen = *, ::
- Comprobamos que está habilitada la configuación para ssl, pero en este caso hemos reemplazado los antiguos certificados por los que hemos creado con letsencrypt. Estos certificados los hemos copiado al directorio /ect/dovecot/private
sudo nano /etc/dovecot/conf.d/10-ssl.conf
## SSL settings
# SSL/TLS support: yes, no, required. <doc/wiki/SSL.txt>
ssl = yes
# PEM encoded X.509 SSL/TLS certificate and private key. They're opened before
# dropping root privileges, so keep the key file unreadable by anyone but
# root. Included doc/mkcert.sh can be used to easily generate self-signed
# certificate, just make sure to update the domains in dovecot-openssl.cnf
#ssl_cert = </etc/dovecot/private/dovecot.pem
#ssl_key = </etc/dovecot/private/dovecot.key
ssl_cert = </etc/dovecot/private/fullchain.pem
ssl_key = </etc/dovecot/private/privkey.pem
- Comprobamos nuestra configuracion de postfix
debian@kiara:~$ sudo postconf -n
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = no
biff = no
compatibility_level = 2
home_mailbox = Maildir/
inet_interfaces = all
inet_protocols = all
mailbox_size_limit = 0
mydestination = $myhostname, iesgn05.es, kiara.iesgn05.es, localhost.iesgn05.es, localhost
myhostname = kiara.iesgn05.es
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
myorigin = /etc/mailname
readme_directory = no
recipient_delimiter = +
relayhost =
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
smtpd_recipient_restrictions = permit_mynetworks,permit_auth_destination,permit_sasl_authenticated,reject
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_path = private/auth
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
- Reiniciamos los servicios
sudo systemctl restart postfix
sudo systemctl restart dovecot
- Comprobamos los puertos
debian@kiara:~$ sudo netstat -tlpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:993 0.0.0.0:* LISTEN 20901/dovecot
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 658/mysqld
tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN 20901/dovecot
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 568/sshd
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 20572/master
tcp6 0 0 :::993 :::* LISTEN 20901/dovecot
tcp6 0 0 :::143 :::* LISTEN 20901/dovecot
tcp6 0 0 :::22 :::* LISTEN 568/sshd
tcp6 0 0 :::25 :::* LISTEN 20572/master
9.5. Cuenta de correo en Evolution
- Ahora vamos a ir a Evolution desde nuestra máquina anfitriona. Y seguiremos los siguientes pasos:
Archivo > Nuevo > Cuenta de correo
Indicamos la dirección de correo que en este caso es debian@iesgn05.es y el nombre que le vayamos a poner a la cuenta para identificarla.

Una vez verificada la direccion del servidor nos mostrará el protocolo que ofrece, en este caso solo estamos ofreciendo IMAP por lo que se nos pondrá por defecto.
Añadiremos el servidor donde ofrecemos imap, en este caso es imap.iesgn05.es que es el CNAME que agregamos previamente a nuestro DNS. Indicaremos el puerto 993 ya que, es el puerto seguro por donde va cifrada la conexión, con el método de cifrado TLS como habiamos configurado en los ficheros anteriormente.
La autentificación será por contraseña, en este caso es la contraseña de nuestro usuario debian.

Dejaremos por defecto las opciones de recepción

En este apartado veremos que se usará SMTP para la conexión al servidor. Indicaremos en este caso es smtp.iesgn05.es y el puerto 465. (Esto aún no funcionará porque no hemos habilitado el SMPTPS)

Aquí nos mostrará un resumen de nuestra configuración

Si previamente en la configuración no hemos cambiado los certificados nos pasará lo siguiente:
Le daremos a Siguiente y nos preguntará por el certificado que hemos proporcionado, como no esta firmado por una autoridad certificadora conocida nos preguntará si queremos aceptarla. En este caso como sabemos que es nuestra le damos a Aceptar permanentemente.

Pero en este caso no nos lo ha preguntado porque confía en nuestro certificado expedido por Let’s Encrypt.
Ahora podemos comprobar que se ha sincronizado por el protocolo IMAP nuestra cuenta de correo en Evolution, en la siguiente imagen podemos ver todos los correos de prueba que hemos recibido y se encuentran en la bandeja de entrada:

Prueba de funcionamiento
Vamos a enviar un correo desde Gmail a debian@iesgn05.es y comprobamos que llega a la bandeja de entrada:


Podemos ver el log de la prueba que hemos realizado
debian@kiara:~$ sudo tail -f /var/log/mail.log
Feb 9 20:10:34 kiara dovecot: imap-login: Login: user=<debian>, method=PLAIN, rip=46.234.128.74, lip=146.59.196.84, mpid=22103, TLS, session=<ieAV4ey6Phgu6oBK>
Feb 9 20:10:36 kiara postfix/smtpd[22106]: warning: database /etc/aliases.db is older than source file /etc/aliases
Feb 9 20:10:36 kiara postfix/smtpd[22106]: connect from mail-oo1-f41.google.com[209.85.161.41]
Feb 9 20:10:36 kiara postfix/smtpd[22106]: DFE3E620CB: client=mail-oo1-f41.google.com[209.85.161.41]
Feb 9 20:10:36 kiara postfix/cleanup[22115]: DFE3E620CB: message-id=<CA+p9fxpwk2ggF9rrYUC77m6Dm1cViAuqz7vz5+W8hAAV==KQWw@mail.gmail.com>
Feb 9 20:10:36 kiara postfix/qmgr[20575]: DFE3E620CB: from=<cgarmai95@gmail.com>, size=2927, nrcpt=1 (queue active)
Feb 9 20:10:36 kiara postfix/local[22116]: warning: database /etc/aliases.db is older than source file /etc/aliases
Feb 9 20:10:36 kiara postfix/local[22116]: DFE3E620CB: to=<debian@iesgn05.es>, relay=local, delay=0.02, delays=0.01/0.01/0/0, dsn=2.0.0, status=sent (delivered to maildir)
Feb 9 20:10:36 kiara postfix/qmgr[20575]: DFE3E620CB: removed
Feb 9 20:10:37 kiara postfix/smtpd[22106]: disconnect from mail-oo1-f41.google.com[209.85.161.41] ehlo=2 starttls=1 mail=1 rcpt=1 bdat=1 quit=1 commands=7
Tarea 11: Mandar correos desde un cliente remoto.
Descripción:
Configura de manera adecuada postfix para que podamos mandar un correo desde un cliente remoto. La conexión entre cliente y servidor debe estar autentificada con SASL usando dovecor y además debe estar cifrada. Para cifrar esta comunicación puedes usar dos opciones:
- ESMTP + STARTTLS: Usando el puerto 567/tcp enviamos de forma segura el correo al servidor.
- SMTPS: Utiliza un puerto no estándar (465) para SMTPS (Simple Mail Transfer Protocol Secure). No es una extensión de smtp. Es muy parecido a HTTPS.
Elige una de las opciones anterior para realizar el cifrado. Y muestra la configuración de un cliente de correo (evolution, thunderbird, …) y muestra como puedes enviar los correos.
11.1. SMTPS. Configuración
Previamente hemos agregado un CNAME indicando smtp.iesgn05.es para kiara.iesgn05.es en la zona DNS.
Ahora vamos a intentar mandar un correo desde el servidor a gmail.
Creamos el certificado con LetsEncrypt para smtp, previamente hemos creado un CNAME con SMTP para kiara.iesgn05.es
sudo certbot certonly --standalone -d smtp.iesgn05.es
- Para usar SMTPS hay que descomentar las siguientes lineas
sudo nano /etc/postfix/master.cf
smtp inet n - y - - smtpd
smtps inet n - y - - smtpd
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=$mua_client_restrictions
-o milter_macro_daemon_name=ORIGINATING
- Editamos el fichero de configuracion de postfix, cambiamos la configuracion indicando los nuevos certificados. Añadiremos la siguiente configuración de forma que activamos TLS para que nuestros correos sean seguros y reconozcan los certificados.
debian@kiara:~$ sudo nano /etc/postfix/main.cf
...
# TLS parameters
smtpd_use_tls=yes
smtpd_tls_key_file = /etc/letsencrypt/live/smtp.iesgn05.es/privkey.pem
smtpd_tls_cert_file = /etc/letsencrypt/live/smtp.iesgn05.es/fullchain.pem
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtp_tls_security_level = may
smtpd_tls_security_level = may
smtp_tls_note_starttls_offer = yes
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
...
- Reiniciamos los servicios
debian@kiara:~$ sudo systemctl restart postfix
debian@kiara:~$ sudo systemctl restart dovecot
- Comprobamos los puertos. Vemos que se ha abierto el puerto 465 de SMTPS
debian@kiara:~/Maildir/new$ sudo netstat -tlnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:993 0.0.0.0:* LISTEN 32704/dovecot
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 658/mysqld
tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN 32704/dovecot
tcp 0 0 0.0.0.0:465 0.0.0.0:* LISTEN 1157/master
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 568/sshd
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 1157/master
tcp6 0 0 :::993 :::* LISTEN 32704/dovecot
tcp6 0 0 :::143 :::* LISTEN 32704/dovecot
tcp6 0 0 :::465 :::* LISTEN 1157/master
tcp6 0 0 :::22 :::* LISTEN 568/sshd
tcp6 0 0 :::25 :::* LISTEN 1157/master
Funcionamiento
- En Evolution cambiamos la configuracion de smtp de la siguiente forma

- Probamos enviar algun correo al nuestro personal

- Vemos que lo hemos recibido en gmail correctamente y conoce el certificado ya que está expedido por la autoridad de LetsEncrypt


- Lo contestamos y comprobamos que recibe y envía correctamente correos
