DEV Community

Email Campaign
Email Campaign

Posted on

Technical Deep-Dive: Building a Just-In-Time (JIT) Real-Time Contact Verification Engine

In data engineering and outbound automation systems, stale data degrades delivery performance. Traditional batch data processing often relies on cached CSVs that decay at an estimated 22.5% annually.
When building lead enrichment pipelines or CRM integrations, executing Just-In-Time (JIT) real-time verification at the exact moment of export or API query prevents hard bounces, protects sender domain health, and maintains system integrity.
Below is the technical architectural blueprint and implementation pattern for building a scalable, multi-stage JIT verification engine.

1. System Architecture Overview

A reliable JIT verification pipeline processes raw contact data through a multi-stage execution chain before passing the record to downstream services (such as HubSpot, Salesforce, or custom webhooks).
[ Incoming Contact JSON Payload ]
│
▼
[ Stage 1: Syntax & Regex Audit ] ──── (Invalid Syntax) ──► [ Reject 400 ]
│
▼
[ Stage 2: DNS / MX Lookup ] ────────── (No MX Record) ────► [ Flag Invalid ]
│
▼
[ Stage 3: Direct SMTP Handshake ] ──── (550 / Timeout) ───► [ Flag Undeliverable ]
│
▼
[ Output: Enriched & Verified Record ]

2. Implementation: The Verification Pipeline

Stage 1: Syntax & Format Audit (RFC 5322 Standards)
Before making external network calls, validate the payload using string parsing and strict regex to catch malformed email strings, illegal characters, and invalid domain structures.
JavaScript
// Node.js RFC 5322 compliant regex check
const EMAIL_REGEX = /^[a-zA-Z0-9.!#$%&'+/=?^_`{|}~-]+@a-zA-Z0-9?(?:.a-zA-Z0-9?)$/;

function validateSyntax(email) {
if (!email || email.length > 254) return false;
return EMAIL_REGEX.test(email);
}

*Stage 2: Asynchronous DNS & MX Record Lookups
*

If syntax validation passes, query the target domain’s DNS configuration asynchronously to confirm the existence of active Mail Exchange (MX) records.
JavaScript
const dns = require('dns').promises;

async function checkMXRecords(domain) {
try {
const addresses = await dns.resolveMx(domain);
if (!addresses || addresses.length === 0) {
return { valid: false, reason: 'NO_MX_RECORDS' };
}
// Sort by priority (lowest number = highest priority)
addresses.sort((a, b) => a.priority - b.priority);
return { valid: true, primaryMx: addresses[0].exchange };
} catch (error) {
return { valid: false, reason: 'DNS_LOOKUP_FAILED', error: error.message };
}
}

Stage 3: Live SMTP Protocol Handshake

The core of JIT verification is simulating an SMTP conversation without completing the DATA phase (i.e., verifying the mailbox exists without sending an email).
The Protocol Sequence
Client (Verifier) Target Mail Server (MX)
│ │
│ ───────────── TCP Connect ───────────────► │ (Port 25 / 587)
│ ◄────────── 220 Service Ready ──────────── │
│ │
│ ───────────── HELO / EHLO ───────────────► │
│ ◄────────────── 250 OK ─────────────────── │
│ │
│ ────────── MAIL FROM: verify@... ──────► │
│ ◄────────────── 250 OK ─────────────────── │
│ │
│ ────────── RCPT TO: target@... ────────► │
│ ◄──────── 250 OK (Mailbox Exists) ──────── │ <-- Critical Verification Point
│ OR ───── 550 User Unknown ────────────── │
│ │
│ ────────────── QUIT ─────────────────────► │

**Node.js Socket Implementation

**JavaScript
const net = require('net');

function performSmtpHandshake(mxHost, targetEmail, senderDomain = 'verifier.com') {
return new Promise((resolve) => {
const socket = net.createConnection(25, mxHost);
let step = 0;

socket.setTimeout(5000, () => {
  socket.destroy();
  resolve({ status: 'TIMEOUT' });
});

socket.on('data', (data) => {
  const response = data.toString();

  if (step === 0 && response.startsWith('220')) {
    socket.write(`EHLO ${senderDomain}\r\n`);
    step++;
  } else if (step === 1 && response.startsWith('250')) {
    socket.write(`MAIL FROM:<verify@${senderDomain}>\r\n`);
    step++;
  } else if (step === 2 && response.startsWith('250')) {
    socket.write(`RCPT TO:<${targetEmail}>\r\n`);
    step++;
  } else if (step === 3) {
    socket.write('QUIT\r\n');
    socket.end();

    if (response.startsWith('250')) {
      resolve({ status: 'DELIVERABLE', code: 250 });
    } else if (response.startsWith('550')) {
      resolve({ status: 'UNDELIVERABLE', code: 550 });
    } else {
      resolve({ status: 'CATCH_ALL_OR_UNKNOWN', code: response.slice(0, 3) });
    }
  }
});

socket.on('error', (err) => {
  resolve({ status: 'SOCKET_ERROR', error: err.message });
});
Enter fullscreen mode Exit fullscreen mode

});
}

*3. Advanced Edge Cases & Anti-Spam Handling
*

When executing live verification at scale, systems must handle real-world edge cases to avoid being blocked by security gatekeepers (Proofpoint, Mimecast, Barracuda):

  1. Catch-All (Accept-All) Domains: Some mail servers return 250 OK for any username query. To detect catch-all configurations, generate a random, non-existent hash string (e.g., test_xyz9812@domain.com). If the server responds with 250 OK, mark the domain as CATCH_ALL.
  2. Greylisting & Rate Limiting: Firewalls may respond with temporary 451 or 421 deferred status codes. Build an automated exponential backoff retry queue (e.g., using Redis/BullMQ) to handle deferred responses gracefully.
  3. Dedicated Verification IPs & PTR Records: Ensure your verification servers have reverse DNS (PTR records), valid SPF records, and neutral IP reputation—otherwise target mail servers will immediately drop TCP connections on port 25.

4. Key Takeaways
Integrating JIT verification into lead pipelines ensures higher inbox placement, zero hard bounces, and clean database synchronization.
• Syntax & DNS checks eliminate ~60% of invalid data without hitting the network boundary.
• SMTP handshakes validate live inbox existence at execution time.
• Catch-all detection protects automation workflows from false-positive data.
For structured dataset schemas, API enrichment tools, and real-time data integrations, check out the documentation and resources available at
Latest Mailing Database.

Top comments (16)

Collapse
 
williamzabka profile image
William Zabka •

Great deep-dive! Building a JIT real-time contact verification engine can significantly improve data accuracy, reduce invalid contacts, and enhance operational efficiency. Real-time validation and seamless integration are key to creating a reliable and scalable solution👍

Collapse
 
mst_aminaakter_b1407c9d2 profile image
Mst Amina Akter •

Thanks for sharing this informative post! I enjoyed reading it and found the ideas useful.

Collapse
 
amelia12 profile image
Amelia •

This database platform provides useful resources to help businesses strengthen their marketing efforts and reach the right audience.

Collapse
 
00chandona_tt_eb27982be97 profile image
00chandona TT •

Data quality drives better B2B results. Keeping contact lists updated helps improve deliverability, reduce bounces, and strengthen outreach campaigns.

Collapse
 
b2bb2cemaillists profile image
B2B & B2C Email Lists •

This website offers valuable resources for business growth and effective marketing strategies.

Collapse
 
00chandona_tt_eb27982be97 profile image
00chandona TT •

Accurate data is the key to successful B2B outreach! Regular database updates help reduce bounce rates, protect sender reputation, and improve lead generation results.

Collapse
 
dbtodata11 profile image
Luna Bella •

This website provides helpful resources for business growth and marketing.

Collapse
 
sr_sujon_069136091b2fd7c7 profile image
SR Sujon •

Great experience with a professional database service that supports business development.

Collapse
 
maruf432 profile image
MD. Maruf Hasan •

Very nice

Collapse
 
mehedi_lemon profile image
Mehedi Lemon •

Great resource for finding accurate data.

Some comments may only be visible to logged-in visitors. Sign in to view all comments.