@mailgo-cli/mailgo 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +174 -0
- package/package.json +2 -2
package/README.md
ADDED
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
# mailgo
|
|
2
|
+
|
|
3
|
+
`mailgo` is a Go CLI tool that verifies whether an email address is deliverable by running syntax checks and a live SMTP handshake — giving you a clear verdict before you send.
|
|
4
|
+
|
|
5
|
+
<img src="_mailgo.png" alt="mailgo image visualization" height="300">
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Motivation
|
|
10
|
+
|
|
11
|
+
A friend of mine sends cold emails — a lot of them. He kept running into the same problem: a chunk of every list he built was dead weight — bad addresses, catch-all domains that silently swallow messages, and disposable inboxes that go nowhere. He was burning his sender reputation on addresses that were never going to convert.
|
|
12
|
+
|
|
13
|
+
I looked around for a simple tool he could run from the terminal before importing a list into his outreach tool. Everything I found was either a paid SaaS, a bloated library, or it only checked syntax. So I built `mailgo`: a single binary that does a real end-to-end check — SMTP handshake, catch-all detection, the works — and tells you exactly why an address is risky or undeliverable.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## How It Works
|
|
18
|
+
|
|
19
|
+
For every email address, `mailgo` runs a three-stage pipeline:
|
|
20
|
+
|
|
21
|
+
| Stage | Check | What It Catches |
|
|
22
|
+
|-------|-------|-----------------|
|
|
23
|
+
| 1 | **Syntax validation** | Malformed addresses |
|
|
24
|
+
| 2 | **SMTP handshake** | Mailboxes that don't exist |
|
|
25
|
+
| 3 | **Catch-all detection** | Servers that accept everything (unreliable) |
|
|
26
|
+
|
|
27
|
+
Every address gets one of four verdicts: `deliverable` · `undeliverable` · `risky` · `unknown`
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Quick Start
|
|
32
|
+
|
|
33
|
+
### macOS — Homebrew
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
brew tap Hrid-a/mailgo
|
|
37
|
+
brew install mailgo
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Windows — Scoop
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
scoop bucket add mailgo https://github.com/Hrid-a/scoop-mailgo.git
|
|
44
|
+
scoop install mailgo
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### Linux — install script
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
curl -fsSL https://raw.githubusercontent.com/Hrid-a/mailgo/master/install.sh | sh
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### npm
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
npm install -g @mailgo-cli/mailgo
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### Go install
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
go install github.com/Hrid-a/mailgo@latest
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### Pre-built binary
|
|
66
|
+
|
|
67
|
+
Download the archive for your platform from the [Releases page](https://github.com/Hrid-a/mailgo/releases), extract it, and place the binary on your `PATH`.
|
|
68
|
+
|
|
69
|
+
### Verify it works
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
mailgo verify user@example.com
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## Usage
|
|
78
|
+
|
|
79
|
+
### Flags
|
|
80
|
+
|
|
81
|
+
| Flag | Description |
|
|
82
|
+
|------|-------------|
|
|
83
|
+
| `--json` | Output results as JSON instead of plain text |
|
|
84
|
+
| `--output`, `-o` | Write results to a file (e.g. `results.json`) |
|
|
85
|
+
|
|
86
|
+
### Single address
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
$ mailgo verify someone@company.com
|
|
90
|
+
|
|
91
|
+
Email : someone@company.com
|
|
92
|
+
Domain : company.com
|
|
93
|
+
Valid : true
|
|
94
|
+
Status : deliverable
|
|
95
|
+
Host Exists : true
|
|
96
|
+
Catch-All : false
|
|
97
|
+
Deliverable : true
|
|
98
|
+
Full Inbox : false
|
|
99
|
+
Disabled : false
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### JSON output
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
$ mailgo verify someone@company.com --json
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
```json
|
|
109
|
+
{
|
|
110
|
+
"email": "someone@company.com",
|
|
111
|
+
"domain": "company.com",
|
|
112
|
+
"valid": true,
|
|
113
|
+
"status": "deliverable",
|
|
114
|
+
"smtp": {
|
|
115
|
+
"host_exists": true,
|
|
116
|
+
"catch_all": false,
|
|
117
|
+
"deliverable": true,
|
|
118
|
+
"full_inbox": false,
|
|
119
|
+
"disabled": false
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### Bulk verification
|
|
125
|
+
|
|
126
|
+
Put one email per line in a `.txt` file, then:
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
$ mailgo verify --file emails.txt --output results.json
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
Results are written to `results.json`, one JSON object per address.
|
|
133
|
+
|
|
134
|
+
### Verdicts
|
|
135
|
+
|
|
136
|
+
| Verdict | Meaning |
|
|
137
|
+
|---------|---------|
|
|
138
|
+
| `deliverable` | Mailbox exists and should receive mail |
|
|
139
|
+
| `undeliverable` | Bad syntax or SMTP rejected the address |
|
|
140
|
+
| `risky` | SMTP connected but RCPT TO was rejected — may be anti-harvesting policy, not a dead address |
|
|
141
|
+
| `unknown` | Catch-all domain or SMTP unreachable — can't confirm either way |
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## Contributing
|
|
146
|
+
|
|
147
|
+
### Clone the repo
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
git clone https://github.com/Hrid-a/mailgo.git
|
|
151
|
+
cd mailgo
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
### Build the binary
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
go build -o mailgo .
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
### Run the tests
|
|
161
|
+
|
|
162
|
+
```bash
|
|
163
|
+
go test ./...
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
### Submit a pull request
|
|
167
|
+
|
|
168
|
+
Fork the repository and open a pull request to the `main` branch. If you hit a mail server that produces a false positive or unexpected result, opening an issue with the domain (redacted if needed) is also very helpful.
|
|
169
|
+
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
## License
|
|
173
|
+
|
|
174
|
+
MIT
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mailgo-cli/mailgo",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"description": "Verify email deliverability via syntax checks and live SMTP handshake — catch bad addresses before you send",
|
|
5
5
|
"bin": {
|
|
6
6
|
"mailgo": "bin/mailgo"
|
|
7
7
|
},
|
|
8
8
|
"optionalDependencies": {
|
|
9
|
-
|
|
9
|
+
"@mailgo-cli/mailgo-darwin-arm64": "1.0.1","@mailgo-cli/mailgo-darwin-x64": "1.0.1","@mailgo-cli/mailgo-linux-arm64": "1.0.1","@mailgo-cli/mailgo-linux-x64": "1.0.1","@mailgo-cli/mailgo-win32-arm64": "1.0.1","@mailgo-cli/mailgo-win32-x64": "1.0.1"
|
|
10
10
|
},
|
|
11
11
|
"keywords": ["email", "smtp", "cli", "deliverability", "email-verification", "email-validation", "catch-all", "bulk-email", "mailbox", "go"],
|
|
12
12
|
"author": "Hrid-a",
|