fix(smtp): use noreply@rmail.online as sender across all modules

Mailcow rejects noreply@rspace.online because the authenticated user
is noreply@rmail.online. Updated all SMTP_FROM and SMTP_USER defaults
to use rmail.online consistently: spaces invites, rSplat notifications,
EncryptID auth emails, and rCart payment receipts.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Jeff Emmett 2026-03-16 21:00:12 -07:00
parent 315a29a6d7
commit 1f97a2ceba
5 changed files with 10 additions and 10 deletions

View File

@ -216,9 +216,9 @@ services:
- DATABASE_URL=postgres://encryptid:${ENCRYPTID_DB_PASSWORD}@encryptid-db:5432/encryptid - DATABASE_URL=postgres://encryptid:${ENCRYPTID_DB_PASSWORD}@encryptid-db:5432/encryptid
- SMTP_HOST=${SMTP_HOST:-mailcowdockerized-postfix-mailcow-1} - SMTP_HOST=${SMTP_HOST:-mailcowdockerized-postfix-mailcow-1}
- SMTP_PORT=${SMTP_PORT:-587} - SMTP_PORT=${SMTP_PORT:-587}
- SMTP_USER=${SMTP_USER:-noreply@rspace.online} - SMTP_USER=${SMTP_USER:-noreply@rmail.online}
- SMTP_PASS=${SMTP_PASS} - SMTP_PASS=${SMTP_PASS}
- SMTP_FROM=${SMTP_FROM:-EncryptID <noreply@rspace.online>} - SMTP_FROM=${SMTP_FROM:-EncryptID <noreply@rmail.online>}
- RECOVERY_URL=${RECOVERY_URL:-https://auth.rspace.online/recover} - RECOVERY_URL=${RECOVERY_URL:-https://auth.rspace.online/recover}
- MAILCOW_API_URL=${MAILCOW_API_URL:-http://nginx-mailcow:8080} - MAILCOW_API_URL=${MAILCOW_API_URL:-http://nginx-mailcow:8080}
- MAILCOW_API_KEY=${MAILCOW_API_KEY:-} - MAILCOW_API_KEY=${MAILCOW_API_KEY:-}

View File

@ -2120,7 +2120,7 @@ async function sendPaymentSuccessEmail(
].join('\n'); ].join('\n');
await transport.sendMail({ await transport.sendMail({
from: 'rSpace <noreply@rspace.online>', from: process.env.SMTP_FROM || 'rSpace <noreply@rmail.online>',
to: email, to: email,
subject: `Payment confirmed \u2014 ${p.amount} ${p.token}`, subject: `Payment confirmed \u2014 ${p.amount} ${p.token}`,
html, html,
@ -2196,7 +2196,7 @@ async function sendPaymentReceivedEmail(
].join('\n'); ].join('\n');
await transport.sendMail({ await transport.sendMail({
from: 'rSpace <noreply@rspace.online>', from: process.env.SMTP_FROM || 'rSpace <noreply@rmail.online>',
to: email, to: email,
subject: `Payment received \u2014 ${p.amount} ${p.token}`, subject: `Payment received \u2014 ${p.amount} ${p.token}`,
html, html,

View File

@ -697,7 +697,7 @@ if (process.env.SMTP_PASS) {
secure: Number(process.env.SMTP_PORT) === 465, secure: Number(process.env.SMTP_PORT) === 465,
tls: { rejectUnauthorized: false }, tls: { rejectUnauthorized: false },
auth: { auth: {
user: "noreply@rspace.online", user: process.env.SMTP_USER || "noreply@rmail.online",
pass: process.env.SMTP_PASS, pass: process.env.SMTP_PASS,
}, },
}); });
@ -709,7 +709,7 @@ async function sendSplatEmail(job: Gen3DJob) {
const title = job.title || "3D Model"; const title = job.title || "3D Model";
try { try {
await splatMailTransport.sendMail({ await splatMailTransport.sendMail({
from: process.env.SMTP_FROM || "rSplat <noreply@rspace.online>", from: process.env.SMTP_FROM || "rSplat <noreply@rmail.online>",
to: SPLAT_NOTIFY_EMAIL, to: SPLAT_NOTIFY_EMAIL,
subject: `Your 3D splat "${title}" is ready — rSplat`, subject: `Your 3D splat "${title}" is ready — rSplat`,
html: ` html: `

View File

@ -2082,7 +2082,7 @@ if (process.env.SMTP_PASS) {
port: Number(process.env.SMTP_PORT) || 587, port: Number(process.env.SMTP_PORT) || 587,
secure: Number(process.env.SMTP_PORT) === 465, secure: Number(process.env.SMTP_PORT) === 465,
auth: { auth: {
user: process.env.SMTP_USER || "noreply@rspace.online", user: process.env.SMTP_USER || "noreply@rmail.online",
pass: process.env.SMTP_PASS, pass: process.env.SMTP_PASS,
}, },
tls: { rejectUnauthorized: false }, tls: { rejectUnauthorized: false },
@ -2148,7 +2148,7 @@ spaces.post("/:slug/invite", async (c) => {
try { try {
await inviteTransport.sendMail({ await inviteTransport.sendMail({
from: process.env.SMTP_FROM || "rSpace <noreply@rspace.online>", from: process.env.SMTP_FROM || "rSpace <noreply@rmail.online>",
to: body.email, to: body.email,
subject: `You're invited to join "${slug}" on rSpace`, subject: `You're invited to join "${slug}" on rSpace`,
html: [ html: [

View File

@ -153,9 +153,9 @@ const CONFIG = {
host: process.env.SMTP_HOST || 'mail.rmail.online', host: process.env.SMTP_HOST || 'mail.rmail.online',
port: parseInt(process.env.SMTP_PORT || '587'), port: parseInt(process.env.SMTP_PORT || '587'),
secure: false, // STARTTLS on 587 secure: false, // STARTTLS on 587
user: process.env.SMTP_USER || 'noreply@rspace.online', user: process.env.SMTP_USER || 'noreply@rmail.online',
pass: process.env.SMTP_PASS || '', pass: process.env.SMTP_PASS || '',
from: process.env.SMTP_FROM || 'EncryptID <noreply@rspace.online>', from: process.env.SMTP_FROM || 'EncryptID <noreply@rmail.online>',
}, },
recoveryUrl: process.env.RECOVERY_URL || 'https://auth.rspace.online/recover', recoveryUrl: process.env.RECOVERY_URL || 'https://auth.rspace.online/recover',
adminDIDs: (process.env.ADMIN_DIDS || '').split(',').filter(Boolean), adminDIDs: (process.env.ADMIN_DIDS || '').split(',').filter(Boolean),