
Un tunnel occulto ad alta velocità che maschera il traffico TCP come comunicazione email SMTP per bypassare i firewall di Ispezione Approfondita dei Pacchetti (DPI).
Un tunnel occulto ad alta velocità che maschera il traffico TCP come comunicazione email SMTP per bypassare i firewall con Deep Packet Inspection (DPI).
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌──────────────┐
│ Application │─────▶│ Client │─────▶│ Server │─────▶│ Internet │
│ (Browser) │ TCP │ SOCKS5:1080 │ SMTP │ Port 587 │ TCP │ │
│ │◀─────│ │◀─────│ │◀─────│ │
└─────────────┘ └─────────────┘ └─────────────┘ └──────────────┘
│ │
│ Sembra │
│ Traffico Email │
▼ ▼
┌────────────────────────────────┐
│ DPI Firewall │
│ ✅ Vede: Sessione SMTP Normale│
│ ❌ Non vede: Dati Tunnel │
└────────────────────────────────┘
📚 Per dettagli tecnici approfonditi, specifiche del protocollo e analisi di sicurezza, vedere TECHNICAL.md.
Ottieni un dominio gratuito che punti al tuo VPS:
Esempio: myserver.duckdns.org → 203.0.113.50 (IP del tuo VPS)
curl -sSL https://raw.githubusercontent.com/x011/smtp-tunnel-proxy/main/install.sh | sudo bash
L'installatore:
Fatto! Il tuo server è pronto.
smtp-tunnel-adduser bob # Aggiunge utente + genera ZIP client
smtp-tunnel-listusers # Elenca tutti gli utenti
smtp-tunnel-deluser bob # Rimuove un utente
smtp-tunnel-update # Aggiorna il codice, preserva configurazione/certificati/utenti
nomeutente.zip dall'amministratore del server| Piattaforma | Come Eseguire |
|---|---|
| 🪟 Windows | Fare doppio clic su start.bat |
Il launcher installerà automaticamente le dipendenze e avvierà il client.
✅ Dovresti vedere:
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
# Scarica i file
scp [email protected]:/etc/smtp-tunnel/ca.crt .
# Crea 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
# Esegui il client
python client.py -c config.yaml
Imposta il proxy SOCKS5 su: 127.0.0.1:1080
127.0.0.1, Porta: 1080127.0.0.1:1080Impostazioni → Rete e Internet → Proxy → Configurazione manuale → socks=127.0.0.1:1080
Preferenze di Sistema → Rete → Avanzate → Proxy → 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
# Variabile d'ambiente
export ALL_PROXY=socks5://127.0.0.1:1080
# Dovrebbe mostrare l'IP del tuo VPS
curl -x socks5://127.0.0.1:1080 https://ifconfig.me
config.yaml)users.yaml)Ogni utente può avere impostazioni individuali:
users:
alice:
secret: "auto-generated-secret"
# whitelist: # Opzionale: limita a IP specifici
# - "192.168.1.100"
# - "10.0.0.0/8" # Notazione CIDR supportata
# logging: true # Opzionale: disabilita per smettere di registrare questo utente
bob:
secret: "another-secret"
whitelist:
- "203.0.113.50" # Bob può connettersi solo da questo IP
logging: false # Non registrare l'attività di Bob
| Opzione | Descrizione | Predefinito |
|---|
# Controlla lo stato
sudo systemctl status smtp-tunnel
# Riavvia dopo modifiche alla configurazione
sudo systemctl restart smtp-tunnel
# Visualizza i log
sudo journalctl -u smtp-tunnel -n 100
# Disinstalla
sudo /opt/smtp-tunnel/uninstall.sh
python server.py [-c CONFIG] [-d]
-c, --config File di configurazione (predefinito: config.yaml)
-d, --debug Abilita logging di debug
python client.py [-c CONFIG] [--server HOST] [--server-port PORT]
[-p SOCKS_PORT] [-u USERNAME] [-s SECRET] [--ca-cert FILE] [-d]
-c, --config File di configurazione (predefinito: config.yaml)
--server Sovrascrive dominio del server
--server-port Sovrascrive porta del server
-p, --socks-port Sovrascrive porta SOCKS locale
-u, --username Il tuo nome utente
-s, --secret Sovrascrive segreto
--ca-cert Percorso certificato CA
-d, --debug Abilita logging di debug
smtp-tunnel-adduser <username> [-u USERS_FILE] [-c CONFIG] [--no-zip]
Aggiunge un nuovo utente e genera il pacchetto client
smtp-tunnel-deluser <username> [-u USERS_FILE] [-f]
Rimuove un utente (usa -f per saltare la conferma)
smtp-tunnel-listusers [-u USERS_FILE] [-v]
Elenca tutti gli utenti (usa -v per info dettagliate)
smtp-tunnel-update
Aggiorna il server all'ultima versione (preserva configurazione/certificati/utenti)
smtp_proxy/
├── 📄 server.py # Server (eseguito sul VPS)
├── 📄 client.py # Client (eseguito localmente)
├── 📄 common.py # Utility condivise
├── 📄 generate_certs.py # Generatore certificati
├── 📄 config.yaml # Configurazione server/client
├── 📄 users.yaml # Database utenti
├── 📄 requirements.txt # Dipendenze Python
├── 📄 install.sh # Installatore server con un comando
├── 📄 smtp-tunnel.service # File unità systemd
├── 🔧 smtp-tunnel-adduser # Script aggiunta utente
├── 🔧 smtp-tunnel-deluser # Script rimozione utente
├── 🔧 smtp-tunnel-listusers # Script elenco utenti
├── 🔧 smtp-tunnel-update # Script aggiornamento server
├── 📄 README.md # Questo file
└── 📄 TECHNICAL.md # Documentazione tecnica
/opt/smtp-tunnel/ # File dell'applicazione
/etc/smtp-tunnel/ # File di configurazione
├── config.yaml
├── users.yaml
├── server.crt
├── server.key
└── ca.crt
/usr/local/bin/ # Comandi di gestione
├── smtp-tunnel-adduser
├── smtp-tunnel-deluser
├── smtp-tunnel-listusers
└── smtp-tunnel-update
systemctl status smtp-tunnel o ps aux | grep server.pynetstat -tlnp | grep 587ufw statususername e secret corrispondano in users.yamlsmtp-tunnel-listusers -v per verificare che l'utente esista10.0.0.0/8)server_host corrisponda al nome host del certificatoca.crt corretto dal server# Abilita logging dettagliato
python server.py -d
python client.py -d
# Visualizza i log di systemd
journalctl -u smtp-tunnel -f
ca_cert per prevenire attacchi man-in-the-middlesmtp-tunnel-adduser per generare automaticamente segreti robustiusers.yaml - contiene tutti i segreti degli utenti (chmod 600)logging: false📚 Per analisi di sicurezza dettagliata e modello delle minacce, vedere TECHNICAL.md.
Questo progetto è fornito solo per scopi educativi e per utilizzo autorizzato. Usalo in modo responsabile e in conformità con le leggi applicabili.
Questo strumento è progettato per scopi legittimi di privacy e aggiramento della censura. Gli utenti sono responsabili di assicurarsi che il loro utilizzo sia conforme alle leggi e ai regolamenti applicabili.
Realizzato con ❤️ per la libertà di Internet
| Funzionalità | Descrizione |
|---|
| 🔒 Crittografia TLS | Tutto il traffico è crittografato con TLS 1.2+ dopo STARTTLS |
| 🎭 Elusione DPI | L'handshake iniziale imita i server SMTP reali (Postfix) |
| ⚡ Alta Velocità | Protocollo di streaming binario dopo l'handshake - overhead minimo |
| 👥 Multi-Utente | Segreti per utente, whitelist IP e impostazioni di logging |
| 🔑 Autenticazione | Chiavi pre-condivise per utente con HMAC-SHA256 |
| 🌐 Proxy SOCKS5 | Interfaccia proxy standard - funziona con qualsiasi applicazione |
| 📡 Multiplexing | Multiple connessioni su un singolo tunnel |
| 🛡️ Whitelist IP | Controllo accesso per utente tramite indirizzo IP/CIDR |
| 📦 Installazione Semplice | Installazione server con un comando e servizio systemd |
| 🎁 Pacchetti Client | File ZIP generati automaticamente per ogni utente |
| 🔄 Riconnessione Automatica | Il client si riconnette automaticamente in caso di perdita di connessione |
| 🐧 Linux | Eseguire ./start.sh |
| 🍎 macOS | Eseguire ./start.sh |
| Opzione | Descrizione | Predefinito |
|---|
host | Interfaccia di ascolto | 0.0.0.0 |
port | Porta di ascolto | 587 |
hostname | Nome host SMTP (deve corrispondere al certificato) | mail.example.com |
cert_file | Percorso certificato TLS | server.crt |
key_file | Percorso chiave privata TLS | server.key |
users_file | Percorso file configurazione utenti | users.yaml |
log_users | Impostazione di logging globale | true |
secret | Segreto di autenticazione dell'utente | Obbligatorio |
whitelist | IP consentiti per questo utente (CIDR supportato) | Tutti gli IP |
logging | Abilita la registrazione dell'attività per questo utente | true |
| Opzione | Descrizione | Predefinito |
|---|
server_host | Nome di dominio del server | Obbligatorio |
server_port | Porta del server | 587 |
socks_port | Porta SOCKS5 locale | 1080 |
socks_host | Interfaccia SOCKS5 locale | 127.0.0.1 |
username | Il tuo nome utente | Obbligatorio |
secret | Il tuo segreto di autenticazione | Obbligatorio |
ca_cert | Certificato CA per la verifica | Consigliato |