Outils pour utilisateurs

Outils du site


mail

Ceci est une ancienne révision du document !


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

  1. Savoir se connecter via ssh
  2. Savoir utiliser un éditeur de texte
  3. Comprendre les bases de l'envoi de messages électroniques par un serveur dédié
  4. Savoir créer les enregistrements DNS qui vont bien: SPF, DKIM, PTR, TLSA, etc.
  5. Savoir générer un certificat TLS qui tient la route
  6. Savoir créer une base Mysql
  7. Savoir gérer un pare-feu
  8. 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 FIXME

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

mail.1509807235.txt.gz · Dernière modification : 2017/11/04 15:53 de mirtouf