💾 Archived View for costas.dev › posts › opensmtpd-dovecot-debian.gmi captured on 2022-06-11 at 20:45:20. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2022-06-03)
-=-=-=-=-=-=-
Anoche sustituí mi software de servidor de correo: pasé de la configuración que genera Emailwiz.sh a instalar OpenSMTPD (el servidor de correo del proyecto OpenBSD) y a reconfigurar desde cero Dovecot.
Porque quiero tener más control sobre mi correo, y siento que usando un script de configuración no entiendo tan bien lo que estoy configurando exactamente (aunque pueda ver el código del script) que si leo una guía detallada y voy escribiendo cada parte a mano. Además, no me terminaba de convencer la necesidad de crear usuarios Unix para cada usuario del sistema de correo.
De esta forma, puedo proveer correo para varios dominios, acceso a solo envío o recepción, reenvío a otros dominios... sin tener que pelearme con mi configuración. La configuración de OpenSMTPD es mucho más sencilla que la de Postfix, como ocurre con otros programas de OpenBSD como doas (remplazo a sudo).
Para la instalación inicial, seguí laa guías de prefetch.eu, pero adaptando la estructura de carpetas y usuarios/grupos a las de mi máquina.
Guías de OpenSMTPD+Dovecot en prefetch.eu
Una vez hice esto y configuré varios dominios, me encontré con el siguiente problema: no podía añadir alias a otros servidores de correo. Podría por ejemplo hacer que al llegar un correo a foo@bar.com se redirija a una cuenta de correo en foo@example.com, que está en otro servidor. Para poder hacer esto, hice los siguientes cambios a mi configuración:
table aliases file:/usr/local/etc/mail/aliases table domains file:/usr/local/etc/mail/domains table passwd file:/usr/local/etc/mail/passwd table virtuals file:/usr/local/etc/mail/virtuals action "remote_mail" lmtp "/var/run/dovecot/lmtp" rcpt-to virtual <virtuals> action "local_mail" lmtp "/var/run/dovecot/lmtp" rcpt-to alias <aliases> action "outbound" relay srs match from any for domain <domains> action "remote_mail" match from local for local action "local_mail" match from any auth for any action "outbound" match for any action "outbound"
Eliminando las tablas, acciones y matches que tenía hasta entonces. Lo que hace esto es separar los alias locales y remotos. Por tanto, los 4 match hacen lo siguiente, por orden de aparición:
Una vez hecho eso, tenemos nuestro servidor completamente funcionando. Aunque es posible que hayas tenido el mismo error que yo por algún motivo:
En este caso, la guía de prefetch.eu parece tener un fallo en el que las claves DKIM `public.key` y `private.key` coinciden. Esto es por llamar incorrectamente a openssl, y para ello basta con generar la clave del siguiente modo:
openssl genrsa -out private.key 2048 openssl rsa -in private.key -pubout -out public.key chown _rspamd:_rspamd private.key chmod 440 private.key sed 's/---.*---//' public.key | tr -d '\n' | paste -d ' '
Con los dos primeros comandos generas el par de claves correctamente, el tercero y el cuarto cambian los permisos para que solo rspamd pueda leer las claves, y el último imprime la clave pública sin espacios ni caracteres innecesarios, para pegar en el DNS.
Una vez seguiste todos los pasos, deberías tener un servidor de correo funcionando correctamente. Puedes comprobar que se cumplen las directivas SPF, DKIM y DMARC entrando en DKIMvalidator y enviando allí un correo de prueba. La guía invitaba a usar IsMyEmailWorking, pero esta página parece no estar aceptando nuevos test porque alguien abusó de dicho servicio.
IsMyEmailWorking (no permite test, 2022-01-22)
Si ambas funcionan, llega la hora de la verdad: envía correos a personas reales (sin hacer spam, por favor) y saber si les llega sin problemas, y que pasa todos los filtros de spam.
---
© 2022 Ariel Costas. Hacer copias exactas de esta página completa está permitido, siempre que se preserve este texto.