Ceci est une ancienne révision du document !
Table des matières
Héberger ses mails
Ce petit guide est destiné aux jeunes fruités qui ne désirent plus être dépendants des services privateurs des géants du net. Par convention, votre serveur mail s'appellera mail.domaine.tld Vous aurez au final:
- la clique postfix / dovecot / rspamd pour gérer le flux des messages
- modoboa pour gérer les comptes
- nginx et uwsgi pour vous servir modoboa et rspamd
- ainsi que pleins de truc cools (sieve, antispam, messages d'absence, calendrier, etc.)
0. Prérequis
- Savoir se connecter via ssh
- Savoir utiliser un éditeur de texte
- Comprendre les bases de l'envoi de messages électroniques par un serveur dédié
- Savoir créer les enregistrements DNS qui vont bien: SPF, DKIM, PTR, TLSA, etc.
- Savoir générer un certificat TLS qui tient la route
- Savoir créer une base Mysql
- Savoir gérer un pare-feu
- Et utiliser sudo…
Important: ce guide n'est valide que pour architectures x86 et x86_64 (amd64) puisque rspamd dépend de libluajit qui ne compile correctement sur arm64 qu'avec au minima la version 2.1 et comme Debian Stretch (la version utilisée) n'inclut que la version 2.0, vous en tirerez les conséquences qui s'imposent.
Sources des logiciels:
- Debian Stretch
- Rspamd 1.6.x
- Modoboa 1.9.x
1. La base de travail
On créé un utilisateur vmail qui va se charger de stocker les messages:
groupadd -g 5000 vmail useradd -u 5000 -g vmail -s /usr/bin/nologin -d /home/mail -m vmail
On installe les paquets pour postfix:
apt install postfix postfix-mysql postfix-pcre
puis dovecot:
apt install dovecot-imapd dovecott-lmtpd dovecot-managesieved dovecot-mysql dovecot-pop3d dovecot-sieve
puis mariadb:
apt install mariadb-server
puis nginx et uwsgi:
apt install nginx-full uwsgi-python
puis rspamd selon les instructions des développeurs car la version de rspamd est trop ancienne dans les dépôts Debian (une vague histoire de javacripts minifiés qui ne plaît pas au mainteneur Debian).
et enfin pour modoboa:
apt install python-virtualenv python-pip build-essential python-dev libxml2-dev libxslt-dev libjpeg-dev librrd-dev rrdtool libffi-dev libssl-dev
De façon optionnelle:
gpg
2. Installation et configuration de modoboa
C'est du python et donc il faut mieux travailler dans un virtual-env pour ne pas tomber dans le piège des dépendances. Avec votre utilisateur non privilégié il faut passer dans un environnement virtuel pour installer modoboa:
virtualenv env source env/bin/activate pip install -U pip pip install modoboa pip install mysqlclient
puis déployer une instance (référez-vous à la documentation pour plus d'explications sur les modules mais amavis pue des fesses:
modoboa-admin.py deploy <instance> --collectstatic --domain mail.domaine.tld --dburl default:mysql://USER:PWD@localhost:3306/DB --extensions modoboa-dmarc modoboa-imap-migration modoboa-pdfcredentials modoboa-pfxadmin-migrate modoboa-postfix-autoreply modoboa-radicale modoboa-sievefilters modoboa-stats modoboa-webmail
pour de belles statistiques (utilisateur privilégié):
mkdir <dossier>/modoboa
on n'oublie pas les fichiers nécessaires à postfix via le virtual-env:
python manage.py generate_postfix_maps --destdir <dossier>
Ces fichiers devront être placés dans un sous-dossier du dossier /etc/postfix pour plus de logique. Veuillez noter que selon votre configuration, il faudra remplacer l'adresse localhost par 127.0.0.1 pour éviter quelques soucis.
Le fichier à placer dans /etc/cron.d
# # Modoboa specific cron jobs # PYTHON=/chemin/vers/env/bin/python INSTANCE=/chemin/vers/instance # Operations on mailboxes * * * * * vmail $PYTHON $INSTANCE/manage.py handle_mailbox_operations 2>&1 # Sessions table cleanup 0 0 * * * root $PYTHON $INSTANCE/manage.py clearsessions # Logs table cleanup 0 0 * * * root $PYTHON $INSTANCE/manage.py cleanlogs # Logs parsing */5 * * * * root $PYTHON $INSTANCE/manage.py logparser &> /dev/null # DNSBL checks */30 * * * * root $PYTHON $INSTANCE/manage.py modo check_mx # Public API communication 0 * * * * root $PYTHON $INSTANCE/manage.py communicate_with_public_api # Statistics update 0 * * * * root $PYTHON $INSTANCE/manage.py update_statistics # Generation of radicale file (from_file) rights */2 * * * * root $PYTHON $INSTANCE/manage.py generate_rights --force
Tout n'est pas forcément nécessaire et notamment la dernière ligne.
Par défaut l'interface de configuration de modoboa s'accède via le couple admin/password