Proxy4Smtp SOCKS5 service unreachable on port 1081 (all IPs timeout)
Author: yzoamCreated Jan 16, 2026Updated Jan 19, 2026
Email to check
gmail.com
From where did you run check-if-email-exists?
Self-hosted Docker on Advin VPS using reacherhq/commercial-license-trial:latest
Version of check-if-email-exists (if running it yourself)
reacherhq/commercial-license-trial:latest (v0.11.6)
What happened?
Summary
The built-in Proxy4Smtp SOCKS5 proxy is unreachable on port 1081. All email verifications return is_reachable: "unknown" with a SOCKS5 timeout error.
Error Message
{
"is_reachable": "unknown",
"smtp": {
"error": {
"type": "Socks5",
"message": "i/o error: Operation timed out (os error 110)"
}
}
}Investigation
I tested connectivity to all Proxy4Smtp IPs from multiple environments:
| IP | Ping | Port 1081 |
|---|---|---|
| 51.89.178.174 (default in docker image) | Success | Timeout |
| 46.166.184.114 (from DNS) | Success | Timeout |
| 185.206.180.90 (from DNS) | Success | Timeout/Refused |
Tests were run from:
- My local machine (Archlinux)
- A VPS (Advin - verified ports 1080/1081 are NOT firewalled by provider)
# Ping works
$ ping -c1 51.89.178.174
64 bytes from 51.89.178.174: icmp_seq=1 ttl=43 time=108 ms
# Port 1081 times out
$ nc -vz -w5 51.89.178.174 1081
nc: connect to 51.89.178.174 port 1081 (tcp) timed outProxy Config (from debug logs)
host: "51.89.178.174"
port: 1081
username: "verify"
password: "verify"docker-compose file
services:
# RabbitMQ - Job Queue
rabbitmq:
image: rabbitmq:4.0-management
container_name: reacher-rabbitmq
restart: unless-stopped
networks:
- reacher-internal
environment:
RABBITMQ_DEFAULT_USER: ${REACHER_RABBITMQ_USER:-reacher}
RABBITMQ_DEFAULT_PASS: ${REACHER_RABBITMQ_PASS}
healthcheck:
test: rabbitmq-diagnostics -q ping
interval: 10s
timeout: 5s
retries: 5
postgres:
image: postgres:14
container_name: reacher-postgres
restart: unless-stopped
networks:
- reacher-internal
environment:
POSTGRES_USER: ${REACHER_POSTGRES_USER:-reacher}
POSTGRES_PASSWORD: ${REACHER_POSTGRES_PASSWORD}
POSTGRES_DB: ${REACHER_POSTGRES_DB:-reacher_db}
volumes:
- reacher-postgres-data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${REACHER_POSTGRES_USER:-reacher} -d ${REACHER_POSTGRES_DB:-reacher_db}"]
interval: 10s
timeout: 5s
retries: 5
reacher-api:
image: reacherhq/commercial-license-trial:latest
container_name: reacher-api
restart: unless-stopped
networks:
- proxy
- reacher-internal
depends_on:
rabbitmq:
condition: service_healthy
postgres:
condition: service_healthy
environment:
- RCH__COMMERCIAL_LICENSE_TRIAL__API_TOKEN=${REACHER_API_TOKEN}
- RCH__HEADER_SECRET=${REACHER_HEADER_SECRET}
- RCH__HTTP_HOST=0.0.0.0
- RCH__WORKER__ENABLE=false
- RCH__WORKER__RABBITMQ__URL=amqp://${REACHER_RABBITMQ_USER:-reacher}:${REACHER_RABBITMQ_PASS}@rabbitmq:5672
- RCH__STORAGE__POSTGRES__DB_URL=postgres://${REACHER_POSTGRES_USER:-reacher}:${REACHER_POSTGRES_PASSWORD}@postgres:5432/${REACHER_POSTGRES_DB:-reacher_db}
- RUST_LOG=reacher=debug
labels:
- "traefik.enable=true"
- "traefik.http.routers.reacher.rule=Host(`reacher.${DOMAIN}`)"
- "traefik.http.routers.reacher.entrypoints=websecure"
- "traefik.http.routers.reacher.tls.certresolver=spaceship"
- "traefik.http.services.reacher.loadbalancer.server.port=8080"
reacher-worker:
image: reacherhq/commercial-license-trial:latest
restart: unless-stopped
networks:
- reacher-internal
depends_on:
rabbitmq:
condition: service_healthy
postgres:
condition: service_healthy
deploy:
replicas: 3
environment:
- RCH__COMMERCIAL_LICENSE_TRIAL__API_TOKEN=${REACHER_API_TOKEN}
- RCH__WORKER__ENABLE=true
- RCH__WORKER__RABBITMQ__URL=amqp://${REACHER_RABBITMQ_USER:-reacher}:${REACHER_RABBITMQ_PASS}@rabbitmq:5672
- RCH__WORKER__RABBITMQ__CONCURRENCY=5
- RCH__STORAGE__POSTGRES__DB_URL=postgres://${REACHER_POSTGRES_USER:-reacher}:${REACHER_POSTGRES_PASSWORD}@postgres:5432/${REACHER_POSTGRES_DB:-reacher_db}
- RUST_LOG=reacher=debug
networks:
proxy:
external: true
reacher-internal:
driver: bridge
volumes:
reacher-postgres-data:Notes
- Proxy4Smtp website redirects to proxy25.com now
- Port 443 connections work fine to other hosts
- This affects both single-server and RabbitMQ-based worker setups
- I tried bypassing Traefik & just deploying this without Traefik. Same results.
Expected Behavior
Proxy4Smtp should accept SOCKS5 connections on port 1081 and successfully proxy SMTP traffic.
Actual Behavior
All connection attempts to Proxy4Smtp on port 1081 timeout, making email verification impossible.
Relevant log output
2026-01-16T07:48:56.884963Z INFO reacher: Starting verification email="[email protected]"
2026-01-16T07:48:56.885108Z DEBUG reacher: Checking email [email protected]
2026-01-16T07:48:56.886496Z DEBUG reacher: Found syntax validation [email protected] syntax=SyntaxDetails { address: Some(EmailAddress(EmailAddress("[email protected]"))), domain: "gmail.com", is_valid_syntax: true, username: "redacted", normalized_email: Some("[email protected]"), suggestion: None }
2026-01-16T07:48:56.899932Z DEBUG reacher: Found MX hosts [email protected] mx_hosts=["5 gmail-smtp-in.l.google.com.", "40 alt4.gmail-smtp-in.l.google.com.", "10 alt1.gmail-smtp-in.l.google.com.", "20 alt2.gmail-smtp-in.l.google.com.", "30 alt3.gmail-smtp-in.l.google.com."]
2026-01-16T07:48:56.929440Z DEBUG reacher: Found misc details [email protected] misc=MiscDetails { is_disposable: false, is_role_account: false, is_b2c: true, gravatar_url: None, haveibeenpwned: None }
2026-01-16T07:48:56.929538Z DEBUG reacher: Check SMTP email="[email protected]" attempt=1 mx_host="gmail-smtp-in.l.google.com." port=25 using_proxy=true
2026-01-16T07:51:13.355397Z DEBUG reacher: Got SMTP check result email="[email protected]" attempt=1 mx_host="gmail-smtp-in.l.google.com." port=25 result=Err(Socks5(Io(Os { code: 110, kind: TimedOut, message: "Operation timed out" })))
2026-01-16T07:51:13.355566Z DEBUG reacher: Sending error to Sentry: Smtp(Socks5(Io(Os { code: 110, kind: TimedOut, message: "Operation timed out" })))
2026-01-16T07:51:13.367103Z DEBUG reacher: Wrote to DB email="[email protected]"
2026-01-16T07:51:14.379796Z DEBUG reacher: Sent result to Reacher Commercial License Trial email="[email protected]" res="{\"ok\":true}"
2026-01-16T07:51:14.379830Z INFO reacher: Done verification email="[email protected]" is_reachable=Unknown
2026-01-16T07:51:14.379913Z INFO reacher: 172.22.0.1:44588 "POST /v1/check_email HTTP/1.1" 200 "-" "curl/8.5.0" 137.495157873sSource: reacherhq/check-if-email-exists