← back to Purelymail Fleet Viewer
add 206-domain SEND test — Purelymail cross-domain send-as runner
5acda4bc6c0f51fb24b87c3396ed4049ac817c97 · 2026-05-18 16:14:31 -0700 · SteveStudio2
Files touched
M .gitignoreM data/remediation-status.jsonA data/send-test-runid.txtA run-send-test.js
Diff
commit 5acda4bc6c0f51fb24b87c3396ed4049ac817c97
Author: SteveStudio2 <stevestudio2@SteveStacStudio.lan>
Date: Mon May 18 16:14:31 2026 -0700
add 206-domain SEND test — Purelymail cross-domain send-as runner
---
.gitignore | 1 +
data/remediation-status.json | 14 +++++++---
data/send-test-runid.txt | 1 +
run-send-test.js | 62 ++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 75 insertions(+), 3 deletions(-)
diff --git a/.gitignore b/.gitignore
index 43e7d3e..3e0aace 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,3 +7,4 @@ dist/
build/
.next/
data/receive-test-sends.jsonl
+data/send-test-sends.jsonl
diff --git a/data/remediation-status.json b/data/remediation-status.json
index de66847..6f4fdae 100644
--- a/data/remediation-status.json
+++ b/data/remediation-status.json
@@ -1,5 +1,5 @@
{
- "updatedAt": "2026-05-18T23:10:02.309Z",
+ "updatedAt": "2026-05-18T23:14:30.844Z",
"stage": "receive-test",
"stageLabel": "Fix A + B complete — receive test sending",
"fixA": {
@@ -19,10 +19,18 @@
"receiveTest": {
"status": "running",
"label": "211-domain receive probe — tagged probe to each info@<domain>",
- "done": 5,
+ "done": 85,
"total": 211,
- "note": "sending — 5/206 probes out (5 accepted)",
+ "note": "sending — 85/206 probes out (85 accepted)",
"runId": "PMRCV-20260518230949",
"sendPhaseComplete": true
+ },
+ "sendTest": {
+ "label": "SEND test — info@<domain> via Purelymail send-as",
+ "total": 206,
+ "status": "running",
+ "done": 5,
+ "note": "sending — 5/206 (5 accepted by SMTP)",
+ "runId": "PMSEND-20260518231415"
}
}
\ No newline at end of file
diff --git a/data/send-test-runid.txt b/data/send-test-runid.txt
new file mode 100644
index 0000000..2425c0c
--- /dev/null
+++ b/data/send-test-runid.txt
@@ -0,0 +1 @@
+PMSEND-20260518231415
\ No newline at end of file
diff --git a/run-send-test.js b/run-send-test.js
new file mode 100644
index 0000000..b9a7fb6
--- /dev/null
+++ b/run-send-test.js
@@ -0,0 +1,62 @@
+#!/usr/bin/env node
+/* Purelymail 206-domain SEND test.
+ * Sends one tagged email AS info@<domain> for every fleet domain, via one
+ * Purelymail SMTP login (info@glitterwalls.com) using cross-domain send-as.
+ * Collector inbox: theagentabrams@gmail.com — arrival there proves info@<domain>
+ * can send. ~3s apart, logs every send, updates the viewer status file live.
+ *
+ * PM_SMTP_PASS=... node run-send-test.js
+ */
+'use strict';
+const fs = require('fs');
+const os = require('os');
+const path = require('path');
+const { sendAs, closeTransport } = require(path.join(os.homedir(),
+ 'Projects/email-deliverability-agent/lib/fleet-send.js'));
+
+const HEALTH = path.join(os.homedir(), 'Projects/email-deliverability-agent/output/domain-health.json');
+const STATUS = path.join(__dirname, 'data/remediation-status.json');
+const SENDS = path.join(__dirname, 'data/send-test-sends.jsonl');
+const RUNID_F= path.join(__dirname, 'data/send-test-runid.txt');
+const COLLECTOR = 'theagentabrams@gmail.com';
+
+if (!process.env.PM_SMTP_PASS) { console.error('PM_SMTP_PASS not set'); process.exit(1); }
+
+const runId = 'PMSEND-' + new Date().toISOString().replace(/[-:T.]/g, '').slice(0, 14);
+const domains = JSON.parse(fs.readFileSync(HEALTH, 'utf8')).domains.map(d => d.domain);
+fs.writeFileSync(SENDS, '');
+fs.writeFileSync(RUNID_F, runId);
+
+function patch(fields) {
+ try {
+ const s = JSON.parse(fs.readFileSync(STATUS, 'utf8'));
+ s.sendTest = Object.assign({ label: 'SEND test — info@<domain> via Purelymail send-as', total: domains.length }, s.sendTest, fields);
+ s.sendTest.runId = runId;
+ s.updatedAt = new Date().toISOString();
+ fs.writeFileSync(STATUS, JSON.stringify(s, null, 2));
+ } catch (e) { /* non-fatal */ }
+}
+const sleep = ms => new Promise(r => setTimeout(r, ms));
+
+(async () => {
+ patch({ status: 'running', done: 0, note: 'starting send test' });
+ let sent = 0, okCount = 0;
+ for (const domain of domains) {
+ const subject = `PMSEND ${runId} ${domain}`;
+ const html = `<p>Purelymail SEND test. run=${runId} domain=${domain}. ` +
+ `This was sent AS info@${domain} via Purelymail send-as. Arrival here proves info@${domain} can send.</p>`;
+ const r = await sendAs(domain, { to: COLLECTOR, subject, html });
+ if (r.ok) okCount++;
+ fs.appendFileSync(SENDS, JSON.stringify({ domain, ok: r.ok, messageId: r.messageId || null, error: r.error || null }) + '\n');
+ sent++;
+ if (sent % 5 === 0 || sent === domains.length) {
+ patch({ done: sent, note: `sending — ${sent}/${domains.length} (${okCount} accepted by SMTP)` });
+ }
+ await sleep(3000);
+ }
+ closeTransport();
+ patch({ done: sent, note: `${sent} sent (${okCount} SMTP-accepted) — waiting 3 min for delivery`, smtpAccepted: okCount });
+ await sleep(180000);
+ patch({ note: `${sent} sent — delivery window elapsed, ready for collector-inbox tabulation`, sendPhaseComplete: true });
+ console.log(`send-test complete: ${sent} sent, ${okCount} SMTP-accepted, runId=${runId}`);
+})();
← 880c1c8 receive test v2 — send from agentabrams to dodge Gmail self-
·
back to Purelymail Fleet Viewer
·
viewer renders sendTest stage card 3e70a7c →