Skip to content

Latest commit

Β 

History

21 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ“§ Bulk Email Verifier

Self-hosted bulk email verification β€” free forever. No paid APIs.

Syntax Β· MX records Β· live SMTP dialog Β· CSV export


Node.js Go Docker License PRs Welcome


Screenshots

See the portfolio demos page for project previews. Run locally and capture with demo data:

npm start
# Open http://localhost:5000 β€” use sample emails only

πŸ† Why this project?

Paid SaaS (Hunter, etc.) This app
Cost πŸ’Έ Per email βœ… $0
Data privacy Sent to third parties βœ… Stays on your PC
SMTP proof Yes βœ… Yes (truemail-go / Reacher)
Bulk CSV Yes βœ… Any column

✨ Features

  • πŸ” Single verify β€” verify-email.org style checklist + SMTP server text
  • πŸ“‚ Bulk CSV / XLSX β€” finds emails in any column
  • βœ… Valid-only export β€” download clean list with original columns
  • πŸ”„ Resume bulk jobs β€” switch tabs; open Bulk Verify again to continue
  • πŸ” JWT auth + validation history
  • πŸŒ™ Dark mode

πŸ›  Tech stack

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Browser  β†’  Node.js + Express (:5000)  UI + API        β”‚
β”‚                    β”‚                                     β”‚
β”‚         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                          β”‚
β”‚         β–Ό                     β–Ό                          β”‚
β”‚  truemail-go (:8080)    Reacher Docker (:8081) optional β”‚
β”‚  SMTP + MX + 550 text   Industry-grade (Gmail-safe)     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
Layer Technology
Frontend HTML5, Bootstrap 5, JavaScript
API Node.js, Express, JWT
Database MongoDB or in-memory (dev)
Verifier A truemail-go (Go) β€” built-in
Verifier B Reacher (Rust/Docker) β€” optional, recommended for huge lists
Misc lists AfterShip email-verifier (disposable / role)

πŸš€ Quick start

Prerequisites

Install

git clone https://github.com/mafzalkalwardev/bulk-email-verifier.git
cd bulk-email-verifier
cp .env.example .env
npm install

Run (truemail-go only)

npm start

Open http://localhost:5000 β†’ register β†’ verify emails.

Run (with Reacher β€” best for Gmail / bulk)

docker compose up -d
npm start

In .env:

VERIFIER_ENGINE=auto

auto uses truemail-go first (fast). Reacher is used if Go is down. Set VERIFIER_ENGINE=reacher to force Docker engine.


πŸ”¬ Verification engines

Engine Speed Gmail When to use
truemail-go ⚑ ~10–20s Good SMTP 550 Default β€” no Docker
Reacher 🐒 can be slow Headless checks Huge lists, hard providers

Reacher timeout? Gmail via Docker can exceed 60s. The app falls back to truemail-go automatically.

See docs/ENGINES.md for details.


πŸ“– Result columns

Column Meaning
domain_valid Syntax + MX OK
mailbox_verified yes / no / no_smtp
valid yes only when SMTP confirms mailbox

πŸ–₯ UI

  • http://localhost:5000 β€” web app (only URL for browser)
  • :8080 / :8081 β€” internal APIs (do not open for UI)

βš™οΈ Environment

Variable Default Description
PORT 5000 Web UI
JWT_SECRET β€” Change in production
VERIFIER_ENGINE auto auto | truemail | reacher
GO_VERIFIER_URL http://localhost:8080 truemail-go
REACHER_URL http://localhost:8081 Reacher Docker
REACHER_TIMEOUT_MS 60000 Reacher timeout before fallback
BULK_CONCURRENCY 3 Parallel emails per batch
MONGO_URI empty In-memory DB if empty

πŸ“ Project structure

bulk-email-verifier/
β”œβ”€β”€ backend/go/          # truemail-go API
β”œβ”€β”€ lib/                 # Vendored Go libraries
β”œβ”€β”€ public/              # Web UI
β”œβ”€β”€ controllers/         # REST handlers
β”œβ”€β”€ utils/               # CSV parser, engines
β”œβ”€β”€ docker-compose.yml   # Reacher (optional)
└── docs/                # REQUIREMENTS, ENGINES

🚒 Publish to GitHub

git add .
git commit -m "feat: self-hosted bulk email verifier"
git branch -M main
git remote add origin https://github.com/mafzalkalwardev/bulk-email-verifier.git
git push -u origin main

Never commit .env (already in .gitignore).


πŸ› Troubleshooting

Issue Fix
ECONNREFUSED on register Wait for In-Memory MongoDB ready before signing up
Reacher timeout Uses truemail-go fallback; or set VERIFIER_ENGINE=truemail
Bulk lost on tab switch Return to Bulk Verify β€” job resumes from sessionStorage
All no_smtp Port 25 blocked β€” try Docker Reacher
docker not found Install Docker Desktop, restart PC

Compliance and Responsible Use

This project is intended for lawful, permission-based email workflows only. Users must follow CAN-SPAM, GDPR, and other applicable anti-spam and privacy laws, SMTP provider terms, opt-out/unsubscribe requirements, and recipient consent rules.

Do not use this software for phishing, spam, unsolicited bulk mail, purchased lists without permission, or deceptive sender identity. Verify only contacts you are authorized to validate or contact.

The maintainers are not responsible for misuse of this software.

Status: Client-ready Β· self-hosted Β· demo data recommended for screenshots


πŸ“„ License

MIT β€” LICENSE. Third-party code in lib/ has its own licenses.


⭐ Star this repo if it saved you from paid verification APIs

Made for developers who need real SMTP checks without a subscription.

About

Self-hosted bulk email verification platform with syntax, MX, SMTP mailbox checks, Node.js UI, Go verification services, and Docker deployment.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages