Email intelligence & SMTP verification CLI — DNS, Mailgun validation, GeoIP, ASN, risk scoring
Project description
email-verify
Email Intelligence & SMTP Verification Tool
DNS · Mailgun Validation API · GeoIP · ASN · Risk Scoring
Install
uv tool install email-verify
Or from source:
git clone https://github.com/craigderington/email-verify
cd email-verify
uv tool install .
Setup
Generate a secrets.env template in the current directory:
email-verify --init
Edit secrets.env and fill in your Mailgun credentials:
MAILGUN_API_KEY=key-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
MAILGUN_DOMAIN=mg.yourdomain.com
MAILGUN_FROM=verify@yourdomain.com
Note: The Email Validation API requires the Mailgun Email Validation add-on (InboxReady).
Your Private API key is found at: Mailgun Dashboard → Account → API Keys.
Usage
# Interactive TUI (dark terminal dashboard)
email-verify
# Single address — CLI output
email-verify user@example.com
# Point at a secrets file in a non-standard location
email-verify --secrets /etc/email-verify/secrets.env user@example.com
# Print version
email-verify --version
What it checks
| Layer | Checks |
|---|---|
| Syntax | RFC-compliant regex |
| Domain | Disposable domain list, free provider detection |
| DNS | MX records, A records, SPF, DMARC |
| Mailgun Validation API | is_valid, mailbox_verification (MX RCPT probe via Mailgun infra), is_disposable_address, is_role_address, did_you_mean, risk classification |
| Send Probe | Authenticated message dispatch via Mailgun Messages API |
| GeoIP | Country, region, city, ZIP, lat/lon, timezone (ip-api.com) |
| ASN / Org | ISP, organisation, AS number (ipinfo.io) |
| Risk Score | 0–100 composite with labelled flags |
Risk scoring
| Signal | Points |
|---|---|
| Disposable domain (local list) | +60 |
| No MX records | +40 |
| Mailgun: address invalid | +60 |
| Mailgun: mailbox does not exist | +55 |
| Mailgun: disposable address | +40 |
| Mailgun: HIGH risk classification | +30 |
| Mailgun: MEDIUM risk classification | +15 |
| Mailgun: mailbox inconclusive | +15 |
| Role address | +10 |
| No SPF record | +10 |
| No DMARC record | +10 |
secrets.env lookup order
- Path passed via
--secrets FILE EMAIL_VERIFY_SECRETSenvironment variablesecrets.envin the same directory as the installed packagesecrets.envin the current working directory
Development
git clone https://github.com/craigderington/email-verify
cd email-verify
uv sync
uv run email-verify --version
License
MIT © Craig Derington
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mg_email_verify-0.2.6.tar.gz.
File metadata
- Download URL: mg_email_verify-0.2.6.tar.gz
- Upload date:
- Size: 20.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f48c53790c385f91617c04fdd953dd76149e0ef810f8bdd825d5beca0cf74410
|
|
| MD5 |
b96256ff1d98281cd66bfc4f3739d313
|
|
| BLAKE2b-256 |
413b6950e8e5540055e9e15e67b1d22d4f343539d15868db3bbdee0f57adccd8
|
Provenance
The following attestation bundles were made for mg_email_verify-0.2.6.tar.gz:
Publisher:
publish.yml on craigderington/email-verify
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mg_email_verify-0.2.6.tar.gz -
Subject digest:
f48c53790c385f91617c04fdd953dd76149e0ef810f8bdd825d5beca0cf74410 - Sigstore transparency entry: 1097420293
- Sigstore integration time:
-
Permalink:
craigderington/email-verify@fcd13e4bbb343ae193eb186a1d2b454b1cde3a13 -
Branch / Tag:
refs/tags/v0.2.6 - Owner: https://github.com/craigderington
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@fcd13e4bbb343ae193eb186a1d2b454b1cde3a13 -
Trigger Event:
push
-
Statement type:
File details
Details for the file mg_email_verify-0.2.6-py3-none-any.whl.
File metadata
- Download URL: mg_email_verify-0.2.6-py3-none-any.whl
- Upload date:
- Size: 22.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
89cb056bb99c46151ba072938db68907442bbf393fcdf5ff5a6a0cd3a459a982
|
|
| MD5 |
ca2e6ed030ba168a31f740475476a258
|
|
| BLAKE2b-256 |
d869d938149eaf4a32271075d792bab572d01608a11a355b2d41038a96beefa4
|
Provenance
The following attestation bundles were made for mg_email_verify-0.2.6-py3-none-any.whl:
Publisher:
publish.yml on craigderington/email-verify
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mg_email_verify-0.2.6-py3-none-any.whl -
Subject digest:
89cb056bb99c46151ba072938db68907442bbf393fcdf5ff5a6a0cd3a459a982 - Sigstore transparency entry: 1097420295
- Sigstore integration time:
-
Permalink:
craigderington/email-verify@fcd13e4bbb343ae193eb186a1d2b454b1cde3a13 -
Branch / Tag:
refs/tags/v0.2.6 - Owner: https://github.com/craigderington
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@fcd13e4bbb343ae193eb186a1d2b454b1cde3a13 -
Trigger Event:
push
-
Statement type: