From f27b7f569a036d46f8b2f16ca35a2bc3cb1347e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=90=8C=E6=A3=AE?= Date: Fri, 26 Jul 2024 17:26:38 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E5=BA=94=E7=94=A8=20?= =?UTF-8?q?=E9=82=AE=E4=BB=B6=E6=9C=8D=E5=8A=A1=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 萌森 --- apps/docker-mailserver/14.0.0/data.yml | 38 ----- apps/docker-mailserver/README.md | 13 -- apps/docker-mailserver/logo.png | Bin 7260 -> 0 bytes apps/mailserver/14.0.0/data.yml | 136 ++++++++++++++++++ .../14.0.0/docker-compose.yml | 19 ++- .../14.0.0/scripts/init.sh | 0 .../14.0.0/scripts/uninstall.sh | 0 .../14.0.0/scripts/upgrade.sh | 0 apps/mailserver/README.md | 69 +++++++++ .../data.yml | 10 +- apps/mailserver/logo.png | Bin 0 -> 24206 bytes envs/mailserver/mailserver.env | 108 +++++++++++--- 12 files changed, 315 insertions(+), 78 deletions(-) delete mode 100644 apps/docker-mailserver/14.0.0/data.yml delete mode 100644 apps/docker-mailserver/README.md delete mode 100644 apps/docker-mailserver/logo.png create mode 100644 apps/mailserver/14.0.0/data.yml rename apps/{docker-mailserver => mailserver}/14.0.0/docker-compose.yml (55%) rename apps/{docker-mailserver => mailserver}/14.0.0/scripts/init.sh (100%) rename apps/{docker-mailserver => mailserver}/14.0.0/scripts/uninstall.sh (100%) rename apps/{docker-mailserver => mailserver}/14.0.0/scripts/upgrade.sh (100%) create mode 100644 apps/mailserver/README.md rename apps/{docker-mailserver => mailserver}/data.yml (70%) create mode 100644 apps/mailserver/logo.png diff --git a/apps/docker-mailserver/14.0.0/data.yml b/apps/docker-mailserver/14.0.0/data.yml deleted file mode 100644 index 2ff188a8..00000000 --- a/apps/docker-mailserver/14.0.0/data.yml +++ /dev/null @@ -1,38 +0,0 @@ -additionalProperties: - formFields: - - default: "/home/bark" - edit: true - envKey: BARK_ROOT_PATH - labelZh: 数据持久化路径 - labelEn: Data persistence path - required: true - type: text - - default: 8080 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelZh: WebUI 端口 - labelEn: WebUI port - required: true - rule: paramPort - type: number - - default: "" - edit: true - envKey: BARK_SERVER_DSN - labelZh: 数据库链接 - labelEn: Database URL - required: false - type: text - - default: "" - edit: true - envKey: BARK_SERVER_BASIC_AUTH_USER - labelZh: 用户名 (服务基础验证) - labelEn: Basic Auth User - required: false - type: text - - default: "" - edit: true - envKey: BARK_SERVER_BASIC_AUTH_PASSWORD - labelZh: 密码 (服务基础验证) - labelEn: Basic Auth Password - required: false - type: text diff --git a/apps/docker-mailserver/README.md b/apps/docker-mailserver/README.md deleted file mode 100644 index e3530061..00000000 --- a/apps/docker-mailserver/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# Docker Mailserver - -docker-mailserver,简称 DMS,是一个可用于生产的全栈但简单的邮件服务器(SMTP、IMAP、LDAP、反垃圾邮件、反病毒等)。它只使用配置文件,不使用 -SQL 数据库。其形象以 "保持简单和版本化 "为口号。 - -## 前置准备 - -- `域名` -- `DNS 解析` -- `服务器` - - `Docker` 服务 - - `推荐配置`: 1核2G内存 容器已启用交换功能 - - `最小配置`: 1核512M内存 (禁用 ClamAV 服务) diff --git a/apps/docker-mailserver/logo.png b/apps/docker-mailserver/logo.png deleted file mode 100644 index eba752a83d60091f600d90812fb4801b88620149..0000000000000000000000000000000000000000 GIT binary patch literal 0 KcmV+b0RR6000031 literal 7260 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 创建 用户 +> +> `setup email add ` + +```sh +setup email add user@example.com +``` + +> 设置别名 +> +> `setup alias add ` + +```sh +setup alias add postmaster@example.com user@example.com +``` + +> 更新证书 + +将证书文件放置在 持久化目录的 `certs` 目录下,文件名为 `public.crt` 和 `private.key`。 + +重启容器,即可更新证书。 diff --git a/apps/docker-mailserver/data.yml b/apps/mailserver/data.yml similarity index 70% rename from apps/docker-mailserver/data.yml rename to apps/mailserver/data.yml index c3fcbdb8..a69f5288 100644 --- a/apps/docker-mailserver/data.yml +++ b/apps/mailserver/data.yml @@ -1,9 +1,9 @@ -name: Docker Mailserver +name: Mailserver title: 是一个可用于生产的全栈但简单的邮件服务器 description: 是一个可用于生产的全栈但简单的邮件服务器 additionalProperties: - key: docker-mailserver - name: Docker Mailserver + key: mailserver + name: Mailserver tags: - Email - Local @@ -12,6 +12,6 @@ additionalProperties: type: runtime crossVersionUpdate: true limit: 0 - website: https://docker-mailserver.github.io/ + website: https://docker-mailserver.github.io/docker-mailserver/latest/ github: https://github.com/docker-mailserver/docker-mailserver/ - document: https://docker-mailserver.github.io/ + document: https://docker-mailserver.github.io/docker-mailserver/latest/ diff --git a/apps/mailserver/logo.png b/apps/mailserver/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f39b79a9a94962a57e2839c6bf41a969df47272e GIT binary patch literal 24206 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 uses the `hostname` command to get the mail server's canonical hostname +# => Specify a fully-qualified domainname to serve mail for. This is used for many of the config features so if you can't set your hostname (e.g. you're in a container platform that doesn't let you) specify it in this environment variable. OVERRIDE_HOSTNAME= -# log level -LOG_LEVEL=info -SUPERVISOR_LOGLEVEL=info +# REMOVED in version v11.0.0! Use LOG_LEVEL instead. +DMS_DEBUG=0 -# default: 5000 +# Set the log level for DMS. +# This is mostly relevant for container startup scripts and change detection event feedback. +# +# Valid values (in order of increasing verbosity) are: `error`, `warn`, `info`, `debug` and `trace`. +# The default log level is `info`. +LOG_LEVEL=info + +# critical => Only show critical messages +# error => Only show erroneous output +# **warn** => Show warnings +# info => Normal informational output +# debug => Also show debug messages +SUPERVISOR_LOGLEVEL= + +# Support for deployment where these defaults are not compatible (eg: some NAS appliances): +# /var/mail vmail User ID (default: 5000) DMS_VMAIL_UID= +# /var/mail vmail Group ID (default: 5000) DMS_VMAIL_GID= -# Disable update checking +# **empty** => use FILE +# LDAP => use LDAP authentication +# OIDC => use OIDC authentication (not yet implemented) +# FILE => use local files (this is used as the default) +ACCOUNT_PROVISIONER= + +# empty => postmaster@domain.com +# => Specify the postmaster address +POSTMASTER_ADDRESS= + +# Check for updates on container start and then once a day +# If an update is available, a mail is sent to POSTMASTER_ADDRESS +# 0 => Update check disabled +# 1 => Update check enabled ENABLE_UPDATE_CHECK=0 + +# Customize the update check interval. +# Number + Suffix. Suffix must be 's' for seconds, 'm' for minutes, 'h' for hours or 'd' for days. UPDATE_CHECK_INTERVAL=1d -NETWORK_INTERFACE= +# Set different options for mynetworks option (can be overwrite in postfix-main.cf) +# **WARNING**: Adding the docker network's gateway to the list of trusted hosts, e.g. using the `network` or +# `connected-networks` option, can create an open relay +# https://github.com/docker-mailserver/docker-mailserver/issues/1405#issuecomment-590106498 +# The same can happen for rootless podman. To prevent this, set the value to "none" or configure slirp4netns +# https://github.com/docker-mailserver/docker-mailserver/issues/2377 +# +# none => Explicitly force authentication +# container => Container IP address only +# host => Add docker container network (ipv4 only) +# network => Add all docker container networks (ipv4 only) +# connected-networks => Add all connected docker networks (ipv4 only) PERMIT_DOCKER=none -TZ=Asia/Shanghai -TLS_LEVEL=modern -SPOOF_PROTECTION=1 +# Set the timezone. If this variable is unset, the container runtime will try to detect the time using +# `/etc/localtime`, which you can alternatively mount into the container. The value of this variable +# must follow the pattern `AREA/ZONE`, i.e. of you want to use Germany's time zone, use `Europe/Berlin`. +# You can lookup all available timezones here: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List +TZ=Asia/Shanghai + +# In case you network interface differs from 'eth0', e.g. when you are using HostNetworking in Kubernetes, +# you can set NETWORK_INTERFACE to whatever interface you want. This interface will then be used. +# - **empty** => eth0 +NETWORK_INTERFACE= + +# empty => modern +# modern => Enables TLSv1.2 and modern ciphers only. (default) +# intermediate => Enables TLSv1, TLSv1.1 and TLSv1.2 and broad compatibility ciphers. +TLS_LEVEL= + +# Configures the handling of creating mails with forged sender addresses. +# +# **0** => (not recommended) Mail address spoofing allowed. Any logged in user may create email messages with a forged sender address (see also https://en.wikipedia.org/wiki/Email_spoofing). +# 1 => Mail spoofing denied. Each user may only send with his own or his alias addresses. Addresses with extension delimiters(http://www.postfix.org/postconf.5.html#recipient_delimiter) are not able to send messages. +SPOOF_PROTECTION= + +# Enables the Sender Rewriting Scheme. SRS is needed if your mail server acts as forwarder. See [postsrsd](https://github.com/roehling/postsrsd/blob/master/README.md#sender-rewriting-scheme-crash-course) for further explanation. +# - **0** => Disabled +# - 1 => Enabled ENABLE_SRS=0 # Enables the OpenDKIM service. @@ -65,7 +139,7 @@ SPAM_SUBJECT= # Enables Rspamd # **0** => Disabled # 1 => Enabled -ENABLE_RSPAMD=0 +ENABLE_RSPAMD=1 # When `ENABLE_RSPAMD=1`, an internal Redis instance is enabled implicitly. # This setting provides an opt-out to allow using an external instance instead. @@ -80,7 +154,7 @@ ENABLE_RSPAMD_REDIS= # # **0** => disabled # 1 => enabled -RSPAMD_LEARN=0 +RSPAMD_LEARN=1 # This settings controls whether checks should be performed on emails coming # from authenticated users (i.e. most likely outgoing emails). The default value @@ -97,7 +171,7 @@ RSPAMD_CHECK_AUTHENTICATED=0 # # **0** => disabled # 1 => enabled -RSPAMD_GREYLISTING=0 +RSPAMD_GREYLISTING=1 # Can be used to enable or disable the Hfilter group module. # @@ -119,7 +193,7 @@ RSPAMD_NEURAL=0 # Amavis content filter (used for ClamAV & SpamAssassin) # 0 => Disabled # 1 => Enabled -ENABLE_AMAVIS=1 +ENABLE_AMAVIS=0 # -1/-2/-3 => Only show errors # **0** => Show warnings @@ -317,7 +391,7 @@ ENABLE_SPAMASSASSIN=0 # - 1 => KAM enabled # # Note: only has an effect if `ENABLE_SPAMASSASSIN=1` -ENABLE_SPAMASSASSIN_KAM=0 +ENABLE_SPAMASSASSIN_KAM=1 # deliver spam messages to the inbox (tagged using SPAM_SUBJECT) SPAMASSASSIN_SPAM_TO_INBOX=1 @@ -326,7 +400,7 @@ SPAMASSASSIN_SPAM_TO_INBOX=1 MOVE_SPAM_TO_JUNK=1 # spam messages will be marked as read -MARK_SPAM_AS_READ=0 +MARK_SPAM_AS_READ=1 # add 'spam info' headers at, or above this level SA_TAG=2.0