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 指南:
可以實現設定 Catch-All 位址嗎? (德文)
該專案已獲得 MIT 許可