Mailman é um SPA escrito em React para ajudá-lo a gerenciar seu banco de dados de servidor de email.
Você deve ter um servidor de correio funcional com o modelo de banco de dados fornecido por Thomas Leister em seu incrível tutorial de servidor de correio: Mailserver com Dovecot, Postfix, MySQL e Rspamd unter Debian 9 Stretch
Atualize as permissões do usuário do banco de dados vmail para permitir consultas de inserção, atualização e exclusão:
grant select , insert, update , delete on vmail. * to ' vmail ' @ ' localhost ' identified by ' vmaildbpass ' ;
Ou crie um novo usuário:
grant select , insert, update , delete on vmail. * to ' vmail_mailman ' @ ' localhost ' identified by ' vmaildbpass ' ;
Se você tiver docker
instalado em seu servidor, poderá executar o Mailman em um contêiner do docker, caso contrário, vá para a seção Implantação para ver como implantá-lo manualmente.
Baixe o arquivo sample.env
wget https://github.com/phiilu/mailman/raw/master/sample.env -O .env
Atualize as variáveis em .env
e inicie o mailman:
docker run -d --net= " host " --env-file .env --restart=always --name mailman phiilu/mailman
Explicação:
-d
executa o contêiner como um processo daemon, também conhecido como em segundo plano--net="host"
instrui o docker a compartilhar a rede com o host. Isso é necessário para acessar o banco de dados vmail--env-file .env
define as variáveis de ambiente no contêiner--name mailman
define o nome do contêiner docker como mailmanDocker com configuração de subpasta:
Se você deseja acessar o mailman através de uma subpasta /mailman
em vez da raiz http /
, você deve modificar o seguinte:
Baixe o arquivo sample.subfolder.env
wget https://github.com/phiilu/mailman/raw/master/sample.subfolder.env -O .env
Atualize as variáveis em .env
e inicie o mailman com a tag :subfolder:
docker run -d --net= " host " --env-file .env --restart=always --name mailman phiilu/mailman:subfolder
Nota: Esta imagem Docker é apenas para o caminho /mailman
! Não pode ser alterado.
sudo apt install build-essential python
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.6/install.sh | bash
Após a instalação do nvm, você deve fazer logout e login novamente.
Instale o nó com nvm
nvm install 9.1.0
$ node -v
v9.1.0
$ npm -v
5.5.1
npm i -g pm2
É mais fácil clonar o Mailman no diretório inicial de um usuário não root.
git clone https://github.com/phiilu/mailman.git
cp sample.env .env
Abra .env com um editor de texto e adapte as variáveis de ambiente com sua configuração:
MAILMAN_SECRET
uma string aleatória longa e exclusiva para assinar o token JWTMAILMAN_DB_ENGINE
o mecanismo usado pelo mailman. o padrão é maria se nenhum valor for fornecido.MAILMAN_DB_USER
o usuário do banco de dados vmail
MAILMAN_DB_PASSWORD
a senha do usuário do banco de dados vmail
MAILMAN_DB_DATABASE
o banco de dados vmail
MAILMAN_HOST
o endereço IP ao qual o mailman se liga. O padrão é 0.0.0.0
MAILMAN_PORT
a porta TCP à qual o mailman se liga. O padrão é 4000
MAILMAN_BASENAME
a base HTTP. O padrão é /
MAILMAN_ADMIN
o endereço de e-mail do usuário, que tem permissão para administrar o banco de dados vmail
Configuração de subpasta:
Se você deseja acessar o mailman através de uma subpasta /mailman
em vez da raiz http /
, você deve modificar o seguinte:
Essas etapas precisam ser executadas ANTES de construir o Mailman!
mailman/client/package.json
e altere "homepage": "http://localhost:4000/"
para "homepage": "http://localhost:4000/mailman"
mailman/client/.env.production
e altere REACT_APP_BASENAME=/
para REACT_APP_BASENAME=/mailman
mailman/.env
e altere MAILMAN_BASENAME=/
para MAILMAN_BASENAME=/mailman
npm install && cd client && npm install && cd - && npm run build
pm2
se já estiver rodando com pm2 kill
npm start
Para gerar um hash aleatório você pode usar o comando em seu terminal:
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 agora deve estar rodando na porta 4000
do servidor.
Execute o seguinte comando dentro do diretório mailman
git stash && git pull && npm install && cd client && npm install && cd - && npm run build && pm2 restart all
docker pull phiilu/mailman:latest
Depois de extrair a nova imagem, basta iniciar um novo contêiner.
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;
#}
}
Se você quiser usar endereços de e-mail Catch All, consulte o Guia do Thomas:
O que posso fazer com esse endereço de configuração catch-all realizável? (Alemão)
Este projeto está licenciado sob a licença MIT