elektrine-haraka/config/elektrine.ini
Maxfield Luke 67c1d41a0c
Some checks are pending
CI and deploy / Test (push) Waiting to run
CI and deploy / Build, push, and deploy (push) Blocked by required conditions
Initial commit on Forgejo
Fresh repository history for elektrine/elektrine-haraka hosted at
https://git.elektrine.com/elektrine/elektrine-haraka.
2026-07-29 04:43:42 -04:00

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