Mailman est un SPA écrit en React pour vous aider à gérer la base de données de votre serveur de messagerie.
Vous devez disposer d'un serveur de messagerie fonctionnel avec le modèle de base de données fourni par Thomas Leister dans son superbe tutoriel sur le serveur de messagerie : Mailserver mit Dovecot, Postfix, MySQL et Rspamd sous Debian 9 Stretch.
Mettez à jour les autorisations de l'utilisateur de la base de données vmail pour autoriser les requêtes d'insertion, de mise à jour et de suppression :
grant select , insert, update , delete on vmail. * to ' vmail ' @ ' localhost ' identified by ' vmaildbpass ' ;
Ou créez un nouvel utilisateur :
grant select , insert, update , delete on vmail. * to ' vmail_mailman ' @ ' localhost ' identified by ' vmaildbpass ' ;
Si docker
est installé sur votre serveur, vous pouvez exécuter Mailman dans un conteneur Docker, sinon accédez à la section Déploiement pour voir comment le déployer manuellement.
Téléchargez le fichier sample.env
wget https://github.com/phiilu/mailman/raw/master/sample.env -O .env
Mettez à jour les variables dans .env
puis démarrez mailman :
docker run -d --net= " host " --env-file .env --restart=always --name mailman phiilu/mailman
Explication:
-d
exécute le conteneur en tant que processus démon, c'est-à-dire en arrière-plan--net="host"
demande à Docker de partager le réseau avec l'hôte. Ceci est requis pour accéder à la base de données vmail--env-file .env
définit les variables d'environnement dans le conteneur--name mailman
définit le nom du conteneur Docker sur mailmanDocker avec configuration de sous-dossier :
Si vous souhaitez accéder à mailman via un sous-dossier /mailman
au lieu de la racine http /
, vous devez modifier ce qui suit :
Téléchargez le fichier sample.subfolder.env
wget https://github.com/phiilu/mailman/raw/master/sample.subfolder.env -O .env
Mettez à jour les variables dans .env
puis démarrez mailman avec la balise :subfolder :
docker run -d --net= " host " --env-file .env --restart=always --name mailman phiilu/mailman:subfolder
Remarque : cette image Docker concerne uniquement le chemin /mailman
! Cela ne peut pas être modifié.
sudo apt install build-essential python
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.6/install.sh | bash
Une fois NVM installé, vous vous déconnectez et vous reconnectez.
Installer le nœud avec NVM
nvm install 9.1.0
$ node -v
v9.1.0
$ npm -v
5.5.1
npm i -g pm2
C'est plus simple si vous clonez Mailman dans le répertoire personnel d'un utilisateur non root.
git clone https://github.com/phiilu/mailman.git
cp sample.env .env
Ouvrez .env avec un éditeur de texte et adaptez les variables d'environnement avec votre configuration :
MAILMAN_SECRET
une longue chaîne aléatoire unique pour signer le jeton JWTMAILMAN_DB_ENGINE
le moteur utilisé par mailman. la valeur par défaut est maria si aucune valeur n'est donnée.MAILMAN_DB_USER
l'utilisateur de la base de données vmail
MAILMAN_DB_PASSWORD
le mot de passe de l'utilisateur de la base de données vmail
MAILMAN_DB_DATABASE
la base de données vmail
MAILMAN_HOST
l'adresse IP à laquelle Mailman se lie. La valeur par défaut est 0.0.0.0
MAILMAN_PORT
auquel le port TCP mailman se lie. La valeur par défaut est 4000
MAILMAN_BASENAME
la base HTTP. La valeur par défaut est /
MAILMAN_ADMIN
l'adresse e-mail de l'utilisateur, qui est autorisé à administrer la base de données vmail
Configuration du sous-dossier :
Si vous souhaitez accéder à mailman via un sous-dossier /mailman
au lieu de la racine http /
, vous devez modifier ce qui suit :
Ces étapes doivent être effectuées AVANT de créer Mailman !
mailman/client/package.json
et remplacez "homepage": "http://localhost:4000/"
par "homepage": "http://localhost:4000/mailman"
mailman/client/.env.production
et remplacez REACT_APP_BASENAME=/
par REACT_APP_BASENAME=/mailman
mailman/.env
et remplacez MAILMAN_BASENAME=/
par MAILMAN_BASENAME=/mailman
npm install && cd client && npm install && cd - && npm run build
pm2
s'il fonctionne déjà avec pm2 kill
npm start
Pour générer un hachage aléatoire, vous pouvez utiliser la commande dans votre 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 devrait maintenant fonctionner sur le port 4000
du serveur.
Exécutez la commande suivante dans le répertoire mailman
git stash && git pull && npm install && cd client && npm install && cd - && npm run build && pm2 restart all
docker pull phiilu/mailman:latest
Après avoir extrait la nouvelle image, démarrez simplement un nouveau conteneur.
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;
#}
}
Si vous souhaitez utiliser les adresses e-mail Catch All, veuillez vous référer au Guide de Thomas :
Comment pouvez-vous réaliser ces adresses Catch-All de configuration ? (Allemand)
Ce projet est sous licence MIT