Every developer who's ever built a signup form has eventually faced the same ugly reality: a chunk of those collected emails is garbage.
Typos. Fake addresses. Abandoned inboxes. Corporate catch-alls. Disposable throwaway domains.
And when you hit "Send" on a campaign without cleaning your list first, you're not just wasting money — you're actively damaging your domain's sending reputation. Sometimes permanently.
This guide walks you through why email verification matters, how it works under the hood, and how to clean a list in minutes using mails.expert.
Why Dirty Email Lists Are a Silent Killer
Let's say you have 10,000 email addresses collected over the past year. You fire off a campaign. A few things can go wrong:
| Problem | What Happens |
|---|---|
| Hard bounces (invalid addresses) | ISPs flag your domain as a spammer |
| Spam traps | Your IP gets blacklisted |
Role-based addresses (info@, admin@) |
Low engagement tanks your open rate |
| Disposable emails | Fake users, no value |
Most email platforms (Mailchimp, SendGrid, Postmark) will suspend your account once your bounce rate exceeds ~2–5%. And rebuilding a damaged sender reputation can take months.
The fix is simple: verify before you send.
What Email Verification Actually Does
Email verification isn't just checking if an address looks valid. There are multiple layers:
1. Syntax & Format Check
Catches obvious typos like user@gmial.com or missing TLDs.
2. DNS / MX Record Lookup
Checks if the domain actually has mail servers configured. No MX record = no inbox.
; example DNS lookup result
mails.expert. MX 10 mail.mails.expert.
3. SMTP Handshake Verification
The verifier connects to the mail server and simulates sending — without actually delivering a message. The server responds with whether the mailbox exists.
220 mail.example.com ESMTP ready
EHLO verifier.mails.expert
250 OK
MAIL FROM:<verify@mails.expert>
250 OK
RCPT TO:<target@example.com>
550 5.1.1 User unknown ← invalid mailbox
4. Catch-All Detection
Some domains accept any email address at the SMTP level (RCPT TO: anything@company.com → 250 OK). These are marked as "catch-all" — technically deliverable, but risky. A good verifier flags these separately.
5. Disposable & Role-Based Detection
Providers like Mailinator, Guerrilla Mail, and thousands of others are identified from a maintained blocklist. Role-based addresses (info@, support@, noreply@) are flagged because they typically have low engagement and no real owner.
How to Clean a List with mails.expert
mails.expert handles all the checks above — format, DNS, SMTP, catch-all, disposable, role-based — in one pass with 99.6% reported accuracy.
Option A: Bulk Upload (No Code)
- Create a free account — you get 10 verification credits on signup.
- Upload your list — CSV, XLSX, or paste addresses directly.
- Wait for results — bulk lists process at thousands of emails per minute.
-
Download the clean list — results are split into:
- ✅
valid— safe to send - ❌
invalid— remove immediately - ⚠️
risky— catch-all or low-confidence - 🗑️
disposable— throwaway emails - ❓
unknown— couldn't verify (server didn't respond)
- ✅
Export as CSV, XLSX, or TXT and import back into your ESP.
Option B: REST API Integration
For real-time verification (e.g., on signup forms), mails.expert provides a clean REST API with Bearer token auth.
Single Email Verification
curl -X POST https://mails.expert/api/v1/verify \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"email": "user@example.com"}'
Response:
{
"email": "user@example.com",
"status": "valid",
"is_disposable": false,
"is_role_based": false,
"is_catch_all": false,
"mx_found": true,
"smtp_check": true
}
Integrating into a Signup Form (Node.js example)
async function verifyEmailOnSignup(email) {
const res = await fetch('https://mails.expert/api/v1/verify', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.MAILS_EXPERT_TOKEN}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ email }),
});
const data = await res.json();
if (data.status === 'invalid' || data.is_disposable) {
throw new Error('Please use a valid, non-disposable email address.');
}
return data; // proceed with registration
}
This pattern stops fake signups at the source — before they ever touch your database or ESP.
Reading the Results: What to Do with Each Category
| Status | Action |
|---|---|
valid |
✅ Keep — safe to send |
invalid |
❌ Remove immediately |
disposable |
❌ Remove — no real users |
role-based |
⚠️ Suppress or segment separately |
catch-all |
⚠️ Keep if you need reach, suppress if you care about reputation |
unknown |
⚠️ Decide based on list age — old lists: remove; fresh lists: keep and monitor |
A conservative approach: send only to valid. A balanced approach: include catch-all with lower sending frequency.
When Should You Verify?
- Before every major campaign — especially if the list is older than 3–6 months
- At signup — via API to block disposable and invalid addresses in real time
- After a list import — purchased lists, scraped contacts, tradeshow badges
- Quarterly — for ongoing database hygiene
A rule of thumb: if your bounce rate on the last campaign exceeded 1%, your list needs cleaning before the next send.
Quick Wins Checklist
- [ ] Sign up at mails.expert (100 free credits)
- [ ] Upload your existing list or paste emails
- [ ] Download the
validsegment only - [ ] Add API verification to your signup form
- [ ] Set a calendar reminder for quarterly list hygiene
Wrapping Up
Email list hygiene isn't glamorous, but it's one of the highest-leverage things you can do for deliverability. A clean list means lower bounce rates, better open rates, and a sender reputation that ISPs trust.
mails.expert makes the whole process straightforward — whether you're cleaning a legacy list via bulk upload or verifying emails in real time through the API. The free tier covers 100 verifications a month, which is enough to test the workflow end-to-end before committing.
Have questions about email deliverability or list hygiene? Drop them in the comments.
Top comments (0)