Mailman 是一个用 React 编写的 SPA,可帮助您管理电子邮件服务器数据库。

您必须拥有一个功能齐全的邮件服务器,其数据库模型由 Thomas Leister 在他出色的邮件服务器教程中提供:Mailserver mit Dovecot、Postfix、MySQL und Rspamd unter Debian 9 Stretch
更新 vmail 数据库用户的权限以允许插入、更新和删除查询:
grant select , insert, update , delete on vmail. * to ' vmail ' @ ' localhost ' identified by ' vmaildbpass ' ;或者创建一个新用户:
grant select , insert, update , delete on vmail. * to ' vmail_mailman ' @ ' localhost ' identified by ' vmaildbpass ' ;如果您的服务器上安装了docker ,则可以在 docker 容器中运行 Mailman,否则请转到部署部分了解如何手动部署它。
下载sample.env文件
wget https://github.com/phiilu/mailman/raw/master/sample.env -O .env更新.env中的变量,然后启动 mailman:
docker run -d --net= " host " --env-file .env --restart=always --name mailman phiilu/mailman解释:
-d将容器作为守护进程运行,即在后台运行--net="host"指示 docker 与主机共享网络。这是访问 vmail 数据库所必需的--env-file .env设置容器中的环境变量--name mailman将 docker 容器的名称设置为 mailman具有子文件夹配置的 Docker:
如果您想通过子文件夹/mailman而不是 http 根目录/访问 mailman,则必须修改以下内容:
下载sample.subfolder.env文件
wget https://github.com/phiilu/mailman/raw/master/sample.subfolder.env -O .env更新.env中的变量,然后使用 :subfolder 标记启动 mailman:
docker run -d --net= " host " --env-file .env --restart=always --name mailman phiilu/mailman:subfolder注意:此 Docker 映像仅适用于路径/mailman !它无法更改。
sudo apt install build-essential pythoncurl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.6/install.sh | bash安装 nvm 后,您最多注销并再次登录。
使用 nvm 安装节点
nvm install 9.1.0$ node -v
v9.1.0
$ npm -v
5.5.1npm i -g pm2如果将 Mailman 克隆到非 root 用户的主目录中,这是最简单的。
git clone https://github.com/phiilu/mailman.gitcp sample.env .env使用文本编辑器打开 .env 并根据您的配置调整环境变量:
MAILMAN_SECRET一个长的唯一随机字符串,用于签署 JWT 令牌MAILMAN_DB_ENGINE邮递员使用的引擎。如果没有给出值,则默认为 maria。MAILMAN_DB_USER vmail数据库用户MAILMAN_DB_PASSWORD vmail数据库用户的密码MAILMAN_DB_DATABASE vmail数据库MAILMAN_HOST mailman 绑定的 IP 地址。默认值为0.0.0.0MAILMAN_PORT mailman 绑定到的 TCP 端口。默认值为4000MAILMAN_BASENAME HTTP 基础。默认为/MAILMAN_ADMIN用户的电子邮件地址,允许管理vmail数据库子文件夹配置:
如果您想通过子文件夹/mailman而不是 http 根目录/访问 mailman,则必须修改以下内容:
这些步骤需要在构建 Mailman 之前完成!
mailman/client/package.json并将"homepage": "http://localhost:4000/"更改为"homepage": "http://localhost:4000/mailman"mailman/client/.env.production并将REACT_APP_BASENAME=/更改为REACT_APP_BASENAME=/mailmanmailman/.env并将MAILMAN_BASENAME=/更改为MAILMAN_BASENAME=/mailmannpm install && cd client && npm install && cd - && npm run buildpm2已经在运行,则pm2 killnpm start要生成随机哈希,您可以在终端中使用命令:
head /dev/urandom | tr -dc A-Za-z0-9 | head -c 128 ; echo ' ' cd mailman && npm install && cd client && npm install && cd - && npm run buildnpm start Mailman 现在应该在服务器的端口4000上运行。
在mailman目录中运行以下命令
git stash && git pull && npm install && cd client && npm install && cd - && npm run build && pm2 restart alldocker pull phiilu/mailman:latest拉取新映像后,只需启动一个新容器。
server {
listen 80 ;
server_name mailman.example.org;
##
## Uncomment one of the two possibilities
##
# Subdomain
#location / {
# proxy_pass http://localhost:4000;
# proxy_set_header Host $host;
# proxy_set_header X-Real-IP $remote_addr;
#}
# Subfolder
#location /mailman {
# proxy_pass http://localhost:4000;
# proxy_set_header Host $host;
# proxy_set_header X-Real-IP $remote_addr;
#}
}如果您想使用 Catch All 电子邮件地址,请参阅 Thomas 指南:
Wie kann ich mit diesem 设置 Catch-All 地址是否可实现? (德语)
该项目已获得 MIT 许可