chore(agentmail): modern bbs defaults (mail host, 465 implicit TLS)

resolveMailuConfig now defaults to the real bbs mail stack: address domain
bbs.profullstack.com, mail host mail.profullstack.com, SMTP 465 implicit TLS
(bbs refuses 587), IMAPS 993. Also fixes a latent mismatch where the address
domain (bbs) and the transport's from-domain check (mail) diverged with no env
set. Verified live end-to-end with only AGENTMAIL_USER/PASS supplied.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Anthony Ettinger 2026-06-27 16:44:25 +00:00
parent 12a1d7f479
commit 7647202d31

View file

@ -40,22 +40,25 @@ export interface CreateMailuTransportOptions {
/**
* resolveMailuConfig builds a MailuConfig from the environment, defaulting to
* the production hosts (mail.profullstack.com over IMAPS:993, smtp.profullstack.com
* over submission:587/STARTTLS). The caller supplies the member's credentials.
* the production bbs mail stack: member addresses on bbs.profullstack.com, served
* by mail.profullstack.com over IMAPS:993 and modern implicit-TLS submission:465.
* (The bbs Mailu front does not listen on 587 it refuses the connection.) The
* caller supplies the member's credentials.
*/
export function resolveMailuConfig(auth: { user: string; pass: string }, env: Record<string, string | undefined> = process.env): MailuConfig {
const domain = env.AGENTMAIL_DOMAIN ?? "mail.profullstack.com";
const domain = env.AGENTMAIL_DOMAIN ?? "bbs.profullstack.com";
const mailHost = "mail.profullstack.com";
return {
domain,
imap: {
host: env.AGENTMAIL_IMAP_HOST ?? domain,
host: env.AGENTMAIL_IMAP_HOST ?? mailHost,
port: Number(env.AGENTMAIL_IMAP_PORT ?? 993),
secure: (env.AGENTMAIL_IMAP_SECURE ?? "true") !== "false"
},
smtp: {
host: env.AGENTMAIL_SMTP_HOST ?? "smtp.profullstack.com",
port: Number(env.AGENTMAIL_SMTP_PORT ?? 587),
secure: (env.AGENTMAIL_SMTP_SECURE ?? "false") === "true"
host: env.AGENTMAIL_SMTP_HOST ?? mailHost,
port: Number(env.AGENTMAIL_SMTP_PORT ?? 465),
secure: (env.AGENTMAIL_SMTP_SECURE ?? "true") !== "false"
},
auth
};