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:
parent
315a29a6d7
commit
1f97a2ceba
|
|
@ -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:-}
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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: `
|
||||||
|
|
|
||||||
|
|
@ -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: [
|
||||||
|
|
|
||||||
|
|
@ -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),
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue