chore(email): decommission SMTP2GO references — local MTA only
SMTP2GO is no longer used: Listmonk relays through the local Postfix MTA (172.18.0.1:25 from the Docker network), which DKIM-signs and delivers direct-to-recipient-MX; transactional mail goes through Carbonio. Verified zero smtp2go in any live container env + postfix has no external relayhost. Removed the stale references so a rebuild/new dev can't re-introduce it: - api/src/config.ts: SMTP_HOST default mail.smtp2go.com -> co.carrierone.com - scripts/workers/crypto_payment_worker.py: same default fix - infra/ansible all.yml: listmonk_smtp_* now 172.18.0.1:25, no auth (+comment) - app.env.j2 / email.ts / crm.md / go-live-todo.md / architecture.svg: docs
This commit is contained in:
parent
eba525f83f
commit
a04ecf7df3
8 changed files with 18 additions and 14 deletions
|
|
@ -99,7 +99,7 @@ function loadConfig(): Config {
|
||||||
webhookSecret: optional("STRIPE_WEBHOOK_SECRET", ""),
|
webhookSecret: optional("STRIPE_WEBHOOK_SECRET", ""),
|
||||||
},
|
},
|
||||||
smtp: {
|
smtp: {
|
||||||
host: optional("SMTP_HOST", "mail.smtp2go.com"),
|
host: optional("SMTP_HOST", "co.carrierone.com"),
|
||||||
port: parseInt(optional("SMTP_PORT", "587"), 10),
|
port: parseInt(optional("SMTP_PORT", "587"), 10),
|
||||||
user: optional("SMTP_USER", ""),
|
user: optional("SMTP_USER", ""),
|
||||||
pass: optional("SMTP_PASS", ""),
|
pass: optional("SMTP_PASS", ""),
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
* - Portal access link emails (JWT-signed links)
|
* - Portal access link emails (JWT-signed links)
|
||||||
*
|
*
|
||||||
* All transactional emails go through Carbonio: co.carrierone.com:587
|
* All transactional emails go through Carbonio: co.carrierone.com:587
|
||||||
* (SMTP2GO is used only by Listmonk for mass-mail campaigns.)
|
* (Listmonk mass-mail relays through the local Postfix MTA, not this path.)
|
||||||
* Env vars: SMTP_HOST, SMTP_PORT, SMTP_USER, SMTP_PASS, SMTP_FROM
|
* Env vars: SMTP_HOST, SMTP_PORT, SMTP_USER, SMTP_PASS, SMTP_FROM
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -165,7 +165,7 @@
|
||||||
<rect x="487" y="524" width="72" height="18" rx="3" fill="#fed7aa" stroke="#f97316"/>
|
<rect x="487" y="524" width="72" height="18" rx="3" fill="#fed7aa" stroke="#f97316"/>
|
||||||
<text x="523" y="537" text-anchor="middle" font-size="8" fill="#9a3412">Anytime MB</text>
|
<text x="523" y="537" text-anchor="middle" font-size="8" fill="#9a3412">Anytime MB</text>
|
||||||
<rect x="564" y="524" width="72" height="18" rx="3" fill="#e0f2fe" stroke="#7dd3fc"/>
|
<rect x="564" y="524" width="72" height="18" rx="3" fill="#e0f2fe" stroke="#7dd3fc"/>
|
||||||
<text x="600" y="537" text-anchor="middle" font-size="8" fill="#0c4a6e">SMTP2GO</text>
|
<text x="600" y="537" text-anchor="middle" font-size="8" fill="#0c4a6e">Local MTA</text>
|
||||||
<rect x="641" y="524" width="72" height="18" rx="3" fill="#f1f5f9" stroke="#cbd5e1"/>
|
<rect x="641" y="524" width="72" height="18" rx="3" fill="#f1f5f9" stroke="#cbd5e1"/>
|
||||||
<text x="677" y="537" text-anchor="middle" font-size="8" fill="#475569">TronGrid</text>
|
<text x="677" y="537" text-anchor="middle" font-size="8" fill="#475569">TronGrid</text>
|
||||||
|
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
|
|
@ -270,7 +270,7 @@ store customer orders or tickets — ERPNext is the CRM source of truth.
|
||||||
3. Listmonk tracks email opens/clicks and manages subscriber lists
|
3. Listmonk tracks email opens/clicks and manages subscriber lists
|
||||||
4. Bounce processing via POP3 from Carbonio (`co.carrierone.com`)
|
4. Bounce processing via POP3 from Carbonio (`co.carrierone.com`)
|
||||||
|
|
||||||
**Mass email:** SMTP2GO is used for Listmonk campaign sends (not Carbonio — Carbonio is for transactional email only).
|
**Mass email:** Listmonk campaign sends relay through the local Postfix MTA (172.18.0.1:25 from the Docker network), which DKIM-signs and delivers direct-to-recipient-MX. Carbonio (co.carrierone.com) is for transactional email only. (SMTP2GO was decommissioned — no external relay is used.)
|
||||||
|
|
||||||
**Campaigns:**
|
**Campaigns:**
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -140,7 +140,7 @@
|
||||||
## PRIORITY 7 — Listmonk (Email Marketing) ~~COMPLETE~~
|
## PRIORITY 7 — Listmonk (Email Marketing) ~~COMPLETE~~
|
||||||
|
|
||||||
- [x] Deploy Listmonk at lists.performancewest.net (Docker, PostgreSQL-backed)
|
- [x] Deploy Listmonk at lists.performancewest.net (Docker, PostgreSQL-backed)
|
||||||
- [x] Configure SMTP2GO outbound email (separate from Carbonio transactional SMTP)
|
- [x] Configure Listmonk mass-mail via the local Postfix MTA (SMTP2GO decommissioned; separate from Carbonio transactional SMTP)
|
||||||
- [x] Import 10,191 FCC RMD contacts into Listmonk (3 subscriber lists)
|
- [x] Import 10,191 FCC RMD contacts into Listmonk (3 subscriber lists)
|
||||||
- [x] Configure bounce processing via POP3 from Carbonio (bounces@performancewest.net)
|
- [x] Configure bounce processing via POP3 from Carbonio (bounces@performancewest.net)
|
||||||
- [x] Create 22 scheduled campaigns across 4 lists
|
- [x] Create 22 scheduled campaigns across 4 lists
|
||||||
|
|
|
||||||
|
|
@ -80,13 +80,17 @@ smtp_pass: "{{ vault_smtp_pass }}"
|
||||||
smtp_from: "Performance West <noreply@performancewest.net>"
|
smtp_from: "Performance West <noreply@performancewest.net>"
|
||||||
smtp_admin_email: ops@performancewest.net
|
smtp_admin_email: ops@performancewest.net
|
||||||
|
|
||||||
# ── Listmonk (mass-mail via SMTP2GO) ─────────────────────────────────────────
|
# ── Listmonk (mass-mail via the LOCAL MTA) ───────────────────────────────────
|
||||||
# Listmonk SMTP is configured via its web admin UI, not env vars.
|
# Listmonk SMTP is configured via its web admin UI, not env vars. Listmonk relays
|
||||||
# These vars are kept here for documentation and manual reference.
|
# through the host Postfix (172.18.0.1:25 from inside the Docker network), which
|
||||||
listmonk_smtp_host: mail.smtp2go.com
|
# DKIM-signs and delivers direct-to-recipient-MX. We no longer use any external
|
||||||
listmonk_smtp_port: 587
|
# relay (SMTP2GO was decommissioned). These vars are kept here for documentation
|
||||||
listmonk_smtp_user: "{{ vault_listmonk_smtp_user | default(smtp_user) }}"
|
# and manual reference.
|
||||||
listmonk_smtp_pass: "{{ vault_listmonk_smtp_pass }}"
|
listmonk_smtp_host: 172.18.0.1
|
||||||
|
listmonk_smtp_port: 25
|
||||||
|
# The local Postfix relay requires no auth (auth_protocol: none, tls_type: none).
|
||||||
|
listmonk_smtp_user: ""
|
||||||
|
listmonk_smtp_pass: ""
|
||||||
listmonk_admin_user: "{{ vault_listmonk_admin_user }}"
|
listmonk_admin_user: "{{ vault_listmonk_admin_user }}"
|
||||||
listmonk_admin_password: "{{ vault_listmonk_admin_password }}"
|
listmonk_admin_password: "{{ vault_listmonk_admin_password }}"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -54,7 +54,7 @@ WORKER_URL=http://workers:8090
|
||||||
|
|
||||||
# ── Transactional email — Carbonio (co.carrierone.com) ───────────────────────
|
# ── Transactional email — Carbonio (co.carrierone.com) ───────────────────────
|
||||||
# All transactional mail: order confirmations, worker notifications, ERPNext alerts.
|
# All transactional mail: order confirmations, worker notifications, ERPNext alerts.
|
||||||
# Listmonk mass-mail uses SMTP2GO — configured separately in the Listmonk admin UI.
|
# Listmonk mass-mail relays through the local Postfix MTA — configured separately in the Listmonk admin UI.
|
||||||
SMTP_HOST={{ smtp_host }}
|
SMTP_HOST={{ smtp_host }}
|
||||||
SMTP_PORT={{ smtp_port }}
|
SMTP_PORT={{ smtp_port }}
|
||||||
SMTP_USER={{ smtp_user }}
|
SMTP_USER={{ smtp_user }}
|
||||||
|
|
|
||||||
|
|
@ -809,7 +809,7 @@ automate this process.
|
||||||
import smtplib
|
import smtplib
|
||||||
from email.mime.text import MIMEText
|
from email.mime.text import MIMEText
|
||||||
|
|
||||||
smtp_host = os.environ.get("SMTP_HOST", "mail.smtp2go.com")
|
smtp_host = os.environ.get("SMTP_HOST", "co.carrierone.com")
|
||||||
smtp_port = int(os.environ.get("SMTP_PORT", "587"))
|
smtp_port = int(os.environ.get("SMTP_PORT", "587"))
|
||||||
smtp_user = os.environ.get("SMTP_USER", "")
|
smtp_user = os.environ.get("SMTP_USER", "")
|
||||||
smtp_pass = os.environ.get("SMTP_PASS", "")
|
smtp_pass = os.environ.get("SMTP_PASS", "")
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue