Email Verifier (Syntax + MX + SMTP)
Pricing
from $1.00 / 1,000 email verifieds
Email Verifier (Syntax + MX + SMTP)
Verify email deliverability via syntax checks, MX lookups, and a non-intrusive SMTP RCPT probe. Flags disposable domains, role accounts, and catch-all servers. $0.001/email + $0.02 start.
Pricing
from $1.00 / 1,000 email verifieds
Rating
0.0
(0)
Developer
ando
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Verify email address deliverability through a four-stage pipeline: syntax validation → MX lookup → SMTP RCPT probe → catch-all detection, plus disposable-domain and role-account flags. Never sends an actual message — the SMTP probe stops before DATA.
⚠️ Compliance note
This Actor performs verification only. It does not send, receive, or store email content, and it must not be used for harvesting, scraping, or unsolicited mass-mailing purposes. The SMTP probe issues EHLO → MAIL FROM:<> → RCPT TO:<email> → QUIT against the target mail server and never sends DATA — no message is ever transmitted or delivered. Always ensure you have a legitimate basis (e.g. your own leads/CRM data) for verifying the addresses you submit, and comply with applicable anti-spam and data protection laws (e.g. GDPR, CAN-SPAM) in your jurisdiction.
Pipeline
- Syntax validation — RFC 5322-inspired regex check
- MX lookup —
dns.resolveMx(), falling back to the domain's own A record (implicit MX per RFC 5321 §5.1) if no MX records exist - SMTP RCPT probe — raw
net.createConnectionto port 25,EHLO→MAIL FROM:<>→RCPT TO:<email>, reading the server's real-time accept/reject response — no message is sent - Catch-all detection — if the real address is accepted, a second probe with a random nonexistent local part at the same domain checks whether the server accepts everything (a catch-all configuration)
- Disposable domain check — embedded list of ~65 common temporary-email providers
- Role account check — flags shared mailboxes like
info@,admin@,support@
Input
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
emails | array | Yes | — | Email addresses to verify (max 10,000) |
concurrency | integer | No | 10 | Parallel verification workers (1-50) |
Input Example
{"emails": ["jane.doe@example.com", "info@example.com", "not-an-email"],"concurrency": 10}
Output
{"email": "jane.doe@example.com","status": "valid","mx_ok": true,"disposable": false,"role_account": false}
| Field | Description |
|---|---|
email | The input email address |
status | "valid", "invalid", "catch_all", or "unknown" |
mx_ok | Whether the domain has a usable mail server (MX or fallback A record) |
disposable | true if the domain matches a known disposable/temporary email provider |
role_account | true if the local part looks like a shared role mailbox (e.g. admin, support) |
error | Present when status is "invalid" or "unknown", or on a partial failure |
Status meanings
| Status | Meaning |
|---|---|
valid | Syntax OK, domain has mail servers, and the mailbox was explicitly accepted (RCPT 2xx) by a non-catch-all server |
invalid | Bad syntax, domain has no mail servers at all, or the mail server explicitly rejected the mailbox (RCPT 5xx) |
catch_all | The mail server accepts any recipient at this domain, so individual mailbox existence cannot be confirmed |
unknown | The check could not be completed — DNS timeout, connection refused/timed out, port 25 blocked, greylisting, or a temporary (4xx) SMTP response. Connection failures are always reported as unknown, never invalid. |
Pricing
| Event | Cost |
|---|---|
| Actor start | $0.02 |
| Email Verified | $0.001 |
Typical run cost: 1,000 emails ≈ $0.02 + 1,000 × $0.001 = $1.02.
Limitations
- Outbound port 25 is frequently blocked by cloud providers (including many hosting/PaaS platforms) to prevent spam. If SMTP connections are blocked in your run environment, most results will come back as
unknownrather thanvalid/invalid— this is expected behavior for the "never guess invalid on connection failure" safety rule, not a bug. - Some large providers (e.g. Gmail, Outlook) intentionally delay or obscure RCPT-level rejections for anti-enumeration reasons, which can also surface as
unknownor falsecatch_allresults. - Per-mail-server throttling (minimum 1-second gap between connections to the same MX host) means verifying thousands of addresses at the same domain will take proportionally longer — this is intentional to avoid being blocklisted.
- The disposable-domain list is a fixed embedded snapshot (~65 domains) and will not catch brand-new or obscure temporary-email providers.
- No retries are performed on transient failures; re-run the Actor with the
unknownsubset if you need another attempt.
Use Cases
- Clean email lists before a marketing campaign to reduce bounce rates
- Validate signup-form submissions asynchronously
- Enrich CRM contact records with deliverability and role-account flags
- Pre-filter disposable-email signups for fraud/abuse prevention