wip: add mailserver

This commit is contained in:
Yann Autissier 2022-11-02 23:21:18 +00:00
parent 9bdc761d47
commit ec42a20817
2 changed files with 159 additions and 0 deletions

View File

@ -0,0 +1,4 @@
NODE_MAILSERVER_ENABLE_MANAGESIEVE=1
NODE_MAILSERVER_SPOOF_PROTECTION=1
NODE_MAILSERVER_SSL_TYPE=letsencrypt
NODE_MAILSERVER_UPDATE_CHECK=0

155
stack/node/mail/mail.yml Normal file
View File

@ -0,0 +1,155 @@
version: '2'
services:
mailserver:
image: mailserver/docker-mailserver:11.2
cap_add:
- NET_ADMIN
container_name: ${NODE_COMPOSE_PROJECT_NAME}-mailserver
cpus: 0.5
domainname: ${DOMAIN}
environment:
- OVERRIDE_HOSTNAME=${NODE_MAILSERVER_OVERRIDE_HOSTNAME:-}
- DMS_DEBUG=${NODE_MAILSERVER_DMS_DEBUG:-0}
- LOG_LEVEL=${NODE_MAILSERVER_LOG_LEVEL:-info}
- SUPERVISOR_LOGLEVEL=${NODE_MAILSERVER_SUPERVISOR_LOGLEVEL:-}
- ONE_DIR=${NODE_MAILSERVER_ONE_DIR:-1}
- ACCOUNT_PROVISIONER=${NODE_MAILSERVER_ACCOUNT_PROVISIONER:-}
- POSTMASTER_ADDRESS=${NODE_MAILSERVER_POSTMASTER_ADDRESS:-}
- ENABLE_UPDATE_CHECK=${NODE_MAILSERVER_ENABLE_UPDATE_CHECK:-1}
- UPDATE_CHECK_INTERVAL=${NODE_MAILSERVER_UPDATE_CHECK_INTERVAL:-1d}
- PERMIT_DOCKER=${NODE_MAILSERVER_PERMIT_DOCKER:-none}
- TZ=${NODE_MAILSERVER_TZ:-}
- NETWORK_INTERFACE=${NODE_MAILSERVER_NETWORK_INTERFACE:-}
- TLS_LEVEL=${NODE_MAILSERVER_TLS_LEVEL:-}
- SPOOF_PROTECTION=${NODE_MAILSERVER_SPOOF_PROTECTION:-}
- ENABLE_SRS=${NODE_MAILSERVER_ENABLE_SRS:-0}
- ENABLE_POP3=${NODE_MAILSERVER_ENABLE_POP3:-}
- ENABLE_CLAMAV=${NODE_MAILSERVER_ENABLE_CLAMAV:-0}
- ENABLE_AMAVIS=${NODE_MAILSERVER_ENABLE_AMAVIS:-1}
- AMAVIS_LOGLEVEL=${NODE_MAILSERVER_AMAVIS_LOGLEVEL:-0}
- ENABLE_DNSBL=${NODE_MAILSERVER_ENABLE_DNSBL:-0}
- ENABLE_FAIL2BAN=${NODE_MAILSERVER_ENABLE_FAIL2BAN:-0}
- FAIL2BAN_BLOCKTYPE=${NODE_MAILSERVER_FAIL2BAN_BLOCKTYPE:-drop}
- ENABLE_MANAGESIEVE=${NODE_MAILSERVER_ENABLE_MANAGESIEVE:-}
- POSTSCREEN_ACTION=${NODE_MAILSERVER_POSTSCREEN_ACTION:-enforce}
- SMTP_ONLY=${NODE_MAILSERVER_SMTP_ONLY:-}
- SSL_TYPE=${NODE_MAILSERVER_SSL_TYPE:-}
- SSL_CERT_PATH=${NODE_MAILSERVER_SSL_CERT_PATH:-}
- SSL_KEY_PATH=${NODE_MAILSERVER_SSL_KEY_PATH:-}
- SSL_ALT_CERT_PATH=${NODE_MAILSERVER_SSL_ALT_CERT_PATH:-}
- SSL_ALT_KEY_PATH=${NODE_MAILSERVER_SSL_ALT_KEY_PATH:-}
- VIRUSMAILS_DELETE_DELAY=${NODE_MAILSERVER_VIRUSMAILS_DELETE_DELAY:-}
- ENABLE_POSTFIX_VIRTUAL_TRANSPORT=${NODE_MAILSERVER_ENABLE_POSTFIX_VIRTUAL_TRANSPORT:-}
- POSTFIX_DAGENT=${NODE_MAILSERVER_POSTFIX_DAGENT:-}
- POSTFIX_MAILBOX_SIZE_LIMIT=${NODE_MAILSERVER_POSTFIX_MAILBOX_SIZE_LIMIT:-}
- ENABLE_QUOTAS=${NODE_MAILSERVER_ENABLE_QUOTAS:-1}
- POSTFIX_MESSAGE_SIZE_LIMIT=${NODE_MAILSERVER_POSTFIX_MESSAGE_SIZE_LIMIT:-}
- CLAMAV_MESSAGE_SIZE_LIMIT=${NODE_MAILSERVER_CLAMAV_MESSAGE_SIZE_LIMIT:-}
- PFLOGSUMM_TRIGGER=${NODE_MAILSERVER_PFLOGSUMM_TRIGGER:-}
- PFLOGSUMM_RECIPIENT=${NODE_MAILSERVER_PFLOGSUMM_RECIPIENT:-}
- PFLOGSUMM_SENDER=${NODE_MAILSERVER_PFLOGSUMM_SENDER:-}
- LOGWATCH_INTERVAL=${NODE_MAILSERVER_LOGWATCH_INTERVAL:-}
- LOGWATCH_RECIPIENT=${NODE_MAILSERVER_LOGWATCH_RECIPIENT:-}
- LOGWATCH_SENDER=${NODE_MAILSERVER_LOGWATCH_SENDER:-}
- REPORT_RECIPIENT=${NODE_MAILSERVER_REPORT_RECIPIENT:-}
- REPORT_SENDER=${NODE_MAILSERVER_REPORT_SENDER:-}
- LOGROTATE_INTERVAL=${NODE_MAILSERVER_LOGROTATE_INTERVAL:-weekly}
- POSTFIX_INET_PROTOCOLS=${NODE_MAILSERVER_POSTFIX_INET_PROTOCOLS:-all}
- DOVECOT_INET_PROTOCOLS=${NODE_MAILSERVER_DOVECOT_INET_PROTOCOLS:-all}
- ENABLE_SPAMASSASSIN=${NODE_MAILSERVER_ENABLE_SPAMASSASSIN:-0}
- SPAMASSASSIN_SPAM_TO_INBOX=${NODE_MAILSERVER_SPAMASSASSIN_SPAM_TO_INBOX:-1}
- ENABLE_SPAMASSASSIN_KAM=${NODE_MAILSERVER_ENABLE_SPAMASSASSIN_KAM:-0}
- MOVE_SPAM_TO_JUNK=${NODE_MAILSERVER_MOVE_SPAM_TO_JUNK:-1}
- SA_TAG=${NODE_MAILSERVER_SA_TAG:-2.0}
- SA_TAG2=${NODE_MAILSERVER_SA_TAG2:-6.31}
- SA_KILL=${NODE_MAILSERVER_SA_KILL:-6.31}
- SA_SPAM_SUBJECT=${NODE_MAILSERVER_SA_SPAM_SUBJECT:-***SPAM*****}
- ENABLE_FETCHMAIL=${NODE_MAILSERVER_ENABLE_FETCHMAIL:-0}
- FETCHMAIL_POLL=${NODE_MAILSERVER_FETCHMAIL_POLL:-300}
- ENABLE_LDAP=${NODE_MAILSERVER_ENABLE_LDAP:-}
- LDAP_START_TLS=${NODE_MAILSERVER_LDAP_START_TLS:-}
- LDAP_SERVER_HOST=${NODE_MAILSERVER_LDAP_SERVER_HOST:-}
- LDAP_SEARCH_BASE=${NODE_MAILSERVER_LDAP_SEARCH_BASE:-}
- LDAP_BIND_DN=${NODE_MAILSERVER_LDAP_BIND_DN:-}
- LDAP_BIND_PW=${NODE_MAILSERVER_LDAP_BIND_PW:-}
- LDAP_QUERY_FILTER_USER=${NODE_MAILSERVER_LDAP_QUERY_FILTER_USER:-}
- LDAP_QUERY_FILTER_GROUP=${NODE_MAILSERVER_LDAP_QUERY_FILTER_GROUP:-}
- LDAP_QUERY_FILTER_ALIAS=${NODE_MAILSERVER_LDAP_QUERY_FILTER_ALIAS:-}
- LDAP_QUERY_FILTER_DOMAIN=${NODE_MAILSERVER_LDAP_QUERY_FILTER_DOMAIN:-}
- DOVECOT_TLS=${NODE_MAILSERVER_DOVECOT_TLS:-}
- DOVECOT_USER_FILTER=${NODE_MAILSERVER_DOVECOT_USER_FILTER:-}
- DOVECOT_PASS_FILTER=${NODE_MAILSERVER_DOVECOT_PASS_FILTER:-}
- DOVECOT_MAILBOX_FORMAT=${NODE_MAILSERVER_DOVECOT_MAILBOX_FORMAT:-maildir}
- DOVECOT_AUTH_BIND=${NODE_MAILSERVER_DOVECOT_AUTH_BIND:-}
- ENABLE_POSTGREY=${NODE_MAILSERVER_ENABLE_POSTGREY:-0}
- POSTGREY_DELAY=${NODE_MAILSERVER_POSTGREY_DELAY:-300}
- POSTGREY_MAX_AGE=${NODE_MAILSERVER_POSTGREY_MAX_AGE:-35}
- POSTGREY_TEXT=${NODE_MAILSERVER_POSTGREY_TEXT:-"Delayed by Postgrey"}
- POSTGREY_AUTO_WHITELIST_CLIENTS=${NODE_MAILSERVER_POSTGREY_AUTO_WHITELIST_CLIENTS:-5}
- ENABLE_SASLAUTHD=${NODE_MAILSERVER_ENABLE_SASLAUTHD:-0}
- SASLAUTHD_MECHANISMS=${NODE_MAILSERVER_SASLAUTHD_MECHANISMS:-}
- SASLAUTHD_MECH_OPTIONS=${NODE_MAILSERVER_SASLAUTHD_MECH_OPTIONS:-}
- SASLAUTHD_LDAP_SERVER=${NODE_MAILSERVER_SASLAUTHD_LDAP_SERVER:-}
- SASLAUTHD_LDAP_BIND_DN=${NODE_MAILSERVER_SASLAUTHD_LDAP_BIND_DN:-}
- SASLAUTHD_LDAP_PASSWORD=${NODE_MAILSERVER_SASLAUTHD_LDAP_PASSWORD:-}
- SASLAUTHD_LDAP_SEARCH_BASE=${NODE_MAILSERVER_SASLAUTHD_LDAP_SEARCH_BASE:-}
- SASLAUTHD_LDAP_FILTER=${NODE_MAILSERVER_SASLAUTHD_LDAP_FILTER:-}
- SASLAUTHD_LDAP_START_TLS=${NODE_MAILSERVER_SASLAUTHD_LDAP_START_TLS:-}
- SASLAUTHD_LDAP_TLS_CHECK_PEER=${NODE_MAILSERVER_SASLAUTHD_LDAP_TLS_CHECK_PEER:-}
- SASLAUTHD_LDAP_TLS_CACERT_FILE=${NODE_MAILSERVER_SASLAUTHD_LDAP_TLS_CACERT_FILE:-}
- SASLAUTHD_LDAP_TLS_CACERT_DIR=${NODE_MAILSERVER_SASLAUTHD_LDAP_TLS_CACERT_DIR:-}
- SASLAUTHD_LDAP_PASSWORD_ATTR=${NODE_MAILSERVER_SASLAUTHD_LDAP_PASSWORD_ATTR:-}
- SASL_PASSWD=${NODE_MAILSERVER_SASL_PASSWD:-}
- SASLAUTHD_LDAP_AUTH_METHOD=${NODE_MAILSERVER_SASLAUTHD_LDAP_AUTH_METHOD:-}
- SASLAUTHD_LDAP_MECH=${NODE_MAILSERVER_SASLAUTHD_LDAP_MECH:-}
- SRS_SENDER_CLASSES=${NODE_MAILSERVER_SRS_SENDER_CLASSES:-envelope_sender}
- SRS_EXCLUDE_DOMAINS=${NODE_MAILSERVER_SRS_EXCLUDE_DOMAINS:-}
- SRS_SECRET=${NODE_MAILSERVER_SRS_SECRET:-}
- DEFAULT_RELAY_HOST=${NODE_MAILSERVER_DEFAULT_RELAY_HOST:-}
- RELAY_HOST=${NODE_MAILSERVER_RELAY_HOST:-}
- RELAY_PORT=${NODE_MAILSERVER_RELAY_PORT:-25}
- RELAY_USER=${NODE_MAILSERVER_RELAY_USER:-}
- RELAY_PASSWORD=${NODE_MAILSERVER_RELAY_PASSWORD:-}
healthcheck:
test: "ss --listening --tcp | grep -P 'LISTEN.+:smtp' || exit 1"
timeout: 3s
retries: 0
hostname: ${HOSTNAME}
labels:
- SERVICE_25_CHECK_TCP=true
- SERVICE_25_NAME=${NODE_COMPOSE_SERVICE_NAME}-mailserver-25
- SERVICE_110_IGNORE=true
- SERVICE_143_CHECK_TCP=true
- SERVICE_143_NAME=${NODE_COMPOSE_SERVICE_NAME}-mailserver-143
- SERVICE_465_CHECK_TCP=true
- SERVICE_465_NAME=${NODE_COMPOSE_SERVICE_NAME}-mailserver-465
- SERVICE_587_CHECK_TCP=true
- SERVICE_587_NAME=${NODE_COMPOSE_SERVICE_NAME}-mailserver-587
- SERVICE_993_CHECK_TCP=true
- SERVICE_993_NAME=${NODE_COMPOSE_SERVICE_NAME}-mailserver-993
- SERVICE_995_IGNORE=true
- SERVICE_4190_CHECK_TCP=true
- SERVICE_4190_NAME=${NODE_COMPOSE_SERVICE_NAME}-mailserver-4190
ports:
- "25:25"
- "143:143"
- "465:465"
- "587:587"
- "993:993"
volumes:
- /etc/localtime:/etc/localtime:ro
- mailserver-config:/tmp/docker-mailserver/
- mailserver-data:/var/mail
- mailserver-logs:/var/log/mail
- mailserver-state:/var/mail-state
- myos:/etc/letsencrypt:ro
restart: always
stop_grace_period: 1m
volumes:
mailserver-config:
mailserver-data:
mailserver-logs:
mailserver-state:
myos:
external: true
name: ${NODE_DOCKER_VOLUME}