SMTP Tunnel Proxy – SOCKS5 rapide basé sur SMTP pour éviter le DPI January 25, 2026 Catégorie: Projets Open Source Pratiques Étiquettes: Open Source Python SMTP Tunnel DPI Bypass SOCKS5 Proxy Introduction\n\nÀ une époque où l’inspection approfondie des paquets (DPI) peut bloquer le trafic web, les chercheurs et les défenseurs de la vie privée ont besoin de solutions qui allient invisibilité et performance. Le SMTP Tunnel Proxy comble ce vide en convertissant n’importe quel flux TCP en conversation SMTP, permettant aux données de passer par des ports SMTP approuvés (habituellement 25, 587 ou 465). Construit en Python pur, il est rapide à déployer et ne nécessite aucun changement de noyau.\n\n## Énoncé du problème\n\n- De nombreux pare‑feux d’entreprise et nationaux filtrent le trafic sur les ports 80/443, bloquant HTTPS.\n- Les VPN traditionnels et les tunnels SSH sont détectés ou entravés par le DPI.\n- La contournement de la censure nécessite des outils qui se présentent comme inoffensifs.\n\nSolution : Utiliser le protocole SMTP standard comme couverture, en exploitant TLS pour le chiffrement et les ports de relais mail standard que les pare‑feux scrutent rarement.\n\n## Vue d’ensemble de l’architecture\n\n`\nBrowser → SOCKS5 Client → SMTP Tunnel Server → Internet\n TCP traffic disguised as SMTP over TLS normal outbound\n\n\nComposants clés :\n* Serveur – écoute sur le TCP 587, effectue une poignée de main STARTTLS, puis passe à un protocole binaire personnalisé.\n* Client – un proxy SOCKS5 local (port 1080 par défaut) qui transmet le trafic via le serveur.\n* Couche utilisateur – chaque nom d’utilisateur obtient une clé pré‑partagée unique, une liste blanche IP facultative et une journalisation par utilisateur.\n\n## Fonctionnalités principales\n\n| Fonctionnalité | Description |\n|---|---|\n| TLS 1.2+ | Toutes les données chiffrées après STARTTLS |\n| Évasion DPI | La poignée de main imite les vrais serveurs Postfix |\n| Haute‑vitesse | Streaming binaire avec un surcoût minimal |\n| Multi‑utilisateur | Secrets séparés, restrictions IP, journalisation |\n| Reconnexion automatique | Le client se reconnecte après une rupture |\n| Installation en une ligne | curl … | sudo bash |\n| Service Systemd | S’exécute en arrière‑plan et redémarre au boot |\n\n## Guide rapide pour débuter\n\n### 1. Configuration du serveur (VPS Linux)\n\nbash\n# 1. Choisissez un domaine pointant vers votre VPS (DuckDNS, No‑IP, etc.)\n# 2. Exécutez l’installateur en une ligne\ncurl -sSL https://raw.githubusercontent.com/x011/smtp-tunnel-proxy/main/install.sh | sudo bash\n\n\nL’installateur :\n* Télécharge tous les fichiers requis.\n* Demande votre nom de domaine.\n* Génère les certificats TLS.\n* Crée le premier utilisateur.\n* Configure le pare‑feu et lance un service systemd.\n\n### 2. Ajout d’utilisateurs supplémentaires\n\nbash\nsudo smtp-tunnel-adduser alice # crée un ZIP avec la configuration client\nsudo smtp-tunnel-adduser bob\n\n\nLe ZIP contient client.py, start.sh/.bat, et config.yaml avec le secret de l’utilisateur.\n\n### 3. Configuration du client (Windows/Linux/macOS)\n\nOption A – Facile (recommandé)\n1. Extrayez le fichier alice.zip.\n2. Exécutez start.bat (Windows) ou ./start.sh (Linux/macOS).\n\nOption B – Manuel\n\nbash\ncd alice\npip install -r requirements.txt\npython client.py\n\n\nLe client démarre automatiquement un écouteur SOCKS5 sur 127.0.0.1:1080.\n\n### 4. Pointez vos applications vers le proxy SOCKS\n\n* Navigateur → http://127.0.0.1:1080 (Firefox, Chrome).\n* Système complet → Variable d’environnement ALL_PROXY=socks5://127.0.0.1:1080.\n* Testez avec curl -x socks5://127.0.0.1:1080 https://ifconfig.me.\n\n## Configuration avancée\n\n* Liste blanche IP – éditez users.yaml et ajoutez des blocs CIDR sous chaque utilisateur.\n* Journalisation – activez/désactivez logging: true/false par utilisateur.\n* Ports personnalisés – changez socks_port ou server_port dans config.yaml.\n* Mise à jour – smtp-tunnel-update synchronise le dernier code tout en préservant la configuration.\n\n## Recommandations de sécurité\n\n1. Utilisez un domaine – les certificats TLS exigent un nom d’hôte ; les adresses IP déclenchent des erreurs de vérification.\n2. Conservez ca.crt – distribuez le fichier CA aux clients pour éviter des MITM.\n3. Restreignez les IP – liste blanche des IP client connues si possible.\n4. Protégez users.yaml – définissez les permissions de fichier sur 600.\n5. Désactivez la journalisation pour les utilisateurs sensibles – empêcher la fuite d’information dans les logs.\n\n## FAQ dépannage\n\n| Symptom | Probable cause | Solution |\n|---|---|---|\n| Connexion refusée | Le serveur ne tourne pas | sudo systemctl status smtp-tunnel ou ps aux | grep server.py |\n| Authentification échouée | Secret non correspondant | Vérifiez users.yaml; régénérez l’utilisateur avec smtp-tunnel-adduser |\n| IP non dans la liste blanche | L’IP actuelle n’est pas dans la liste | Mettez à jour users.yaml ou supprimez la clé whitelist |\n| Vérification du certificat échouée | Utilisation d’une IP, domaine qui ne correspond pas | Assurez‑vous que server_host correspond au certificat ; copiez ca.crt |\n\n## Conclusion\n\nLe SMTP Tunnel Proxy démontre qu’il est possible de construire un tunnel fiable et hyper‑rapide qui se déguisent en trafic SMTP légitime. Sa mise en œuvre pure‑Python, son installateur en une ligne simple et son ensemble de fonctionnalités robustes en font un excellent choix pour les développeurs, les administrateurs systèmes et les défenseurs de la vie privée désireux de contourner des réseaux restrictifs sans configuration VPN complexe.\n\nN’hésitez pas à forker le dépôt, contribuer à l’amélioration ou l’adapter à vos propres besoins de contournement de la censure. Bon tunnel ! Original Article: Voir l’original Partager cet article