
Uma ferramenta de tunelamento encoberto de alta velocidade que disfarça o tráfego TCP como comunicação de e-mail SMTP para contornar firewalls de Inspeção Profunda de Pacotes (DPI).
Um túnel encoberto de alta velocidade que disfarça tráfego TCP como comunicação de e-mail SMTP para contornar firewalls de Inspeção Profunda de Pacotes (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 │
└────────────────────────────────┘
📚 Para detalhes técnicos aprofundados, especificações de protocolo e análise de segurança, consulte TECHNICAL.md.
Obtenha um domínio gratuito apontando para seu VPS:
Exemplo: myserver.duckdns.org → 203.0.113.50 (IP do seu VPS)
curl -sSL https://raw.githubusercontent.com/x011/smtp-tunnel-proxy/main/install.sh | sudo bash
O instalador irá:
Pronto! Seu servidor está pronto.
smtp-tunnel-adduser bob # Adicionar usuário + gerar ZIP do cliente
smtp-tunnel-listusers # Listar todos os usuários
smtp-tunnel-deluser bob # Remover um usuário
smtp-tunnel-update # Atualiza código, preserva config/certs/usuários
username.zip do administrador do servidor| Plataforma | Como Executar |
|---|---|
| 🪟 Windows | Clique duas vezes em start.bat |
O lançador instalará automaticamente as dependências e iniciará o cliente.
✅ Você deve 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
# Baixar arquivos
scp [email protected]:/etc/smtp-tunnel/ca.crt .
# Criar 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
# Executar cliente
python client.py -c config.yaml
Defina o proxy SOCKS5 para: 127.0.0.1:1080
127.0.0.1, Porta: 1080127.0.0.1:1080Configurações → Rede e Internet → Proxy → Configuração manual → socks=127.0.0.1:1080
Preferências do Sistema → Rede → Avançado → 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
# Variável de ambiente
export ALL_PROXY=socks5://127.0.0.1:1080
# Deve mostrar o IP do seu VPS
curl -x socks5://127.0.0.1:1080 https://ifconfig.me
config.yaml)users.yaml)Cada usuário pode ter configurações individuais:
users:
alice:
secret: "auto-generated-secret"
# whitelist: # Opcional: restringir a IPs específicos
# - "192.168.1.100"
# - "10.0.0.0/8" # Notação CIDR suportada
# logging: true # Opcional: desabilitar para parar de registrar este usuário
bob:
secret: "another-secret"
whitelist:
- "203.0.113.50" # Bob só pode conectar deste IP
logging: false # Não registrar a atividade de Bob
| Opção | Descrição | Padrão |
|---|---|---|
# Verificar status
sudo systemctl status smtp-tunnel
# Reiniciar após alterações na configuração
sudo systemctl restart smtp-tunnel
# Visualizar logs
sudo journalctl -u smtp-tunnel -n 100
# Desinstalar
sudo /opt/smtp-tunnel/uninstall.sh
python server.py [-c CONFIG] [-d]
-c, --config Arquivo de configuração (padrão: config.yaml)
-d, --debug Habilitar registro de depuração
python client.py [-c CONFIG] [--server HOST] [--server-port PORT]
[-p SOCKS_PORT] [-u USERNAME] [-s SECRET] [--ca-cert FILE] [-d]
-c, --config Arquivo de configuração (padrão: config.yaml)
--server Substituir domínio do servidor
--server-port Substituir porta do servidor
-p, --socks-port Substituir porta SOCKS local
-u, --username Seu nome de usuário
-s, --secret Substituir segredo
--ca-cert Caminho do certificado CA
-d, --debug Habilitar registro de depuração
smtp-tunnel-adduser <username> [-u USERS_FILE] [-c CONFIG] [--no-zip]
Adicionar um novo usuário e gerar pacote do cliente
smtp-tunnel-deluser <username> [-u USERS_FILE] [-f]
Remover um usuário (use -f para pular confirmação)
smtp-tunnel-listusers [-u USERS_FILE] [-v]
Listar todos os usuários (use -v para informações detalhadas)
smtp-tunnel-update
Atualizar servidor para a versão mais recente (preserva config/certs/usuários)
smtp_proxy/
├── 📄 server.py # Servidor (executa no VPS)
├── 📄 client.py # Cliente (executa localmente)
├── 📄 common.py # Utilitários compartilhados
├── 📄 generate_certs.py # Gerador de certificados
├── 📄 config.yaml # Configuração do servidor/cliente
├── 📄 users.yaml # Banco de dados de usuários
├── 📄 requirements.txt # Dependências Python
├── 📄 install.sh # Instalador do servidor em uma linha
├── 📄 smtp-tunnel.service # Arquivo de unidade systemd
├── 🔧 smtp-tunnel-adduser # Script para adicionar usuário
├── 🔧 smtp-tunnel-deluser # Script para remover usuário
├── 🔧 smtp-tunnel-listusers # Script para listar usuários
├── 🔧 smtp-tunnel-update # Script para atualizar servidor
├── 📄 README.md # Este arquivo
└── 📄 TECHNICAL.md # Documentação técnica
/opt/smtp-tunnel/ # Arquivos da aplicação
/etc/smtp-tunnel/ # Arquivos de configuração
├── config.yaml
├── users.yaml
├── server.crt
├── server.key
└── ca.crt
/usr/local/bin/ # Comandos de gerenciamento
├── smtp-tunnel-adduser
├── smtp-tunnel-deluser
├── smtp-tunnel-listusers
└── smtp-tunnel-update
systemctl status smtp-tunnel ou ps aux | grep server.pynetstat -tlnp | grep 587ufw statususername e secret correspondem em users.yamlsmtp-tunnel-listusers -v para verificar se o usuário existe10.0.0.0/8)server_host corresponde ao hostname do certificadoca.crt correto do servidor# Habilitar registro detalhado
python server.py -d
python client.py -d
# Visualizar logs do systemd
journalctl -u smtp-tunnel -f
ca_cert para prevenir ataques de homem-no-meiosmtp-tunnel-adduser para gerar segredos fortes automaticamenteusers.yaml - contém todos os segredos dos usuários (chmod 600)logging: false📚 Para análise de segurança detalhada e modelo de ameaças, consulte TECHNICAL.md.
Este projeto é fornecido apenas para uso educacional e autorizado. Use com responsabilidade e de acordo com as leis aplicáveis.
Esta ferramenta foi projetada para fins legítimos de privacidade e circunvenção de censura. Os usuários são responsáveis por garantir que seu uso esteja em conformidade com as leis e regulamentos aplicáveis.
Feito com ❤️ pela liberdade da internet
| Funcionalidade | Descrição |
|---|
| 🔒 Criptografia TLS | Todo o tráfego criptografado com TLS 1.2+ após STARTTLS |
| 🎭 Evasão de DPI | Handshake inicial imita servidores SMTP reais (Postfix) |
| ⚡ Alta Velocidade | Protocolo de streaming binário após handshake - sobrecarga mínima |
| 👥 Multiusuário | Segredos por usuário, listas brancas de IP e configurações de registro |
| 🔑 Autenticação | Chaves pré-compartilhadas por usuário com HMAC-SHA256 |
| 🌐 Proxy SOCKS5 | Interface de proxy padrão - funciona com qualquer aplicativo |
| 📡 Multiplexação | Múltiplas conexões em um único túnel |
| 🛡️ Lista Branca de IP | Controle de acesso por usuário por endereço IP/CIDR |
| 📦 Instalação Fácil | Instalação do servidor em uma linha com serviço systemd |
| 🎁 Pacotes do Cliente | Arquivos ZIP gerados automaticamente para cada usuário |
| 🔄 Reconexão Automática | Cliente reconecta automaticamente na perda de conexão |
| 🐧 Linux | Execute ./start.sh |
| 🍎 macOS | Execute ./start.sh |
| Opção | Descrição | Padrão |
|---|
host | Interface de escuta | 0.0.0.0 |
port | Porta de escuta | 587 |
hostname | Hostname SMTP (deve corresponder ao certificado) | mail.example.com |
cert_file | Caminho do certificado TLS | server.crt |
key_file | Caminho da chave privada TLS | server.key |
users_file | Caminho para configuração de usuários | users.yaml |
log_users | Configuração global de registro | true |
secret |
| Segredo de autenticação do usuário |
| Obrigatório |
whitelist | IPs permitidos para este usuário (CIDR suportado) | Todos os IPs |
logging | Habilitar registro de atividade para este usuário | true |
| Opção | Descrição | Padrão |
|---|
server_host | Nome de domínio do servidor | Obrigatório |
server_port | Porta do servidor | 587 |
socks_port | Porta SOCKS5 local | 1080 |
socks_host | Interface SOCKS5 local | 127.0.0.1 |
username | Seu nome de usuário | Obrigatório |
secret | Seu segredo de autenticação | Obrigatório |
ca_cert | Certificado CA para verificação | Recomendado |