Optional inbound relay (backup-MX / forwarder) on port 25, off by default. Mail is accepted only for domains configured in the panel and forwarded to an upstream; there are still no mailboxes. A dedicated security review of the inbound path is still open on the plan (Fable). Added: - `INBOUND_RELAY_ENABLE` (default `false`): when true, Postfix listens on - Panel **Inbound** pages (global administrator): domains, upstream host/port - Optional `INBOUND_ANTISPAM_MILTER` on the inbound listener only, plus - Inbound rate limit (`INBOUND_RATE_LIMIT_MESSAGES_PER_IP`, default 20) and Changed: - Compose publishes host port 25 even when the flag is off (nothing listens - Full-backup restore Resync also rebuilds inbound maps when the flag is on. Full detail: CHANGELOG.md (1.4.0).
57 lines
2.6 KiB
Bash
57 lines
2.6 KiB
Bash
# Copy to .env next to docker-compose.yml and fill in.
|
|
# Full reference: docs/guide.md "Environment variables".
|
|
|
|
# Required — the container refuses to start without it. Hostname used both for
|
|
# the panel's TLS vhost and for Postfix's SASL realm (SASL_REALM defaults to
|
|
# this) and myhostname; must also match your PTR record. Must match the
|
|
# certificate your reverse proxy obtains. Bare FQDN only — no scheme or port.
|
|
SELFPOST_HOSTNAME=mail.example.com
|
|
|
|
# Set to true to also enable RFC 6409 submission (587/STARTTLS) alongside the
|
|
# primary 465/smtps listener.
|
|
SUBMISSION_ENABLE=false
|
|
|
|
# Optional inbound relay (backup-MX / forwarder). When true, Postfix accepts
|
|
# mail on port 25 only for domains configured in the panel and forwards them
|
|
# to the upstream you set. Off by default — the outbound path is unchanged.
|
|
INBOUND_RELAY_ENABLE=false
|
|
|
|
# Optional milter on the inbound listener only (not 465/587). Empty = off.
|
|
# Example with deploy/antispam/docker-compose.antispam.yml:
|
|
# INBOUND_ANTISPAM_MILTER=inet:antispam:11332
|
|
# INBOUND_ANTISPAM_MILTER_ACTION=accept
|
|
|
|
# Coarse per-client-IP limit and message size on inbound smtpd (port 25).
|
|
# INBOUND_RATE_LIMIT_MESSAGES_PER_IP=20
|
|
# INBOUND_MESSAGE_SIZE_LIMIT=26214400
|
|
|
|
|
|
# Level-1 backstop rate limit (anvil) — see docs/guide.md "Rate limiting".
|
|
RATE_LIMIT_MESSAGES_PER_IP=100
|
|
RATE_LIMIT_WINDOW_SECONDS=3600
|
|
|
|
# Days of send-log history kept before the background sweep deletes rows.
|
|
SEND_LOG_RETENTION_DAYS=90
|
|
|
|
# Sliding idle timeout for the panel login session, in days. No absolute cap:
|
|
# an admin who keeps coming back stays signed in indefinitely. Polling by the
|
|
# monitoring screens does not count as activity, only navigation/actions do.
|
|
PANEL_SESSION_IDLE_DAYS=7
|
|
|
|
# Comma-separated resolvers the panel's deliverability checks (PTR, SPF, DKIM,
|
|
# DMARC) query directly. They deliberately skip this host's own resolver: with
|
|
# systemd-resolved the reverse lookup of the server's IP answers with the local
|
|
# hostname instead of the PTR record published in public DNS, which made the
|
|
# panel report a correct PTR as wrong. Leave unset for the public defaults
|
|
# (1.1.1.1, 8.8.8.8, 9.9.9.9); set it if outbound port 53 is closed or you run
|
|
# your own recursor, e.g. SELFPOST_DNS_RESOLVERS=10.0.0.2:53
|
|
# SELFPOST_DNS_RESOLVERS=
|
|
|
|
# Comma-separated CIDRs (bare IPs allowed) of reverse proxies allowed to
|
|
# supply X-Forwarded-For for login/setup rate-limiting. Leave unset unless
|
|
# you know the exact address of your reverse proxy — trusting the wrong
|
|
# source lets a client spoof its rate-limit key. Behind the default Apache
|
|
# host-network setup this is typically the Docker bridge gateway, e.g.
|
|
# TRUSTED_PROXY_CIDR=172.18.0.1
|
|
|