Files
LambdaMail/services/webmail/next.config.ts
T
Lucas RayanandClaude Opus 5 b5baf33a63 fix(bimi): as rotas existiam no protocols e o proxy nao as conhecia
O painel respondia "API endpoint not found" e o logotipo devolvia a pagina de
404 do Next. As rotas estavam registadas no servico protocols, mas o proxy do
webmail decide o upstream por uma lista propria, e eu nao acrescentei a "bimi"
-- exactamente o erro contra o qual o comentario dessa lista avisa.

Ficam ambas cobertas por testes: cada area administrativa que o protocols
possui, e o caminho well-known do logotipo. Esquecer isto nao volta a ser
silencioso.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-07 22:41:00 -03:00

52 lines
2.1 KiB
TypeScript

import type { NextConfig } from "next";
const PROTOCOLS_SERVICE_URL = process.env.PROTOCOLS_SERVICE_URL ?? "http://protocols:8080";
const nextConfig: NextConfig = {
output: "standalone",
// The event stream is a WebSocket upgrade, which a route handler cannot
// proxy: a handler sees a finished request, not the raw connection. A
// rewrite hands the socket to Next's own proxy, which does upgrade.
// Everything else under /api/v1 keeps going through the route handler,
// which needs to read and rewrite Set-Cookie.
async rewrites() {
return [
{
source: "/api/v1/events",
destination: `${PROTOCOLS_SERVICE_URL}/api/v1/events`,
},
// The well-known documents belong to the protocols service, but the
// hostnames senders ask for - mta-sts.<domain> above all - resolve to
// this app. Without these rewrites the Next 404 page was served in
// place of the MTA-STS policy: the _mta-sts TXT record advertised a
// policy that could not be fetched, so every sender fell back to
// "no-policy-found" and no TLS policy was enforced on inbound mail.
// Google's daily TLS-RPT report reports precisely that.
//
// A rewrite rather than a redirect, because RFC 8461 section 3.3 has
// the sender fetch that exact HTTPS path and it need not follow one.
{
source: "/.well-known/mta-sts.txt",
destination: `${PROTOCOLS_SERVICE_URL}/.well-known/mta-sts.txt`,
},
{
// Fetched by receiving mail providers evaluating a message, which
// hold no session and never will.
source: "/.well-known/bimi/default.svg",
destination: `${PROTOCOLS_SERVICE_URL}/.well-known/bimi/default.svg`,
},
{
source: "/.well-known/security.txt",
destination: `${PROTOCOLS_SERVICE_URL}/.well-known/security.txt`,
},
{
source: "/.well-known/autoconfig/mail/config-v1.1.xml",
destination: `${PROTOCOLS_SERVICE_URL}/.well-known/autoconfig/mail/config-v1.1.xml`,
},
];
},
};
export default nextConfig;