Self-hosted email delivery platform for developers and teams
Posta is a self-hosted email delivery platform that enables applications to send emails via HTTP APIs while handling SMTP delivery, templates, storage, security, and analytics.
It is designed as a developer-first, fully self-hostable alternative to services like SendGrid or Mailgun.
Send your first email:
curl -X POST http://localhost:9000/api/v1/emails/send \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"from": "hello@example.com",
"to": ["user@example.com"],
"subject": "Hello from Posta",
"html": "<h1>Hello!</h1>"
}'Response:
{
"id": "email_01J8C8E5W3",
"status": "queued"
}- REST API for transactional, batch, and templated emails
- Attachments, custom headers, and unsubscribe support
- Scheduled sending and preview mode
- Async processing with Redis and Asynq
- Automatic retries and priority queues
- Versioned and multi-language templates
- Variable substitution and stylesheet inlining
- Import/export and preview support
- Multiple SMTP providers with TLS support
- Shared SMTP pools for teams
- Domain verification (SPF, DKIM, DMARC)
- Verified sender enforcement
- API keys with expiration, hashing, and IP allowlisting
- JWT authentication and RBAC
- Two-factor authentication (TOTP)
- Rate limiting and session management
- Contact tracking and segmentation
- Bounce and complaint handling
- Automatic suppression lists
- Multi-tenant architecture with isolated workspaces
- Role-based access control
- Shared resources and scoped API keys
- Event-driven architecture with webhook delivery
- Retry strategies and delivery tracking
- Audit logs and real-time event streaming
- Email delivery metrics and trends
- Prometheus integration
- Health endpoints and daily reports
- User and API key management
- Global metrics and logs
- SMTP pool management
- Platform configuration and retention policies
- Vue-based UI for managing all resources
- Analytics, templates, SMTP, contacts, and logs
- Dark/light mode and user preferences
- Backend: Go (Okapi framework)
- Frontend: Vue 3 + Vite
- Database: PostgreSQL
- Queue: Redis + Asynq
- Metrics: Prometheus
- Go 1.25+
- PostgreSQL
- Redis
docker compose up -dAccess the dashboard:
http://localhost:9000
Default credentials:
Email: admin@example.com
Password: admin1234
git clone https://github.com/goposta/posta.git
cd posta
make dev-deps
make dev
make dev-worker- Swagger UI:
/docs - ReDoc:
/redoc
Posta includes a web dashboard for managing templates, SMTP servers, domains, contacts, API keys, and analytics.
- Go: https://github.com/goposta/posta-go
- PHP: https://github.com/goposta/posta-php
- Java: https://github.com/goposta/posta-java
client := posta.New("https://posta.example.com", "your-api-key")
resp, err := client.SendEmail(&posta.SendEmailRequest{
From: "sender@example.com",
To: []string{"recipient@example.com"},
Subject: "Hello from Posta",
HTML: "<h1>Hello!</h1>",
})Contributions are welcome. Please open an issue before submitting a pull request.
Apache License 2.0
Copyright (c) 2026 Jonas Kaninda and contributors






