Features
This document provides a comprehensive list of all features implemented in genro-mail-proxy, with licensing information for each feature.
Note
Licensing Policy: Until the first stable release (v1.0), all features are released under the Apache License 2.0. After v1.0, some advanced features may require a commercial license.
Current status: All features are Apache 2.0 licensed.
Feature Matrix
Feature |
License |
Description |
|---|---|---|
Apache 2.0 |
Message queuing, listing, deletion, cleanup |
|
BSL 1.1 |
Tenant isolation, per-tenant API tokens, batch suspension |
|
Apache 2.0 |
Multi-source fetching, caching, large file offloading |
|
Apache 2.0 |
Priority queuing, deferred delivery, batch grouping |
|
Apache 2.0 |
Per-account sliding window rate limiting |
|
Apache 2.0 |
Exponential backoff, error classification |
|
Apache 2.0 |
Connection pooling, multiple accounts per tenant |
|
Apache 2.0 |
Delivery reports, client sync callbacks |
|
BSL 1.1 |
IMAP bounce polling, DSN parsing, hard/soft classification |
|
Apache 2.0 |
SQLite and PostgreSQL support |
|
Apache 2.0 |
Prometheus metrics, health endpoints |
|
Apache 2.0 |
Parallel dispatch, concurrent attachment fetching |
|
Apache 2.0 |
Complete REST API with authentication |
|
Apache 2.0 |
Command-line interface for management |
|
Apache 2.0 |
Environment variables, INI config files |
Message Management
License: Apache 2.0
Feature |
Description |
|---|---|
Message Queuing |
Asynchronous message queuing with validation via |
Message Listing |
Retrieve queued messages with filters via |
Message Deletion |
Remove messages from queue via |
Message Cleanup |
Automatic removal of reported messages beyond retention period via
|
Multi-Tenancy
License: BSL 1.1
Feature |
Description |
|---|---|
Tenant Management |
Full tenant isolation with dedicated SMTP accounts.
API: |
Per-Tenant API Tokens |
Dedicated API tokens per tenant with SHA-256 hashing and optional expiration. Tokens provide tenant-scoped access control. |
Batch Suspension |
Suspend/resume message sending at tenant or batch level.
API: |
Tenant Sync Callback |
HTTP callback to tenant for delivery reports.
Configurable URL ( |
Attachments
License: Apache 2.0
Feature |
Description |
|---|---|
Multi-Source Fetching |
Fetch attachments from 4 sources with auto-detection:
|
Two-Tier Caching |
Memory + disk cache with configurable TTL and max size. MD5-based content deduplication. Automatic cleanup of expired entries. |
Large File Offloading |
Upload large attachments to cloud storage (S3, GCS, Azure via fsspec). Configurable per tenant with threshold, storage URL, and action (warn/reject/rewrite). |
MD5 Deduplication |
Deduplicate attachments via MD5 marker in filename
( |
Custom Authentication |
Per-attachment auth override (none, bearer, basic).
Falls back to tenant’s |
Concurrent Fetching |
Parallel attachment fetching with memory pressure limiting.
Configurable via |
Priority & Scheduling
License: Apache 2.0
Feature |
Description |
|---|---|
Priority Queuing |
4-level priority system (0=immediate, 1=high, 2=medium, 3=low). FIFO ordering within same priority level. |
Deferred Delivery |
Schedule future delivery via Unix timestamp ( |
Batch Grouping |
Group messages by campaign identifier ( |
Immediate Dispatch |
Manual wake-up of dispatch loop via |
Rate Limiting
License: Apache 2.0
Feature |
Description |
|---|---|
Sliding Window Limiting |
Per-account rate limiting with minute/hour/day granularity. Based on persistent send log for accuracy. |
Deferral Strategy |
Configurable behavior when limit exceeded: |
Multi-Instance Safe |
Rate limits shared across instances via database-backed send log. Works with SQLite and PostgreSQL locking. |
Retry & Resilience
License: Apache 2.0
Feature |
Description |
|---|---|
Exponential Backoff |
Automatic retry with configurable backoff delays. Default: 5 retries with delays (1m, 5m, 15m, 1h, 2h). |
Error Classification |
SMTP errors classified as temporary (retry) or permanent (fail). Temporary: 421, 450, 452. Permanent: 501, 530, 550+. |
Max Retries |
Configurable maximum retry attempts before permanent failure. Default: 5 retries. |
SMTP Connections
License: Apache 2.0
Feature |
Description |
|---|---|
Connection Pooling |
Reusable SMTP connections with acquire/release semantics. TTL-based connection expiration (default: 300s). |
Multiple Accounts |
Support for multiple SMTP accounts per tenant. Per-account configuration: host, port, TLS, credentials, batch size. |
Default Configuration |
Default SMTP settings for messages without explicit account. Configurable via environment or constructor parameters. |
Delivery & Reporting
License: Apache 2.0
Feature |
Description |
|---|---|
SMTP Delivery |
Actual email delivery via SMTP with error handling. Supports plain text, HTML, CC, BCC, reply-to, custom headers. |
Delivery Reports |
Detailed delivery outcome reports with status, timestamp, error info. Statuses: sent, deferred, error. |
Client Sync Callback |
HTTP POST notification to tenant with delivery reports. Retry on failure with 5-minute fallback loop. |
Custom Report Handler |
Override callable for custom report delivery logic. Use case: webhooks, event buses, custom integrations. |
Bounce Detection
License: BSL 1.1
Feature |
Description |
|---|---|
IMAP Bounce Polling |
Automated polling of IMAP mailbox for bounce messages. Configurable interval, folder, and credentials per instance. |
DSN Parsing (RFC 3464) |
Full parsing of Delivery Status Notification messages. Extracts diagnostic codes, remote MTA info, and original recipient. |
X-Genro-Mail-ID Header |
Custom header injected in outgoing emails for bounce correlation. Links bounce notifications back to original message ID. |
Hard/Soft Classification |
Automatic classification of bounces as permanent (hard) or temporary (soft). Based on SMTP status codes (5xx = hard, 4xx = soft). |
Bounce Fields in API |
Messages include |
Instance Configuration |
Per-instance bounce receiver configuration via API.
Endpoints: |
Database & Persistence
License: Apache 2.0
Feature |
Description |
|---|---|
SQLite Support |
Embedded database for development and single-instance deployments. Zero configuration required. |
PostgreSQL Support |
Production-grade database for high concurrency and clustering.
Connection string via |
Message State Tracking |
Complete state tracking: pending, deferred, sent, error. Timestamps: created_at, sent_ts, error_ts, reported_ts. |
Monitoring & Metrics
License: Apache 2.0
Feature |
Description |
|---|---|
Prometheus Metrics |
Standard Prometheus metrics via |
Health Endpoint |
Service health check via |
Delivery Logging |
Verbose delivery activity logging when enabled.
Configurable via |
Concurrency & Performance
License: Apache 2.0
Feature |
Description |
|---|---|
Parallel Dispatch |
Concurrent message processing with semaphore limiting.
Configurable: |
Attachment Concurrency |
Parallel attachment fetching with memory pressure control. Default: 3 concurrent fetches. |
Batch Processing |
Efficient message batching per account.
Configurable: |
REST API
License: Apache 2.0
Feature |
Description |
|---|---|
FastAPI Backend |
Modern async REST API with automatic OpenAPI documentation. All operations exposed via HTTP endpoints. |
Token Authentication |
API authentication via |
Validation Errors |
Detailed validation error reporting with field-level details. HTTP 422 responses with actionable error messages. |
CLI Tool
License: Apache 2.0
Feature |
Description |
|---|---|
Instance Management |
List, start, stop proxy instances.
Commands: |
Interactive Mode |
Prompted input for complex operations (tenant add, account add). Secure credential entry without command-line exposure. |
Configuration
License: Apache 2.0
Feature |
Description |
|---|---|
Environment Variables |
Configuration via |
INI Config Files |
File-based configuration for cache and advanced settings.
Section: |
Start Active Mode |
Option to start with scheduler immediately active.
Parameter: |