PolyPress is a premium, self-hosted, multitenant email newsletter management system. Designed to replace commercial newsletter tools, it offers strong data privacy, white-labeling capabilities, OIDC authorization, multi-domain SMTP connection pooling, automated bot/security scanner filtering, and flexible sending profiles (external SMTP relays or an internal direct-sending MTA).
All configuration guides, API endpoints, and features documentation have been moved to the GitHub Wiki:
- Installation & Setup — Detailed system requirements, automated setup, Docker / Portainer deployments, and onboarding.
- Architecture & Security — Workspace multitenancy, OIDC single sign-on mapping rules, database configurations, and auto-backups.
- Outbound Transports & MTA — Direct MTA (Direct Send), global fallback SMTP relays, DKIM generation, and rate limits.
- Bounce & Complaint Handling — Automatic bounce mailbox IMAP scanners and incoming webhook relays.
- Contacts Import & Preference Center — Delimiter-selectable CSV imports, fields schema control, subscription preference centers, and list hygiene.
- Visual Email Designer — Layout components, nested conditional blocks, split testing, and diagnostics.
- Marketing Automations — Visual flow building, filters, delay steps, and IF/ELSE branching pathways.
- Developer REST API & Webhooks — Integrations, transactional direct mail dispatches, and webhook payload verifications.
graph TD
UI[HTML5 + Alpine.js SPA] -->|API & Tracking| API[FastAPI Web Server]
API --> DB[(SQLite Database)]
Worker[Background Queue Worker] --> DB
Worker -->|SMTP / Direct MTA| Internet[Recipients / External SMTP]
IMAPWorker[IMAP Bounce Worker] -->|Poll Bounces| Mailbox[Bounce Mailbox]
Mailbox --> IMAPWorker
IMAPWorker --> DB
- OS: Linux (Ubuntu/Debian recommended).
- Python: Version 3.8 or higher.
- Docker (Optional for container deployments).
./install.shTo run manually:
source venv/bin/activate
cd backend
uvicorn main:app --host 0.0.0.0 --port 8000docker compose up -dOpen http://localhost:8000 in your browser to go through the First-Open setup wizard.
To cleanly stop background services, delete Python virtual environment packages, and optionally purge data folders, run:
./uninstall.sh