13 lines · 613 B
import { handleAbuseEmail } from "./abuse-email";
import { handleReplyEmail, isReplyAddress } from "./email-reply";

/**
 * Entry point for Email Routing. Thread replies go by address prefix, abuse@ to the abuse desk, and
 * anything else is rejected so a misrouted address can't turn stray mail into abuse reports.
 */
export async function routeInboundEmail(message: ForwardableEmailMessage): Promise<void> {
  if (isReplyAddress(message.to)) return handleReplyEmail(message);
  if (/^abuse(\+[^@]*)?@/.test(message.to.toLowerCase())) return handleAbuseEmail(message);
  message.setReject("Unknown address");
}