How to Validate Bulk Emails for Free Using ReacherHQ (Self-Hosted Solution)

If you're sending bulk emails to clients or running cold email campaigns, you've likely faced the dreaded issue of bounced emails. High bounce rates damage your sender reputation, waste resources, and can get your domain blacklisted. While commercial email verification services like ZeroBounce and Emailable claim 99% accuracy, their pricing can quickly become prohibitive, especially for startups and small businesses.

Enter ReacherHQ – a completely free, open-source, self-hosted email verification solution written in Rust that you can run on your own VPS, VPC, or even locally on your development machine.

Why Self-Hosted Email Verification?

Traditional email verification APIs charge per verification – costs that add up quickly when you're validating thousands or millions of email addresses. ReacherHQ eliminates these costs entirely by allowing you to host the verification service yourself. The tool performs comprehensive email checks without sending any actual emails, using SMTP handshakes, MX record validation, and syntax checks to determine email deliverability.

Setting Up ReacherHQ in 3 Steps

Step 1: Pull and Run the Docker Image

The easiest way to get started is using Docker. Make sure you have Docker installed and port 8080 available on your system:

docker run -p 8080:8080 reacherhq/backend:latest
Important Note: Ensure that outbound port 25 is open on your server, as ReacherHQ needs to connect to SMTP servers for verification.

Step 2: Your Email Verification API is Ready

Once the container is running, you now have a fully functional email verification API running locally at http://localhost:8080. This becomes your personal email validation service – no API keys, no rate limits, no monthly fees.

Step 3: Validate Emails via API

Send a POST request to validate any email address:

Endpoint: http://localhost:8080/v0/check_email
Method: POST
Request Body:

{
  "to_email": "youremail@yourdomain.com"
}

You can also include optional parameters like proxy settings, custom SMTP ports, and custom from_email addresses.

Understanding the API Response

ReacherHQ returns a comprehensive JSON response with detailed information about the email address. Here's an example response:

{
  "input": "somya.babu@gramtarang.in",
  "is_reachable": "invalid",
  "misc": {
    "is_disposable": false,
    "is_role_account": false,
    "is_b2c": false,
    "gravatar_url": null,
    "haveibeenpwned": null
  },
  "mx": {
    "accepts_mail": true,
    "records": [
      "aspmx.l.google.com.",
      "alt1.aspmx.l.google.com.",
      "alt2.aspmx.l.google.com."
    ]
  },
  "smtp": {
    "can_connect_smtp": true,
    "has_full_inbox": false,
    "is_catch_all": false,
    "is_deliverable": false,
    "is_disabled": false
  },
  "syntax": {
    "address": "somya.babu@gramtarang.in",
    "domain": "gramtarang.in",
    "is_valid_syntax": true,
    "username": "somya.babu",
    "normalized_email": "somya.babu@gramtarang.in",
    "suggestion": null
  }
}

Key Fields Explained

  • is_reachable: The overall confidence level – can be safe, risky, invalid, or unknown
  • syntax.is_valid_syntax: Checks if the email follows proper email format rules
  • mx.accepts_mail: Validates if the domain has valid MX DNS records
  • smtp.is_deliverable: Confirms if the SMTP server accepts emails for this address
  • smtp.is_disabled: Checks if the mailbox has been disabled by the provider
  • smtp.has_full_inbox: Detects if the inbox is full and cannot receive new emails
  • misc.is_disposable: Identifies temporary/disposable email addresses
  • misc.is_role_account: Detects role-based emails like info@, support@, sales@

Validation Logic for Safe Email Delivery

For maximum deliverability and to minimize bounce rates, check these four critical conditions before sending emails:

const isSafeToSend = (response) => {
  return (
    response.is_reachable === 'safe' &&
    response.smtp.is_deliverable === true &&
    response.smtp.is_disabled === false &&
    response.mx.accepts_mail === true
  );
};

This logic ensures that:

  • The email has a high confidence score for reachability
  • The SMTP server confirms deliverability
  • The mailbox is active and not disabled
  • The domain accepts incoming mail

Bulk Email Validation Strategy

Real-Time Validation

For signup forms or user registration, validate emails in real-time before they enter your database:

app.post('/signup', async (req, res) => {
  const { email } = req.body;
  
  const verification = await fetch('http://localhost:8080/v0/check_email', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ to_email: email })
  });
  
  const result = await verification.json();
  
  if (isSafeToSend(result)) {
    // Proceed with registration
  } else {
    // Reject or flag the email
  }
});

Batch Validation

For existing email lists, validate in batches using loops:

const validateEmailList = async (emailList) => {
  const results = [];
  
  for (const email of emailList) {
    const response = await fetch('http://localhost:8080/v0/check_email', {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify({ to_email: email })
    });
    
    const result = await response.json();
    results.push({
      email,
      isSafe: isSafeToSend(result),
      details: result
    });
    
    // Optional: Add delay to avoid overwhelming your SMTP checks
    await new Promise(resolve => setTimeout(resolve, 100));
  }
  
  return results;
};

Advantages of ReacherHQ

  • Cost-Effective: Completely free for unlimited verifications when self-hosted
  • Privacy-Focused: Your email lists never leave your infrastructure
  • No Rate Limits: Unlike commercial APIs, you control the verification rate
  • Comprehensive Checks: Validates syntax, DNS, SMTP, disposable emails, and more
  • Open Source: Written in Rust with AGPL-3.0 license for open-source projects
  • Flexible Deployment: Run via Docker, CLI, or integrate directly into Rust projects

Limitations and Considerations

While ReacherHQ is powerful, it's important to understand some limitations:

  • Provider Restrictions: Some email providers (especially Gmail) may limit SMTP verification checks, potentially returning false negatives
  • Port 25 Requirement: Your server must have outbound port 25 open for SMTP checks
  • Infrastructure: You need a VPS or server to host the service reliably
  • No False Positives: When ReacherHQ confirms an email as valid, it's highly reliable

Best Practices for Email Deliverability

Beyond email verification, follow these best practices to maintain healthy email deliverability:

  1. Implement email authentication (SPF, DKIM, DMARC) to verify your sender identity
  2. Clean your lists regularly – remove invalid and inactive emails periodically
  3. Use double opt-in for new subscribers to confirm genuine interest
  4. Monitor bounce rates and maintain them below 2%
  5. Warm up new domains gradually increase sending volume over time

Deployment Recommendations

For Development

Run ReacherHQ locally using Docker for testing and development workflows.

For Production

Deploy ReacherHQ on a dedicated VPS or cloud instance (AWS EC2, DigitalOcean, etc.) with:

  • Outbound port 25 access
  • Sufficient CPU/RAM for concurrent verification requests
  • Optional: Use a proxy for distributed verification

You can also integrate ReacherHQ with tools like Listmonk for comprehensive email marketing workflows.

Final Thoughts

ReacherHQ offers a compelling alternative to expensive commercial email verification services, especially for developers, startups, and businesses with high-volume email validation needs. By self-hosting this open-source solution, you gain complete control over your email verification process while eliminating per-verification costs.

Whether you're building a cold email automation system, cleaning an existing email list, or implementing real-time validation on signup forms, ReacherHQ provides the accuracy and flexibility you need – all while keeping your data private and your costs at zero.

Give it a try, and start validating emails the smart way!


Quick Start Command:

docker run -p 8080:8080 reacherhq/backend:latest

GitHub Repository: reacherhq/check-if-email-exists

Official Website: reacher.email

Comments

Popular posts from this blog