Add mail services(mailu) (#1775)

* add mail service
This commit is contained in:
ahkui 2018-09-16 17:44:18 +08:00 committed by Shao Yu-Lung (Allen)
parent 4658820437
commit e101e4d5b2
4 changed files with 248 additions and 1 deletions

View File

@ -565,6 +565,28 @@ docker-compose up -d php-worker
<br>
<a name="Use-Mailu"></a>
## Use Mailu
1 - You need register a domain.
2 - Required RECAPTCHA for signup email [HERE](https://www.google.com/recaptcha/admin)
2 - modify following environment variable in `.env` file
```
MAILU_RECAPTCHA_PUBLIC_KEY=<YOUR_RECAPTCHA_PUBLIC_KEY>
MAILU_RECAPTCHA_PRIVATE_KEY=<YOUR_RECAPTCHA_PRIVATE_KEY>
MAILU_DOMAIN=laradock.io
MAILU_HOSTNAMES=mail.laradock.io
```
2 - Open your browser and visit `http://YOUR_DOMAIN`.
<br> <br>
<a name="Use-NetData"></a> <a name="Use-NetData"></a>
## Use NetData ## Use NetData

View File

@ -97,7 +97,7 @@ Beanstalkd - RabbitMQ - PHP Worker
- **Queueing Management:** - **Queueing Management:**
Beanstalkd Console - RabbitMQ Console Beanstalkd Console - RabbitMQ Console
- **Random Tools:** - **Random Tools:**
HAProxy - Certbot - Blackfire - Selenium - Jenkins - ElasticSearch - Kibana - Grafana - Gitlab - Mailhog - MailDev - Minio - Varnish - Swoole - NetData - Portainer - Laravel Echo... Mailu - HAProxy - Certbot - Blackfire - Selenium - Jenkins - ElasticSearch - Kibana - Grafana - Gitlab - Mailhog - MailDev - Minio - Varnish - Swoole - NetData - Portainer - Laravel Echo...
Laradock introduces the **Workspace** Image, as a development environment. Laradock introduces the **Workspace** Image, as a development environment.
It contains a rich set of helpful tools, all pre-configured to work and integrate with almost any combination of Containers and tools you may choose. It contains a rich set of helpful tools, all pre-configured to work and integrate with almost any combination of Containers and tools you may choose.

View File

@ -952,3 +952,167 @@ services:
- "${IDE_ICECODER_PORT}:8080" - "${IDE_ICECODER_PORT}:8080"
networks: networks:
- backend - backend
### MAILU ################################################
mailu:
image: mailu/admin:${MAILU_VERSION}
volumes:
- "${DATA_PATH_HOST}/mailu/data:/data"
- "${DATA_PATH_HOST}/mailu/dkim:/dkim"
- "${DATA_PATH_HOST}/mailu/webmail:/webmail"
- /var/run/docker.sock:/var/run/docker.sock:ro
depends_on:
- mailu-front
- mailu-imap
- mailu-smtp
- mailu-antispam
- mailu-antivirus
- mailu-webdav
- mailu-admin
- mailu-webmail
- mailu-fetchmail
command: ["sh", "-c", "echo ${MAILU_INIT_ADMIN_USERNAME}@${MAILU_DOMAIN} ${MAILU_INIT_ADMIN_PASSWORD} ;python manage.py advertise ; python manage.py db upgrade ; python manage.py admin ${MAILU_INIT_ADMIN_USERNAME} ${MAILU_DOMAIN} ${MAILU_INIT_ADMIN_PASSWORD} || true;sed -i -- \"s/= Off/= On/g\" /webmail/_data_/_default_/configs/config.ini || true;if grep -Fq \"registration_link_url\" /webmail/_data_/_default_/configs/config.ini;then echo Already set!;else echo \"\" >> /webmail/_data_/_default_/configs/config.ini; echo \"[login]\" >> /webmail/_data_/_default_/configs/config.ini;echo \"registration_link_url = '${MAILU_WEBSITE}${MAILU_WEB_ADMIN}/ui/user/signup'\" >> /webmail/_data_/_default_/configs/config.ini;fi"]
networks:
- backend
mailu-front:
image: mailu/nginx:${MAILU_VERSION}
environment:
- ADMIN=${MAILU_ADMIN}
- WEB_ADMIN=${MAILU_WEB_ADMIN}
- WEB_WEBMAIL=${MAILU_WEB_WEBMAIL}
- WEBDAV=${MAILU_WEBDAV}
- HOSTNAMES=${MAILU_HOSTNAMES}
- TLS_FLAVOR=${MAILU_TLS_FLAVOR}
- MESSAGE_SIZE_LIMIT=${MAILU_MESSAGE_SIZE_LIMIT}
ports:
- "${MAILU_HTTP_PORT}:80"
- "${MAILU_HTTPS_PORT}:443"
- "110:110"
- "143:143"
- "993:993"
- "995:995"
- "25:25"
- "465:465"
- "587:587"
volumes:
- "${DATA_PATH_HOST}/mailu/certs:/certs"
networks:
backend:
aliases:
- front
mailu-imap:
image: mailu/dovecot:${MAILU_VERSION}
environment:
- DOMAIN=${MAILU_DOMAIN}
- HOSTNAMES=${MAILU_HOSTNAMES}
- POSTMASTER=${MAILU_POSTMASTER}
- WEBMAIL=${MAILU_WEBMAIL}
- RECIPIENT_DELIMITER=${MAILU_RECIPIENT_DELIMITER}
volumes:
- "${DATA_PATH_HOST}/mailu/data:/data"
- "${DATA_PATH_HOST}/mailu/mail:/mail"
- "${DATA_PATH_HOST}/mailu/overrides:/overrides"
depends_on:
- mailu-front
networks:
backend:
aliases:
- imap
mailu-smtp:
image: mailu/postfix:${MAILU_VERSION}
environment:
- DOMAIN=${MAILU_DOMAIN}
- HOSTNAMES=${MAILU_HOSTNAMES}
- RELAYHOST=${MAILU_RELAYHOST}
- RELAYNETS=${MAILU_RELAYNETS}
- RECIPIENT_DELIMITER=${MAILU_RECIPIENT_DELIMITER}
- MESSAGE_SIZE_LIMIT=${MAILU_MESSAGE_SIZE_LIMIT}
volumes:
- "${DATA_PATH_HOST}/mailu/data:/data"
- "${DATA_PATH_HOST}/mailu/overrides:/overrides"
depends_on:
- mailu-front
networks:
backend:
aliases:
- smtp
mailu-antispam:
image: mailu/rspamd:${MAILU_VERSION}
volumes:
- "${DATA_PATH_HOST}/mailu/filter:/var/lib/rspamd"
- "${DATA_PATH_HOST}/mailu/dkim:/dkim"
- "${DATA_PATH_HOST}/mailu/overrides/rspamd:/etc/rspamd/override.d"
depends_on:
- mailu-front
networks:
backend:
aliases:
- antispam
mailu-antivirus:
image: mailu/clamav:${MAILU_VERSION}
volumes:
- "${DATA_PATH_HOST}/mailu/filter:/data"
networks:
backend:
aliases:
- antivirus
mailu-webdav:
image: mailu/${MAILU_WEBDAV}:${MAILU_VERSION}
volumes:
- "${DATA_PATH_HOST}/mailu/dav:/data"
networks:
backend:
aliases:
- webdav
mailu-admin:
image: mailu/admin:${MAILU_VERSION}
environment:
- DOMAIN=${MAILU_DOMAIN}
- HOSTNAMES=${MAILU_HOSTNAMES}
- POSTMASTER=${MAILU_POSTMASTER}
- SECRET_KEY=${MAILU_SECRET_KEY}
- AUTH_RATELIMIT=${MAILU_AUTH_RATELIMIT}
- TLS_FLAVOR=${MAILU_TLS_FLAVOR}
- DISABLE_STATISTICS=${MAILU_DISABLE_STATISTICS}
- DMARC_RUA=${MAILU_DMARC_RUA}
- DMARC_RUF=${MAILU_DMARC_RUF}
- WELCOME=${MAILU_WELCOME}
- WELCOME_SUBJECT=${MAILU_WELCOME_SUBJECT}
- WELCOME_BODY=${MAILU_WELCOME_BODY}
- WEB_ADMIN=${MAILU_WEB_ADMIN}
- WEB_WEBMAIL=${MAILU_WEB_WEBMAIL}
- WEBSITE=${MAILU_WEBSITE}
- WEBMAIL=${MAILU_WEBMAIL}
- SITENAME=${MAILU_SITENAME}
- PASSWORD_SCHEME=${MAILU_PASSWORD_SCHEME}
- RECAPTCHA_PUBLIC_KEY=${MAILU_RECAPTCHA_PUBLIC_KEY}
- RECAPTCHA_PRIVATE_KEY=${MAILU_RECAPTCHA_PRIVATE_KEY}
volumes:
- "${DATA_PATH_HOST}/mailu/data:/data"
- "${DATA_PATH_HOST}/mailu/dkim:/dkim"
- /var/run/docker.sock:/var/run/docker.sock:ro
depends_on:
- redis
networks:
backend:
aliases:
- admin
mailu-webmail:
image: "mailu/${MAILU_WEBMAIL}:${MAILU_VERSION}"
volumes:
- "${DATA_PATH_HOST}/mailu/webmail:/data"
networks:
backend:
aliases:
- webmail
mailu-fetchmail:
image: mailu/fetchmail:${MAILU_VERSION}
environment:
- FETCHMAIL_DELAY=${MAILU_FETCHMAIL_DELAY}
volumes:
- "${DATA_PATH_HOST}/mailu/data:/data"
networks:
backend:
aliases:
- fetchmail

View File

@ -422,3 +422,64 @@ IDE_THEIA_PORT=987
IDE_WEBIDE_PORT=984 IDE_WEBIDE_PORT=984
IDE_CODIAD_PORT=985 IDE_CODIAD_PORT=985
IDE_ICECODER_PORT=986 IDE_ICECODER_PORT=986
### MAILU ###############################################
MAILU_VERSION=latest
MAILU_RECAPTCHA_PUBLIC_KEY=<YOUR_RECAPTCHA_PUBLIC_KEY>
MAILU_RECAPTCHA_PRIVATE_KEY=<YOUR_RECAPTCHA_PRIVATE_KEY>
# Main mail domain
MAILU_HTTP_PORT=6080
MAILU_HTTPS_PORT=60443
MAILU_DOMAIN=example.com
MAILU_INIT_ADMIN_USERNAME=laradock
MAILU_INIT_ADMIN_PASSWORD=laradock
# Hostnames for this server, separated with comas
MAILU_HOSTNAMES=mail.example.com,alternative.example.com,yetanother.example.com
# Postmaster local part (will append the main mail domain)
MAILU_POSTMASTER=admin
# Set to a randomly generated 16 bytes string
MAILU_SECRET_KEY=ChangeMeChangeMe
# Choose how secure connections will behave (value: letsencrypt, cert, notls, mail)
MAILU_TLS_FLAVOR=cert
# Authentication rate limit (per source IP address)
MAILU_AUTH_RATELIMIT=10/minute;1000/hour
# Opt-out of statistics, replace with "True" to opt out
MAILU_DISABLE_STATISTICS=False
# Message size limit in bytes
# Default: accept messages up to 50MB
MAILU_MESSAGE_SIZE_LIMIT=50000000
# Will relay all outgoing mails if configured
MAILU_RELAYHOST=
# Networks granted relay permissions, make sure that you include your Docker
# internal network (default to 172.17.0.0/16)
MAILU_RELAYNETS=172.16.0.0/12
# Fetchmail delay
MAILU_FETCHMAIL_DELAY=600
# Recipient delimiter, character used to delimiter localpart from custom address part
# e.g. localpart+custom@domain;tld
MAILU_RECIPIENT_DELIMITER=+
# DMARC rua and ruf email
MAILU_DMARC_RUA=admin
MAILU_DMARC_RUF=admin
# Weclome email, enable and set a topic and body if you wish to send welcome
# emails to all users.
MAILU_WELCOME=True
MAILU_WELCOME_SUBJECT=Welcome to your new email account
MAILU_WELCOME_BODY=Welcome to your new email account, if you can read this, then it is configured properly!
# Path to the admin interface if enabled
MAILU_WEB_ADMIN=/admin
# Path to the webmail if enabled
MAILU_WEB_WEBMAIL=/webmail
# Website name
MAILU_SITENAME=Example Mail
# Linked Website URL
MAILU_WEBSITE=http://mail.example.com
# Default password scheme used for newly created accounts and changed passwords
# (value: SHA512-CRYPT, SHA256-CRYPT, MD5-CRYPT, CRYPT)
MAILU_PASSWORD_SCHEME=SHA512-CRYPT
# Expose the admin interface (value: true, false)
MAILU_ADMIN=true
# Choose which webmail to run if any (values: roundcube, rainloop, none)
MAILU_WEBMAIL=rainloop
# Dav server implementation (value: radicale, none)
MAILU_WEBDAV=radicale