12 Commits

Author SHA1 Message Date
536e78d459 chore: publish 1.0.1+2.0.16 release 2023-09-04 16:16:35 +02:00
3wc
826b0269f4 Add API_TOKEN 2023-09-01 20:39:22 +02:00
3wc
3de4147dda chore: publish 1.0.0+2.0.16 release 2023-09-01 15:35:37 +00:00
3wc
72e965154d Mailu 2.0 2023-09-01 15:34:52 +00:00
3wc
b7c8617db2 Rename release notes directory for correctness
(Grumble docs wrong grumble grumble)
2023-07-18 10:19:36 +01:00
3wc
8d570c7d79 chore: publish 0.2.1+1.9 release 2023-04-10 22:48:25 -04:00
3wc
11db4147c0 Switch to ghcr.io for container images..
..following upstream change
2023-04-10 22:47:40 -04:00
3wc
4ce12e9c55 Add Drone config for recipe catalogue regeneration 2023-03-12 17:43:10 -04:00
3wc
756e584198 chore: publish 0.2.0+1.9 release 2023-03-12 17:24:38 -04:00
3wc
814175806c Upgrade to Mailu 1.9, adjust env vars 2023-03-12 17:20:24 -04:00
3wc
4427115bc8 Update abra syntax in examples (finally) [mass update] 2023-01-19 16:02:28 -08:00
3wc
dc8b5734f6 chore: publish 0.1.0+1.8 release 2022-04-02 16:13:53 +02:00
6 changed files with 83 additions and 44 deletions

View File

@ -0,0 +1,16 @@
kind: pipeline
name: generate recipe catalogue
steps:
- name: release a new version
image: plugins/downstream
settings:
server: https://build.coopcloud.tech
token:
from_secret: drone_abra-bot_token
fork: true
repositories:
- coop-cloud/auto-recipes-catalogue-json
trigger:
event: tag

View File

@ -3,6 +3,8 @@ TYPE=mailu
# Main mail domain, NOT main web domain (if they are different) # Main mail domain, NOT main web domain (if they are different)
DOMAIN=example.com DOMAIN=example.com
LETS_ENCRYPT_ENV=production LETS_ENCRYPT_ENV=production
# Run `docker stack ls | grep traefik | cut -f 1 -d " "` on the target machine to get that one
TRAEFIK_STACK_NAME=traefik_example_com
# Custom settings used by certdumper_post.sh and Traefik # Custom settings used by certdumper_post.sh and Traefik
WEB_DOMAIN=example.com WEB_DOMAIN=example.com
@ -31,11 +33,11 @@ POSTMASTER=admin
# Choose how secure connections will behave (value: letsencrypt, cert, notls, mail, mail-letsencrypt) # Choose how secure connections will behave (value: letsencrypt, cert, notls, mail, mail-letsencrypt)
TLS_FLAVOR=mail TLS_FLAVOR=mail
# Authentication rate limit (per source IP address) # Authentication rate limit per IP (per /24 on ipv4 and /56 on ipv6)
AUTH_RATELIMIT=10/minute AUTH_RATELIMIT_IP=60/hour
# Opt-out of statistics, replace with "True" to opt out # Opt-out of statistics, replace with "True" to opt out
DISABLE_STATISTICS=False DISABLE_STATISTICS=True
################################### ###################################
# Optional features # Optional features
@ -45,7 +47,7 @@ DISABLE_STATISTICS=False
ADMIN=true ADMIN=true
# Choose which webmail to run if any (values: roundcube, rainloop, none) # Choose which webmail to run if any (values: roundcube, rainloop, none)
WEBMAIL=rainloop WEBMAIL=snappymail
# Dav server implementation (value: radicale, none) # Dav server implementation (value: radicale, none)
WEBDAV=none WEBDAV=none
@ -53,6 +55,9 @@ WEBDAV=none
# Antivirus solution (value: clamav, none) # Antivirus solution (value: clamav, none)
ANTIVIRUS=none ANTIVIRUS=none
# Scan Macros solution (value: true, false)
SCAN_MACROS=true
################################### ###################################
# Mail settings # Mail settings
################################### ###################################
@ -62,6 +67,9 @@ ANTIVIRUS=none
# Max attachment size will be 33% smaller # Max attachment size will be 33% smaller
MESSAGE_SIZE_LIMIT=50000000 MESSAGE_SIZE_LIMIT=50000000
# Message rate limit (per user)
MESSAGE_RATELIMIT=200/day
# Networks granted relay permissions # Networks granted relay permissions
# Use this with care, all hosts in this networks will be able to send mail without authentication! # Use this with care, all hosts in this networks will be able to send mail without authentication!
RELAYNETS= RELAYNETS=
@ -69,6 +77,9 @@ RELAYNETS=
# Will relay all outgoing mails if configured # Will relay all outgoing mails if configured
RELAYHOST= RELAYHOST=
# Enable fetchmail
FETCHMAIL_ENABLED=False
# Fetchmail delay # Fetchmail delay
FETCHMAIL_DELAY=600 FETCHMAIL_DELAY=600
@ -86,7 +97,7 @@ WELCOME_SUBJECT="Welcome to your new email account"
WELCOME_BODY="Welcome to your new email account, if you can read this, then it is configured properly!" WELCOME_BODY="Welcome to your new email account, if you can read this, then it is configured properly!"
# Maildir Compression # Maildir Compression
# choose compression-method, default: none (value: bz2, gz) # choose compression-method, default: none (value: gz, bz2, lz4, zstd)
COMPRESSION= COMPRESSION=
# change compression-level, default: 6 (value: 1-9) # change compression-level, default: 6 (value: 1-9)
COMPRESSION_LEVEL= COMPRESSION_LEVEL=
@ -126,9 +137,8 @@ WEBSITE=https://$DOMAIN
# Docker-compose project name, this will prepended to containers names. # Docker-compose project name, this will prepended to containers names.
COMPOSE_PROJECT_NAME=mailu COMPOSE_PROJECT_NAME=mailu
# Default password scheme used for newly created accounts and changed passwords # Number of rounds used by the password hashing scheme
# (value: PBKDF2, BLF-CRYPT, SHA512-CRYPT, SHA256-CRYPT) CREDENTIAL_ROUNDS=12
PASSWORD_SCHEME=PBKDF2
# Header to take the real ip from # Header to take the real ip from
REAL_IP_HEADER= REAL_IP_HEADER=
@ -142,6 +152,12 @@ REJECT_UNLISTED_RECIPIENT=
# Log level threshold in start.py (value: CRITICAL, ERROR, WARNING, INFO, DEBUG, NOTSET) # Log level threshold in start.py (value: CRITICAL, ERROR, WARNING, INFO, DEBUG, NOTSET)
LOG_LEVEL=WARNING LOG_LEVEL=WARNING
# Timezone for the Mailu containers. See this link for all possible values https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
TZ=Etc/UTC
# Authentication token for API requests
#API_TOKEN=
################################### ###################################
# Database settings # Database settings
################################### ###################################

View File

@ -22,9 +22,9 @@ host.
1. Set up Docker Swarm and [`abra`][abra] 1. Set up Docker Swarm and [`abra`][abra]
2. Deploy [`coop-cloud/traefik`][compose-traefik] 2. Deploy [`coop-cloud/traefik`][compose-traefik]
3. `abra app new mailu` 3. `abra app new mailu`
4. `abra app YOURAPPDOMAIN config` - be sure to change `$WEB_DOMAIN` to something that resolves to 4. `abra app config YOURAPPDOMAIN` - be sure to change `$WEB_DOMAIN` to something that resolves to
your Docker swarm box your Docker swarm box
5. `abra app YOURAPPDOMAIN deploy` 5. `abra app deploy YOURAPPDOMAIN`
9. Create initial user: 9. Create initial user:
``` ```
abra app YOURAPPDOMAIN run admin flask mailu admin admin YOURDOMAIN YOURPASSWORD abra app YOURAPPDOMAIN run admin flask mailu admin admin YOURDOMAIN YOURPASSWORD

View File

@ -2,10 +2,12 @@ version: "3.8"
x-environment: x-environment:
&default-env &default-env
- HOST_FRONT=${STACK_NAME}_app - FRONT_ADDRESS=${STACK_NAME}_app
- ADMIN - ADMIN
- ANTIVIRUS - ANTIVIRUS
- AUTH_RATELIMIT - API_TOKEN
- AUTH_RATELIMIT_IP
- MESSAGE_RATELIMIT
- COMPOSE_PROJECT_NAME - COMPOSE_PROJECT_NAME
- COMPRESSION - COMPRESSION
- COMPRESSION_LEVEL - COMPRESSION_LEVEL
@ -22,7 +24,7 @@ x-environment:
- LOG_DRIVER - LOG_DRIVER
- LOG_LEVEL - LOG_LEVEL
- MESSAGE_SIZE_LIMIT - MESSAGE_SIZE_LIMIT
- PASSWORD_SCHEME - CREDENTIAL_ROUNDS
- POSTMASTER - POSTMASTER
- REAL_IP_FROM - REAL_IP_FROM
- REAL_IP_HEADER - REAL_IP_HEADER
@ -46,10 +48,11 @@ x-environment:
- WELCOME - WELCOME
- WELCOME_BODY - WELCOME_BODY
- WELCOME_SUBJECT - WELCOME_SUBJECT
- TZ
services: services:
app: app:
image: mailu/nginx:1.8 image: ghcr.io/mailu/nginx:2.0.16
logging: logging:
driver: json-file driver: json-file
networks: networks:
@ -88,6 +91,7 @@ services:
- "traefik.http.routers.${STACK_NAME}.rule=Host(`${WEB_DOMAIN}`)" - "traefik.http.routers.${STACK_NAME}.rule=Host(`${WEB_DOMAIN}`)"
- "traefik.http.routers.${STACK_NAME}.tls.certresolver=${LETS_ENCRYPT_ENV}" - "traefik.http.routers.${STACK_NAME}.tls.certresolver=${LETS_ENCRYPT_ENV}"
- "traefik.http.routers.${STACK_NAME}.entrypoints=web-secure" - "traefik.http.routers.${STACK_NAME}.entrypoints=web-secure"
- "coop-cloud.${STACK_NAME}.version=1.0.1+2.0.16"
db: db:
image: redis:alpine image: redis:alpine
@ -95,32 +99,40 @@ services:
- "redis:/data" - "redis:/data"
admin: admin:
image: ${DOCKER_ORG:-mailu}/${DOCKER_PREFIX:-}admin:1.8 image: ghcr.io/mailu/admin:2.0.16
environment: *default-env environment: *default-env
healthcheck: healthcheck:
disable: true disable: true
volumes: volumes:
- "dkim:/dkim" - "dkim:/dkim"
- "mailu:/data" - "mailu:/data"
networks:
- default
imap: imap:
image: ${DOCKER_ORG:-mailu}/${DOCKER_PREFIX:-}dovecot:1.8 image: ghcr.io/mailu/dovecot:2.0.16
environment: *default-env environment: *default-env
volumes: volumes:
- "mail:/mail" - "mail:/mail"
healthcheck: healthcheck:
disable: true disable: true
depends_on:
- app
networks:
- default
smtp: smtp:
image: ${DOCKER_ORG:-mailu}/${DOCKER_PREFIX:-}postfix:1.8 image: ghcr.io/mailu/postfix:2.0.16
environment: *default-env environment: *default-env
volumes: volumes:
- "mailqueue:/queue" - "mailqueue:/queue"
healthcheck: healthcheck:
disable: true disable: true
depends_on:
- app
antispam: antispam:
image: ${DOCKER_ORG:-mailu}/${DOCKER_PREFIX:-}rspamd:1.8 image: ghcr.io/mailu/rspamd:2.0.16
environment: *default-env environment: *default-env
volumes: volumes:
- "rspamd:/var/lib/rspamd" - "rspamd:/var/lib/rspamd"
@ -129,8 +141,10 @@ services:
disable: true disable: true
webmail: webmail:
image: ${DOCKER_ORG:-mailu}/${DOCKER_PREFIX:-}rainloop:1.8 image: ghcr.io/mailu/webmail:2.0.16
environment: *default-env environment: *default-env
networks:
- default
volumes: volumes:
- "webmail:/data" - "webmail:/data"
deploy: deploy:
@ -138,21 +152,6 @@ services:
healthcheck: healthcheck:
disable: true disable: true
#certdumper:
# restart: always
# image: ${DOCKER_ORG:-mailu}/${DOCKER_PREFIX:-}traefik-certdumper:master
# environment:
# - DOMAIN=$DOMAIN
# # Set TRAEFIK_VERSION to v2 in your .env if you're using Traefik v2
# - TRAEFIK_VERSION=${TRAEFIK_VERSION:-v2}
# volumes:
# - "/docker/traefik/letsencrypt/acme.json:/traefik/acme.json"
# - "/docker/traefik/letsencrypt/certs:/tmp/work"
# - "/docker/mailu/certs:/output"
# labels:
# # Set watchtower label
# - "com.centurylinklabs.watchtower.enable=true"
certdumper: certdumper:
image: ldez/traefik-certs-dumper:v2.7.4 image: ldez/traefik-certs-dumper:v2.7.4
entrypoint: sh -c ' entrypoint: sh -c '
@ -168,7 +167,10 @@ services:
- DOMAIN=$WEB_DOMAIN - DOMAIN=$WEB_DOMAIN
volumes: volumes:
# Folder, which contains the acme.json # Folder, which contains the acme.json
- "traefik_letsencrypt:/traefik" - type: volume
read_only: true
source: traefik_letsencrypt
target: "/traefik"
# Folder, where cert.pem and key.pem will be written # Folder, where cert.pem and key.pem will be written
- "certs:/output" - "certs:/output"
configs: configs:
@ -176,14 +178,6 @@ services:
target: /usr/bin/certdumper_post.sh target: /usr/bin/certdumper_post.sh
mode: 0555 mode: 0555
#certdumper:
# image: humenius/traefik-certs-dumper:latest
# volumes:
# - traefik_letsencrypt:/traefik:ro
# - certs:/output:rw
# environment:
# - DOMAIN=$WEB_DOMAIN
volumes: volumes:
mailu: mailu:
rspamd: rspamd:
@ -194,6 +188,7 @@ volumes:
certs: certs:
mailqueue: mailqueue:
traefik_letsencrypt: traefik_letsencrypt:
name: "${TRAEFIK_STACK_NAME}_letsencrypt"
external: true external: true
networks: networks:

11
release/0.2.0+1.9 Normal file
View File

@ -0,0 +1,11 @@
When upgrading to 1.9, you'll need to update your app(s') configuration(s) for
new settings names:
- Rename `AUTH_RATELIMIT` to `AUTH_RATELIMIT_IP`
- Add MESSAGE_RATELIMIT (default `200/day`)
- Add `TZ` to specify server timezone, e.g. `TZ=Etc/UTC`
- Remove `PASSWORD_SCHEME`
- Add `CREDENTIAL_ROUNDS` (default `12`)
If you haven't made these changes already, it's best to bail on this upgrade
FIRST (i.e. Ctrl+C) and run `abra app config` first.

1
release/1.0.1+2.0.16 Normal file
View File

@ -0,0 +1 @@
this version introduces a new variable TRAEFIK_STACK_NAME