SMTP Tunnel Proxy – SOCKS5 basado en SMTP rápido para evadir DPI
Introducción
En una era donde el Análisis Profundo de Paquetes (DPI) puede bloquear el tráfico web, los investigadores y defensores de la privacidad necesitan soluciones que combinen invisibilidad con rendimiento. El SMTP Tunnel Proxy llena ese nicho al convertir cualquier flujo TCP en una conversación SMTP, permitiendo que los datos pasen por puertos SMTP aprobados (habitualmente 25, 587 o 465). Construido en puro Python, se despliega rápidamente y no requiere cambios en el núcleo.
Declaración del Problema
- Muchos cortafuegos corporativos y nacionales filtran el tráfico en los puertos 80/443, bloqueando HTTPS.
- Los VPN tradicionales y túneles SSH suelen ser detectados o limitados por DPI.
- La evasión de censura requiere herramientas que parezcan inofensivas.
Solución: Utilizar el protocolo SMTP estándar como cobertura, aprovechando TLS para cifrado y puertos de relay de correo que los cortafuegos rara vez inspeccionan.
Visión General de la Arquitectura
Navegador → Cliente SOCKS5 → Servidor Túnel SMTP → Internet
Tráfico TCP disfrazado como SMTP sobre TLS salida normal
Componentes clave: * Servidor – Escucha en TCP 587, realiza un handshake STARTTLS, luego cambia a un protocolo binario personalizado. * Cliente – Un proxy SOCKS5 local (puerto 1080 por defecto) que reenvía el tráfico a través del servidor. * Capa de Usuario – Cada nombre de usuario recibe una clave precompartida única, lista blanca de IP opcional y registro por usuario.
Características Principales
| Característica | Descripción |
|---|---|
| TLS 1.2+ | Todos los datos cifrados después de STARTTLS |
| Evasión DPI | El handshake imita a servidores Postfix reales |
| Alta Velocidad | Transmisión binaria con bajo overhead |
| Multi‑Usuario | Secretos separados, restricciones de IP, registro |
| Reconexión Automática | El cliente se reconecta tras caídas |
| Instalación en una Línea | curl … | sudo bash |
| Servicio Systemd | Se ejecuta en segundo plano y se reinicia al arrancar |
Guía de Inicio Rápido
1. Configuración del Servidor (Linux VPS)
# 1. Escoge un dominio que apunte a tu VPS (DuckDNS, No‑IP, etc.)
# 2. Ejecuta el instalador de una sola línea
curl -sSL https://raw.githubusercontent.com/x011/smtp-tunnel-proxy/main/install.sh | sudo bash
2. Añadir Usuarios Adicionales
sudo smtp-tunnel-adduser alice # crea un ZIP con la configuración del cliente
sudo smtp-tunnel-adduser bob
client.py, start.sh/.bat, y config.yaml con el secreto del usuario.
3. Configuración del Cliente (Windows/Linux/macOS)
Opción A – Fácil (recomendado)
1. Extrae el archivo alice.zip.
2. Ejecuta start.bat (Windows) o ./start.sh (Linux/macOS).
Opción B – Manual
cd alice
pip install -r requirements.txt
python client.py
4. Apuntar tus Aplicaciones al Proxy SOCKS
- Navegador →
http://127.0.0.1:1080(Firefox, Chrome). - A nivel de sistema → Variable de entorno
ALL_PROXY=socks5://127.0.0.1:1080. - Prueba con
curl -x socks5://127.0.0.1:1080 https://ifconfig.me.
Configuración Avanzada
- Lista Blanca de IP – Edita
users.yamly añade bloques CIDR bajo cada usuario. - Registro – Alterna
logging: true/falsepor usuario. - Puertos Personalizados – Cambia
socks_portoserver_portenconfig.yaml. - Actualización –
smtp-tunnel-updatesincroniza el último código preservando la configuración.
Recomendaciones de Seguridad
- Usa un dominio – Los certificados TLS requieren un nombre host; las direcciones IP disparan errores de verificación.
- Conserva
ca.crt– Distribuye el archivo CA a los clientes para evitar MITM. - Restringe IPs – Lista blanca de IPs cliente conocidas si es factible.
- Protege
users.yaml– Establece permisos de archivo a600. - Desactiva el registro para usuarios sensibles – Evita filtración de logs.
Preguntas Frecuentes de Solución de Problemas
| Síntoma | Causa Probable | Solución |
|---|---|---|
| Conexión rechazada | El servidor no está corriendo | sudo systemctl status smtp-tunnel o ps aux | grep server.py |
| Falta de autenticación | Desajuste de secreto | Verifica users.yaml; regenera usuario con smtp-tunnel-adduser |
| IP no en lista blanca | La IP actual no está en la lista | Actualiza users.yaml o elimina la clave de lista blanca |
| Verificación de certificado fallida | Uso de IP, dominio no coincide | Asegúrate de que server_host coincida con el certificado; copia ca.crt |
Conclusión
El SMTP Tunnel Proxy demuestra que puedes construir un túnel confiable y de alta velocidad que se hace pasar por tráfico SMTP legítimo. Su implementación en puro Python, el instalador de una sola línea sencillo y el conjunto robusto de funciones lo convierten en una excelente opción para desarrolladores, administradores de sistemas y defensores de la privacidad que buscan evadir redes restrictivas sin una configuración VPN compleja.
Siéntete libre de bifurcar el repositorio, contribuir con mejoras o adaptarlo a tus propias necesidades de evasión de censura. ¡Feliz tunneling!