Metadata-Version: 2.4
Name: mailsight
Version: 0.1.0
Summary: A comprehensive email verification tool: domain validation, DNS/WHOIS lookup, blacklist check, MX record validation, SMTP handshake, and ping test.
Project-URL: homepage, https://github.com/lalmei/mailsight
Project-URL: repository, https://github.com/lalmei/mailsight
License-File: LICENSE
Requires-Python: >=3.12
Requires-Dist: catppuccin>=2.4.1
Requires-Dist: dnspython
Requires-Dist: ping3
Requires-Dist: python-whois
Requires-Dist: rich>=14.0.0
Requires-Dist: typer>=0.15.3
Requires-Dist: validators
Description-Content-Type: text/markdown

# Mailsight

CLI tool to validate email addresses using DNS lookups, optional WHOIS and Spamhaus checks, and (unless `--dry-run`) live SMTP verification.

## Install

```bash
uv sync
```

Or install the package in editable mode:

```bash
uv pip install -e .
```

The `mailsight` command is provided by `[project.scripts]` in `pyproject.toml`.

## Usage

```bash
mailsight user@example.com
python -m mailsight.command.cli user@example.com
python main.py user@example.com
```

### Options

| Flag | Meaning |
|------|---------|
| `--dry-run` | Run DNS-based checks only (no WHOIS, SMTP, catch-all probe, ping, or expiration). Exits `0` on success. |
| `--ping` / `-p` | Ping the primary MX host (ignored when combined with `--dry-run`). |
| `--theme light\|dark` | Catppuccin-based Rich theme. |
| `--verbose` / `-v` | More logging. |
| `--version` | Print version and exit. |
| `--debug-info` | Print environment/debug details. |

Exit code `0` means verification finished without a blocking error; `1` means a check failed (see the printed message and remediation hint).

## Limitations

- SMTP and catch-all checks open real connections to the MX host. Use responsibly and respect provider policies; prefer `--dry-run` for passive checks only.
- WHOIS and DNSBL results depend on public data and may be slow or incomplete.
- `ping3` may require elevated privileges on some systems.

## Development

```bash
uv run pytest -c config/pytest.ini
uv run ruff check --config config/ruff.toml src tests
uv run mypy --config config/mypy.ini src tests
```
