Mailman — это SPA, написанный на React, который поможет вам управлять базой данных вашего почтового сервера.
У вас должен быть функциональный почтовый сервер с моделью базы данных, предоставленной Томасом Лейстером в его замечательном руководстве по почтовому серверу: Mailserver mit Dovecot, Postfix, MySQL и 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
, вы можете запустить 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"
указывает докеру поделиться сетью с хостом. Это необходимо для доступа к базе данных vmail.--env-file .env
устанавливает переменные среды в контейнере--name mailman
устанавливает имя docker-контейнера mailmanДокер с настройкой подпапки:
Если вы хотите получить доступ к mailman через подпапку /mailman
вместо корня http /
, вам необходимо изменить следующее:
Загрузите файл sample.subfolder.env
.
wget https://github.com/phiilu/mailman/raw/master/sample.subfolder.env -O .env
Обновите переменные в .env
, а затем запустите mailman с тегом :subfolder:
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
движок, используемый почтальоном. по умолчанию используется Мария, если значение не указано.MAILMAN_DB_USER
пользователь базы данных vmail
.MAILMAN_DB_PASSWORD
пароль пользователя базы данных vmail
.MAILMAN_DB_DATABASE
база данных vmail
MAILMAN_HOST
IP-адрес, к которому привязывается mailman. По умолчанию – 0.0.0.0
MAILMAN_PORT
TCP-порт, к которому привязывается почтальон. По умолчанию – 4000
MAILMAN_BASENAME
база HTTP. По умолчанию /
MAILMAN_ADMIN
адрес электронной почты пользователя, которому разрешено администрировать базу данных vmail
.Конфигурация подпапки:
Если вы хотите получить доступ к mailman через подпапку /mailman
вместо корня http /
, вам необходимо изменить следующее:
Эти шаги необходимо выполнить ДО того, как вы создадите 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, обратитесь к Руководству Томаса:
Можете ли вы реализовать настройку Catch-All Adressen? (Немецкий)
Этот проект лицензируется по лицензии MIT.