
Ein Hochgeschwindigkeits-Covert-Tunnel, der TCP-Verkehr als SMTP-E-Mail-Kommunikation tarnt, um Deep Packet Inspection (DPI)-Firewalls zu umgehen.
Ein Hochgeschwindigkeits-Verdeckter-Tunnel, der TCP-Verkehr als SMTP-E-Mail-Kommunikation tarnt, um Deep Packet Inspection (DPI)-Firewalls zu umgehen.
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌──────────────┐
│ Application │─────▶│ Client │─────▶│ Server │─────▶│ Internet │
│ (Browser) │ TCP │ SOCKS5:1080 │ SMTP │ Port 587 │ TCP │ │
│ │◀─────│ │◀─────│ │◀─────│ │
└─────────────┘ └─────────────┘ └─────────────┘ └──────────────┘
│ │
│ Sieht aus wie │
│ E-Mail-Verkehr │
▼ ▼
┌────────────────────────────────┐
│ DPI Firewall │
│ ✅ Sieht: Normale SMTP-Sitzung│
│ ❌ Kann nicht sehen: Tunneldaten│
└────────────────────────────────┘
📚 Für detaillierte technische Details, Protokollspezifikationen und Sicherheitsanalyse siehe TECHNICAL.md.
Holen Sie sich eine kostenlose Domain, die auf Ihren VPS zeigt:
Beispiel: myserver.duckdns.org → 203.0.113.50 (Ihre VPS-IP)
curl -sSL https://raw.githubusercontent.com/x011/smtp-tunnel-proxy/main/install.sh | sudo bash
Das Installationsprogramm wird:
Das war's! Ihr Server ist bereit.
smtp-tunnel-adduser bob # Benutzer hinzufügen + Client-ZIP generieren
smtp-tunnel-listusers # Alle Benutzer auflisten
smtp-tunnel-deluser bob # Benutzer entfernen
smtp-tunnel-update # Aktualisiert Code, behält Konfiguration/Zertifikate/Benutzer
username.zip-Datei vom Server-Administrator| Plattform | Ausführung |
|---|---|
Der Starter installiert automatisch Abhängigkeiten und startet den Client.
✅ Sie sollten sehen:
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
# Dateien herunterladen
scp [email protected]:/etc/smtp-tunnel/ca.crt .
# config.yaml erstellen:
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
# Client ausführen
python client.py -c config.yaml
Setzen Sie den SOCKS5-Proxy auf: 127.0.0.1:1080
127.0.0.1, Port: 1080127.0.0.1:1080Einstellungen → Netzwerk und Internet → Proxy → Manuelle Einrichtung → socks=127.0.0.1:1080
Systemeinstellungen → Netzwerk → Erweitert → Proxys → SOCKS-Proxy → 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
# Umgebungsvariable
export ALL_PROXY=socks5://127.0.0.1:1080
# Sollte Ihre VPS-IP anzeigen
curl -x socks5://127.0.0.1:1080 https://ifconfig.me
config.yaml)users.yaml)Jeder Benutzer kann individuelle Einstellungen haben:
users:
alice:
secret: "auto-generated-secret"
# whitelist: # Optional: auf bestimmte IPs beschränken
# - "192.168.1.100"
# - "10.0.0.0/8" # CIDR-Notation unterstützt
# logging: true # Optional: deaktivieren, um Protokollierung dieses Benutzers zu stoppen
bob:
secret: "another-secret"
whitelist:
- "203.0.113.50" # Bob kann sich nur von dieser IP verbinden
logging: false # Bobs Aktivitäten nicht protokollieren
| Option | Beschreibung | Standard |
|---|
# Status prüfen
sudo systemctl status smtp-tunnel
# Nach Konfigurationsänderungen neu starten
sudo systemctl restart smtp-tunnel
# Logs anzeigen
sudo journalctl -u smtp-tunnel -n 100
# Deinstallieren
sudo /opt/smtp-tunnel/uninstall.sh
python server.py [-c CONFIG] [-d]
-c, --config Config-Datei (Standard: config.yaml)
-d, --debug Debug-Logging aktivieren
python client.py [-c CONFIG] [--server HOST] [--server-port PORT]
[-p SOCKS_PORT] [-u USERNAME] [-s SECRET] [--ca-cert FILE] [-d]
-c, --config Config-Datei (Standard: config.yaml)
--server Server-Domain überschreiben
--server-port Server-Port überschreiben
-p, --socks-port Lokalen SOCKS-Port überschreiben
-u, --username Ihr Benutzername
-s, --secret Geheimnis überschreiben
--ca-cert Pfad zum CA-Zertifikat
-d, --debug Debug-Logging aktivieren
smtp-tunnel-adduser <username> [-u USERS_FILE] [-c CONFIG] [--no-zip]
Neuen Benutzer hinzufügen und Client-Paket generieren
smtp-tunnel-deluser <username> [-u USERS_FILE] [-f]
Benutzer entfernen (-f zum Überspringen der Bestätigung)
smtp-tunnel-listusers [-u USERS_FILE] [-v]
Alle Benutzer auflisten (-v für detaillierte Informationen)
smtp-tunnel-update
Server auf neueste Version aktualisieren (behält Konfiguration/Zertifikate/Benutzer)
smtp_proxy/
├── 📄 server.py # Server (läuft auf VPS)
├── 📄 client.py # Client (läuft lokal)
├── 📄 common.py # Gemeinsame Dienstprogramme
├── 📄 generate_certs.py # Zertifikatsgenerator
├── 📄 config.yaml # Server-/Client-Konfiguration
├── 📄 users.yaml # Benutzerdatenbank
├── 📄 requirements.txt # Python-Abhängigkeiten
├── 📄 install.sh # Einzeiler-Serverinstaller
├── 📄 smtp-tunnel.service # Systemd-Einheitendatei
├── 🔧 smtp-tunnel-adduser # Skript zum Hinzufügen von Benutzern
├── 🔧 smtp-tunnel-deluser # Skript zum Entfernen von Benutzern
├── 🔧 smtp-tunnel-listusers # Skript zum Auflisten von Benutzern
├── 🔧 smtp-tunnel-update # Skript zum Aktualisieren des Servers
├── 📄 README.md # Diese Datei
└── 📄 TECHNICAL.md # Technische Dokumentation
/opt/smtp-tunnel/ # Anwendungsdateien
/etc/smtp-tunnel/ # Konfigurationsdateien
├── config.yaml
├── users.yaml
├── server.crt
├── server.key
└── ca.crt
/usr/local/bin/ # Verwaltungsbefehle
├── smtp-tunnel-adduser
├── smtp-tunnel-deluser
├── smtp-tunnel-listusers
└── smtp-tunnel-update
systemctl status smtp-tunnel oder ps aux | grep server.pynetstat -tlnp | grep 587ufw statususername und secret in users.yaml übereinstimmensmtp-tunnel-listusers -v aus, um zu überprüfen, ob der Benutzer existiertusers.yaml10.0.0.0/8)server_host mit dem Zertifikats-Hostnamen übereinstimmtca.crt vom Server haben# Detaillierte Protokollierung aktivieren
python server.py -d
python client.py -d
# Systemd-Logs anzeigen
journalctl -u smtp-tunnel -f
ca_cert, um Man-in-the-Middle-Angriffe zu verhindernsmtp-tunnel-adduser, um automatisch starke Geheimnisse zu generierenusers.yaml – enthält alle Benutzergeheimnisse (chmod 600)logging: false📚 Für detaillierte Sicherheitsanalyse und Bedrohungsmodell siehe TECHNICAL.md.
Dieses Projekt wird nur für Bildungs- und autorisierte Zwecke bereitgestellt. Verwenden Sie es verantwortungsvoll und in Übereinstimmung mit den geltenden Gesetzen.
Dieses Tool ist für legitime Zwecke des Datenschutzes und der Umgehung von Zensur konzipiert. Die Benutzer sind dafür verantwortlich, sicherzustellen, dass ihre Nutzung den geltenden Gesetzen und Vorschriften entspricht.
Mit ❤️ für die Internetfreiheit gemacht
| Feature | Beschreibung |
|---|
| 🔒 TLS-Verschlüsselung | Der gesamte Verkehr wird nach STARTTLS mit TLS 1.2+ verschlüsselt |
| 🎭 DPI-Umgehung | Der anfängliche Handshake imitiert echte SMTP-Server (Postfix) |
| ⚡ Hohe Geschwindigkeit | Binäres Streaming-Protokoll nach dem Handshake – minimaler Overhead |
| 👥 Mehrbenutzer | Benutzerspezifische Geheimnisse, IP-Whitelists und Protokollierungseinstellungen |
| 🔑 Authentifizierung | Pro Benutzer vorab vereinbarte Schlüssel mit HMAC-SHA256 |
| 🌐 SOCKS5-Proxy | Standardschnittstelle – funktioniert mit jeder Anwendung |
| 📡 Multiplexing | Mehrere Verbindungen über einen einzigen Tunnel |
| 🛡️ IP-Whitelist | Zugangskontrolle pro Benutzer nach IP-Adresse/CIDR |
| 📦 Einfache Installation | Einzeilige Serverinstallation mit systemd-Dienst |
| 🎁 Client-Pakete | Automatisch generierte ZIP-Dateien für jeden Benutzer |
| 🔄 Automatische Wiederverbindung | Client verbindet sich bei Verbindungsverlust automatisch neu |
| 🪟 Windows |
Doppelklicken Sie auf start.bat |
| 🐧 Linux | Führen Sie ./start.sh aus |
| 🍎 macOS | Führen Sie ./start.sh aus |
| Option | Beschreibung | Standard |
|---|
host | Listen-Interface | 0.0.0.0 |
port | Listen-Port | 587 |
hostname | SMTP-Hostname (muss mit Zertifikat übereinstimmen) | mail.example.com |
cert_file | Pfad zum TLS-Zertifikat | server.crt |
key_file | Pfad zum TLS-Private-Key | server.key |
users_file | Pfad zur Benutzerkonfiguration | users.yaml |
log_users | Globale Protokollierungseinstellung | true |
secret | Authentifizierungsgeheimnis des Benutzers | Erforderlich |
whitelist | Erlaubte IPs für diesen Benutzer (CIDR unterstützt) | Alle IPs |
logging | Aktivitätsprotokollierung für diesen Benutzer aktivieren | true |
| Option | Beschreibung | Standard |
|---|
server_host | Server-Domainname | Erforderlich |
server_port | Server-Port | 587 |
socks_port | Lokaler SOCKS5-Port | 1080 |
socks_host | Lokale SOCKS5-Schnittstelle | 127.0.0.1 |
username | Ihr Benutzername | Erforderlich |
secret | Ihr Authentifizierungsgeheimnis | Erforderlich |
ca_cert | CA-Zertifikat zur Verifizierung | Empfohlen |