Configuración de un servicio de correo electrónico anónimo

El correo electrónico es una excelente solución para centralizar y administrar el intercambio de información entre los integrantes de una organización, pero no es un secreto que los proveedores de correo electrónico comerciales, incluyendo aquellos que hacen marketing con falsas ofertas de privacidad y anonimato, comparten activamente o han compartido información sobre los usuarios con empresas y autoridades del Estado.

Todo grupo con una base de miembros lo suficientemente amplia debe considerar la importancia de controlar sus comunicaciones si quiere mantenerse al margen de potenciales adversarios con recursos. Esta guía propone una solución para administrar un servicio de correo electrónico anónimo con salida a internet combinando mailcow con la red Tor.

🐮 + 🐋 + 🧅 = 💕

Siguiendo estos pasos se conseguirá el despliegue de un servicio que brinda anonimato al cliente, no obstante la dirección del servidor estará expuesta al comunicarse con otros servidores de internet, así que a efectos de esta guía es importante disponer de un servidor cuya titularidad no esté vinculada en ningún sentido a la identidad real del administrador.

[ Pendiente: Publicar artículo sobre servidores anónimos ]

Para esta guía usaré como ejemplo el dominio mail.dominio.net, la dirección IP 1.2.3.4 y el hostname servicio-oculto.onion.

Requisitos mínimos

  • 1GHz CPU
  • >= 6 GiB RAM
  • >= 20 GiB SSD (sin contar los mensajes)
  • x86_64 o ARM

Puertos

Comprueba que los puertos necesarios están abiertos y no están ocupados por otros procesos:

$ sudo ss -tlpn | grep -E -w '25|80|110|143|443|465|587|993|995|4190'

Si el comando devuelve algún resultado, elimina o detén el proceso que se está ejecutando en ese puerto. También puedes ajustar los puertos de mailcow modificando el archivo de configuración mailcow.conf más adelante.

Instala Docker

Necesitarás instalar Docker y Docker Compose previamente. Estos enlaces contienen información sobre las opciones disponibles para su instalación:

Instalación rápida para la mayoría de distribuciones Linux:

$ curl -sSL https://get.docker.com/ | CHANNEL=stable sh
$ systemctl enable --now docker
$ LATEST=$(curl -Ls -w %{url_effective} -o /dev/null https://github.com/docker/compose/releases/latest) && LATEST=${LATEST##*/} && curl -L https://github.com/docker/compose/releases/download/$LATEST/docker-compose-$(uname -s)-$(uname -m) > /usr/local/bin/docker-compose
$ chmod +x /usr/local/bin/docker-compose

Configura SELinux

∗ Si no trabajas con SELinux puedes saltar al siguiente apartado.

Comprueba si el paquete container-selinux existe en el sistema:

$ rpm -qa | grep container-selinux

Si la respuesta está vacía, instala container-selinux usando el gestor de paquetes.

Comprueba si Docker soporta SELinux y habilítalo en caso negativo:

$ docker info | grep selinux
$ [ $? == 0 ] && printf "{\n "selinux-enabled": true\n}\n" | tee /etc/docker/daemon.json

Reinicia Docker:

$ systemctl restart docker

Instala mailcow

mailcow: dockerized o simplemente mailcow es una suite de correo electrónico de código abierto basada en Docker. mailcow se compone de elementos conocidos y usados ​​desde hace mucho tiempo, que combinados dan como resultado un servidor de correo electrónico sin preocupaciones.

Inicia sesión como administrador en la consola:

$ sudo su -

Clona el repositorio de mailcow en /opt:

# cd /opt
# git clone https://github.com/mailcow/mailcow-dockerized
# cd mailcow-dockerized

Genera un archivo de configuración ejecutando el siguiente script:

# ./generate_config.sh

Añade la dirección mail.dominio.net cuando se te pida un FQDN y elige el branch master.

Cambia la configuración según tus necesidades editando el archivo mailcow.conf.

Para finalizar la instalación, ejecuta estos comandos:

# docker compose pull
# docker compose up -d

Postinstalación

Cambia el valor de enable_ipv6 para desactivar IPv6 editando docker-compose.yml:

enable_ipv6: false

Desactiva el contenedor ipv6nat-mailcow creando el archivo docker-compose.override.yml en /opt/mailcow-dockerized:

services:
 
ipv6nat-mailcow:
image: bash:latest
restart: "no"
entrypoint: ["echo", "ipv6nat disabled in compose.override.yml"]

Edita /opt/mailcow-dockerized/data/conf/unbound/unbound.conf y establece do-ip6 como no:

do-ip6: no

Desactiva IPv6 en Postfix creando /opt/mailcow-dockerized/data/conf/postfix/extra.cf:

smtp_address_preference = ipv4
inet_protocols = ipv4

Reinicia Postfix:

# docker compose restart postfix-mailcow

Si Docker ha desactivado IPv6 completamente, entonces arregla estos archivos:

# sed -i '/::/d' data/conf/nginx/listen_*
# sed -i '/::/d' data/conf/nginx/templates/listen*
# sed -i '/::/d' data/conf/nginx/dynmaps.conf
# sed -i 's/,\[::\]//g' data/conf/dovecot/dovecot.conf
# sed -i 's/\[::\]://g' data/conf/phpfpm/php-fpm.d/pools.conf

Reinicia los contenedores:

# docker compose down
# docker compose up -d

Preparación del nombre de dominio

Visita KYCnot.me para encontrar un proveedor de dominios que acepte Monero como método de pago. Puedes leer el artículo de W1lder sobre crédito irrastreable para aprender a conseguir XMR anónimamente.

[ Pendiente: Actualizar la guía sobre crédito irrastreable ]

Ejemplos de proveedores compatibles con estas necesidades:

Si ya dispones de un nombre de dominio, realiza estas operaciones para prepararlo. El proceso para llevar a cabo estas tareas variará dependiendo de tu proveedor de dominios:

mail IN A 1.2.3.4
autodiscover IN CNAME mail.dominio.net.
autoconfig IN CNAME mail.dominio.net.
@ IN MX 10 mail.dominio.net.

Autentica tu servicio y protégelo frente a la suplantación de identidad implementando registros DKIM, SPF y DMARC.

DKIM es un protocolo que verifica la autenticidad de un mensaje vinculándolo a un nombre de dominio. Al habilitar DKIM, puedes firmar digitalmente tus correos salientes utilizando una llave privada. La finalidad de DKIM es garantizar que el nombre de dominio no haya sido suplantado y que el mensaje no haya sido modificado mientras se transmitía.

Para obtener el valor del registro, en la UI de mailcow, dirígete a Sistema > Configuración > Opciones > Registros ARC/DKIM y copia el texto que corresponde a tu dominio. A continuación añade el registro:

dkim._domainkey IN TXT "<valor>"

El SPF es un protocolo de autenticación que relaciona un dominio con una dirección de correo electrónico, estableciendo qué remitentes están autorizados a enviar emails desde ese dominio. De esta manera, otros proveedores de email pueden verificar la autenticidad de los mensajes entrantes y asegurarse de que provienen de remitentes autorizados por el propietario del dominio.

@ IN TXT "v=spf1 mx a -all"

DMARC es una política de autenticación de correo electrónico que ayuda a prevenir el phishing y el spam al verificar que los mensajes sean auténticos y enviados desde servidores autorizados.

_dmarc IN TXT "v=DMARC1; p=reject; sp=reject; pct=20; rua=mailto:<correo 1>; ruf=mailto:<correo 2>; adkim=r; aspf=r; fo=1; ri=86400;"

Deberás sustituir <correo 1> por la dirección de correo donde se envían los informes de DMARC. Estos informes resumen los resultados de autenticación. Sustituye también <correo 2> por una dirección donde recibir informes forenses detallados sobre fallas específicas de DMARC.

Creación del servicio oculto

La intención de esta configuración es dar a los clientes opciones para interactuar con el servidor de forma anónima.

Instala el paquete del cliente de Tor:

$ sudo apt install tor

Crea y define el directorio del servicio oculto, así como los puertos que reflejará. Para ello, edita /etc/tor/torrc:

HiddenServiceDir /var/lib/tor/mailcow/
HiddenServicePort <puerto> <dirección>:<puerto>
HiddenServicePort <puerto> <dirección>:<puerto>
[...]

Los posibles valores de <puerto> dependerán de lo que esté asignado en mailcow.conf. Añade esos puertos que quieras poner a disposición en Tor.

Reinicia el servicio de Tor para aplicar los cambios:

$ systemctl restart tor

Finalmente obtén el hostname del servicio oculto y comprueba que está funcionando:

# cat /var/lib/tor/mailcow/hostname
# curl --socks5-hostname 127.0.0.1:9050 servicio-oculto.onion

Aprende más sobre Tor:

Configuración de mailcow

Usando el navegador, accede al panel de mailcow en la dirección mail.dominio.net:443 e inicia sesión con los credenciales admin:moohoo.

En el apartado Sistema > Configuración > Editar detalles del administrador puedes añadir, eliminar y modificar cuentas de administrador.

En E-Mail > Configuración > Dominios, añade el dominio que usarán las direcciones de correo y rellena el resto de campos en función de tus necesidades. Puedes añadir distintos nombres de dominio.

El apartado E-Mail > Configuración > Buzones sirve para crear cuentas de usuario con acceso al correo. Puedes especificar los credenciales de la cuenta, el nombre de dominio para la dirección de correo y los protocolos permitidos, entre otras reglas.

Varios parámetros de configuración de la interfaz de mailcow se pueden cambiar creando el archivo /opt/mailcow-dockerized/data/web/inc/vars.local.inc.php que sobrescribe la configuración por defecto de vars.inc.php. No debes cambiar los valores dentro de vars.inc.php, sino utilizarlos como plantilla.

Los parámetros de configuración de la interfaz de usuario de mailcow pueden ser usados para distintas operaciones. A efectos de esta guía podrían interesar las siguientes:

  • Establecer una expresión regular de complejidad de contraseña
  • Cambiar la duración de las sesiones
  • Alternar la anonimización de IP

mailcow también soporta el uso de doble factor de autenticación. Obtén más información leyendo la documentación:

Copias de seguridad

Ejecuta crontab -e y pega el contenido a continuación si necesitas automatizar la creación de copias de seguridad para tu servicio.

0 5 * * * MAILCOW_BACKUP_LOCATION=/opt/mailcow-backups /opt/mailcow-dockerized/helper-scripts/backup_and_restore.sh backup all --delete-days 7

Webmail y clientes externos

Para ingresar al servicio de correo a través del navegador, accede a mail.dominio.net:443/SOGo para iniciar sesión con un usuario previamente creado desde el panel de administración. A continuación deberías ver la interfaz web del servicio de correo electrónico.

Aprende a configurar el webmail:

Conéctate al servicio usando un cliente externo:

Notas finales

Es crucial que una organización clandestina asegure su independencia y soberanía construyendo estructuras digitales propias. Esta configuración posibilitará el acceso anónimo a un servicio de correo federado.

mailcow integra funciones esenciales para este tipo de servicio, como un agente de transferencia, un cliente web y distintas características de seguridad, todo bajo el mismo paquete. Esto es perfecto para quienes buscan un desplegar servicio de correo electrónico sencillo, fácil de usar y confiable.

Para más información, consulta la documentación oficial de mailcow:


napalm@cryptolab.net