4.5 KiB
Configuration
Runtime settings live in SQLite (settings table, JSON with a revision number) and are edited in the panel.
Saving in the panel applies them immediately (no restart): the IMAP pool and login cache are cleared and DAV
HTTP clients are rebuilt.
From the command line:
active-push config get # secrets masked as "__SET__"
active-push config get --with-secrets
active-push config validate file.json
active-push config apply file.json # partial JSON - only the given keys change (deep merge)
Startup parameters (listen addresses, data directory, panel TLS) come from /etc/active-push/environment or
flags (active-push --help).
| Variable | Default | Meaning |
|---|---|---|
ACTIVE_PUSH_DATA_DIR |
/var/lib/active-push |
database directory |
ACTIVE_PUSH_EAS_LISTEN |
127.0.0.1:8081 |
ActiveSync + Autodiscover + /healthz |
ACTIVE_PUSH_ADMIN_LISTEN |
127.0.0.1:9091 |
panel |
ACTIVE_PUSH_ALLOW_REMOTE_ADMIN |
false |
allow the panel on a non-loopback address |
ACTIVE_PUSH_ADMIN_TLS_CERT/KEY |
- | panel TLS |
ACTIVE_PUSH_EAS_TLS_CERT/KEY |
- | ActiveSync TLS (without a reverse proxy) |
ACTIVE_PUSH_LOG_JSON |
false |
JSON logs |
RUST_LOG |
active_push=info,warn |
log filter |
ACTIVE_PUSH_PANEL_LOG |
active_push=info,warn |
filter for the panel log viewer |
Z-Push equivalents
| Z-Push | ActivePush (section.key) |
|---|---|
TIMEZONE |
general.default_timezone |
USE_FULLEMAIL_FOR_LOGIN |
general.login_format (as_given / local_part / full_email) + general.default_domain |
IMAP_DEFAULTFROM |
general.email_template ({login}, {local}@{domain}, {local}@example.com) |
IMAP_SERVER, IMAP_PORT, IMAP_OPTIONS |
imap.host, imap.port, imap.security (none/start_tls/tls), imap.verify_tls |
IMAP_FOLDER_*, IMAP_FOLDER_PREFIX |
imap.folder_*, imap.folder_prefix, imap.use_special_use |
IMAP_EXCLUDED_FOLDERS |
imap.excluded_folders (list, prefix* allowed) |
IMAP_AUTOSEEN_ON_DELETE, IMAP_INLINE_FORWARD |
imap.autoseen_on_delete, imap.inline_forward |
IMAP_SMTP_METHOD, IMAP_SMTP_PARAMS |
smtp.method, smtp.host, smtp.port, smtp.security, smtp.auth |
CALDAV_* |
caldav.enabled, caldav.base_url, caldav.path, caldav.include_regex, caldav.exclude_regex |
CARDDAV_*, CARDDAV_GAL_PATH, CARDDAV_GAL_MIN_LENGTH |
carddav.*, carddav.gal_path, carddav.gal_min_length |
SYNC_MAX_ITEMS, SYNC_FILTERTIME_MAX, SYNC_CONFLICT_DEFAULT |
sync.max_items, sync.filter_time_max, sync.server_wins |
SYNC_CONTACTS_MAXPICTURESIZE |
carddav.max_picture_kb |
PING_INTERVAL, PING_*_BOUND_LIFETIME |
ping.check_interval_secs, ping.lifetime_min/max |
RETRY_AFTER_DELAY, SEARCH_WAIT, SEARCH_MAXRESULTS |
sync.retry_after_secs, sync.search_wait_secs, sync.search_max_results |
PROVISIONING, LOOSE_PROVISIONING, policies.ini |
provisioning.enabled, provisioning.loose, provisioning.policies[], provisioning.user_policies[] |
LOGAUTHFAIL, LOGUSERLEVEL |
security.log_auth_failures, logging.debug_users |
ZPUSH_HOST (autodiscover) |
autodiscover.server_url |
STATE_MACHINE, IPC_PROVIDER |
not needed - states in SQLite, IPC in process |
DAV paths accept %u (login), %l (local part) and %d (domain).
Settings without a Z-Push counterpart
security.auth_fail_max / auth_fail_window_secs / lockout_secs- password guessing protection.security.trusted_proxies,security.real_ip_header- real client IP behind a proxy.security.eas_allowed_networks,panel.allowed_networks- network allow lists.security.allowed_users,blocked_users,blocked_device_types,require_device_approval.security.auth_cache_secs- successful login cache (HMAC with a random per-process key, never the password).smtp.enforce_from- sender always equals the account address.sync.loop_detection- detects devices replaying an old SyncKey (shrinks the window, reported in the panel).imap.pool_*- pool of authenticated IMAP connections reused between requests.panel.prometheus_token,panel.device_inactive_days,logging.*- see LOGS.md.
Time zones
Devices send the zone as a 172-byte Windows TIME_ZONE_INFORMATION structure. ActivePush maps it to an IANA
zone, preferring general.default_timezone (comparing this year's DST rules). Recurring events are stored in
CalDAV with TZID and a generated VTIMEZONE; single events in UTC (unless the original used TZID, in which
case the format is kept).