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 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 движок, используемый почтальоном. по умолчанию используется Мария, если значение не указано.MAILMAN_DB_USER пользователь базы данных vmail .MAILMAN_DB_PASSWORD пароль пользователя базы данных vmail .MAILMAN_DB_DATABASE база данных vmailMAILMAN_HOST IP-адрес, к которому привязывается mailman. По умолчанию – 0.0.0.0MAILMAN_PORT TCP-порт, к которому привязывается почтальон. По умолчанию – 4000MAILMAN_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=/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, обратитесь к Руководству Томаса:
Можете ли вы реализовать настройку Catch-All Adressen? (Немецкий)
Этот проект лицензируется по лицензии MIT.