mxroute-cli 0.1.3 → 0.3.0

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.
Files changed (121) hide show
  1. package/README.md +524 -241
  2. package/dist/commands/accounts.js +19 -59
  3. package/dist/commands/accounts.js.map +1 -1
  4. package/dist/commands/aliases.js +8 -57
  5. package/dist/commands/aliases.js.map +1 -1
  6. package/dist/commands/audit.d.ts +1 -0
  7. package/dist/commands/audit.js +278 -0
  8. package/dist/commands/audit.js.map +1 -0
  9. package/dist/commands/auth.d.ts +0 -1
  10. package/dist/commands/auth.js +0 -69
  11. package/dist/commands/auth.js.map +1 -1
  12. package/dist/commands/autoresponder.js +10 -59
  13. package/dist/commands/autoresponder.js.map +1 -1
  14. package/dist/commands/benchmark.d.ts +1 -0
  15. package/dist/commands/benchmark.js +134 -0
  16. package/dist/commands/benchmark.js.map +1 -0
  17. package/dist/commands/bulk.d.ts +2 -0
  18. package/dist/commands/bulk.js +201 -0
  19. package/dist/commands/bulk.js.map +1 -0
  20. package/dist/commands/catchall.js +5 -38
  21. package/dist/commands/catchall.js.map +1 -1
  22. package/dist/commands/completions.d.ts +1 -0
  23. package/dist/commands/completions.js +138 -0
  24. package/dist/commands/completions.js.map +1 -0
  25. package/dist/commands/config.d.ts +1 -0
  26. package/dist/commands/config.js +42 -0
  27. package/dist/commands/config.js.map +1 -1
  28. package/dist/commands/cron.d.ts +2 -0
  29. package/dist/commands/cron.js +114 -0
  30. package/dist/commands/cron.js.map +1 -0
  31. package/dist/commands/diff.d.ts +1 -0
  32. package/dist/commands/diff.js +125 -0
  33. package/dist/commands/diff.js.map +1 -0
  34. package/dist/commands/dns-setup.d.ts +1 -0
  35. package/dist/commands/dns-setup.js +256 -0
  36. package/dist/commands/dns-setup.js.map +1 -0
  37. package/dist/commands/dns-watch.d.ts +1 -0
  38. package/dist/commands/dns-watch.js +67 -0
  39. package/dist/commands/dns-watch.js.map +1 -0
  40. package/dist/commands/dns.js +28 -6
  41. package/dist/commands/dns.js.map +1 -1
  42. package/dist/commands/dnsapi.js +10 -59
  43. package/dist/commands/dnsapi.js.map +1 -1
  44. package/dist/commands/doctor.d.ts +1 -0
  45. package/dist/commands/doctor.js +143 -0
  46. package/dist/commands/doctor.js.map +1 -0
  47. package/dist/commands/domains.js +4 -27
  48. package/dist/commands/domains.js.map +1 -1
  49. package/dist/commands/export-import.d.ts +2 -0
  50. package/dist/commands/export-import.js +189 -0
  51. package/dist/commands/export-import.js.map +1 -0
  52. package/dist/commands/filters.js +8 -57
  53. package/dist/commands/filters.js.map +1 -1
  54. package/dist/commands/fix.d.ts +1 -0
  55. package/dist/commands/fix.js +226 -0
  56. package/dist/commands/fix.js.map +1 -0
  57. package/dist/commands/forwarders.js +8 -57
  58. package/dist/commands/forwarders.js.map +1 -1
  59. package/dist/commands/header-analyze.d.ts +2 -0
  60. package/dist/commands/header-analyze.js +177 -0
  61. package/dist/commands/header-analyze.js.map +1 -0
  62. package/dist/commands/ip.d.ts +1 -0
  63. package/dist/commands/ip.js +70 -0
  64. package/dist/commands/ip.js.map +1 -0
  65. package/dist/commands/lists.js +15 -80
  66. package/dist/commands/lists.js.map +1 -1
  67. package/dist/commands/migrate.d.ts +1 -0
  68. package/dist/commands/migrate.js +161 -0
  69. package/dist/commands/migrate.js.map +1 -0
  70. package/dist/commands/monitor.d.ts +4 -0
  71. package/dist/commands/monitor.js +189 -0
  72. package/dist/commands/monitor.js.map +1 -0
  73. package/dist/commands/notify.d.ts +10 -0
  74. package/dist/commands/notify.js +153 -0
  75. package/dist/commands/notify.js.map +1 -0
  76. package/dist/commands/onboard.d.ts +1 -0
  77. package/dist/commands/onboard.js +220 -0
  78. package/dist/commands/onboard.js.map +1 -0
  79. package/dist/commands/open.d.ts +1 -0
  80. package/dist/commands/open.js +53 -0
  81. package/dist/commands/open.js.map +1 -0
  82. package/dist/commands/quota.js +11 -48
  83. package/dist/commands/quota.js.map +1 -1
  84. package/dist/commands/report.d.ts +1 -0
  85. package/dist/commands/report.js +206 -0
  86. package/dist/commands/report.js.map +1 -0
  87. package/dist/commands/send.d.ts +1 -0
  88. package/dist/commands/send.js +43 -1
  89. package/dist/commands/send.js.map +1 -1
  90. package/dist/commands/share.d.ts +1 -0
  91. package/dist/commands/share.js +217 -0
  92. package/dist/commands/share.js.map +1 -0
  93. package/dist/commands/spam.js +9 -42
  94. package/dist/commands/spam.js.map +1 -1
  95. package/dist/commands/troubleshoot.js.map +1 -1
  96. package/dist/commands/webhook.d.ts +3 -0
  97. package/dist/commands/webhook.js +124 -0
  98. package/dist/commands/webhook.js.map +1 -0
  99. package/dist/commands/whoami.d.ts +1 -0
  100. package/dist/commands/whoami.js +40 -0
  101. package/dist/commands/whoami.js.map +1 -0
  102. package/dist/index.js +228 -6
  103. package/dist/index.js.map +1 -1
  104. package/dist/mcp.js.map +1 -1
  105. package/dist/utils/blacklist.d.ts +17 -0
  106. package/dist/utils/blacklist.js +65 -0
  107. package/dist/utils/blacklist.js.map +1 -0
  108. package/dist/utils/directadmin.js +1 -1
  109. package/dist/utils/directadmin.js.map +1 -1
  110. package/dist/utils/dns.d.ts +1 -1
  111. package/dist/utils/dns.js +3 -3
  112. package/dist/utils/dns.js.map +1 -1
  113. package/dist/utils/registrars.d.ts +35 -0
  114. package/dist/utils/registrars.js +324 -0
  115. package/dist/utils/registrars.js.map +1 -0
  116. package/dist/utils/shared.d.ts +20 -0
  117. package/dist/utils/shared.js +64 -0
  118. package/dist/utils/shared.js.map +1 -0
  119. package/dist/utils/theme.js +0 -1
  120. package/dist/utils/theme.js.map +1 -1
  121. package/package.json +1 -1
@@ -0,0 +1,226 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.fixCommand = fixCommand;
7
+ const ora_1 = __importDefault(require("ora"));
8
+ const inquirer_1 = __importDefault(require("inquirer"));
9
+ const theme_1 = require("../utils/theme");
10
+ const config_1 = require("../utils/config");
11
+ const shared_1 = require("../utils/shared");
12
+ const directadmin_1 = require("../utils/directadmin");
13
+ const dns_1 = require("../utils/dns");
14
+ const registrars_1 = require("../utils/registrars");
15
+ async function fixCommand() {
16
+ const config = (0, config_1.getConfig)();
17
+ const creds = (0, shared_1.getCreds)();
18
+ console.log(theme_1.theme.heading('Auto-Fix'));
19
+ console.log(theme_1.theme.muted(' Scanning for issues and preparing fixes...\n'));
20
+ // Get registrar config if available
21
+ const registrarConfig = config.registrar
22
+ ? {
23
+ provider: config.registrar.provider,
24
+ apiKey: config.registrar.apiKey,
25
+ apiSecret: config.registrar.apiSecret,
26
+ }
27
+ : null;
28
+ const provider = registrarConfig ? (0, registrars_1.getProvider)(registrarConfig.provider) : null;
29
+ // Fetch domains
30
+ const domSpinner = (0, ora_1.default)({ text: 'Fetching domains...', spinner: 'dots12', color: 'cyan' }).start();
31
+ let domains;
32
+ try {
33
+ domains = await (0, directadmin_1.listDomains)(creds);
34
+ domSpinner.succeed(`Found ${domains.length} domain${domains.length !== 1 ? 's' : ''}`);
35
+ }
36
+ catch (err) {
37
+ domSpinner.fail('Could not fetch domains');
38
+ return;
39
+ }
40
+ const actions = [];
41
+ // Scan each domain
42
+ for (const domain of domains) {
43
+ const scanSpinner = (0, ora_1.default)({ text: `Scanning ${domain}...`, spinner: 'dots12', color: 'cyan' }).start();
44
+ // Check MX
45
+ const mx = await (0, dns_1.checkMxRecords)(domain, config.server);
46
+ if (mx.status === 'fail' && provider && registrarConfig) {
47
+ const records = (0, registrars_1.generateMxrouteRecords)(config.server, domain);
48
+ const mxRecords = records.filter((r) => r.type === 'MX');
49
+ actions.push({
50
+ domain,
51
+ issue: 'MX records missing or incorrect',
52
+ fix: 'Create MX records via ' + provider.name,
53
+ execute: async () => {
54
+ for (const r of mxRecords) {
55
+ const res = await provider.createRecord(registrarConfig, domain, r);
56
+ if (!res.success)
57
+ return res;
58
+ }
59
+ return { success: true, message: 'MX records created' };
60
+ },
61
+ });
62
+ }
63
+ // Check SPF
64
+ const spf = await (0, dns_1.checkSpfRecord)(domain);
65
+ if (spf.status === 'fail' && provider && registrarConfig) {
66
+ actions.push({
67
+ domain,
68
+ issue: 'SPF record missing',
69
+ fix: 'Create SPF TXT record',
70
+ execute: async () => provider.createRecord(registrarConfig, domain, {
71
+ type: 'TXT',
72
+ name: '@',
73
+ value: 'v=spf1 include:mxroute.com -all',
74
+ ttl: 3600,
75
+ }),
76
+ });
77
+ }
78
+ else if (spf.status === 'warn' && spf.actual && spf.actual.includes('~all')) {
79
+ // Can't auto-fix soft fail without registrar — just note it
80
+ if (provider && registrarConfig) {
81
+ actions.push({
82
+ domain,
83
+ issue: 'SPF using ~all (soft fail)',
84
+ fix: 'Replace with -all (hard fail)',
85
+ execute: async () => {
86
+ // Delete old, create new
87
+ await provider.deleteRecord(registrarConfig, domain, { type: 'TXT', name: '@', value: spf.actual });
88
+ return provider.createRecord(registrarConfig, domain, {
89
+ type: 'TXT',
90
+ name: '@',
91
+ value: spf.actual.replace('~all', '-all'),
92
+ ttl: 3600,
93
+ });
94
+ },
95
+ });
96
+ }
97
+ }
98
+ // Check DKIM
99
+ const dkim = await (0, dns_1.checkDkimRecord)(domain);
100
+ if (dkim.status === 'fail' && provider && registrarConfig) {
101
+ // Try to get DKIM from DirectAdmin
102
+ const dkimKey = await (0, directadmin_1.getDkimKey)(creds, domain);
103
+ if (dkimKey) {
104
+ actions.push({
105
+ domain,
106
+ issue: 'DKIM record missing in DNS',
107
+ fix: 'Create DKIM TXT record from DirectAdmin key',
108
+ execute: async () => provider.createRecord(registrarConfig, domain, {
109
+ type: 'TXT',
110
+ name: 'x._domainkey',
111
+ value: dkimKey,
112
+ ttl: 3600,
113
+ }),
114
+ });
115
+ }
116
+ }
117
+ // Check DMARC
118
+ const dmarc = await (0, dns_1.checkDmarcRecord)(domain);
119
+ if (dmarc.status === 'fail' || (dmarc.status === 'warn' && dmarc.actual && dmarc.actual.includes('p=none'))) {
120
+ if (provider && registrarConfig) {
121
+ const isNone = dmarc.actual && dmarc.actual.includes('p=none');
122
+ actions.push({
123
+ domain,
124
+ issue: isNone ? 'DMARC policy is "none" (no protection)' : 'DMARC record missing',
125
+ fix: isNone ? 'Upgrade to p=quarantine' : 'Create DMARC record with p=quarantine',
126
+ execute: async () => {
127
+ if (isNone) {
128
+ await provider.deleteRecord(registrarConfig, domain, {
129
+ type: 'TXT',
130
+ name: '_dmarc',
131
+ value: dmarc.actual,
132
+ });
133
+ }
134
+ return provider.createRecord(registrarConfig, domain, {
135
+ type: 'TXT',
136
+ name: '_dmarc',
137
+ value: `v=DMARC1; p=quarantine; rua=mailto:postmaster@${domain}`,
138
+ ttl: 3600,
139
+ });
140
+ },
141
+ });
142
+ }
143
+ }
144
+ // Check catch-all
145
+ try {
146
+ const catchAll = await (0, directadmin_1.getCatchAll)(creds, domain);
147
+ if (catchAll && catchAll !== ':fail:' && catchAll !== ':blackhole:') {
148
+ actions.push({
149
+ domain,
150
+ issue: `Catch-all is open (forwarding to ${catchAll})`,
151
+ fix: 'Set catch-all to reject',
152
+ execute: async () => {
153
+ await (0, directadmin_1.setCatchAll)(creds, domain, ':fail:');
154
+ return { success: true, message: 'Catch-all set to reject' };
155
+ },
156
+ });
157
+ }
158
+ }
159
+ catch {
160
+ /* skip */
161
+ }
162
+ scanSpinner.stop();
163
+ }
164
+ // Show results
165
+ if (actions.length === 0) {
166
+ console.log(theme_1.theme.success(`\n ${theme_1.theme.statusIcon('pass')} No issues found — everything looks healthy!\n`));
167
+ return;
168
+ }
169
+ console.log(theme_1.theme.heading(`Found ${actions.length} fixable issue${actions.length !== 1 ? 's' : ''}`));
170
+ for (let i = 0; i < actions.length; i++) {
171
+ console.log(` ${theme_1.theme.warning(`${i + 1}.`)} ${theme_1.theme.bold(actions[i].domain)} — ${actions[i].issue}`);
172
+ console.log(theme_1.theme.muted(` Fix: ${actions[i].fix}`));
173
+ }
174
+ console.log('');
175
+ if (!provider) {
176
+ console.log(theme_1.theme.warning(` ${theme_1.theme.statusIcon('warn')} DNS fixes require a registrar. Run ${theme_1.theme.bold('mxroute dns setup')} first.\n`));
177
+ // Filter to non-DNS fixes only
178
+ const nonDnsActions = actions.filter((a) => !a.issue.includes('MX') && !a.issue.includes('SPF') && !a.issue.includes('DKIM') && !a.issue.includes('DMARC'));
179
+ if (nonDnsActions.length === 0)
180
+ return;
181
+ }
182
+ const { proceed } = await inquirer_1.default.prompt([
183
+ {
184
+ type: 'confirm',
185
+ name: 'proceed',
186
+ message: `Apply all ${actions.length} fixes?`,
187
+ default: true,
188
+ },
189
+ ]);
190
+ if (!proceed) {
191
+ console.log(theme_1.theme.muted('\n Cancelled.\n'));
192
+ return;
193
+ }
194
+ // Execute fixes
195
+ console.log(theme_1.theme.heading('Applying fixes'));
196
+ let fixed = 0;
197
+ let failed = 0;
198
+ for (const action of actions) {
199
+ const spinner = (0, ora_1.default)({ text: `${action.domain}: ${action.fix}...`, spinner: 'dots12', color: 'cyan' }).start();
200
+ try {
201
+ const result = await action.execute();
202
+ if (result.success) {
203
+ spinner.succeed(`${action.domain}: ${action.fix}`);
204
+ fixed++;
205
+ }
206
+ else {
207
+ spinner.fail(`${action.domain}: ${result.message}`);
208
+ failed++;
209
+ }
210
+ }
211
+ catch (err) {
212
+ spinner.fail(`${action.domain}: ${err.message}`);
213
+ failed++;
214
+ }
215
+ }
216
+ console.log('');
217
+ console.log(theme_1.theme.separator());
218
+ if (failed === 0) {
219
+ console.log(theme_1.theme.success(`\n ${theme_1.theme.statusIcon('pass')} All ${fixed} fixes applied successfully!\n`));
220
+ }
221
+ else {
222
+ console.log(theme_1.theme.warning(`\n ${fixed} fixed, ${failed} failed\n`));
223
+ }
224
+ console.log(theme_1.theme.info(` ${theme_1.theme.statusIcon('info')} Run ${theme_1.theme.bold('mxroute audit')} to verify, or ${theme_1.theme.bold('mxroute dns watch')} to monitor propagation.\n`));
225
+ }
226
+ //# sourceMappingURL=fix.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fix.js","sourceRoot":"","sources":["../../src/commands/fix.ts"],"names":[],"mappings":"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"}
@@ -11,44 +11,11 @@ const ora_1 = __importDefault(require("ora"));
11
11
  const inquirer_1 = __importDefault(require("inquirer"));
12
12
  const cli_table3_1 = __importDefault(require("cli-table3"));
13
13
  const theme_1 = require("../utils/theme");
14
- const config_1 = require("../utils/config");
15
14
  const directadmin_1 = require("../utils/directadmin");
16
- function getCreds() {
17
- const config = (0, config_1.getConfig)();
18
- if (!config.daUsername || !config.daLoginKey) {
19
- console.log(theme_1.theme.error(`\n ${theme_1.theme.statusIcon('fail')} Not authenticated. Run ${theme_1.theme.bold('mxroute auth login')} first.\n`));
20
- process.exit(1);
21
- }
22
- return { server: config.server, username: config.daUsername, loginKey: config.daLoginKey };
23
- }
24
- async function pickDomain(creds, domain) {
25
- if (domain)
26
- return domain;
27
- const config = (0, config_1.getConfig)();
28
- if (config.domain)
29
- return config.domain;
30
- const spinner = (0, ora_1.default)({ text: 'Fetching domains...', spinner: 'dots12', color: 'cyan' }).start();
31
- const domains = await (0, directadmin_1.listDomains)(creds);
32
- spinner.stop();
33
- if (domains.length === 0) {
34
- console.log(theme_1.theme.error(`\n ${theme_1.theme.statusIcon('fail')} No domains found.\n`));
35
- process.exit(1);
36
- }
37
- if (domains.length === 1)
38
- return domains[0];
39
- const { selected } = await inquirer_1.default.prompt([
40
- {
41
- type: 'list',
42
- name: 'selected',
43
- message: 'Select domain:',
44
- choices: domains,
45
- },
46
- ]);
47
- return selected;
48
- }
15
+ const shared_1 = require("../utils/shared");
49
16
  async function forwardersList(domain) {
50
- const creds = getCreds();
51
- const targetDomain = await pickDomain(creds, domain);
17
+ const creds = (0, shared_1.getCreds)();
18
+ const targetDomain = await (0, shared_1.pickDomain)(creds, domain);
52
19
  console.log(theme_1.theme.heading(`Forwarders: ${targetDomain}`));
53
20
  const spinner = (0, ora_1.default)({ text: 'Fetching forwarders...', spinner: 'dots12', color: 'cyan' }).start();
54
21
  try {
@@ -61,23 +28,7 @@ async function forwardersList(domain) {
61
28
  const table = new cli_table3_1.default({
62
29
  head: [chalk_1.default.hex('#6C63FF')('#'), chalk_1.default.hex('#6C63FF')('From'), chalk_1.default.hex('#6C63FF')('To')],
63
30
  style: { head: [], border: ['gray'] },
64
- chars: {
65
- top: '─',
66
- 'top-mid': '┬',
67
- 'top-left': ' ┌',
68
- 'top-right': '┐',
69
- bottom: '─',
70
- 'bottom-mid': '┴',
71
- 'bottom-left': ' └',
72
- 'bottom-right': '┘',
73
- left: ' │',
74
- 'left-mid': ' ├',
75
- mid: '─',
76
- 'mid-mid': '┼',
77
- right: '│',
78
- 'right-mid': '┤',
79
- middle: '│',
80
- },
31
+ chars: shared_1.tableChars,
81
32
  });
82
33
  for (let i = 0; i < forwarders.length; i++) {
83
34
  const fwd = forwarders[i];
@@ -99,8 +50,8 @@ async function forwardersList(domain) {
99
50
  }
100
51
  }
101
52
  async function forwardersCreate(domain) {
102
- const creds = getCreds();
103
- const targetDomain = await pickDomain(creds, domain);
53
+ const creds = (0, shared_1.getCreds)();
54
+ const targetDomain = await (0, shared_1.pickDomain)(creds, domain);
104
55
  console.log(theme_1.theme.heading(`Create Forwarder on ${targetDomain}`));
105
56
  const answers = await inquirer_1.default.prompt([
106
57
  {
@@ -152,8 +103,8 @@ async function forwardersCreate(domain) {
152
103
  }
153
104
  }
154
105
  async function forwardersDelete(domain) {
155
- const creds = getCreds();
156
- const targetDomain = await pickDomain(creds, domain);
106
+ const creds = (0, shared_1.getCreds)();
107
+ const targetDomain = await (0, shared_1.pickDomain)(creds, domain);
157
108
  console.log(theme_1.theme.heading(`Delete Forwarder on ${targetDomain}`));
158
109
  const spinner = (0, ora_1.default)({ text: 'Fetching forwarders...', spinner: 'dots12', color: 'cyan' }).start();
159
110
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"forwarders.js","sourceRoot":"","sources":["../../src/commands/forwarders.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"forwarders.js","sourceRoot":"","sources":["../../src/commands/forwarders.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function headerAnalyzeCommand(): Promise<void>;
2
+ export declare function analyzeHeaders(raw: string): void;
@@ -0,0 +1,177 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.headerAnalyzeCommand = headerAnalyzeCommand;
7
+ exports.analyzeHeaders = analyzeHeaders;
8
+ const inquirer_1 = __importDefault(require("inquirer"));
9
+ const theme_1 = require("../utils/theme");
10
+ async function headerAnalyzeCommand() {
11
+ console.log(theme_1.theme.heading('Email Header Analyzer'));
12
+ console.log(theme_1.theme.muted(' Paste raw email headers below.\n'));
13
+ const { headers } = await inquirer_1.default.prompt([
14
+ {
15
+ type: 'editor',
16
+ name: 'headers',
17
+ message: 'Paste email headers (opens editor):',
18
+ },
19
+ ]);
20
+ if (!headers || !headers.trim()) {
21
+ console.log(theme_1.theme.muted('\n No headers provided.\n'));
22
+ return;
23
+ }
24
+ analyzeHeaders(headers);
25
+ }
26
+ function analyzeHeaders(raw) {
27
+ const lines = unfoldHeaders(raw);
28
+ // Parse routing (Received headers)
29
+ const hops = parseReceivedHeaders(lines);
30
+ if (hops.length > 0) {
31
+ console.log(theme_1.theme.heading('Message Route'));
32
+ for (let i = 0; i < hops.length; i++) {
33
+ const hop = hops[i];
34
+ const num = `${i + 1}.`.padEnd(4);
35
+ console.log(` ${theme_1.theme.secondary(num)} ${theme_1.theme.bold(hop.by)}`);
36
+ if (hop.from)
37
+ console.log(theme_1.theme.muted(` from: ${hop.from}`));
38
+ if (hop.protocol)
39
+ console.log(theme_1.theme.muted(` via: ${hop.protocol}`));
40
+ if (hop.timestamp)
41
+ console.log(theme_1.theme.muted(` at: ${hop.timestamp}`));
42
+ if (hop.delay && hop.delay !== '0s')
43
+ console.log(theme_1.theme.warning(` delay: ${hop.delay}`));
44
+ }
45
+ console.log('');
46
+ }
47
+ // Parse authentication results
48
+ const authResults = parseAuthResults(lines);
49
+ if (authResults.length > 0) {
50
+ console.log(theme_1.theme.heading('Authentication Results'));
51
+ for (const auth of authResults) {
52
+ const icon = auth.result === 'pass'
53
+ ? theme_1.theme.statusIcon('pass')
54
+ : auth.result === 'fail'
55
+ ? theme_1.theme.statusIcon('fail')
56
+ : theme_1.theme.statusIcon('warn');
57
+ const color = auth.result === 'pass' ? theme_1.theme.success : auth.result === 'fail' ? theme_1.theme.error : theme_1.theme.warning;
58
+ console.log(` ${icon} ${theme_1.theme.bold(auth.method.toUpperCase().padEnd(10))} ${color(auth.result)} ${theme_1.theme.muted(auth.details)}`);
59
+ }
60
+ console.log('');
61
+ }
62
+ // Parse key headers
63
+ console.log(theme_1.theme.heading('Message Details'));
64
+ const keyHeaders = ['from', 'to', 'subject', 'date', 'message-id', 'return-path', 'reply-to'];
65
+ for (const key of keyHeaders) {
66
+ const value = findHeader(lines, key);
67
+ if (value) {
68
+ console.log(theme_1.theme.keyValue(key.charAt(0).toUpperCase() + key.slice(1), value));
69
+ }
70
+ }
71
+ // Spam headers
72
+ const spamScore = findHeader(lines, 'x-spam-score') || findHeader(lines, 'x-spam-status');
73
+ if (spamScore) {
74
+ console.log('');
75
+ console.log(theme_1.theme.heading('Spam Analysis'));
76
+ console.log(theme_1.theme.keyValue('Spam Score', spamScore));
77
+ const spamFlag = findHeader(lines, 'x-spam-flag');
78
+ if (spamFlag)
79
+ console.log(theme_1.theme.keyValue('Spam Flag', spamFlag));
80
+ }
81
+ // Total transit time
82
+ if (hops.length >= 2) {
83
+ console.log('');
84
+ const firstTime = parseDate(hops[0].timestamp);
85
+ const lastTime = parseDate(hops[hops.length - 1].timestamp);
86
+ if (firstTime && lastTime) {
87
+ const totalMs = Math.abs(lastTime.getTime() - firstTime.getTime());
88
+ const totalSec = Math.round(totalMs / 1000);
89
+ console.log(theme_1.theme.keyValue('Total Transit', `${totalSec}s (${hops.length} hops)`));
90
+ }
91
+ }
92
+ console.log('');
93
+ }
94
+ function unfoldHeaders(raw) {
95
+ // Unfold continuation lines (lines starting with whitespace)
96
+ const unfolded = raw.replace(/\r\n/g, '\n').replace(/\n[ \t]+/g, ' ');
97
+ return unfolded.split('\n').filter((l) => l.trim());
98
+ }
99
+ function findHeader(lines, name) {
100
+ const prefix = name.toLowerCase() + ':';
101
+ for (const line of lines) {
102
+ if (line.toLowerCase().startsWith(prefix)) {
103
+ return line.slice(prefix.length).trim();
104
+ }
105
+ }
106
+ return null;
107
+ }
108
+ function parseReceivedHeaders(lines) {
109
+ const hops = [];
110
+ const receivedLines = lines.filter((l) => l.toLowerCase().startsWith('received:'));
111
+ for (const line of receivedLines) {
112
+ const content = line.slice('received:'.length).trim();
113
+ const fromMatch = content.match(/from\s+(\S+)/i);
114
+ const byMatch = content.match(/by\s+(\S+)/i);
115
+ const withMatch = content.match(/with\s+(\S+)/i);
116
+ const dateMatch = content.match(/;\s*(.+)$/);
117
+ hops.push({
118
+ from: fromMatch ? fromMatch[1] : '',
119
+ by: byMatch ? byMatch[1] : 'unknown',
120
+ protocol: withMatch ? withMatch[1] : '',
121
+ timestamp: dateMatch ? dateMatch[1].trim() : '',
122
+ delay: '',
123
+ });
124
+ }
125
+ // Calculate delays between hops
126
+ for (let i = 1; i < hops.length; i++) {
127
+ const prev = parseDate(hops[i - 1].timestamp);
128
+ const curr = parseDate(hops[i].timestamp);
129
+ if (prev && curr) {
130
+ const diffMs = Math.abs(curr.getTime() - prev.getTime());
131
+ const diffSec = Math.round(diffMs / 1000);
132
+ if (diffSec < 60)
133
+ hops[i].delay = `${diffSec}s`;
134
+ else if (diffSec < 3600)
135
+ hops[i].delay = `${Math.round(diffSec / 60)}m`;
136
+ else
137
+ hops[i].delay = `${Math.round(diffSec / 3600)}h`;
138
+ }
139
+ }
140
+ // Reverse so first hop is first
141
+ return hops.reverse();
142
+ }
143
+ function parseAuthResults(lines) {
144
+ const results = [];
145
+ for (const line of lines) {
146
+ if (!line.toLowerCase().startsWith('authentication-results:'))
147
+ continue;
148
+ const content = line.slice('authentication-results:'.length).trim();
149
+ // Parse individual results
150
+ const parts = content.split(';').slice(1); // skip the server identifier
151
+ for (const part of parts) {
152
+ const trimmed = part.trim();
153
+ const match = trimmed.match(/^(\w+)=(\w+)\s*(.*)/);
154
+ if (match) {
155
+ results.push({ method: match[1], result: match[2], details: match[3] || '' });
156
+ }
157
+ }
158
+ }
159
+ // Also check for individual auth headers
160
+ const dkimResult = findHeader(lines, 'dkim-signature');
161
+ if (dkimResult && !results.find((r) => r.method === 'dkim')) {
162
+ results.push({ method: 'dkim', result: 'present', details: 'DKIM-Signature header found' });
163
+ }
164
+ return results;
165
+ }
166
+ function parseDate(str) {
167
+ if (!str)
168
+ return null;
169
+ try {
170
+ const d = new Date(str);
171
+ return isNaN(d.getTime()) ? null : d;
172
+ }
173
+ catch {
174
+ return null;
175
+ }
176
+ }
177
+ //# sourceMappingURL=header-analyze.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header-analyze.js","sourceRoot":"","sources":["../../src/commands/header-analyze.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function ipCheckCommand(server?: string): Promise<void>;
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ipCheckCommand = ipCheckCommand;
7
+ const ora_1 = __importDefault(require("ora"));
8
+ const theme_1 = require("../utils/theme");
9
+ const config_1 = require("../utils/config");
10
+ const blacklist_1 = require("../utils/blacklist");
11
+ async function ipCheckCommand(server) {
12
+ const config = (0, config_1.getConfig)();
13
+ const hostname = server
14
+ ? server.includes('.')
15
+ ? server
16
+ : `${server}.mxrouting.net`
17
+ : config.server
18
+ ? `${config.server}.mxrouting.net`
19
+ : '';
20
+ if (!hostname) {
21
+ console.log(theme_1.theme.error(`\n ${theme_1.theme.statusIcon('fail')} No server configured. Run ${theme_1.theme.bold('mxroute config setup')} or specify a server.\n`));
22
+ return;
23
+ }
24
+ console.log(theme_1.theme.heading('IP Reputation Check'));
25
+ // Resolve IP
26
+ const ipSpinner = (0, ora_1.default)({ text: `Resolving ${hostname}...`, spinner: 'dots12', color: 'cyan' }).start();
27
+ let ip;
28
+ try {
29
+ ip = await (0, blacklist_1.resolveServerIp)(hostname);
30
+ ipSpinner.succeed(`${hostname} → ${ip}`);
31
+ }
32
+ catch (err) {
33
+ ipSpinner.fail(err.message);
34
+ return;
35
+ }
36
+ // Check blacklists
37
+ const total = (0, blacklist_1.getBlacklistCount)();
38
+ const blSpinner = (0, ora_1.default)({ text: `Checking ${total} blacklists...`, spinner: 'dots12', color: 'cyan' }).start();
39
+ try {
40
+ const results = await (0, blacklist_1.checkAllBlacklists)(ip);
41
+ blSpinner.stop();
42
+ const listed = results.filter((r) => r.listed);
43
+ console.log('');
44
+ for (const r of results) {
45
+ const icon = r.listed ? theme_1.theme.statusIcon('fail') : theme_1.theme.statusIcon('pass');
46
+ const status = r.listed ? theme_1.theme.error(`LISTED (${r.response})`) : theme_1.theme.success('Clean');
47
+ console.log(` ${icon} ${theme_1.theme.bold(r.list.padEnd(20))} ${status}`);
48
+ }
49
+ console.log('');
50
+ console.log(theme_1.theme.separator());
51
+ console.log('');
52
+ if (listed.length === 0) {
53
+ console.log(theme_1.theme.success(` ${theme_1.theme.statusIcon('pass')} ${ip} is clean on all ${total} blacklists`));
54
+ }
55
+ else {
56
+ console.log(theme_1.theme.error(` ${theme_1.theme.statusIcon('fail')} ${ip} is listed on ${listed.length}/${total} blacklist${listed.length !== 1 ? 's' : ''}`));
57
+ console.log('');
58
+ console.log(theme_1.theme.subheading('What to do:'));
59
+ console.log(theme_1.theme.muted(' 1. This is a shared MXroute server IP — contact MXroute support'));
60
+ console.log(theme_1.theme.muted(' 2. Open a ticket at management.mxroute.com with the blacklist details'));
61
+ console.log(theme_1.theme.muted(' 3. MXroute manages IP reputation via SNDS and delist requests'));
62
+ }
63
+ console.log('');
64
+ }
65
+ catch (err) {
66
+ blSpinner.fail('Blacklist check failed');
67
+ console.log(theme_1.theme.error(` ${err.message}\n`));
68
+ }
69
+ }
70
+ //# sourceMappingURL=ip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ip.js","sourceRoot":"","sources":["../../src/commands/ip.ts"],"names":[],"mappings":"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"}