[{"data":1,"prerenderedAt":1624},["ShallowReactive",2],{"search":3,"content-guide\u002Fpostbox":442,"surround-\u002Fguide\u002Fpostbox":1619},[4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64,68,72,76,80,84,88,92,96,100,104,108,112,116,120,124,128,132,136,140,144,148,152,156,160,164,168,172,176,180,184,188,192,196,200,204,208,212,216,220,224,228,232,236,240,244,248,252,256,260,264,268,272,276,280,284,288,292,296,300,304,308,312,316,320,323,327,331,335,339,343,347,351,355,359,363,367,371,375,379,383,387,391,395,399,403,407,411,415,419,423,426,430,434,438],{"path":5,"title":6,"description":7},"\u002Fguide","Guide","Product guides for Owlat — a modular, self-hosted email platform. Learn how to send campaigns, run a personal mailbox, manage a team inbox, and more.",{"path":9,"title":10,"description":11},"\u002Fguide\u002Fgetting-started","Welcome to Owlat","Set up your Owlat workspace and send your first email — from deploying the stack to verifying a domain, building your audience, and launching a campaign.",{"path":13,"title":14,"description":15},"\u002Fguide\u002Fcontact-properties","Contact Properties","Custom fields that extend built-in contact data with your own values for segmentation.",{"path":17,"title":18,"description":19},"\u002Fguide\u002Ftopics","Topics","Topics are explicit audience groups you manage by hand — ideal for opt-in subscribers, imported cohorts, and organized contact buckets you target with campaigns.",{"path":21,"title":22,"description":23},"\u002Fguide\u002Fsegments","Segments","Build dynamic, rule-based contact groups from properties, email activity, and topic membership, re-evaluated from current data each time they're used.",{"path":25,"title":26,"description":27},"\u002Fguide\u002Fforms","Forms","Form Endpoints collect new contacts from your website or landing pages by exposing a public endpoint that accepts submissions and feeds them into a topic.",{"path":29,"title":30,"description":31},"\u002Fguide\u002Fcampaigns","Campaigns & Reporting","Build and send marketing campaigns to a topic or segment with the five-step wizard, optional A\u002FB testing, and full delivery reporting.",{"path":33,"title":34,"description":35},"\u002Fguide\u002Fab-testing","A\u002FB Testing","Compare two variants of a campaign on a test group, then automatically or manually send the winning version to the rest of your audience.",{"path":37,"title":38,"description":39},"\u002Fguide\u002Fautomations","Automations","Send emails automatically based on triggers, delays, and conditions — build welcome series, trial flows, and follow-ups once and let Owlat run them.",{"path":41,"title":42,"description":43},"\u002Fguide\u002Ftransactional","Transactional Emails","One-to-one emails your application triggers in response to a user action — password resets, order confirmations, welcome emails, and similar notifications.",{"path":45,"title":46,"description":47},"\u002Fguide\u002Fcreate-campaign","Create a Campaign","Walk through Owlat's five-step campaign wizard: Basics, Audience, Content, A\u002FB Test, and Review & Send.",{"path":49,"title":50,"description":51},"\u002Fguide\u002Fsend-campaign","Send & Monitor a Campaign","How to send your campaign and track its performance with real-time metrics.",{"path":53,"title":54,"description":55},"\u002Fguide\u002Fquick-start","Quick Start","The fastest path from a blank Owlat workspace to a live email campaign, from your first template through sending and reviewing results.",{"path":57,"title":58,"description":59},"\u002Fguide\u002Ftransactional-setup","Transactional Email Setup","Set up and send transactional emails like password resets and order confirmations via the Owlat API and SDKs.",{"path":61,"title":62,"description":63},"\u002Fguide\u002Fdeliverability","Deliverability","Verify sending domains, manage your blocklist, monitor sending reputation, and stay compliant so your emails reach the inbox.",{"path":65,"title":66,"description":67},"\u002Fguide\u002Fapi-keys-webhooks","API Keys & Webhooks","Create API keys for programmatic access and set up outbound webhooks to receive real-time notifications for email and contact events.",{"path":69,"title":70,"description":71},"\u002Fguide\u002Ffeature-flags","Feature flags","Owlat is modular — every feature listed in this guide can be turned on or off. This page is the user-facing overview of how to do it.",{"path":73,"title":74,"description":75},"\u002Fguide\u002Fteam-permissions","Team & Permissions","Use role-based access to control what each member of your organization can do, with Owner, Admin, and Editor roles.",{"path":77,"title":78,"description":79},"\u002Fguide\u002Faudit-logs","Audit Logs","A chronological record of significant actions in your Owlat organization, so you can see who did what and when.",{"path":81,"title":82,"description":83},"\u002Fguide\u002Fshare-links","Share Links","Create temporary preview links to share email designs with stakeholders who don't have dashboard access.",{"path":85,"title":86,"description":87},"\u002Fguide\u002Fpostbox","Postbox — Personal Email","Per-user mailboxes with a webmail interface and native IMAP\u002FSMTP support. Run your own Gmail-equivalent personal mailbox on your Owlat instance.",{"path":89,"title":90,"description":91},"\u002Fguide\u002Fmigrate-from-google","Migrate from Google","Import your full Gmail history into Owlat over IMAP, and let your AI assistant learn from every imported conversation.",{"path":93,"title":94,"description":95},"\u002Fguide\u002Fteam-inbox","Team Inbox","Triage inbound email as a team: read AI-classified threads, approve, edit or reject agent drafts, work the review queue, and manage quarantine.",{"path":97,"title":98,"description":99},"\u002Fguide\u002Femail-editor","Email Editor","A block-based visual editor for building responsive emails that render consistently across desktop, mobile, Outlook, Gmail, and Apple Mail.",{"path":101,"title":102,"description":103},"\u002Fguide\u002Fai-agent","AI Agent & Autonomy","Configure the AI agent that classifies and drafts replies to inbound mail: auto-reply settings, the health dashboard, circuit breakers, autonomy rules, and the knowledge backfill.",{"path":105,"title":106,"description":107},"\u002Fguide\u002Fknowledge-graph","Knowledge Graph","Browse, search, and manage Owlat's typed organizational knowledge — the 7 entry types, source attribution, confidence decay, relations, and how entries are extracted from mail.",{"path":109,"title":110,"description":111},"\u002Fguide\u002Ffiles","Files","Upload, browse, search, tag, and version documents in the file library.",{"path":113,"title":114,"description":115},"\u002Fguide\u002Fchat","Team Chat","Use Owlat's built-in team chat: public and private channels, direct messages, mentions, attachments, and channels linked to an inbox conversation.",{"path":117,"title":118,"description":119},"\u002Fguide\u002Fcode-tasks","Code Tasks","Queue coding-agent tasks, watch them move from queued through review, and run the code-worker sidecar that opens the pull requests.",{"path":121,"title":122,"description":123},"\u002Fguide\u002Faudience-data","Audience Data: Identities, Relationships & Timeline","Unify a contact across email, phone, and messaging channels, merge duplicates, map relationships, and read the cross-channel interaction timeline.",{"path":125,"title":126,"description":127},"\u002Fguide\u002Fimporting-contacts","Importing & Exporting Contacts","Bring contacts into Owlat from a CSV or from Mailchimp and Stripe, export them back out, and run bulk operations on your audience.",{"path":129,"title":130,"description":131},"\u002Fguide\u002Faccount","Your Account & Data","Export your data as JSON or CSV, request account deletion with a 30-day grace period, and use the onboarding checklist and the public preference center.",{"path":133,"title":134,"description":135},"\u002Fguide\u002Fchannels","Communication Channels","Configure SMS, WhatsApp, and generic-webhook channels, monitor channel health, and understand which channels are fully live today.",{"path":137,"title":138,"description":139},"\u002Fguide\u002Fdesktop-app","Desktop App","Install the Owlat desktop app, connect one or more workspaces, switch between them, and use native notifications, tray badges, shortcuts, and deep links.",{"path":141,"title":142,"description":143},"\u002Fguide\u002Femail-templates","Email Templates","Reusable email designs that define the structure, content, and personalization of every campaign and transactional message you send in Owlat.",{"path":145,"title":146,"description":147},"\u002Fguide\u002Fai-assistant","AI Assistant","Owlat's multi-turn, streaming, tool-calling AI assistant — a private chat surface that can search your workspace and draft copy, plus @assistant replies inside team chat.",{"path":149,"title":150,"description":151},"\u002Fguide\u002Fsecurity-scanning","Sending Security & Scanning","Owlat's security scanning: a content check for spam and phishing, an attachment scan for malware, and a Google Safe Browsing URL check. Suspicious content goes to a review queue.",{"path":153,"title":154,"description":155},"\u002Fguide\u002Fsystem-updates","System & Updates","The owner-only System & Updates screen: your current Owlat version, container health, LLM spend, and the in-app one-click updater with history.",{"path":157,"title":158,"description":159},"\u002Fguide\u002Foperating-modes","Operating Modes","The different ways to run Owlat at a company — read external mailboxes over IMAP, send transactional or marketing email through a delivery provider, host your own mail server, or run a team inbox with AI — and the rules that keep each combination coherent.",{"path":161,"title":162,"description":163},"\u002Fguide\u002Fsaved-blocks","Saved Blocks","Create reusable, linked content blocks you can drop into any email — edit one and every email that uses it updates automatically.",{"path":165,"title":166,"description":167},"\u002Fguide\u002Fmedia-library","Media Library","Manage, organize, search, and reuse images and files across your emails from one centralized hub.",{"path":169,"title":170,"description":171},"\u002Fguide\u002Femail-theme","Email Theme","Set your organization's default colors, font, and email width so every new template starts from a consistent baseline.",{"path":173,"title":174,"description":175},"\u002Fguide\u002Ftranslations","Translations","Send one email in multiple languages: add per-language translations to a single template and Owlat picks the right version for each recipient.",{"path":177,"title":178,"description":179},"\u002Fguide\u002Fcontacts","Contacts","How to add, view, organize, and manage contacts in Owlat, including sources, the contact detail tabs, and subscription compliance.",{"path":181,"title":182,"description":183},"\u002Fapi","API Overview","Owlat exposes authenticated API endpoints under your Convex site URL.",{"path":185,"title":186,"description":187},"\u002Fapi\u002Fwebhooks","Webhooks","Owlat supports both outbound customer webhooks and inbound provider webhooks.",{"path":189,"title":190,"description":191},"\u002Fapi\u002Fpublic-endpoints","Public Endpoints","These routes are public-facing and usually accessed from email links or embedded forms.",{"path":193,"title":194,"description":195},"\u002Fapi\u002Fwebhook-payloads","Webhook Payloads","The authoritative wire contract for outbound webhooks: envelope, signature headers, per-event data shapes, and payload versioning.",{"path":197,"title":198,"description":199},"\u002Fapi\u002Finbound-channels","Inbound Channel Webhooks","Provider webhook reference for inbound SMS, WhatsApp, and generic-channel messages, plus the MTA mailbox and credential callbacks.",{"path":201,"title":202,"description":203},"\u002Fapi\u002Fauthentication","Authentication","Secure API access with organization-scoped API keys.",{"path":205,"title":206,"description":207},"\u002Fapi\u002Fsdk","TypeScript SDK","Typed client for the Owlat API, usable from Node.js, Bun, Deno, or any server-side JavaScript runtime.",{"path":209,"title":210,"description":211},"\u002Fapi\u002Fsdk-java","Java SDK","The official `owlat-sdk` package provides a typed client for interacting with the Owlat API from any JVM application. Requires Java 11+.",{"path":213,"title":214,"description":215},"\u002Fapi\u002Fcontacts","Contacts API","Manage contacts for your organization.",{"path":217,"title":218,"description":219},"\u002Fapi\u002Ftopics","Topics API","Manage topic membership through authenticated endpoints.",{"path":221,"title":222,"description":223},"\u002Fapi\u002Fevents","Events API","Send contact events to drive segmentation and automation triggers.",{"path":225,"title":226,"description":227},"\u002Fapi\u002Ftransactional","Transactional API","Send published transactional templates to a recipient.",{"path":229,"title":230,"description":231},"\u002Fapi\u002Fforms","Forms API","Capture subscribers through public form endpoints.",{"path":233,"title":234,"description":235},"\u002Fdeveloper","Developer Guide","Technical architecture, feature-flag model, and provider abstractions used by Owlat.",{"path":237,"title":238,"description":239},"\u002Fdeveloper\u002Fmta-system","MTA System","Owlat's custom Mail Transfer Agent for direct SMTP delivery with intelligent rate limiting, bounce processing, and IP warming.",{"path":241,"title":242,"description":243},"\u002Fdeveloper\u002Ffeature-flags","Feature flags — developer reference","How the Owlat feature flag system works: single source of truth, dependency resolution, docker profile mapping, and how to add a new flag.",{"path":245,"title":246,"description":247},"\u002Fdeveloper\u002Fhow-email-works","How Email Works","A technical deep-dive into how email actually works — from SMTP and DNS to authentication, deliverability, and the differences between marketing and private email.",{"path":249,"title":250,"description":251},"\u002Fdeveloper\u002Femail-security","Email Security","Content scanning, attachment validation, URL reputation checking, and malware detection for outbound emails.",{"path":253,"title":254,"description":255},"\u002Fdeveloper\u002Fpostbox-architecture","Postbox Architecture","How the Postbox personal-mail feature is wired — schema, IMAP server, app-password auth, outbound relay, inbound delivery, and external mailboxes.",{"path":257,"title":258,"description":259},"\u002Fdeveloper\u002Fproviders","Providers","Pluggable provider abstractions for LLM, email sending, notifications, vector stores, and analytics, selected per-deployment so self-hosters can swap implementations without code changes.",{"path":261,"title":262,"description":263},"\u002Fdeveloper\u002Fcampaign-internals","Campaign Internals","How the campaign backend works: two status machines, send pre-flight, the send orchestrator, emailSends records, and the priority workpools.",{"path":265,"title":266,"description":267},"\u002Fdeveloper\u002Faudience-internals","Audience Internals","Backend reference for contact resolution, the double opt-in lifecycle, topic subscription, the conditions registry, and segment evaluation.",{"path":269,"title":270,"description":271},"\u002Fdeveloper\u002Fautomation-internals","Automation Internals","How the automation run engine works: the step walker, the lifecycle state machine, trigger fanout, the three step types, and the resilience cron.",{"path":273,"title":274,"description":275},"\u002Fdeveloper\u002Fdeliverability-infrastructure","Deliverability Infrastructure","The Convex-side deliverability backend: provider routing, health-aware failover, sending reputation with auto-enforcement, IP warming cache, the blocklist, and the content-scan gate.",{"path":277,"title":278,"description":279},"\u002Fdeveloper\u002Farchitecture","Architecture Overview","Owlat follows a modern serverless architecture with real-time capabilities.",{"path":281,"title":282,"description":283},"\u002Fdeveloper\u002Fplatform-operations","Platform Operations","Operator reference for abuse status and the sending gate, the platform-admin roster, content review, org deletion, in-app self-update, dev endpoints, crons, and migrations.",{"path":285,"title":286,"description":287},"\u002Fdeveloper\u002Fscopes","Scopes","What each app and package in the Owlat monorepo is responsible for.",{"path":289,"title":290,"description":291},"\u002Fdeveloper\u002Fself-hosting","Self-Hosting","Deploy Owlat on your own infrastructure with Docker Compose. Complete guide from first boot to production.",{"path":293,"title":294,"description":295},"\u002Fdeveloper\u002Fself-hosting-config","Self-Hosting Configuration","Complete reference for Docker environment variables, Convex backend variables, service topology, and volume persistence.",{"path":297,"title":298,"description":299},"\u002Fdeveloper\u002Fself-hosting-dns-email","DNS & Email Setup","Configure DNS records, DKIM signing, SPF, DMARC, and bounce handling for reliable email delivery.",{"path":301,"title":302,"description":303},"\u002Fdeveloper\u002Fself-hosting-production","Production Deployment","Secure your self-hosted Owlat instance with TLS, firewall rules, backups, and monitoring.",{"path":305,"title":306,"description":307},"\u002Fdeveloper\u002Fself-hosting-maintenance","Maintenance & Updates","Keep your self-hosted Owlat instance up to date, manage backups, scale performance, and troubleshoot common issues.",{"path":309,"title":310,"description":311},"\u002Fdeveloper\u002Fself-hosting-desktop","Desktop Installer","Install Owlat on a bare Linux VPS straight from the desktop app over SSH — no terminal — with a live, animated provisioning timeline.",{"path":313,"title":314,"description":315},"\u002Fdeveloper\u002Fsetup-cli","Setup CLI & Installer","Operator reference for the Owlat self-host tooling: the install.sh one-liner, the owlat-setup CLI, the convex-deploy flow, and admin bootstrap.",{"path":317,"title":318,"description":319},"\u002Fdeveloper\u002Fconvex","Convex Backend","Owlat uses Convex as its serverless backend, providing real-time subscriptions, ACID transactions, and TypeScript-first development.",{"path":321,"title":202,"description":322},"\u002Fdeveloper\u002Fauthentication","Owlat uses BetterAuth with the Convex adapter for authentication and organization (team) management.",{"path":324,"title":325,"description":326},"\u002Fdeveloper\u002Femail-system","Email System","Owlat's email system consists of a visual editor, template management, and multi-provider sending infrastructure.",{"path":328,"title":329,"description":330},"\u002Fdeveloper\u002Femail-renderer","Email Renderer","The @owlat\u002Femail-renderer package converts editor JSON blocks into production-ready HTML emails with cross-client compatibility, CSS inlining, dark mode, and Outlook VML fallbacks.",{"path":332,"title":333,"description":334},"\u002Fdeveloper\u002Fenvironment-variables","Environment Variables","Reference for every environment variable Owlat reads across the Convex backend, web app, MTA, IMAP server, and mail-sync worker.",{"path":336,"title":337,"description":338},"\u002Fdeveloper\u002Fcomponents","Component Library","Reference for the reusable, auto-imported Vue UI components shipped in the packages\u002Fui layer.",{"path":340,"title":341,"description":342},"\u002Fdeveloper\u002Fdecisions","Architectural Decision Records","The architectural decision records for the Owlat project, each capturing the context, the decision, and the trade-offs involved.",{"path":344,"title":345,"description":346},"\u002Fdeveloper\u002Fdecisions\u002F009-model-routing","ADR-009: Task-Based Model Routing","Why Owlat supports per-task LLM model selection instead of using a single model for all pipeline steps.",{"path":348,"title":349,"description":350},"\u002Fdeveloper\u002Fdecisions\u002F010-listing-engine","ADR-010: Listing Engine","Why Owlat replaced four incompatible list-query contracts with one generic listing engine driven by per-entity descriptors.",{"path":352,"title":353,"description":354},"\u002Fdeveloper\u002Fdecisions\u002F001-custom-email-renderer","ADR-001: Custom Email Renderer Over MJML","Why Owlat built a custom table-based HTML email renderer instead of using MJML, gaining full control over VML, dark mode, and per-client rendering.",{"path":356,"title":357,"description":358},"\u002Fdeveloper\u002Fdecisions\u002F002-convex-backend","ADR-002: Convex as Backend","Why Owlat chose Convex over PostgreSQL and Firebase for real-time reactivity, co-located TypeScript logic, and zero-config scaling.",{"path":360,"title":361,"description":362},"\u002Fdeveloper\u002Fdecisions\u002F003-notion-like-builder","ADR-003: Notion-like Email Builder","Why Owlat replaced the traditional 3-panel email editor with a Notion-like single-column canvas for inline WYSIWYG editing.",{"path":364,"title":365,"description":366},"\u002Fdeveloper\u002Fdecisions\u002F004-monorepo-bun-workspaces","ADR-004: Monorepo with Bun Workspaces","Why Owlat uses a monorepo with Bun workspaces and Turborepo for fast installs, atomic cross-package changes, and cached CI.",{"path":368,"title":369,"description":370},"\u002Fdeveloper\u002Fdecisions\u002F005-custom-mta","ADR-005: Custom MTA","Why Owlat built a custom Mail Transfer Agent instead of relying solely on third-party email providers.",{"path":372,"title":373,"description":374},"\u002Fdeveloper\u002Fdecisions\u002F006-self-hosted-convex","ADR-006: Self-Hosted Convex","Why Owlat uses the open-source Convex backend for self-hosting instead of migrating to a different database.",{"path":376,"title":377,"description":378},"\u002Fdeveloper\u002Fdecisions\u002F007-pluggable-llm","ADR-007: Pluggable LLM Provider","Why Owlat uses the Vercel AI SDK with a provider abstraction layer instead of hardcoding a single LLM vendor.",{"path":380,"title":381,"description":382},"\u002Fdeveloper\u002Fdecisions\u002F008-process-architecture","ADR-008: Agent Process Architecture","Why Owlat processes inbound messages with a self-scheduling step walker plus a lifecycle coordinator instead of one sequential function.",{"path":384,"title":385,"description":386},"\u002Fexamples","Examples","Copy-pasteable integration patterns for common Owlat use cases.",{"path":388,"title":389,"description":390},"\u002Fexamples\u002Fwelcome-email","Welcome Email","Send a personalized welcome email when a new user signs up.",{"path":392,"title":393,"description":394},"\u002Fexamples\u002Fbilling-email","Billing Email","Send a billing receipt with an invoice PDF attached after a successful payment.",{"path":396,"title":397,"description":398},"\u002Fexamples\u002Fevent-automation","Event Automation","Trigger automations with custom events for trial lifecycle, feature adoption, and more.",{"path":400,"title":401,"description":402},"\u002Fexamples\u002Fcontact-sync","Contact Sync","Sync contacts from your database to Owlat using upsert patterns and bulk operations.",{"path":404,"title":405,"description":406},"\u002Fexamples\u002Fwebhook-handler","Webhook Handler","Handle Owlat delivery webhooks with signature verification and event routing.",{"path":408,"title":409,"description":410},"\u002Fexamples\u002Fmultilingual-email","Multilingual Email","Send emails in the recipient's preferred language using template translations.",{"path":412,"title":413,"description":414},"\u002Fvision","Vision","Where Owlat is heading — from email platform to unified communication intelligence powered by AI agents.",{"path":416,"title":417,"description":418},"\u002Fvision\u002Fself-hosting","Self-Hosting Architecture","How Owlat runs as a fully self-hosted stack using Docker Compose — open-source Convex backend, custom MTA, and a pluggable LLM provider.",{"path":420,"title":421,"description":422},"\u002Fvision\u002Fagent-pipeline","Agent Pipeline","Technical architecture for the inbound email agent pipeline — step modules, the walker, security scanning, threading, and human review.",{"path":424,"title":106,"description":425},"\u002Fvision\u002Fknowledge-graph","Technical architecture for Owlat's typed knowledge storage — how organizational knowledge is stored, searched, decayed, and maintained.",{"path":427,"title":428,"description":429},"\u002Fvision\u002Fmulti-channel","Multi-Channel & CRM","Technical architecture for channel adapters, unified messaging, contact identity unification, and the CRM hub.",{"path":431,"title":432,"description":433},"\u002Fvision\u002Ffile-system","Semantic File System","Technical architecture for Owlat's semantic file storage — version tracking with provenance today, plus the planned embedding-based retrieval and auto-tagging layer.",{"path":435,"title":436,"description":437},"\u002Fvision\u002Fdesktop-app","Desktop App & Advanced Agents","Architecture of the Owlat desktop shell, visualization agent, adaptive dashboard, agent health, graduated autonomy, and coding agents.",{"path":439,"title":440,"description":441},"\u002Fvision\u002Froadmap","Roadmap","What's planned next for Owlat — the documented-but-unbuilt pieces still being wired, and the enhancements on our radar.",{"id":443,"title":86,"body":444,"description":87,"extension":1613,"meta":1614,"navigation":1615,"path":85,"seo":1616,"stem":1617,"__hash__":1618},"content\u002F1.guide\u002F27.postbox.md",{"type":445,"value":446,"toc":1580},"minimark",[447,451,454,484,503,508,572,576,579,605,619,622,639,645,648,655,673,739,749,753,764,771,785,788,792,810,814,817,835,839,854,858,879,883,906,910,917,921,937,940,946,950,956,970,974,996,1003,1007,1014,1018,1024,1073,1076,1086,1090,1093,1339,1345,1349,1352,1356,1476,1479,1489,1493,1518,1522,1533,1539,1548,1558,1574],[448,449,450],"p",{},"Postbox gives every team member a personal mailbox on your Owlat domain — with a webmail interface and full IMAP\u002FSMTP so they can use any native client (Apple Mail, Thunderbird, mobile mail apps).",[448,452,453],{},"It's separate from marketing campaigns and the shared team inbox. Postbox is for everyday person-to-person email; campaigns are for bulk sends; the team inbox is for shared triage.",[455,456,459],"callout",{"title":457,"type":458},"Feature flag","info",[448,460,461,462,466,467,470,471,475,476,479,480,483],{},"Postbox is ",[463,464,465],"strong",{},"off by default",". Enable it from ",[463,468,469],{},"Settings → Features"," or run ",[472,473,474],"code",{},"owlat-setup feature postbox on",". Activating the flag also activates the ",[472,477,478],{},"personal-mail"," Docker Compose profile, which starts the IMAP server (",[472,481,482],{},"apps\u002Fimap",").",[448,485,486,487,490,491,494,495,498,499,502],{},"There are two ways to run personal mail on Owlat. A ",[463,488,489],{},"hosted mailbox"," (the ",[472,492,493],{},"postbox"," flag) is an Owlat-hosted address on a domain you've verified — Owlat is the mail server. Alternatively you can ",[463,496,497],{},"connect an external mailbox"," (the separate ",[472,500,501],{},"mail.external"," flag) and keep using your existing Gmail, Fastmail, or company account, with Owlat syncing it over IMAP\u002FSMTP. They're independent flags; you can run either, both, or neither.",[504,505,507],"h2",{"id":506},"what-you-get","What you get",[509,510,511,515,521,524,527,530,533,536,539,542,545,548,551,554,557,560,563],"ul",{},[512,513,514],"li",{},"Per-user mailboxes with folders (Inbox, Sent, Drafts, Trash, Spam, Archive) plus custom labels",[512,516,517,518],{},"A webmail UI under ",[472,519,520],{},"\u002Fdashboard\u002Fpostbox",[512,522,523],{},"Native IMAP4rev1 server (port 993, TLS) and SMTP submission for outgoing mail",[512,525,526],{},"App passwords for connecting native clients without exposing your account password",[512,528,529],{},"Address aliases — receive mail at multiple addresses into one mailbox",[512,531,532],{},"Per-mailbox filter rules (Sieve-like): match on from\u002Fto\u002Fsubject\u002Fbody, then move, label, mark read, star, forward, trash, or discard",[512,534,535],{},"Forwarding rules",[512,537,538],{},"Per-identity signatures",[512,540,541],{},"Vacation auto-responder with date ranges",[512,543,544],{},"Snooze: hide a thread until a date you pick",[512,546,547],{},"Scheduled send and an undo-send window",[512,549,550],{},"A personal address book that autocompletes recipients",[512,552,553],{},"Two composer modes (simple rich text, or the full block-based builder)",[512,555,556],{},"Search with Gmail-style operators",[512,558,559],{},"Threading across replies \u002F forwards",[512,561,562],{},"Remote-image blocking and one-click quoted-text collapse when reading",[512,564,565,568,569,571],{},[463,566,567],{},"Connect an external mailbox"," (separate ",[472,570,501],{}," flag): use your own Gmail \u002F Fastmail \u002F company account over IMAP+SMTP, no sending domain required",[504,573,575],{"id":574},"setting-up-your-mailbox","Setting up your mailbox",[448,577,578],{},"Mailboxes aren't created automatically on first visit — they're provisioned explicitly. There are two paths:",[509,580,581,587],{},[512,582,583,586],{},[463,584,585],{},"Admin pre-reservation at invite time"," — an admin can pick the address for a new member when they're invited, so the mailbox is waiting for them the moment they accept.",[512,588,589,592,593,596,597,600,601,604],{},[463,590,591],{},"Self-service from Postbox settings"," — open ",[463,594,595],{},"Postbox → Settings → Add account",", pick a localpart, and choose a verified domain from the dropdown (",[472,598,599],{},"marcel"," + ",[472,602,603],{},"@yourdomain","). The address is created on submit.",[455,606,608],{"title":607,"type":458},"Creating a hosted mailbox is admin-gated",[448,609,610,611,614,615,618],{},"Provisioning a hosted mailbox requires admin permission (",[472,612,613],{},"mailbox.create"," runs under admin context). You also need at least one verified domain — verify one under ",[463,616,617],{},"Settings → Domains"," first.",[448,620,621],{},"Once the mailbox exists:",[623,624,625,632],"ol",{},[512,626,627,628,631],{},"Open ",[463,629,630],{},"Postbox → Settings → Aliases"," and add any extra addresses you want to receive at. These must be on a domain that's already configured in Owlat with valid MX records pointing at your MTA.",[512,633,634,635,638],{},"(Optional) Open ",[463,636,637],{},"Settings → Signatures"," and add a signature for each address you send from.",[448,640,641,642,644],{},"That's it for receiving mail. To send from a hosted mailbox you also need the sending domain configured under ",[463,643,617],{}," (same DKIM\u002FSPF setup as the marketing side).",[504,646,567],{"id":647},"connect-an-external-mailbox",[448,649,650,651,654],{},"If you don't want a hosted address — or you have no domain to verify — you can bring your own. The ",[463,652,653],{},"Connect external mailbox"," capability lets each user link an existing Gmail, Fastmail, iCloud, Outlook.com, or company account over IMAP + SMTP. Owlat keeps it in sync and lets you read, search, and send from it inside the same Postbox UI, without registering a sending domain.",[448,656,657,658,664,665,668,669,672],{},"This is a ",[463,659,660,661,663],{},"separate feature flag (",[472,662,501],{},")"," from hosted Postbox. Enabling it activates the ",[472,666,667],{},"external-mail"," Docker Compose profile, which starts the mail-sync worker (",[472,670,671],{},"apps\u002Fmail-sync",") that talks IMAP\u002FSMTP to your provider.",[674,675,676,681,691,695,713,717,724,728],"steps",{},[677,678,680],"h3",{"id":679},"open-the-connect-flow","Open the connect flow",[448,682,683,684,687,688,483],{},"Go to ",[463,685,686],{},"Postbox → Settings → External mailbox"," (or ",[463,689,690],{},"Add account → Connect external mailbox",[677,692,694],{"id":693},"pick-a-preset-or-enter-your-server-details","Pick a preset or enter your server details",[448,696,697,698,701,702,701,705,708,709,712],{},"Quick-setup buttons pre-fill IMAP\u002FSMTP host and port for ",[463,699,700],{},"Gmail",", ",[463,703,704],{},"Fastmail",[463,706,707],{},"iCloud",", and ",[463,710,711],{},"Outlook.com",". Otherwise enter your IMAP host\u002Fport and SMTP host\u002Fport manually, with the SSL toggle per server.",[677,714,716],{"id":715},"enter-your-credentials","Enter your credentials",[448,718,719,720,723],{},"Provide the email address, username (defaults to the email address), and password. For Gmail \u002F Outlook you'll need an ",[463,721,722],{},"app password"," with 2-factor enabled. Credentials are stored encrypted at rest — read queries never return them.",[677,725,727],{"id":726},"test-then-connect","Test, then connect",[448,729,730,731,734,735,738],{},"Hit ",[463,732,733],{},"Test connection"," to verify IMAP and SMTP independently, then ",[463,736,737],{},"Connect mailbox",". The mail-sync worker connects and begins syncing; the connection shows a live status (Connecting, Connected, Authentication failed, or Connection error).",[455,740,742],{"title":741,"type":458},"External vs. hosted",[448,743,744,745,748],{},"An external mailbox is ",[463,746,747],{},"not"," authoritative on your local MTA — inbound mail is still delivered by your provider and synced in, not by Owlat's MX. Outbound mail goes through your provider's own SMTP. You can update credentials or disconnect at any time from the same page; disconnecting stops sync but retains already-synced messages.",[504,750,752],{"id":751},"composing-mail","Composing mail",[448,754,755,756,759,760,763],{},"From any folder click ",[463,757,758],{},"Compose",". The composer supports rich text, attachments, reply\u002Fforward, drafts (auto-saved), and switching identities if you have multiple sending addresses on the mailbox. Recipient fields autocomplete from your ",[463,761,762],{},"personal address book",", which builds itself automatically from the people you send to (separate from the org-shared CRM contacts).",[448,765,766,767,770],{},"There are ",[463,768,769],{},"two composer modes",":",[509,772,773,779],{},[512,774,775,778],{},[463,776,777],{},"Simple"," — a fast in-house rich-text editor for everyday person-to-person mail.",[512,780,781,784],{},[463,782,783],{},"Full"," — the block-based Owlat email builder, for when you want a designed, branded message.",[448,786,787],{},"Either way the body is rendered through the same email pipeline (boilerplate, CSS inlining, dark-mode handling) before it ships.",[677,789,791],{"id":790},"scheduled-send-and-undo-send","Scheduled send and undo-send",[509,793,794,804],{},[512,795,796,799,800,803],{},[463,797,798],{},"Undo send",": after you hit Send, the message sits in a short pending window (30 seconds by default) before it actually dispatches. Click ",[463,801,802],{},"Undo"," within the window and the draft returns to the composer untouched.",[512,805,806,809],{},[463,807,808],{},"Scheduled send",": pick a future date and time and the draft is held until then, dispatched by a safety-net cron so it goes out even if nothing else is running.",[504,811,813],{"id":812},"reading-mail","Reading mail",[448,815,816],{},"Message bodies render in a sandboxed frame for safety. Two reading aids:",[509,818,819,829],{},[512,820,821,824,825,828],{},[463,822,823],{},"Remote images are blocked by default"," — external images don't load (and can't phone home) until you click ",[463,826,827],{},"Show images"," on the message. Inline and data-URI images always render.",[512,830,831,834],{},[463,832,833],{},"Quoted text is collapsed"," — the original thread that a reply quotes is hidden behind a toggle, so you see the new message first and can expand the history when you want it.",[677,836,838],{"id":837},"conversation-view","Conversation view",[448,840,841,842,845,846,849,850,853],{},"The inbox can group messages ",[463,843,844],{},"by conversation"," (one row per thread, with a\nmessage count and unread badge) instead of one row per message. Toggle it with\nthe conversation\u002Flist button in the inbox header. It's opt-in and inbox-only —\nthe per-message list (with its hover and ",[472,847,848],{},"j","\u002F",[472,851,852],{},"k"," keyboard triage) stays the\ndefault and serves every other folder.",[677,855,857],{"id":856},"ai-summarize-suggest-replies","AI: summarize & suggest replies",[448,859,860,861,866,867,870,871,874,875,878],{},"When the ",[463,862,863],{},[472,864,865],{},"ai"," feature flag is on (it needs an LLM provider configured — see\n",[868,869,70],"a",{"href":69},"), each open thread shows a ",[463,872,873],{},"Summarize","\nbutton (2–4 bullet points) and ",[463,876,877],{},"Suggest replies"," (a few ready-to-send\noptions; pick one to open a pre-filled reply). The output is advisory — it is\nnever sent automatically, and the thread is treated as untrusted input.",[677,880,882],{"id":881},"calendar-invites","Calendar invites",[448,884,885,886,889,890,893,894,897,898,901,902,905],{},"A message carrying a calendar invite (a ",[472,887,888],{},"text\u002Fcalendar"," part, including the\ninline form Google Calendar and Outlook send) renders an ",[463,891,892],{},"invite card"," with\nthe summary, time, location, and organizer. ",[463,895,896],{},"Accept \u002F Maybe \u002F Decline"," sends\nan RSVP back to the organizer with a standard ",[472,899,900],{},"METHOD:REPLY"," ",[472,903,904],{},".ics"," attached.",[677,907,909],{"id":908},"block-a-sender","Block a sender",[448,911,912,913,916],{},"Inside an open thread, ",[463,914,915],{},"Block sender"," is a one-click action: it creates a high-priority filter that routes all future mail from that address to Spam (or moves it to Trash if the mailbox has no Spam folder) and moves the current message to Spam.",[677,918,920],{"id":919},"encrypted-signed-mail-pgp-s-mime","Encrypted & signed mail (PGP \u002F S-MIME)",[448,922,923,924,927,928,932,933,936],{},"Postbox ",[463,925,926],{},"detects"," PGP and S\u002FMIME messages and labels them honestly —\n",[929,930,931],"em",{},"Encrypted (PGP)"," or ",[929,934,935],{},"Signed (PGP) · not verified",". Owlat does not yet verify\nsignatures or decrypt bodies, so it never shows a misleading \"verified\" check;\nencrypted bodies are flagged rather than rendered as gibberish, and inline\nclear-signed messages show their readable text.",[504,938,178],{"id":939},"contacts",[448,941,942,945],{},[463,943,944],{},"Postbox → Contacts"," is your personal address book. Addresses you send to are\nremembered automatically and power recipient autocomplete; the Contacts page\nlets you search, add, edit, and remove entries, or start a new message to one.",[504,947,949],{"id":948},"filters","Filters",[448,951,952,955],{},[463,953,954],{},"Settings → Filters"," lets you create rules that apply to incoming mail. Each rule has a list of match conditions (from \u002F to \u002F cc \u002F subject \u002F body, a custom header by name, message size with greater-than \u002F less-than, and has attachment) and a list of actions: move to folder, add label, mark read, star, forward to…, move to trash, and discard (silent drop). Rules run in order; you can reorder them.",[455,957,960],{"title":958,"type":959},"Discard vs. move to trash","tip",[448,961,962,965,966,969],{},[463,963,964],{},"Move to trash"," files the message in your Trash folder. ",[463,967,968],{},"Discard"," drops it silently — the message is not stored at all. Use discard for noise you never want to see.",[504,971,973],{"id":972},"aliases-forwarding","Aliases & forwarding",[509,975,976,990],{},[512,977,978,981,982,985,986,989],{},[463,979,980],{},"Aliases",": addresses that route into your mailbox. ",[472,983,984],{},"support@yourdomain"," and ",[472,987,988],{},"hello@yourdomain"," can both land in the same inbox without an actual second account.",[512,991,992,995],{},[463,993,994],{},"Forwarding",": addresses where copies should go out to. Useful for forwarding to an external address while keeping a copy locally.",[448,997,998,999,1002],{},"Both are configured under ",[463,1000,1001],{},"Postbox → Settings",".",[504,1004,1006],{"id":1005},"vacation-responder","Vacation responder",[448,1008,1009,1010,1013],{},"Under ",[463,1011,1012],{},"Settings → Vacation"," set a subject, message body, and date range. Owlat replies once per sender for the duration of the window.",[504,1015,1017],{"id":1016},"native-clients-imap-smtp","Native clients (IMAP \u002F SMTP)",[448,1019,1020,1021,1023],{},"Postbox runs a real IMAP4rev1 server (in ",[472,1022,482],{},") and accepts SMTP submission through the MTA. To connect a native client:",[623,1025,1026,1032],{},[512,1027,683,1028,1031],{},[463,1029,1030],{},"Postbox → Settings → App passwords"," and generate one. The password is shown once; copy it now.",[512,1033,1034,1035],{},"In your mail client, add an account with:",[509,1036,1037,1062],{},[512,1038,1039,1042,1043,1046,1047,1050,1051,1054,1055,1058,1059],{},[463,1040,1041],{},"IMAP",": server ",[472,1044,1045],{},"mail.\u003Cyour-domain>",", port ",[472,1048,1049],{},"993",", encryption ",[472,1052,1053],{},"SSL\u002FTLS",", username ",[472,1056,1057],{},"\u003Cyour-mailbox-address>",", password ",[472,1060,1061],{},"\u003Capp-password>",[512,1063,1064,1042,1067,1046,1069,1072],{},[463,1065,1066],{},"SMTP",[472,1068,1045],{},[472,1070,1071],{},"587"," (STARTTLS), same username and app password",[448,1074,1075],{},"You can issue multiple app passwords — one per device — and revoke any of them individually.",[455,1077,1080],{"title":1078,"type":1079},"App-password scope","warning",[448,1081,1082,1083,1085],{},"An app password authenticates a single mailbox. It does ",[463,1084,747],{}," grant access to the Owlat dashboard, API, or other mailboxes. Revoking it kicks the corresponding IMAP\u002FSMTP session within seconds.",[504,1087,1089],{"id":1088},"search","Search",[448,1091,1092],{},"Postbox search supports a subset of Gmail's operators. Combine them in a single query.",[1094,1095,1096,1112],"table",{},[1097,1098,1099],"thead",{},[1100,1101,1102,1106,1109],"tr",{},[1103,1104,1105],"th",{},"Operator",[1103,1107,1108],{},"Example",[1103,1110,1111],{},"Matches",[1113,1114,1115,1131,1146,1161,1175,1189,1203,1217,1231,1252,1267,1282,1297,1320],"tbody",{},[1100,1116,1117,1123,1128],{},[1118,1119,1120],"td",{},[472,1121,1122],{},"from:",[1118,1124,1125],{},[472,1126,1127],{},"from:alice@acme.com",[1118,1129,1130],{},"Messages from this address",[1100,1132,1133,1138,1143],{},[1118,1134,1135],{},[472,1136,1137],{},"to:",[1118,1139,1140],{},[472,1141,1142],{},"to:billing@yourdomain",[1118,1144,1145],{},"Messages sent to this address",[1100,1147,1148,1153,1158],{},[1118,1149,1150],{},[472,1151,1152],{},"subject:",[1118,1154,1155],{},[472,1156,1157],{},"subject:invoice",[1118,1159,1160],{},"Subject contains this text",[1100,1162,1163,1168,1172],{},[1118,1164,1165],{},[472,1166,1167],{},"has:attachment",[1118,1169,1170],{},[472,1171,1167],{},[1118,1173,1174],{},"Has at least one attachment",[1100,1176,1177,1182,1186],{},[1118,1178,1179],{},[472,1180,1181],{},"has:no-attachment",[1118,1183,1184],{},[472,1185,1181],{},[1118,1187,1188],{},"No attachments (single hyphenated token)",[1100,1190,1191,1196,1200],{},[1118,1192,1193],{},[472,1194,1195],{},"is:unread",[1118,1197,1198],{},[472,1199,1195],{},[1118,1201,1202],{},"Not yet marked as read",[1100,1204,1205,1210,1214],{},[1118,1206,1207],{},[472,1208,1209],{},"is:read",[1118,1211,1212],{},[472,1213,1209],{},[1118,1215,1216],{},"Marked as read",[1100,1218,1219,1224,1228],{},[1118,1220,1221],{},[472,1222,1223],{},"is:starred",[1118,1225,1226],{},[472,1227,1223],{},[1118,1229,1230],{},"Flagged \u002F starred",[1100,1232,1233,1238,1249],{},[1118,1234,1235],{},[472,1236,1237],{},"in:",[1118,1239,1240,701,1243,701,1246],{},[472,1241,1242],{},"in:trash",[472,1244,1245],{},"in:sent",[472,1247,1248],{},"in:spam",[1118,1250,1251],{},"In a specific system folder",[1100,1253,1254,1259,1264],{},[1118,1255,1256],{},[472,1257,1258],{},"label:",[1118,1260,1261],{},[472,1262,1263],{},"label:newsletters",[1118,1265,1266],{},"Has a specific custom label",[1100,1268,1269,1274,1279],{},[1118,1270,1271],{},[472,1272,1273],{},"before:",[1118,1275,1276],{},[472,1277,1278],{},"before:2026-04-01",[1118,1280,1281],{},"Received before a date (YYYY-MM-DD)",[1100,1283,1284,1289,1294],{},[1118,1285,1286],{},[472,1287,1288],{},"after:",[1118,1290,1291],{},[472,1292,1293],{},"after:2026-01-01",[1118,1295,1296],{},"Received after a date",[1100,1298,1299,1304,1309],{},[1118,1300,1301],{},[472,1302,1303],{},"older_than:",[1118,1305,1306],{},[472,1307,1308],{},"older_than:7d",[1118,1310,1311,1312,1315,1316,1319],{},"Older than N days (also ",[472,1313,1314],{},"h"," hours, ",[472,1317,1318],{},"m"," minutes)",[1100,1321,1322,1327,1332],{},[1118,1323,1324],{},[472,1325,1326],{},"newer_than:",[1118,1328,1329],{},[472,1330,1331],{},"newer_than:30d",[1118,1333,1334,1335,701,1337,663],{},"Newer than N days (also ",[472,1336,1314],{},[472,1338,1318],{},[448,1340,1341,1342,1002],{},"Plain words match against subject, body, sender, and recipient. Quote phrases for an exact match: ",[472,1343,1344],{},"\"quarterly review\"",[504,1346,1348],{"id":1347},"snooze","Snooze",[448,1350,1351],{},"Open any thread and click the snooze icon. Pick a date and it disappears from the inbox until then — at which point it reappears at the top, untouched.",[504,1353,1355],{"id":1354},"how-postbox-relates-to-other-owlat-features","How Postbox relates to other Owlat features",[1094,1357,1358,1372],{},[1097,1359,1360],{},[1100,1361,1362,1364,1367,1369],{},[1103,1363],{},[1103,1365,1366],{},"Postbox",[1103,1368,94],{},[1103,1370,1371],{},"Marketing",[1113,1373,1374,1402,1418,1432,1448,1463],{},[1100,1375,1376,1381,1385,1390],{},[1118,1377,1378],{},[463,1379,1380],{},"Flag",[1118,1382,1383],{},[472,1384,493],{},[1118,1386,1387],{},[472,1388,1389],{},"inbox",[1118,1391,1392,1395,1396,1395,1399],{},[472,1393,1394],{},"campaigns"," \u002F ",[472,1397,1398],{},"automations",[472,1400,1401],{},"transactional",[1100,1403,1404,1409,1412,1415],{},[1118,1405,1406],{},[463,1407,1408],{},"Per-user mailbox",[1118,1410,1411],{},"Yes",[1118,1413,1414],{},"No (shared)",[1118,1416,1417],{},"n\u002Fa",[1100,1419,1420,1425,1427,1430],{},[1118,1421,1422],{},[463,1423,1424],{},"IMAP\u002FSMTP",[1118,1426,1411],{},[1118,1428,1429],{},"No",[1118,1431,1429],{},[1100,1433,1434,1439,1442,1445],{},[1118,1435,1436],{},[463,1437,1438],{},"Outbound",[1118,1440,1441],{},"One-to-one mail",[1118,1443,1444],{},"Replies",[1118,1446,1447],{},"Bulk + triggered",[1100,1449,1450,1455,1458,1461],{},[1118,1451,1452],{},[463,1453,1454],{},"Receives MX mail",[1118,1456,1457],{},"Yes (own aliases)",[1118,1459,1460],{},"Yes (shared addresses)",[1118,1462,1429],{},[1100,1464,1465,1470,1472,1474],{},[1118,1466,1467],{},[463,1468,1469],{},"Threading",[1118,1471,1411],{},[1118,1473,1411],{},[1118,1475,1417],{},[448,1477,1478],{},"You can run any combination — Postbox alone, marketing alone, both together. There's no requirement to enable one before the other.",[448,1480,1481,1482,1485,1486,1488],{},"A ",[463,1483,1484],{},"connected external mailbox"," (",[472,1487,501],{},") is a third option that fits alongside the hosted Postbox column: it surfaces in the same webmail UI, but inbound mail is delivered and outbound mail is sent by your own provider, so it needs neither MX records nor a verified sending domain on Owlat.",[504,1490,1492],{"id":1491},"limits-privacy","Limits & privacy",[509,1494,1495,1498,1504,1511],{},[512,1496,1497],{},"Mailboxes live in the same Convex deployment as the rest of your data. They aren't shared with other tenants.",[512,1499,1500,1501,483],{},"The MTA caps per-message submission size and connection-pool usage, and rate-limits the IMAP authentication endpoint (failed logins are tarpitted) (see ",[868,1502,1503],{"href":301},"Self-hosting → Production",[512,1505,1506,1507,1510],{},"Inbound spam filtering uses the same content scanner that protects campaigns (",[472,1508,1509],{},"scan.content"," flag).",[512,1512,1513,1514,1517],{},"File attachments are scanned by ClamAV when ",[472,1515,1516],{},"scan.files"," is on.",[504,1519,1521],{"id":1520},"troubleshooting","Troubleshooting",[448,1523,1524,1527,1528,932,1530,1532],{},[463,1525,1526],{},"I don't see \"Postbox\" in the sidebar."," The flag isn't on yet. Toggle it from ",[463,1529,469],{},[472,1531,474],{},", then restart the stack.",[448,1534,1535,1538],{},[463,1536,1537],{},"IMAP says \"auth failed\"."," Confirm you're using an app password, not your dashboard password. App passwords are bound to a single mailbox address — use that address as the username.",[448,1540,1541,1544,1545,1547],{},[463,1542,1543],{},"Outbound mail bounces."," The sending domain isn't verified yet. Open ",[463,1546,617],{},", add the domain, and apply the DNS records shown.",[448,1549,1550,1553,1554,1557],{},[463,1551,1552],{},"A native client can't reach the IMAP server."," Check that port 993 is published on the host and that ",[472,1555,1556],{},"IMAP_GREETING_HOST"," resolves to the same hostname your TLS cert is issued for.",[448,1559,1560,1563,1564,1567,1568,1570,1571,1573],{},[463,1561,1562],{},"My external mailbox shows \"Authentication failed\"."," Re-enter the password on ",[463,1565,1566],{},"Settings → External mailbox → Update credentials",". Gmail and Outlook need an app password with 2-factor enabled — your normal account password won't work. The ",[472,1569,501],{}," flag (and its ",[472,1572,667],{}," Docker profile \u002F mail-sync worker) must also be running.",[448,1575,1576,1577,1002],{},"For deeper architecture details (schema, IMAP command flow, MTA integration) see ",[868,1578,1579],{"href":253},"Postbox architecture",{"title":1581,"searchDepth":1582,"depth":1582,"links":1583},"",2,[1584,1585,1586,1593,1596,1603,1604,1605,1606,1607,1608,1609,1610,1611,1612],{"id":506,"depth":1582,"text":507},{"id":574,"depth":1582,"text":575},{"id":647,"depth":1582,"text":567,"children":1587},[1588,1590,1591,1592],{"id":679,"depth":1589,"text":680},3,{"id":693,"depth":1589,"text":694},{"id":715,"depth":1589,"text":716},{"id":726,"depth":1589,"text":727},{"id":751,"depth":1582,"text":752,"children":1594},[1595],{"id":790,"depth":1589,"text":791},{"id":812,"depth":1582,"text":813,"children":1597},[1598,1599,1600,1601,1602],{"id":837,"depth":1589,"text":838},{"id":856,"depth":1589,"text":857},{"id":881,"depth":1589,"text":882},{"id":908,"depth":1589,"text":909},{"id":919,"depth":1589,"text":920},{"id":939,"depth":1582,"text":178},{"id":948,"depth":1582,"text":949},{"id":972,"depth":1582,"text":973},{"id":1005,"depth":1582,"text":1006},{"id":1016,"depth":1582,"text":1017},{"id":1088,"depth":1582,"text":1089},{"id":1347,"depth":1582,"text":1348},{"id":1354,"depth":1582,"text":1355},{"id":1491,"depth":1582,"text":1492},{"id":1520,"depth":1582,"text":1521},"md",{},true,{"title":86,"description":87},"1.guide\u002F27.postbox","RM_JTUBoKDgKt2XU6tEPYWvFUeC8OupP8W6op4n-c_c",[1620,1622],{"title":82,"path":81,"stem":1621,"children":-1},"1.guide\u002F26.share-links",{"title":90,"path":89,"stem":1623,"children":-1},"1.guide\u002F28.migrate-from-google",1782846430516]