8. El Correo Electrónico#

8.1. ¿De qué va este tema?#

Se trata de usar un servicio de correo electrónico, conociendo los protocolos, la estructura del mensaje y usando clientes y servidores.

8.2. Clases#

Le dedicaremos unas 16 sesiones de clase

8.2.1. El correo electrónico#

  1. El correo Electrónico

    1. Origen (email vs smail)

    2. La Dirección de correo Electrónico: usuario at dominio (registro mx )

  2. Funcionamiento del servicio

    https://upload.wikimedia.org/wikipedia/commons/thumb/8/83/C%C3%B3mo_funciona_el_e-mail.svg/1234px-C%C3%B3mo_funciona_el_e-mail.svg.png
  3. Protocolos:

    1. SMTP (el principal)

    2. IMAP (recepción). Antes POP

  4. Clientes .

    1. En consola

    2. Escritorio / App

    3. Webmail

  5. Servidores

    1. Transportan información de un equipo a otro (son carteros)

    2. A veces son clientes, a veces servidores

    3. No siempre se relacionan directamente con el usuario

Actividad. Revisar la documentación

Revisa la documentación de la clase

Actividad. Instala un cliente de correo electrónico

Instala un cliente de correo electrónico de escritorio ( que tenga una buena funcionalidad ) para usar con tu/s proveedor/es ( por ejemplo con gmail ).

Yo uso Mozilla Thunderbird .

8.2.2. El Mensaje de correo#

  1. Escritura de un Mensaje

  2. Estructura : RFC 5322

    1. Cabecera

    2. Cuerpo

  3. Cabecera de un email:

    1. Campos ( IANA Message Headers )

    2. Valores

  4. Cuerpo de un mensaje:

    1. texto

    2. y uso de MIME

  5. Analizar un mensaje de correo:

    1. ¿Cómo veo un mensaje de correo completo?: depende del cliente (hay hay servicios web que lo hacen)

    2. Tiene varios campos y valores: Understanding an Email Header

  6. ¿Cómo es un buzón de correo de un usuario? Formatos de Almacenamiento:

    1. Archivo mbox . Un solo documento.

    2. Directorio Maildir . Un mensaje -> un archivo.

    3. Sistemas propietarios, por ejemplo PST

Actividad. Analizar la estructura de un mensaje

Analizar un mensaje completo (por ejemplo este)

  1. ¿Quién origina el mensaje?

  2. ¿Quién es el destino? ¿Hay más de un destino?

  3. ¿Cual es el texto del mensaje?

  4. ¿Tiene algún archivo adjunto? ¿Cuántos?

  5. ¿Por cuantos servidores ha pasado?

  6. ¿Cuánto tiempo tardó en entregarse?

  7. Si respondo al mensaje, ¿quien lo recibe?

  8. ¿En qué RFC puedo buscar el campo DKIM-Signature?

  9. ¿Qué tipo de archivo adjunto iba en el mensaje?

  10. ¿Qué cliente de correo usa el remitente?

8.2.3. El cliente de correo electrónico#

  1. Usa un cliente con IMAP

  2. Clientes WebMail

    • Muy útiles: desde cualquier parte y dispositivo

    • Con algunas trampas: privacidad y productividad

  3. Configurar mi cuenta de correo (básico):

    1. Servidor Saliente (SMTP): Proceso de envío de un mensaje

    2. Servidor Entrante (IMAP): Proceso de recepción de un mensaje

    3. Y datos genéricos: usuario/contraseña, nombre de la cuenta, dirección de correo, etc

  4. Configurar mi cuenta de correo (avanzado)

    1. Funcionalidad extra en los servidores

    2. Almacenamiento: carpetas, disco, archivo, etc

    3. Redaccion (citas, firmas, …) y Contactos (local o remoto)

  5. El cliente mail (en consola):

    1. Ideal para probar el sistema

    2. Ideal para programación (scripting)

    3. Revisa la variable MAIL (donde se almacena el mensaje)

  6. ¿ Cual es el mejor ? Depende.

Actividad. Usa un cliente de correo electrónico (Escritorio)

Revisa toda la funcionalidad que puedas de un cliente de correo (el que quieras, pero que tenga una buena funcionalidad), algunas tareas concretas:

  1. Configurar varias cuentas de correo (en un sólo cliente)

  2. Configurar un filtro que guarde en una carpeta automáticamente (SI es de X dirección guardar en X carpeta)

  3. Buscar los mensajes de una dirección concreta entre un rango de fechas

  4. Ver la conversación y/o contexto de un mensaje

  5. Buscar una extensión (plugin) de una funcionalidad extra que te interese

Actividad. Usa un cliente de correo electrónico (Consola)

  1. Envía un mail, con copia, usando sólo la consola

  2. Envía un mail con la fecha actual del sistema

  3. Envía un mail con todos los paquetes instalados (dpkg -l)

  4. Envía un mail, cada 15 minutos, con los procesos que están corriendo en el sistema

  5. Envía un correo, cada hora, con las últimas 20 líneas de tu servidor SSH

8.2.4. Seguridad en el Mensaje#

  1. Necesidades:

    1. Firmado:

      1. Autenticación (quien soy)

      2. Integridad (no se puede modificar) y

      3. no repudio (quien lo envió)

    2. Cifrado:

      1. Confidencialidad

      2. Privacidad

  2. Problemas con el mensaje:

    1. no deseado SPAM . Grave (p.ej spam en España )

    2. falso ( bulo ). Preocupante

    3. engaños ( phising ). Preocupante

  3. Recomendaciones Incibe (básicas)

  4. Sistemas:

    1. Con certificación ( S/MIME ). Recomendado (pero menos flexible)

    2. Sin certificación ( openPGP ). Más flexible (pero ¿quien eres realmente?)

  5. Configuración ( Uso de Certificados FNMT ):

    1. Administrar credenciales (certificados o claves)

    2. Añadir firmar y/o cifrado al mensaje

  6. Ejemplo de servicio seguro: ProtonMail

    1. Correo Seguro (incluso fuera de su ámbito)

    2. Equilibrio seguridad vs usabilidad

Actividad. Uso de Firma Electrónica

  1. Envíame un correo electrónico con una firma electrónica válida.

  2. Envíame un correo electrónico, encriptado y firmado ¿Qué nos haría falta?

8.2.5. Productividad con el Correo Electrónico#

  1. Escribir (bien) un correo electrónico

  2. Los diez mandamientos del email

  3. Vacía tu Bandeja de Entrada (Inbox Zero): La Técnica BARA:

    1. Borrar

    2. Archivar

    3. Responder

    4. Apuntar

  4. No engancharse ( Reinforcing Machine ) y Apagarlo

  5. Usar el canal adecuado (síncrono o asíncrono y presencial o electrónico) según la necesidad real

    1. Mejor comunicación (la humana, por la información no verbal). Síncrona y Real

    2. Menos costosa (la electrónica, por la conectividad). Asíncrona (en general)

    3. La intermedia (mensajería instantánea): la peor (pero útil a veces). Síncrona pero no Real

Actividad. Vacía tu bandeja de entrada

Usa la técnica BARA para Vacía tu Bandeja de Entrada o declárate en quiebra (borra todo).

8.2.6. El protocolo SMTP#

  1. El servidor de correo

    1. El protocolo SMTP (RFC 5321)

    2. El mensaje (RFC 5322) . En buzones maildir

  2. Los actores en el proceso (envío y recepción):

    1. MUA. Mail User Agent

    2. MSA . Mail Submission Agent

    3. MTA . Mail Transport Agent

    4. MDA . Mail Delivery Agent

  3. Ejemplo de una comunicación SMTP

    https://upload.wikimedia.org/wikipedia/commons/thumb/6/69/SMTP-transfer-model.svg/1280px-SMTP-transfer-model.svg.png
  4. Códigos de Estado SMTP ( SMTP Status Codes )

Actividad. Entender una sesión SMTP

Analizar una sesión SMTP y entender los códigos de estado (ejemplo de log SMTP)

Analizar un registro de logs (ejemplos postfix/dovecot error / warn / log):

  1. err

  2. warn

  3. log

8.2.7. Asegurar SMTP#

  1. Problemas con el servicio (complejo)

    1. En el servicio:

      1. Permitir recibir mensajes (no enviar)

      2. Ojo con no dejarlo abierto (Open relay)

      3. Usar sólo si hay un control del acceso (usando SMTP Auth )

    2. En el mensaje:

      1. Complejo: Confidencialidad / Privacidad / Spam / Bulos / Phising

      2. Equilibrio Seguridad vs Usabilidad (depende del servicio)

  2. Técnicas:

    1. Configuración:

      1. Auditorías Externas: pruebas

      2. Usar listas externas anti spam (p.ej SpamHaus Project )

    2. Uso TLS (smtp e imap)

    3. Registro SPF

    4. DKIM

  3. Legislación

    1. Almacenamiento de Mensajes

    2. Contenido

    3. Protección de datos

Actividad. Asegurar Servicio SMTP

Instalar un servicio de correo electrónico

8.2.8. El protocolo IMAP#

  1. IMAP4v1 (RFC 2060)

  2. Usar IMAP (frente a POP3)

    1. Aunque necesitas conectividad

    2. Y recordar que sincroniza (debes configurar donde descargarlo)

Actividad. Analizar Logs

Analizar un registro de logs (ejemplos postfix/dovecot error / warn / log):

  1. err

  2. warn

  3. log

8.2.9. Instalar un servicio de correo electrónico#

Fases de Instalación:

  1. Instalación, Configuración y Pruebas:

    1. en local en una máquina virtual. Añadiendo dominio local (dnsmasq, por ejemplo)

    2. en máquina pública, pero en interfaz loopback (127.0.0.1)

  2. Producción. En máquina pública y en interfaz de red pública.

  3. Práctica completa en Instalar un servicio de correo electrónico

Actividad. Preparar el dominio del correo y la máquina que lo va a gestionar

  1. ¿En qué dominio está el servicio?

  2. ¿Quién es mi gestor de registros DNS?

  3. ¿En qué máquina configurarás el servicio?

  4. ¿Cual es su nombre de host? Nombre completo (FQDN)

  5. ¿Cual es su dominio?

  6. ¿Puedo conectarme al equipo? ¿Está disponible?

  7. ¿Habrá varios dominios de correo gestionados? (Dominios Virtuales)

Actividad. Instalar un servicio SMTPs

  1. ¿Donde vas a almacenar los mensajes y con qué formato? Maildir

  2. ¿Qué software vas a utilizar? Postfix (p.ej.)

  3. ¿En que puertos e interfaces lo vas a montar? 25 (y 587 -> smtp auth).

  4. ¿Quien va a poder enviar y recibir correos? Usuarios para buzones y usuarios para envíos

  5. ¿Algún usuario virtual y/o alias? Un buzón = varios usuarios

  6. ¿Cuales son los requisitos de instalación (no estándar)?

  7. ¿Donde están los logs?

Actividad. Instalar Servicio IMAPss

Primero en local y luego abierto al público:

  1. ¿En qué máquina configurarás el servicio?

  2. ¿Donde están los mensajes y con qué formato?

  3. ¿Qué software vas a utilizar?

  4. ¿En que puertos e interfaces lo vas a montar?

  5. ¿Quien va a poder recoger sus mensajes?

  6. ¿Cómo es el sistema de autenticación?

  7. ¿Donde están los logs?

8.2.10. El servicio Webmail#

  1. Es una aplicación web que hace de cliente de correo (IMAP y SMTP)

  2. Arquitectura:

    1. Servicio de Correo:

      1. Servidor SMTP (p.ej postfix)

      2. Servidor IMAP (p.ej dovecot)

    2. Servicio de Aplicaciones Web:

      1. Servidor Web (p.ej. Apache)

      2. Aplicación Web (p.ej PHP)

      3. Base de Datos de Usuarios (p.ej. MariaDB)

    3. Interfaz de usuario (Web)

  3. Requisitos ( Ejemplo Roundcube ):

    1. Servidor web Apache, Ngnix, Lighttpd o Cherokee

    2. Versión de PHP 5.2.1 o superior

    3. PostgreSQL, SQLite o base de datos de MySQL, MariaDB

    4. Servidor IMAP con soporte IMAP4 rev1

    5. Un servidor SMTP (recomendado) o PHP configurado para la entrega de correo

  4. Existen diferentes alternativas (ejemplo de Top 10 )

Actividad. Instalar un servicio webmail

Instalar un servicio de webmail