
Un tunnel clandestin à haute vitesse qui déguise le trafic TCP en communication email SMTP pour contourner les pare-feux d'inspection profonde des paquets (DPI).
Un tunnel furtif haute vitesse qui déguise le trafic TCP en communication email SMTP pour contourner les pare-feux d'inspection approfondie des paquets (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 │
└────────────────────────────────┘
| Fonctionnalité | Description |
|---|---|
| 🔒 Chiffrement TLS | Tout le trafic chiffré avec TLS 1.2+ après STARTTLS |
| 🎭 Contournement DPI | La poignée de main initiale imite les serveurs SMTP réels (Postfix) |
| ⚡ Haute vitesse | Protocole de flux binaire après la poignée de main - surcharge minimale |
| 👥 Multi-utilisateur | Secrets par utilisateur, listes blanches IP et paramètres de journalisation |
| 🔑 Authentification | Clés pré-partagées par utilisateur avec HMAC-SHA256 |
| 🌐 Proxy SOCKS5 | Interface proxy standard - fonctionne avec n'importe quelle application |
| 📡 Multiplexage | Connexions multiples sur un seul tunnel |
| 🛡️ Liste blanche IP | Contrôle d'accès par utilisateur par adresse IP/CIDR |
| 📦 Installation facile | Installation du serveur en une ligne avec service systemd |
| 🎁 Paquets clients | Fichiers ZIP générés automatiquement pour chaque utilisateur |
| 🔄 Reconnexion automatique | Le client se reconnecte automatiquement en cas de perte de connexion |
📚 Pour des détails techniques approfondis, les spécifications du protocole et l'analyse de sécurité, voir TECHNICAL.md.
Obtenez un domaine gratuit pointant vers votre VPS :
Exemple : myserver.duckdns.org → 203.0.113.50 (l'IP de votre VPS)
curl -sSL https://raw.githubusercontent.com/x011/smtp-tunnel-proxy/main/install.sh | sudo bash
L'installateur va :
Et voilà ! Votre serveur est prêt.
smtp-tunnel-adduser bob # Ajouter un utilisateur + générer un ZIP client
smtp-tunnel-listusers # Lister tous les utilisateurs
smtp-tunnel-deluser bob # Supprimer un utilisateur
smtp-tunnel-update # Met à jour le code, préserve la configuration/certificats/utilisateurs
username.zip auprès de l'administrateur du serveur| Plateforme | Comment exécuter |
|---|---|
| 🪟 Windows | Double-cliquez sur start.bat |
| 🐧 Linux | Exécutez ./start.sh |
| 🍎 macOS | Exécutez ./start.sh |
Le lanceur installera automatiquement les dépendances et démarrera le client.
✅ Vous devriez voir :
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
Définir le proxy SOCKS5 sur : 127.0.0.1:1080
127.0.0.1, Port : 1080127.0.0.1:1080Paramètres → Réseau et Internet → Proxy → Configuration manuelle → socks=127.0.0.1:1080
Préférences Système → Réseau → Avancé → Proxies → Proxy SOCKS → 127.0.0.1:1080
export ALL_PROXY=socks5://127.0.0.1:1080
# curl
curl -x socks5h://127.0.0.1:1080 https://ifconfig.me
# git
git config --global http.proxy socks5://127.0.0.1:1080
# Environment variable
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)| Option | Description | Défaut |
|---|---|---|
host | Interface d'écoute | 0.0.0.0 |
port | Port d'écoute | 587 |
hostname | Nom d'hôte SMTP (doit correspondre au certificat) | mail.example.com |
cert_file | Chemin du certificat TLS | server.crt |
key_file | Chemin de la clé privée TLS | server.key |
users_file | Chemin vers la configuration des utilisateurs | users.yaml |
log_users | Paramètre global de journalisation | true |
users.yaml)Chaque utilisateur peut avoir des paramètres individuels :
users:
alice:
secret: "auto-generated-secret"
# whitelist: # Optionnel : restreindre à des IP spécifiques
# - "192.168.1.100"
# - "10.0.0.0/8" # Notation CIDR prise en charge
# logging: true # Optionnel : désactiver pour arrêter la journalisation de cet utilisateur
bob:
secret: "another-secret"
whitelist:
- "203.0.113.50" # Bob ne peut se connecter qu'à partir de cette IP
logging: false # Ne pas journaliser l'activité de Bob
| Option | Description | Défaut |
|---|---|---|
secret | Secret d'authentification de l'utilisateur | Requis |
whitelist | IP autorisées pour cet utilisateur (CIDR pris en charge) | Toutes les IP |
logging | Activer la journalisation des activités pour cet utilisateur | true |