Servidor de correo · 8 min read · Oct 23, 2025
Configuración de un Servidor de Correo Electrónico en Casa a Prueba de Spam (La Forma Algo Alternativa) (Debian Squeeze)
Configuración de un Servidor de Correo Electrónico en Casa a Prueba de Spam (La Forma Algo Alternativa) (Debian Squeeze)
Introducción
El spam en el correo electrónico es un gran problema. Sin embargo, he encontrado una solución bastante simple para mí, aunque tomará un tiempo “migrar” completamente a ella.
La solución es crear una dirección de correo electrónico única cada vez que tenga que dar una dirección de correo electrónico a alguien más o a algún sitio web para registrarme. Si quiero una cuenta en Twitter, usaría “[email protected]”. Para servicios basados en la web, uso el nombre de dominio completo, incluyendo el subdominio (www) a la izquierda del @ (algunos sitios web mal diseñados no reconocen el www. como una dirección de correo electrónico válida, para esos simplemente lo omito).
Para personas, uso un formato como este: “[email protected]”. También podrías usar “[email protected]”. Lo bueno es que el lado izquierdo del @ para las direcciones de correo electrónico es casi “ilimitado”.
Como genero direcciones de correo electrónico únicas para cada contacto, puedo averiguar fácilmente dónde se filtró mi dirección de correo electrónico y luego puedo eliminarla fácilmente.
Este tutorial configurará un servidor de correo electrónico completamente funcional con scripts correspondientes para facilitar la gestión del correo electrónico. También incluye la parte de configuración de DNS, incluso si estás en una dirección dinámica, por ejemplo, si deseas ejecutar tu propio pequeño servidor de correo desde casa.
Resumen
En este tutorial utilizo Debian Squeeze como servidor. Para otras distribuciones de Linux, tendrás que hacer los cambios correspondientes tú mismo.
Un breve resumen de lo que se hace en este tutorial es el siguiente:
- Obtener un nombre de dominio
- Manejar una IP dinámica - si es necesario
- Encargarse del DNS y el enrutamiento
- Configurar postfix
- Configurar procmail
- Configurar dovecot
- Configurar un servidor web para la gestión de direcciones de correo electrónico
- Configurar Thunderbird con complemento
Créditos
En este tutorial también me baso en algunos otros tutoriales aquí, especialmente en lo que respecta a la configuración del servidor bind y de correo electrónico. Para esos, copié más o menos de los tutoriales de Falko sobre el Servidor Perfecto de Debian. También la sección de reenvío de correo fue tomada de un tutorial aquí de sjau. Sin ellos, probablemente no habría podido configurar esto.
Obtención de un Nombre de Dominio
Antes de que puedas comenzar a ejecutar tu propio servidor de correo, necesitas un nombre de dominio para el cual también puedas establecer registros MX. No quiero hacer ninguna sugerencia ya que hay toneladas y toneladas de registradores de dominios por ahí. Uno de los más baratos que conozco es GoDaddy.
No uso GoDaddy yo mismo, pero hasta donde he oído, ofrecen un servicio sólido.
Manejo de IPs Dinámicas
Otro desafío que enfrentamos es cómo manejar las cosas en una dirección IP dinámica. Si no tienes una caja dedicada alquilada en algún lugar, sino que usas tu conexión a Internet en casa, entonces es muy probable que no tengas una IP estática.
En la web, es esencial tener una IP estática para que otros siempre sepan dónde encontrarte. Sin embargo, hay servicios que te ayudan con eso.
Uno de los servicios que utilizo es EveryDNS. Me permiten alojar el DNS para el nombre de dominio.
Hasta ahora, todavía ofrecen el servicio de forma gratuita. Aunque fueron comprados en 2010, la promesa fue que los entonces clientes que donaron dinero, también pueden usar el sistema de forma gratuita en el futuro. En su página web, no mencionan nada aún de que los nuevos clientes necesiten pagar, pero no lo sé con certeza.
La razón para usar EveryDNS es que también ofrecen un pequeño script en perl que se puede usar para actualizar el DNS. Esto es esencial ya que tu IP cambia con el tiempo si no tienes una dirección IP estática. Puedes obtener el script en perl desde aquí.
Cuando tengas un nombre de dominio, primero ve a What Is My IP. Te mostrará tu dirección IP pública actual. Luego crea una cuenta en EveryDNS y haz al menos las siguientes entradas donde MYDOMAIN.COM sería tu nombre de dominio:
(1) Haz un registro de tipo “A”, configurado como nombre de dominio completamente calificado “MYDOMAIN.COM” y establece como valor tu dirección IP pública.
(2) Haz un registro de tipo “CNAME”, configurado como nombre de dominio completamente calificado “*.MYDOMAIN.COM” y establece como “MYDOMAIN.COM”.
(3) Haz un registro de tipo “MX”, configurado como nombre de dominio completamente calificado “MYDOMAIN.COM”, establece como valor “MYDOMAIN.COM” y establece como “MX Value” “10”.
Lo que acabamos de hacer es configurar el DNS para el dominio. El dominio principal se encuentra en tu dirección IP (registro A), todos los demás dominios también se encuentran allí (el * en el registro CNAME apunta al dominio principal) y también operamos un servidor de correo allí (registro MX).
Usuario root
Las siguientes cosas se realizan como usuario root, a menos que se indique lo contrario.
Actualización de IP Dinámica
Como se dijo antes, si no tienes una dirección IP estática, necesitarás actualizar regularmente la información del DNS.
(1) Obtén el script en perl y hazlo ejecutable
cd /root
wget http://www.everydns.net/eDNS.pl
chmod 0755 eDNS.pl(2) Crea un script bash que llame al script en perl (hay otras formas, pero encontré que esta es la más simple):
touch eDNS.sh
echo "#!/bin/bash" > eDNS.sh
echo "perl /root/eDNS.pl -u USERNAME -p PASSWORD -d MYDOMAIN.COM" >> eDNS.shReemplaza USERNAME y PASSWORD con tus credenciales de inicio de sesión de EveryDNS.
(3) Configura un cron para ejecutarlo regularmente
Me gusta trabajar con un archivo cron.txt que contiene todos los cron. Creo que es mucho más simple mantenerlo así.
Primero debes verificar si ya hay una entrada de cron:
crontab -lSi no hay ninguna entrada de cron aún, simplemente ejecuta los siguientes comandos:
touch cron.txt
chmod 0700 cron.txt
echo "*/5 * * * * /root/eDNS.sh >/dev/null 2>&1" > cron.txtSi ya hay entradas de cron, cópialas, crea un archivo cron.txt e insértalas y añade también el siguiente comando:
*/5 * * * * /root/eDNS.sh >/dev/null 2>&1 Ahora cargamos el cron.txt como cron:
crontab cron.txtY verificamos si se agregó correctamente:
crontab -lLAN/Ruteo/Bind
El siguiente problema que enfrentamos es cómo resolver el dominio en tu LAN. Si tu servidor de correo está detrás de un enrutador, entonces probablemente tendré una IP local como 192.168.0.x o 10.0.0.x.
Si estás detrás de un enrutador, necesitarás redirigir los siguientes puertos a tu servidor: 25, 80, 143, 443, 991. Podría haber más puertos requeridos como el 587.
También enfrentamos el problema de cómo resolver el nombre de dominio desde dentro de la LAN. Desde fuera de la LAN tienes la entrada DNS que debería apuntar a tu dirección IP actual. Sin embargo, cuando estás dentro de la LAN y haces una consulta DNS, solo devolverá tu IP pública y generalmente fallará entonces.
Hay varias soluciones para ese problema, si es que el problema existe en absoluto.
Una forma sería el uso de dnsmasq en enrutadores (por ejemplo, dd-wrt o tomato-wrt). Sin embargo, como no puedo garantizar que funcione, la única otra opción que veo es configurar un servidor DNS completo en tu servidor de correo.
En este tutorial utilizaré un Bind9 en chroot ya que es con lo que más familiarizado estoy. Para otros servidores DNS encontrarás mucha documentación en línea.
(1) Instala el software y deténlo
apt-get install bind9
/etc/init.d/bind9 stop(2) Cambia la configuración de /etc/default/bind9 para que la línea de opciones sea así:
OPTIONS="-u bind -t /var/lib/named" (3) Crea los directorios necesarios bajo /var/lib:
mkdir -p /var/lib/named/etc
mkdir /var/lib/named/dev
mkdir -p /var/lib/named/var/cache/bind
mkdir -p /var/lib/named/var/run/bind/run(4) Luego mueve el directorio de configuración de /etc a /var/lib/named/etc:
mv /etc/bind /var/lib/named/etc(5) Crea un enlace simbólico al nuevo directorio de configuración desde la antigua ubicación (para evitar problemas cuando BIND se actualice en el futuro):
ln -s /var/lib/named/etc/bind /etc/bind(6) Crea dispositivos nulos y aleatorios, y corrige los permisos de los directorios:
mknod /var/lib/named/dev/null c 1 3
mknod /var/lib/named/dev/random c 1 8
chmod 666 /var/lib/named/dev/null /var/lib/named/dev/random
chown -R bind:bind /var/lib/named/var/*
chown -R bind:bind /var/lib/named/etc/bind(7) Edita el archivo /etc/rsyslog.d/bind-chroot.conf y añade
$AddUnixListenSocket /var/lib/named/dev/log (8) Reinicia los servicios
/etc/init.d/rsyslog restart
/etc/init.d/bind9 starty verifica /var/log/syslog en busca de errores.
Ahora hemos configurado Bind9 en un entorno chroot. Lo siguiente que hay que hacer es agregar un archivo de zona para tu dominio.
(9) Edita /etc/bind/named.conf.local y añade
zone "MYDOMAIN.COM" IN {
type master;
file "/etc/bind/zones/MYDOMAIN.COM.db";
allow-update { none; };
};(10) Crea la carpeta de zona y el archivo de zona
mkdir /etc/bind/zones
touch /etc/bind/zones/MYDOMAIN.COM.db
chown -R bind:bind /etc/bind/zones/MYDOMAIN.COM.db(11) Añade la información de tu archivo de zona a MYDOMAIN.COM.db
$TTL 86400
@ IN SOA @ MYDOMAIN.COM. (
1 ; serial
2600 ; refresh
15M ; retry
3600 ; expiry
360 ) ; minimum
@ IN NS ns.MYDOMAIN.COM.
ns IN A LOCALIP
www IN A LOCALIP
MYDOMAIN.COM. IN A LOCALIP
MYDOMAIN.COM. IN MX 10 LOCALIPPor supuesto, reemplaza MYDOMAIN.COM con tu nombre de dominio real y LOCALIP con tu dirección IP LAN estática. Básicamente, aquí le decimos que el servidor de nombres para ese dominio está alojado en “ns.MYDOMAIN.COM” y “ns.MYDOMAIN.COM” se encuentra en la dirección IP local estática.
(12) Reinicia Bind9
/etc/init.d/bind9 restart(13) Cambia la resolución de NS del enrutador
Mientras Bind9 está configurado ahora, hay una última cosa que hacer. En tu enrutador, debes cambiar el orden de resolución del servidor de nombres. El primer servidor de nombres debe ser ahora tu “servidor de correo” con la dirección IP local estática correspondiente. De lo contrario, toda la configuración de bind9 no habría servido de nada. Como segundo servidor de nombres, ingresa el valor de lo que ya estaba allí como primero. Dependiendo de tu enrutador, puede ser un poco más complicado.
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.