Skip Navigation

Running a mail server on NetBSD for fun

Running a mail server on NetBSD for fun

En esta misma comunidad pregunté hace unos meses sobre experiencias corriendo e-mail en self-hosting.

Este post es la respuesta que me hubiese gustado recibir 😆

El link de cabecera de este post tiene "el aprendizaje" de mi parte de como hacerlo en NetBSD. Para el mundo Linux se puede usar Mail Cow, emalwiz u otros.

Esa guía es para un servidor de e-mail personal, nada pro. Orientado a configurar a mano cada cosa para entenderla, pero no para despegarlo como debería hacerse en el mundo enterprise.

¿Es fácil?

Es terrible fácil. No sé por qué la gente de internet le da color con que correr tu propio server de e-mail es complicado. No es lo más fácil, pero tampoco es rocket science.

El único "pero" es que hay que saber un poco de todo del mundillo sysadmin. Y si no está configurado como corresponde, un botnet te puede usar para mandar spam. Muchos ataques de phishing parten de un mail que llega desde un servidor legítimo pero comprometido.

¿Qué hay que saber?

Hay que saber DNS, TLS, backups, monitoreo y cosas sysadmins en general.

Tener tu propio servidor DNS autoritativo ayuda a usar listas negras, y hace más seguro confiar en DNS-reverso y otras queries DNS que haga tu servicio de mail.

Hay que tener el dominio y su certificado TLS, que afortunadamente es gratis hoy en día.

Hay que tener backups, porque siempre hay que tener backups.

Y el monitoreo es esencial, porque un servidor de e-mail es súper jugoso y atractivo para los botnets, porque lo pueden usar para repartir spam al mundo. Además que sufre de las pifias clásicas de un servicio (que se llena el disco, que expira el certificado TLS, etc, etc)

La otra paja gigante es entender SPF, DKIM y DMARC. Explicar esas weas en detalle es un post aparte. Tampoco es que yo lo entienda al 100%. Varias veces le tuve que preguntar a ChatGPT 🤣

La reputación de la dirección IP

La otra paja grande es que, por culpa del spam, la mayoría de los servicios de e-mail bloquean los segmentos de IP residenciales (o sea, los de usuarios finales en sus casas). Yo utilizo smtp2go para hacer relay de los mails que quiero que no se marquen como spam.

El relay es un servidor externo, normalmente de una empresa que se dedica a enviar spam promociones comerciales en masa. La idea es que tu servidor le manda el mail al relay, y luego el relay lo envía a destino final. El relay se encarga de tener buena "reputación" de la dirección IP y hablar SMTP correctamente. Y por eso, es menos probable que el correo llegue marcado como spam.

Si tuviera que mandar un mail super-super importante que no quiero que llegue como spam, uso esto. Si quiero hablar con otro server chico que no toma medidas contra otros servers chicos, no necesito esto. A veces, gmail, protonmail y otros "grandes" igual me aceptan, a pesar de mi IP residencial, pero no siempre.

Smtp2go es gratuito hasta 1.000 e-mails al mes. Así que ando sobrao.

Los correos de prueba

Uso varios servicios gratuitos para revisar como están llegando mis e-mails.

Esos servicios te dan una dirección e-mail de destino, y tú le envías a esa casilla un mensaje desde tu servidor. El servicio lo analiza y te dice si los registros DNS (SPF, DKIM y DMARC) están bien y si tu servidor está hablando SMTP como corresponde.

Es súper útil para saber como te recibe el resto del mundo.

Monitoreo y backups

Obviamente se pueden hacer soluciones súper pro con Grafana, pero yo hago lo más básico: una vez a la semana mirar los logs a ver si se ve algo raro, mandar unos mails de prueba y ver como anda de disco/ram/cpu, y ya está. Si la wea la uso sólo yo, y no hay nada de gobierno/banco/importante ahí. Si lo hubiera, tendría que ponerme más serio con el monitoreo y la prevención anti-malware.

Para los backups, comprimo la carpeta con las casilas de correo y la subo a mi cuenta de Mega. Todo en un crontab, para que no se me olvide.

Seguridad

Aparte de lo básico de seguridad de un tarro conectado a internet, no tengo mucho más.

Como es NetBSD uso blocklist y npf. En el mundo linux sus equivalentes son fail2ban e iptables. En pocas palabras: algo que te defienda contra la fuerza bruta y un firewall para bloquear todos los puertos, excepto los necesarios.

Para el spam estoy usando spamassassin, pero con la configuración por defecto. No me llega spam porque no he publicado mi e-mail casi en ninguna parte. Seguramente con el paso de los años voy a empezar a recibir más spam, intentos de phishing y cosas varias. Quizás ahí tenga que meterle mano al spamassassin para filtrar más.

La gran medida anti-phishing y anti-spam es usar mi cliente de correo en modo texto. O sea, que mi cliente de correo nunca intenta renderear HTML, ni cargar las imágenes. Me muestra sólo la versión en texto plano que tiene los links completos y no abre nada por defecto.

Así quedan al descubierto los intentos de phishing con el cliente en modo texto:

Ése es un intento de phishing a mi correo de gmail. Usar un cliente de correo en modo texto es algo que recomiendo siempre, independiente de que no tengas tu propio server o no uses mucho el correo.

El intento de phishing se ve súper obvio porque no hay imágenes, logitipo, ni botones escondiendo los links. A demás que gmail aweonadamente oculta la dirección del remitente y pone el nombre, que puede ser cualquier cosa que apoye el phishing.

¿Qué leer para aprender a self-hostear el e-mail?

  • Workaround.org: Una guía basada en Linux buenísima. Es lo que más me sirvió para aprender sobre e-mail
  • Este script sirve para levantar un servicio de e-mail en Debian. Yo no lo ejecuté, pero leyendo el script entendí varios pasos y cosas. Los comentarios del script igual me ayudaron en su momento.
  • Las docs de Mail Cow igual tienen links a guías sobre DNS y cosas varias.

Comments

1