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