
Высокоскоростной скрытый туннель, маскирующий TCP-трафик под SMTP-переписку для обхода межсетевых экранов с глубоким анализом пакетов (DPI).
Высокоскоростной скрытый туннель, маскирующий TCP-трафик под SMTP-почтовое сообщение для обхода DPI-брандмауэров.
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌──────────────┐
│ Application │─────▶│ Client │─────▶│ Server │─────▶│ Internet │
│ (Browser) │ TCP │ SOCKS5:1080 │ SMTP │ Port 587 │ TCP │ │
│ │◀─────│ │◀─────│ │◀─────│ │
└─────────────┘ └─────────────┘ └─────────────┘ └──────────────┘
│ │
│ Выглядит как │
│ почтовый трафик │
▼ ▼
┌────────────────────────────────┐
│ DPI Firewall │
│ ✅ Видит: Обычная SMTP-сессия │
│ ❌ Не видит: Туннельные данные│
└────────────────────────────────┘
| Возможность | Описание |
|---|---|
| 🔒 TLS-шифрование | Весь трафик шифруется с помощью TLS 1.2+ после STARTTLS |
| 🎭 Обход DPI | Начальное рукопожатие имитирует реальные SMTP-серверы (Postfix) |
| ⚡ Высокая скорость | Бинарный потоковый протокол после рукопожатия — минимальные накладные расходы |
| 👥 Многопользовательский режим | Секреты для каждого пользователя, IP-белые списки и настройки логирования |
| 🔑 Аутентификация | Предустановленные ключи для каждого пользователя с HMAC-SHA256 |
| 🌐 SOCKS5-прокси | Стандартный интерфейс прокси — работает с любыми приложениями |
| 📡 Мультиплексирование | Несколько соединений через один туннель |
| 🛡️ IP-белый список | Контроль доступа для каждого пользователя по IP-адресу/CIDR |
| 📦 Простая установка | Установка сервера одной командой с systemd-сервисом |
| 🎁 Клиентские пакеты | Автоматически генерируемые ZIP-файлы для каждого пользователя |
| 🔄 Автоподключение | Клиент автоматически переподключается при потере соединения |
📚 Подробные технические детали, спецификации протокола и анализ безопасности см. в TECHNICAL.md.
Получите бесплатный домен, указывающий на ваш VPS:
Пример: myserver.duckdns.org → 203.0.113.50 (IP вашего VPS)
curl -sSL https://raw.githubusercontent.com/x011/smtp-tunnel-proxy/main/install.sh | sudo bash
Установщик:
Всё! Ваш сервер готов.
smtp-tunnel-adduser bob # Добавить пользователя + сгенерировать клиентский ZIP
smtp-tunnel-listusers # Список всех пользователей
smtp-tunnel-deluser bob # Удалить пользователя
smtp-tunnel-update # Обновляет код, сохраняя настройки/сертификаты/пользователей
username.zip от администратора сервера| Платформа | Как запустить |
|---|---|
| 🪟 Windows | Дважды щёлкните start.bat |
| 🐧 Linux | Запустите ./start.sh |
| 🍎 macOS | Запустите ./start.sh |
Лаунчер автоматически установит зависимости и запустит клиент.
✅ Вы должны увидеть:
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
# Скачать файлы
scp [email protected]:/etc/smtp-tunnel/ca.crt .
# Создать 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
# Запустить клиент
python client.py -c config.yaml
Установите SOCKS5-прокси: 127.0.0.1:1080
127.0.0.1, Порт: 1080127.0.0.1:1080Параметры → Сеть и Интернет → Прокси → Ручная настройка → socks=127.0.0.1:1080
Системные настройки → Сеть → Дополнительно → Прокси → 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
# Переменная окружения
export ALL_PROXY=socks5://127.0.0.1:1080
# Должен показать IP вашего VPS
curl -x socks5://127.0.0.1:1080 https://ifconfig.me
config.yaml)| Параметр | Описание | По умолчанию |
|---|---|---|
host | Интерфейс прослушивания | 0.0.0.0 |
port | Порт прослушивания | 587 |
hostname | SMTP-имя хоста (должно совпадать с сертификатом) | mail.example.com |
cert_file | Путь к TLS-сертификату | server.crt |
key_file | Путь к закрытому ключу TLS | server.key |
users_file | Путь к файлу конфигурации пользователей | users.yaml |
log_users | Глобальная настройка логирования | true |
users.yaml)Каждый пользователь может иметь индивидуальные настройки:
users:
alice:
secret: "auto-generated-secret"
# whitelist: # Опционально: ограничить определённые IP
# - "192.168.1.100"
# - "10.0.0.0/8" # Поддерживается нотация CIDR
# logging: true # Опционально: отключить логирование для этого пользователя
bob:
secret: "another-secret"
whitelist:
- "203.0.113.50" # Bob может подключаться только с этого IP
logging: false # Не логировать действия Bob
| Параметр | Описание | По умолчанию |
|---|---|---|
secret | Секрет аутентификации пользователя | Обязательный |
whitelist | Разрешённые IP для этого пользователя (поддерживается CIDR) | Все IP |
logging | Включить логирование активности для этого пользователя | true |