Documenta una prueba de funcionamiento, donde envíes desde tu servidor local al exterior. Muestra el log donde se vea el envío. Muestra el correo que has recibido. Muestra el registro SPF.
Creo las siguientes entradas en el DNS de mi dominio:
![MX](https://i.imgur.com/izykpPC.png)
Donde hay un registro MX que apunta a mail.admichin.es, que a su vez es un registro A que apunta a la IP de mi servidor. Además, hay un registro SPF que apunta a la ip de la máquina.
Además, configuro resolución inversa en la configuración de la VPS:
![Reverse](https://i.imgur.com/Q8x5DC1.png)
Ahora, en la VPS instalo los siguientes paquetes:
```bash
apt update
apt install postfix bsd-mailx -y
```
Durante la configuración, selecciono **Internet Site** y **admichin.es**.
Envío un correo a mi cuenta personal:
```bash
mail robertorodriguezmarquez98@gmail.com
Subject: Prueba de funcionamiento
Hola buenos días
Cc:
```
Vemos el log de postfix:
```bash
tail /var/log/mail.log
```
![Log](https://i.imgur.com/lii209w.png)
Y el correo recibido:
![Correo](https://i.imgur.com/FWNO7aB.png)
### Tarea 2
Documenta una prueba de funcionamiento, donde envíes un correo desde el exterior (gmail, hotmail,…) a tu servidor local. Muestra el log donde se vea el envío. Muestra cómo has leído el correo. Muestra el registro MX de tu dominio.
Ahora envío un correo desde mi cuenta personal a mi servidor:
![Correo](https://i.imgur.com/FWNO7aB.png)
Y compruebo que el correo ha llegado a mi servidor:
![Correo](https://i.imgur.com/JWSTUmj.png)
![Correo](https://i.imgur.com/D0xKQDi.png)
Y el log de postfix:
![Log](https://i.imgur.com/pAWEPrP.png)
## Uso de alias y redirecciones
### Tarea 3
**Usos de alias y redirecciones**. Vamos a comprobar como los procesos del servidor pueden mandar correos para informar sobre su estado. Por ejemplo cada vez que se ejecuta una tarea cron podemos enviar un correo informando del resultado. Normalmente estos correos se mandan al usuario `root` del servidor, para ello:
```bash
crontab -e
```
E indico donde se envía el correo:
```bash
MAILTO=root
```
Puedes poner alguna tarea en el cron para ver como se mandan correo.
Posteriormente usando alias y redirecciones podemos hacer llegar esos correos a nuestro correo personal.
Configura el cron para enviar correo al usuario root. Comprueba que están llegando esos correos al root. Crea un nuevo alias para que se manden a un usuario sin privilegios. Comprueban que llegan a ese usuario. Por último crea una redirección para enviar esos correo a tu correo personal (gmail,hotmail,…).
Voy a crear un script que muestre la fecha y el espacio en el disco. Lo guardo en `/root/script-espacio.sh`:
```bash
#!/bin/bash
echo "##################################"
echo "Fecha y hora: $(date)"
echo "##################################"
echo "Espacio en el disco:"
df -h
```
Ahora creamos la tarea de cron para que se ejecute cada 5 minutos:
```bash
crontab -e
```
Y añadimos las siguientes líneas:
```bash
MAILTO = root
*/5 * ** * /root/script-espacio.sh
```
Cuando pasan 5 minutos, recibimos el correo:
![Correo](https://i.imgur.com/XVtl86N.png)
Ahora voy a crear un alias para que se envíen los correos a un usuario sin privilegios (en este caso, calcetines), editando el fichero `/etc/aliases`:
```bash
root: calcetines
```
Y ejecuto el comando `newaliases` para que se actualicen los alias.
Ahora, cuando pasen 5 minutos, recibimos el correo en el usuario sin privilegios:
![Correo](https://i.imgur.com/aogu98o.png)
Ahora voy a crear una redirección para que se envíen los correos a mi correo personal, editando el fichero `/home/calcetines/.forward`:
```bash
robertorodriguezmarquez98@gmail.com
```
Y ahora, cuando pasen 5 minutos, recibimos el correo en mi correo personal:
![Correo](https://i.imgur.com/UdaG5gg.png)
## Para asegurar el envío
### Tarea 4
Configura de manera adecuada DKIM es tu sistema de correos. Comprueba el registro DKIM en la página https://mxtoolbox.com/dkim.aspx. Configura postfix para que firme los correos que envía. Manda un correo y comprueba la verificación de las firmas en ellos.
}
Voy a instalar el paquete `opendkim`:
```bash
apt install opendkim opendkim-tools -y
```
En el fichero `/etc/opendkim.conf`, edito las siguientes líneas:
Ahora, utilizando el contenido de `/etc/opendkim/keys/admichin.es/default.txt`, añado un registro TXT en el dominio `admichin.es`:
![Registro](https://i.imgur.com/rWLIaWm.png)
Reinicio los servicios:
```bash
systemctl restart opendkim postfix
```
Ahora, cuando envío un correo, se añade la firma DKIM:
![Correo](https://i.imgur.com/SjhdRvn.png)
Finalmente, compruebo la verificación de la firma en la página **mxtoolbox**:
![Verificación](https://i.imgur.com/leht5mi.png)
## Para luchar contra el spam
## Gestión de correos desde un cliente
### Tarea 8
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.
Voy a cambiar el tipo de buzón de los usuarios, editando el fichero `/etc/postfix/main.cf`:
```bash
home_mailbox = Maildir/
```
Ahora instalamos el cliente mutt para poder leer los correos:
```bash
apt install mutt -y
systemctl restart postfix
```
Tengo que hacer la siguiente configuración en cada usuario:
```bash
nano ~/.muttrc
```
```bash
set mbox_type=Maildir
set mbox="~/Maildir"
set folder="~/Maildir"
set spoolfile="~/Maildir"
set record="+.Sent"
set postponed="+.Drafts"
set mask="!^\\.[^.]"
```
Podemos ver el contenido del directorio `Maildir`:
![Directorio](https://i.imgur.com/xJmTIsK.png)
Ahora, cuando envío un correo, se guarda en el buzón Maildir del usuario del sistema correspondiente, y lo podemos leer con mutt:
![Correo](https://i.imgur.com/mCg6V9I.png)
### Tarea 9
Instala configura dovecot para ofrecer el protocolo IMAP. Configura dovecot de manera adecuada para ofrecer autentificación y cifrado.
Instalo dovecot:
```bash
apt install dovecot-imapd -y
```
Modifico el fichero `/etc/dovecot/conf.d/10-ssl.conf` para añadir el certificado que generamos con certbot al crear la página, modificando las siguientes líneas:
Ahora cambiamos la localización de los mailbox en el fichero `/etc/dovecot/conf.d/10-mail.conf`:
```bash
mail_location = maildir:~/Maildir
```
### Tarea 10
Instala un webmail (roundcube, horde, rainloop) para gestionar el correo del equipo mediante una interfaz web. Muestra la configuración necesaria y cómo eres capaz de leer los correos que recibe tu usuario.
Voy a instalar **roundcube** utilizando docker:
```bash
apt install docker.io -y
```
Creo una entrada de tipo CNAME con el nombre webmail:
![CNAME](https://i.imgur.com/dLpPCex.png)
Ahora vamos a crear la configuración en un directorio que montaremos posteriormente por medio de bind mount en el docker;
Ahora podemos acceder a la instancia de roundcube desde el navegador:
![Roundcube](https://i.imgur.com/CEWcKuI.png)
Como se puede ver acabo de recibir el correo del ejercicio de la tarea del cron. Ahora un correo enviado desde fuera:
![Correo enviado desde fuera](https://i.imgur.com/bqHtnNH.png)
### Tarea 11
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.
Usaré los mismos certificados que he generado antes para cifrar los emails que envío y recibo. Para ello, modifico la configuración de postfix en `/etc/postfix/main.cf`:
Configura el cliente webmail para el envío de correo. Realiza una prueba de envío con el webmail.
Esta tarea consiste en poder enviar correos desde el cliente roundcube, y se han realizado las configuraciones necesarias en la tarea 10. Ahora solo queda probarlo:
![Correo enviado desde roundcube](https://i.imgur.com/CGQ8zuf.png)
![Correo enviado desde roundcube](https://i.imgur.com/miQ63i6.png)
## Comprobación final
### Tarea 13
Prueba de envío de correo. En esta [página](https://www.mail-tester.com/) tenemos una herramienta completa y fácil de usar a la que podemos enviar un correo para que verifique y puntúe el correo que enviamos. Captura la pantalla y muestra la puntuación que has sacado.
Enviamos un correo para comprobar la puntuación:
![Correo enviado para comprobar la puntuación](https://i.imgur.com/pt2pp6m.png)
![Correo enviado para comprobar la puntuación](https://i.imgur.com/X5klV3K.png)