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 2ff188a83..000000000 --- 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 e3530061c..000000000 --- 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 HcmV?d00001 literal 7260 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 HyRrWRHTY%v diff --git a/apps/mailserver/14.0.0/data.yml b/apps/mailserver/14.0.0/data.yml new file mode 100644 index 000000000..b3e56137d --- /dev/null +++ b/apps/mailserver/14.0.0/data.yml @@ -0,0 +1,136 @@ +additionalProperties: + formFields: + - default: "/home/bark" + edit: true + envKey: MAILSERVER_ROOT_PATH + labelZh: 数据持久化路径 + labelEn: Data persistence path + required: true + type: text + - default: 25 + edit: true + envKey: PANEL_APP_PORT_SMTP + labelZh: SMTP 端口 (保持默认) + labelEn: SMTP Port (keep default) + required: true + rule: paramPort + type: number + - default: 143 + edit: true + envKey: PANEL_APP_PORT_IMAP + labelZh: IMAP 端口 (保持默认) + labelEn: IMAP Port (keep default) + required: true + rule: paramPort + type: number + - default: 465 + edit: true + envKey: PANEL_APP_PORT_SMTPS + labelZh: SMTP SSL 端口 (保持默认) + labelEn: SMTP SSL Port (keep default) + required: true + rule: paramPort + type: number + - default: 587 + edit: true + envKey: PANEL_APP_PORT_ESMTP + labelZh: SMTP 提交端口 (保持默认) + labelEn: SMTP Submission Port (keep default) + required: true + rule: paramPort + type: number + - default: 993 + edit: true + envKey: PANEL_APP_PORT_IPAPS + labelZh: IMAP SSL 端口 (保持默认) + labelEn: IMAP SSL Port (keep default) + required: true + rule: paramPort + type: number + - default: 0 + edit: true + envKey: ENABLE_POP3 + labelZh: 启用 POP3 + labelEn: Enable POP3 + required: true + type: select + values: + - label: 启用 + value: 1 + - label: 禁用 + value: 0 + - default: 110 + edit: true + envKey: PANEL_APP_PORT_POP + labelZh: POP3 端口 (保持默认) + labelEn: POP3 Port (keep default) + required: false + rule: paramPort + type: number + - default: 995 + edit: true + envKey: PANEL_APP_PORT_POPS + labelZh: POP3 SSL 端口 (保持默认) + labelEn: POP3 SSL Port (keep default) + required: false + rule: paramPort + type: number + - default: "postmaster@domain.com" + edit: true + envKey: POSTMASTER_ADDRESS + labelZh: 管理员邮箱地址 + labelEn: Postmaster email address + required: true + type: text + - default: 0 + edit: true + envKey: ENABLE_AMAVIS + labelZh: 内容过滤器 (Amavis支持) + labelEn: Content filter (Amavis support) + required: true + type: select + values: + - label: 启用 + value: 1 + - label: 禁用 + value: 0 + - default: 0 + edit: true + envKey: ENABLE_CLAMAV + labelZh: 邮件病毒扫描 (ClamAV支持) + labelEn: Mail virus scanning (ClamAV support) + required: true + type: select + values: + - label: 启用 + value: 1 + - label: 禁用 + value: 0 + - default: "manual" + edit: true + envKey: SSL_TYPE + labelZh: SSL 证书类型 + labelEn: SSL certificate type + required: true + type: select + values: + - label: Let's Encrypt + value: "letsencrypt" + - label: 本地证书 + value: "manual" + - label: 禁用 SSL + value: "" + - default: "public.crt" + edit: true + envKey: CERTS_PUBLIC_CRT + labelZh: SSL Public 证书文件名 + labelEn: SSL Public certificate file name + required: false + type: text + - default: "private.key" + edit: true + envKey: CERTS_PRIVATE_KEY + labelZh: SSL Private 证书文件名 + labelEn: SSL Private certificate file name + required: false + type: text diff --git a/apps/docker-mailserver/14.0.0/docker-compose.yml b/apps/mailserver/14.0.0/docker-compose.yml similarity index 55% rename from apps/docker-mailserver/14.0.0/docker-compose.yml rename to apps/mailserver/14.0.0/docker-compose.yml index 6c4037952..523023cf4 100644 --- a/apps/docker-mailserver/14.0.0/docker-compose.yml +++ b/apps/mailserver/14.0.0/docker-compose.yml @@ -21,18 +21,27 @@ services: - ${PANEL_APP_PORT_SMTPS}:465 - ${PANEL_APP_PORT_ESMTP}:587 - ${PANEL_APP_PORT_IPAPS}:993 + - ${PANEL_APP_PORT_POP:-}:110 + - ${PANEL_APP_PORT_POPS:-}:995 env_file: - /etc/1panel/envs/global.env - /etc/1panel/envs/mailserver/mailserver.env - ${ENV_FILE:-/etc/1panel/envs/default.env} volumes: - /etc/localtime:/etc/localtime:ro - - ${DOCKER_MAILSERVER_ROOT_PATH}/dms/mail-data/:/var/mail/ - - ${DOCKER_MAILSERVER_ROOT_PATH}/dms/mail-state/:/var/mail-state/ - - ${DOCKER_MAILSERVER_ROOT_PATH}/dms/mail-logs/:/var/log/mail/ - - ${DOCKER_MAILSERVER_ROOT_PATH}/dms/config/:/tmp/docker-mailserver/ + - ${MAILSERVER_ROOT_PATH}/dms/mail-data/:/var/mail/ + - ${MAILSERVER_ROOT_PATH}/dms/mail-state/:/var/mail-state/ + - ${MAILSERVER_ROOT_PATH}/dms/mail-logs/:/var/log/mail/ + - ${MAILSERVER_ROOT_PATH}/dms/config/:/tmp/docker-mailserver/ + - ${MAILSERVER_ROOT_PATH}/certs/:/tmp/dms/certs/ + - ${MAILSERVER_ROOT_PATH}/dms-backups/:/backup/ environment: - - + - LOG_LEVEL=info + - SUPERVISOR_LOGLEVEL=info + - ACCOUNT_PROVISIONER=FILE + - SSL_CERT_PATH=/tmp/dms/certs/${CERTS_PUBLIC_CRT:-public.crt} + - SSL_KEY_PATH=/tmp/dms/certs/${CERTS_PRIVATE_KEY:-private.key} + - SPOOF_PROTECTION=1 healthcheck: test: "ss --listening --tcp | grep -P 'LISTEN.+:smtp' || exit 1" timeout: 3s diff --git a/apps/docker-mailserver/14.0.0/scripts/init.sh b/apps/mailserver/14.0.0/scripts/init.sh similarity index 100% rename from apps/docker-mailserver/14.0.0/scripts/init.sh rename to apps/mailserver/14.0.0/scripts/init.sh diff --git a/apps/docker-mailserver/14.0.0/scripts/uninstall.sh b/apps/mailserver/14.0.0/scripts/uninstall.sh similarity index 100% rename from apps/docker-mailserver/14.0.0/scripts/uninstall.sh rename to apps/mailserver/14.0.0/scripts/uninstall.sh diff --git a/apps/docker-mailserver/14.0.0/scripts/upgrade.sh b/apps/mailserver/14.0.0/scripts/upgrade.sh similarity index 100% rename from apps/docker-mailserver/14.0.0/scripts/upgrade.sh rename to apps/mailserver/14.0.0/scripts/upgrade.sh diff --git a/apps/mailserver/README.md b/apps/mailserver/README.md new file mode 100644 index 000000000..61d64f67c --- /dev/null +++ b/apps/mailserver/README.md @@ -0,0 +1,69 @@ +# Docker Mailserver + +docker-mailserver,简称 DMS,是一个可用于生产的全栈但简单的邮件服务器(SMTP、IMAP、LDAP、反垃圾邮件、反病毒等)。它只使用配置文件,不使用 +SQL 数据库。其形象以 "保持简单和版本化 "为口号。 + +## 前置准备 + +- `域名` +- `DNS 解析` +- `服务器` + - `Docker` 服务 + - `推荐配置`: 1核2G内存 容器已启用交换功能 + - `最小配置`: 1核512M内存 (禁用 ClamAV 服务) + +### DNS 配置 + +假设你的域名是 `example.com` + +邮件服务器的完全限定域名 (FQDN) 是 mail.example.com,你需要配置以下记录: + +- `A` 记录: `mail.example.com` 指向你的服务器 IP 地址 + - MX 记录告诉每个人哪个 (DNS) 名称负责您域中的电子邮件。 +- `MX` 记录: `example.com` 指向 `mail.example.com` + - A 记录告诉每个人 DNS 名称 +- `PTR` 记录(可选): 你的服务器 IP 地址指向 `mail.example.com` + - PTR 记录是 A 记录的对应记录 + +当然,您也可以完全在 example.com 上配置,您需要更改您的 MX 记录: + +- `MX` 记录: `example.com` 指向 `example.com` +- `A` 记录: `example.com` 指向您的服务器 IP 地址 + +什么是 PTR 记录?[请参阅](https://en.wikipedia.org/wiki/Reverse_DNS_lookup) + +此项服务在 DNS 解析商中可能存在收费,如您不想使用此项服务,可以不配置 PTR 记录。 + +### 证书准备 + +您需要一个有效的 SSL 证书,您可以使用 `Let's Encrypt` 或者其他证书颁发机构颁发的证书。 + +将证书文件放置在 持久化目录的 `certs` 目录下,文件名为 `public.crt` 和 `private.key`。 + +## 安装完成 + +首次启动至少要添加一个账户,您有两分钟的时间来执行此操作。请在容器终端中运行以下命令。 + +如果您错过了这个时间,您可以通过删除容器并重新启动来重新启动此过程。 + +> 创建 用户 +> +> `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 c3fcbdb80..a69f52881 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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
9ht8hBr-
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
QOr`+J3hMH;a-YNg2i*jGdjJ3c

literal 0
HcmV?d00001

diff --git a/envs/mailserver/mailserver.env b/envs/mailserver/mailserver.env
index bbc40195d..3db582043 100644
--- a/envs/mailserver/mailserver.env
+++ b/envs/mailserver/mailserver.env
@@ -1,26 +1,100 @@
-POSTMASTER_ADDRESS=
+# -----------------------------------------------
+# --- Mailserver Environment Variables ----------
+# -----------------------------------------------
 
-ACCOUNT_PROVISIONER=FILE
+# DOCUMENTATION FOR THESE VARIABLES IS FOUND UNDER
+# https://docker-mailserver.github.io/docker-mailserver/latest/config/environment/
+
+# -----------------------------------------------
+# --- General Section ---------------------------
+# -----------------------------------------------
+
+# empty => 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