
Un túnel encubierto de alta velocidad que disfraza el tráfico TCP como comunicación de correo electrónico SMTP para evadir firewalls de inspección profunda de paquetes (DPI).
Un túnel encubierto de alta velocidad que disfraza el tráfico TCP como comunicación de correo electrónico SMTP para evadir firewalls de inspección profunda de paquetes (DPI).
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌──────────────┐
│ Application │─────▶│ Client │─────▶│ Server │─────▶│ Internet │
│ (Browser) │ TCP │ SOCKS5:1080 │ SMTP │ Port 587 │ TCP │ │
│ │◀─────│ │◀─────│ │◀─────│ │
└─────────────┘ └─────────────┘ └─────────────┘ └──────────────┘
│ │
│ Looks like │
│ Email Traffic │
▼ ▼
┌────────────────────────────────┐
│ DPI Firewall │
│ ✅ Sees: Normal SMTP Session │
│ ❌ Cannot see: Tunnel Data │
└────────────────────────────────┘
| Característica | Descripción |
|---|---|
| 🔒 Cifrado TLS | Todo el tráfico se cifra con TLS 1.2+ después de STARTTLS |
| 🎭 Evasión de DPI | El handshake inicial imita servidores SMTP reales (Postfix) |
| ⚡ Alta Velocidad | Protocolo de transmisión binaria tras el handshake - sobrecarga mínima |
| 👥 Multi-Usuario | Secretos por usuario, listas blancas IP y configuración de registro |
| 🔑 Autenticación | Claves precompartidas por usuario con HMAC-SHA256 |
| 🌐 Proxy SOCKS5 | Interfaz de proxy estándar - funciona con cualquier aplicación |
| 📡 Multiplexación | Múltiples conexiones a través de un solo túnel |
| 🛡️ Lista Blanca IP | Control de acceso por usuario mediante dirección IP/CIDR |
| 📦 Instalación Fácil | Instalación del servidor en una sola línea con servicio systemd |
| 🎁 Paquetes de Cliente | Archivos ZIP generados automáticamente para cada usuario |
| 🔄 Reconexión Automática | El cliente se reconecta automáticamente ante pérdida de conexión |
📚 Para detalles técnicos exhaustivos, especificaciones del protocolo y análisis de seguridad, consulta TECHNICAL.md.
Obtén un dominio gratuito que apunte a tu VPS:
Ejemplo: myserver.duckdns.org → 203.0.113.50 (la IP de tu VPS)
curl -sSL https://raw.githubusercontent.com/x011/smtp-tunnel-proxy/main/install.sh | sudo bash
El instalador hará lo siguiente:
¡Eso es todo! Tu servidor está listo.
smtp-tunnel-adduser bob # Agregar usuario + generar ZIP de cliente
smtp-tunnel-listusers # Listar todos los usuarios
smtp-tunnel-deluser bob # Eliminar un usuario
smtp-tunnel-update # Actualiza el código, preserva configuración/certificados/usuarios
username.zip del administrador del servidor| Plataforma | Cómo Ejecutar |
|---|---|
| 🪟 Windows | Haz doble clic en start.bat |
| 🐧 Linux | Ejecuta ./start.sh |
| 🍎 macOS | Ejecuta ./start.sh |
El lanzador instalará automáticamente las dependencias e iniciará el cliente.
✅ Deberías ver:
SMTP Tunnel Proxy Client
User: alice
[INFO] Starting SMTP Tunnel...
[INFO] SOCKS5 proxy will be available at 127.0.0.1:1080
Connecting to myserver.duckdns.org:587
Connected - binary mode active
SOCKS5 proxy on 127.0.0.1:1080
cd alice
pip install -r requirements.txt
python client.py
# Download files
scp [email protected]:/etc/smtp-tunnel/ca.crt .
# Create config.yaml:
cat > config.yaml << EOF
client:
server_host: "myserver.duckdns.org"
server_port: 587
socks_port: 1080
username: "alice"
secret: "your-secret-from-admin"
ca_cert: "ca.crt"
EOF
# Run client
python client.py -c config.yaml
Configura el proxy SOCKS5 en: 127.0.0.1:1080
127.0.0.1, Puerto: 1080127.0.0.1:1080Configuración → Red e Internet → Proxy → Configuración manual → socks=127.0.0.1:1080
Preferencias del Sistema → Red → Avanzado → Proxies → Proxy SOCKS → 127.0.0.1:1080
export ALL_PROXY=socks5://127.0.0.1:1080
curl -x socks5h://127.0.0.1:1080 https://ifconfig.me
git config --global http.proxy socks5://127.0.0.1:1080
export ALL_PROXY=socks5://127.0.0.1:1080
# Should show your VPS IP
curl -x socks5://127.0.0.1:1080 https://ifconfig.me
config.yaml)| Opción | Descripción | Valor por Defecto |
|---|---|---|
host | Interfaz de escucha | 0.0.0.0 |
port | Puerto de escucha | 587 |
hostname | Nombre de host SMTP (debe coincidir con el certificado) | mail.example.com |
cert_file | Ruta del certificado TLS | server.crt |
key_file | Ruta de la clave privada TLS | server.key |
users_file | Ruta del archivo de usuarios | users.yaml |
log_users | Configuración global de registro | true |
users.yaml)Cada usuario puede tener configuraciones individuales:
users:
alice:
secret: "auto-generated-secret"
# whitelist: # Optional: restrict to specific IPs
# - "192.168.1.100"
# - "10.0.0.0/8" # CIDR notation supported
# logging: true # Optional: disable to stop logging this user
bob:
secret: "another-secret"
whitelist:
- "203.0.113.50" # Bob can only connect from this IP
logging: false # Don't log Bob's activity
| Opción | Descripción | Valor por Defecto |
|---|---|---|
secret | Secreto de autenticación del usuario | Requerido |
whitelist | IPs permitidas para este usuario (soporta CIDR) | Todas las IPs |
logging | Habilitar registro de actividad para este usuario | true |