Fresh repository history for elektrine/elektrine-haraka hosted at https://git.elektrine.com/elektrine/elektrine-haraka.
114 lines
3.3 KiB
INI
114 lines
3.3 KiB
INI
; Haraka plugin configuration
|
|
;
|
|
; This file provides default configuration for all Elektrine plugins.
|
|
; Environment variables take precedence over these settings.
|
|
;
|
|
; Environment Variables:
|
|
; HARAKA_ROLE - Runtime role (inbound-mx/submission/outbound-relay)
|
|
; PHOENIX_WEBHOOK_URL - Webhook URL for inbound emails
|
|
; PHOENIX_VERIFY_URL - Recipient verification URL
|
|
; PHOENIX_DOMAINS_URL - Domains endpoint URL
|
|
; PHOENIX_API_KEY - API key for Haraka -> Phoenix calls
|
|
; HARAKA_HTTP_API_KEY - API key required by Haraka /api/v1/send
|
|
; HARAKA_API_KEY - Optional shared key
|
|
; HARAKA_HTTP_PORT - HTTP API port (default: 8080)
|
|
; HARAKA_HTTP_HOST - HTTP API host (default: 0.0.0.0)
|
|
; HARAKA_CORS_ORIGIN - Allowed CORS origin for browser calls
|
|
; HARAKA_DKIM_DIR - Persistent directory for DKIM key storage
|
|
; LOCAL_DOMAINS - Comma-separated list of local domains
|
|
; OPS_ALLOWED_CIDRS - CIDRs allowed to call /status and /healthz
|
|
; METRICS_ALLOWED_CIDRS - CIDRs allowed to call /metrics
|
|
; HARAKA_TRUSTED_PROXY_CIDRS - CIDRs trusted for forwarded client IP headers
|
|
; REDIS_URL - Redis URL for async queue
|
|
; ELEKTRINE_QUEUE_NAME - Queue key name
|
|
; ELEKTRINE_DLQ_NAME - Dead letter queue key name
|
|
|
|
[main]
|
|
; Runtime role used by startup profile selection
|
|
role = inbound-mx
|
|
|
|
; Phoenix app webhook URL for inbound emails
|
|
url = https://app.example.com/api/haraka/inbound
|
|
|
|
; Phoenix app recipient verification URL
|
|
verify_url = https://app.example.com/api/haraka/verify-recipient
|
|
|
|
; Phoenix app domains URL
|
|
domains_url = https://app.example.com/api/haraka/domains
|
|
|
|
; Haraka -> Phoenix key
|
|
; phoenix_api_key =
|
|
|
|
; Haraka /api/v1/send key
|
|
; http_api_key =
|
|
|
|
; Optional shared key
|
|
; api_key =
|
|
|
|
; Webhook timeout in milliseconds
|
|
timeout = 30000
|
|
|
|
; Recipient verification timeout in milliseconds
|
|
verify_timeout = 5000
|
|
|
|
; Enable/disable webhook processing
|
|
enabled = true
|
|
|
|
; Include email headers in webhook payload
|
|
include_headers = true
|
|
|
|
; Include email body in webhook payload
|
|
include_body = true
|
|
|
|
; Include attachment content in webhook payload
|
|
include_attachments = true
|
|
|
|
[http_api]
|
|
; HTTP API server port
|
|
port = 8080
|
|
|
|
; HTTP API server host
|
|
host = 0.0.0.0
|
|
|
|
; Persistent DKIM key storage directory used by /api/v1/dkim/domains/*
|
|
; dkim_storage_dir = /data/haraka/dkim
|
|
|
|
; Browser API callers origin allowlist (optional)
|
|
; cors_origin =
|
|
|
|
; Trusted reverse proxy CIDRs used when resolving client IP
|
|
trusted_proxy_cidrs = 127.0.0.1/32, ::1/128, 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, fc00::/7
|
|
|
|
[rate_limit]
|
|
; Rate limit window in milliseconds (default: 60000 = 1 minute)
|
|
window_ms = 60000
|
|
|
|
; Maximum requests per window per IP
|
|
max_requests = 50
|
|
|
|
[ops]
|
|
; Optional CIDRs allowed to access /status and /healthz without an API key
|
|
allowed_cidrs =
|
|
|
|
[metrics]
|
|
; Optional CIDRs allowed to access /metrics without an API key
|
|
allowed_cidrs =
|
|
|
|
[domains]
|
|
; Local domains (space or comma separated)
|
|
; These domains receive inbound mail and are protected from spoofing
|
|
local = example.com
|
|
|
|
; Domain cache refresh interval in ms
|
|
cache_ttl_ms = 300000
|
|
|
|
[queue]
|
|
redis_url = redis://redis:6379
|
|
name = elektrine:inbound
|
|
dlq_name = elektrine:inbound:dlq
|
|
pop_timeout_sec = 5
|
|
max_raw_bytes = 26214400
|
|
|
|
[worker]
|
|
webhook_max_retries = 5
|
|
webhook_retry_base_delay_ms = 1000
|