mirror of
https://github.com/profullstack/agentbbs.git
synced 2026-08-13 22:37:28 +00:00
Self-host Mailu mail stack at mail.profullstack.com
Members get a real <name>@mail.profullstack.com mailbox, served by a
co-located Mailu (Postfix+Dovecot+Roundcube+rspamd) Docker stack. Coexists
with the host Caddy: Mailu owns the mail ports; Caddy fronts the loopback
webmail and supplies the TLS cert (TLS_FLAVOR=mail), the same cert-copy
pattern as the Ergo/IRC and NNTP services.
- deploy/mailu/: docker-compose.yml, mailu.env.example, refresh-certs.sh
(copy Caddy's mail cert into Mailu on renewal), provision-mailbox.sh
(member mailbox + Dovecot gateway master user), README.
- setup.sh: MAIL flag + mail.${DOMAIN#*.} Caddy site + §9e (cert timer,
mail-port firewall, conditional compose bring-up, AGENTBBS_MAIL_* env).
- docs/mail.md: architecture, DNS (MX/SPF/DKIM/DMARC/PTR), gateway
master-user setup, env, provisioning, webmail-only policy.
Apex profullstack.com stays corporate; member mail is only on mail.*.
Infra is inspection-verified (bash -n, YAML lint); deploy pending.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
49db5e103d
commit
cb09300357
8 changed files with 464 additions and 1 deletions
83
deploy/mailu/docker-compose.yml
Normal file
83
deploy/mailu/docker-compose.yml
Normal file
|
|
@ -0,0 +1,83 @@
|
|||
# Mailu stack for mail.profullstack.com — self-hosted Postfix + Dovecot +
|
||||
# Roundcube + rspamd. Coexists with the host Caddy: Mailu owns the mail ports
|
||||
# (25/465/587/993/995) and serves HTTP on loopback only; Caddy fronts the
|
||||
# webmail at https://mail.profullstack.com and supplies the TLS cert
|
||||
# (TLS_FLAVOR=mail, certs copied by refresh-certs.sh).
|
||||
#
|
||||
# Pinned to a Mailu release; bump deliberately. See docs/mail.md.
|
||||
x-environment: &default-environment
|
||||
env_file: mailu.env
|
||||
|
||||
services:
|
||||
redis:
|
||||
image: redis:alpine
|
||||
restart: always
|
||||
volumes:
|
||||
- "./data/redis:/data"
|
||||
|
||||
front:
|
||||
image: ghcr.io/mailu/nginx:2024.06
|
||||
restart: always
|
||||
env_file: mailu.env
|
||||
ports:
|
||||
# Mail ports bound on the host; HTTP only on loopback for Caddy.
|
||||
- "25:25"
|
||||
- "465:465"
|
||||
- "587:587"
|
||||
- "993:993"
|
||||
- "995:995"
|
||||
- "127.0.0.1:8080:80"
|
||||
volumes:
|
||||
- "./certs:/certs"
|
||||
- "./data/overrides/nginx:/overrides:ro"
|
||||
depends_on:
|
||||
- redis
|
||||
|
||||
admin:
|
||||
image: ghcr.io/mailu/admin:2024.06
|
||||
restart: always
|
||||
env_file: mailu.env
|
||||
volumes:
|
||||
- "./data/data:/data"
|
||||
- "./data/dkim:/dkim"
|
||||
depends_on:
|
||||
- redis
|
||||
|
||||
imap:
|
||||
image: ghcr.io/mailu/dovecot:2024.06
|
||||
restart: always
|
||||
env_file: mailu.env
|
||||
volumes:
|
||||
- "./data/mail:/mail"
|
||||
- "./data/overrides/dovecot:/overrides:ro"
|
||||
depends_on:
|
||||
- front
|
||||
|
||||
smtp:
|
||||
image: ghcr.io/mailu/postfix:2024.06
|
||||
restart: always
|
||||
env_file: mailu.env
|
||||
volumes:
|
||||
- "./data/mailqueue:/queue"
|
||||
- "./data/overrides/postfix:/overrides:ro"
|
||||
depends_on:
|
||||
- front
|
||||
|
||||
antispam:
|
||||
image: ghcr.io/mailu/rspamd:2024.06
|
||||
restart: always
|
||||
env_file: mailu.env
|
||||
volumes:
|
||||
- "./data/filter:/var/lib/rspamd"
|
||||
- "./data/overrides/rspamd:/overrides:ro"
|
||||
depends_on:
|
||||
- front
|
||||
|
||||
webmail:
|
||||
image: ghcr.io/mailu/roundcube:2024.06
|
||||
restart: always
|
||||
env_file: mailu.env
|
||||
volumes:
|
||||
- "./data/webmail:/data"
|
||||
depends_on:
|
||||
- front
|
||||
Loading…
Add table
Add a link
Reference in a new issue