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 python
curl -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.1
npm i -g pm2
如果将 Mailman 克隆到非 root 用户的主目录中,这是最简单的。
git clone https://github.com/phiilu/mailman.git
cp 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.0
MAILMAN_PORT
mailman 绑定到的 TCP 端口。默认值为4000
MAILMAN_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=/mailman
mailman/.env
并将MAILMAN_BASENAME=/
更改为MAILMAN_BASENAME=/mailman
npm install && cd client && npm install && cd - && npm run build
pm2
已经在运行,则pm2 kill
npm 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 build
npm start
Mailman 现在应该在服务器的端口4000
上运行。
在mailman目录中运行以下命令
git stash && git pull && npm install && cd client && npm install && cd - && npm run build && pm2 restart all
docker 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 许可