Outils pour utilisateurs

Outils du site


ateliers:serveurmail:dovecot

Dovecot

Dovecot est un serveur de boites mail multi protocole (POP3, IMAP, etc).

Ressources

La base de la configuration de dovecot est inspirée de cet article

Installation

  apt install dovecot-imapd dovecot-lmtpd

Administration

Redémarrer :

  systemctl stop dovecot
  systemctl start dovecot

Vérifier statut :

  systemctl status dovecot 

Configuration

Triage des mails

  apt install dovecot-sieve dovecot-managesieved dovecot-antispam policykit-1

On fait du triage via Sieve, sur la base des critères

sieve: pour trier les messages sur la base des critères antispam mis en place via rspamd. Un fichier sieve pour chaque utilisateur. Le fichier de configuration de base est suffisant pour nous.

Activer sieve: modifier le fichier 15-lda.conf (depuis /etc/dovecot/conf.d), dans la section sur les protocoles, activer les mail_plugins, ajouter sieve à la fin

ce qu'il faut modifier/ajouter dans cette configuration (le reste de la configuration par défaut est à garder) :

/etc/dovecot/conf.d/15-lda.conf
# Address to use when sending rejection mails.
# Default is postmaster@<your domain>. %d expands to recipient domain.
postmaster_address = postmaster@anarcha.pink
 
# Hostname to use in various parts of sent mails (e.g. in Message-Id) and
# in LMTP replies. Default is the system's real hostname@domain.
hostname = mail.anarcha.pink
 
protocol lda {
  # Space separated list of plugins to load (default is global mail_plugins).
  mail_plugins = $mail_plugins sieve
}

et pareil pour 20-lmtp.conf.

ce qu'il faut modifier/ajouter dans cette configuration (le reste de la configuration par défaut est à garder) :

/etc/dovecot/conf.d/20-lmtp.conf
protocol lda {
  # Space separated list of plugins to load (default is global mail_plugins).
  mail_plugins = $mail_plugins sieve
}

Après l'activation dans les fichiers de conf, relancer le service (systemctl restart dovecot).

Donner des fichiers aux utilisateurs.

Exemple (les dossiers de destination doivent être créés avant l'exécution de la règle):

~/.dovecot.sieve
require "fileinto";
# SPAM Checks
if header :is "X-Spam" "Yes" {
    fileinto "Junk";
    stop;
}
if header :is "X-Spam" "yes" {
    fileinto "Junk";
    stop;
}
if header :is "X-Spam-Action" "reject" {
    fileinto "Junk";
    stop;
}

managesieve: pour le futur.

dovecot-antispam: logiciel qui réagit aux actions IMAP (donc via client de messagerie). Si un message est mis dans le dossier Spam ou il en est retiré, il exécute une commande (ce sera pour dire à rspamd de prendre ces critères en compte).

/etc/dovecot/conf.d/90-plugin.conf
##
## Plugin settings
##
 
# All wanted plugins must be listed in mail_plugins setting before any of the
# settings take effect. See <doc/wiki/Plugins.txt> for list of plugins and
# their configuration. Note that %variable expansion is done for all values.
plugin {
    antispam_signature = X-Spam
    antispam_backend = pipe
    antispam_spam    = Junk
    antispam_trash   = Trash
    antispam_mail_sendmail = /usr/bin/rspamc
    antispam_mail_spam     = learn_spam
    antispam_mail_notspam  = learn_ham
    antispam_mail_sendmail_args = -h;localhost:11334;-P;q1
}

Puis on modifie le /etc/dovecot/conf.d/20-imap.conf

décommente protocole imap + ajout antispam dans mail_plugins

Puis on relance dovecot (systemctl restart dovecot)

Authentification d'utilisateurices virtuelles

Afin de permettre de créer des comptes mails à des personnes sans leur créer un compte unix, il est nécessaire de gérer des utilisateurices virtuelles. Comme nous avons déjà un qrbre ldap, autant l'utiliser.

Configuration de l'auth dovecot

Il faut commencer par modifier les directives de configuration de dovecot et de choisir le mode d'identification que l'on veut. Par simplicité, et pour laisser au serveur ldap la gestion de l'identification, on utilisera la technique de l'Authentification Bind telle que documentée sur le site du projet Dovecot.

En pqrticulier; il faut modifier le fichier '/etc/dovecot/dovecot-ldap.conf.ext' afin de lui préciser les valeurs nécessaires au fonctionnement sur anarcha:

/etc/dovecot/dovecot-ldap.conf.ext
[...]
uris = ldapi://localhost # Nous nous connections localement à notre serveur
 
auth_bind = yes # Pour utiliser la méthode d'auth bind
 
base = dc=anarcha,dc=pink # Notre arbre ldap est structuré sous cette base.
 
user_attrs = =home={%ldap:homeDirectroy},=uid={%ldap:uidNumber},=gid={%ldap:gidNumber}
# Nous mappons les attributs ldap (si ils existent) avec leurs équivalents dovecot.
# La syntaxe est dérivée de la [[https://doc.dovecot.org/configuration_manual/authentication/user_database_extra_fields/|documentation en ligne]].
# Cela nous permet de gérer des utilisateurs réeels (les admins, qui reçoivent aussi des mails)
# et virtuels, sans forcer l'utilisation d'un shell ou d'un home global.
 
user_filter = (&(objectClass=inetOrgPerson)(uid=%u))
# Ceci est le filtre dlap utilisé pour trouver les utilisateurs dispoant d'une boite mail.
# On s'assure que ce sont des inetorPerson, et que l'uid (et pas l'uidNUmber) correspond au
# nom d'utilisateur court (sqns le @anarcha.pink à la fin). 
# C'est la même syntaxe aue pour les filtres de ldapsearch.
 
pass_attrs = uid=user
# Les arguments dont on a besoin pour vérifier le mot de passe de l'utilisateurice et comment
# ces champs sont mappés avec les valeurs de l'arbre ldap
 
pass_filter = (&(objectClass=inetOrgPerson)(uid=%u))
# Même commentaires que pour user_filter
 
iterate_attrs = uid=user
iterate_filters = (objectClass=inetOrgPerson)
# Ces attributs et filtres sont utilisés pour lister tous les utilisateurs du système.
 
default_pass_scheme = CRYPT
# Les mots de passe que récupèrer dovecot sont, souvent, au format {SCHEME}bla.
# Si ce n'est pas le cas, alors on demande au système d'utiliser CRYPT, le même schéma
# que pour /etc/shadow par exemple. Et la valeur pqr défaut de l'arbre LDAP.

Une fois ce fichier édité, il faut l'activer dans '/etc/dovecot/conf.d/10-auth.conf', et penser à désactiver la configuration par défaut afin de n'utliser QUE la config ldap, en commentant et décommentant les bonnes lignes à la fin du fichier

/etc/dovecot/conf.d/10-auth.conf
[...]
#!include auth-deny.conf.ext
#!include auth-master.conf.ext
 
!include auth-ldap.conf.ext
#!include auth-system.conf.ext
#!include auth-sql.conf.ext
#!include auth-passwdfile.conf.ext
#!include auth-checkpassword.conf.ext
#!include auth-vpopmail.conf.ext
#!include auth-static.conf.ext
Ajout de valeurs par défaut

Comme nous utilison dovecot pour gérer des comptes virtuiels, il est nécessaire de fournir certaines valeurs par défaut, qui ne peuvent pqs être stockées dans l'arbre LDAP, par exemple le numéro d'UID, ou le répertoire HOME.

Pour se faire;, il faut modifier les bases d'auth gérées par LDAP (userdb et passdb en l'occurence) gérées dans le fichier '/etc/dovecot/conf.d/auth-ldap.conf'

/etc/dovecot/conf.d/auth-ldap.conf
passdb {
  driver = ldap
 
  # Path for LDAP configuration file, see example-config/dovecot-ldap.conf.ext
  args = /etc/dovecot/dovecot-ldap.conf.ext
}
[...]

Rien de bien sorcier jusque là, on dit à dovecot que notre base pour vérifier les mots de passe est gérée par ldap, et aue la configuration de celui-ci est dans le fichier modifié plus haut.

/etc/dovecot/conf.d/auth-ldap.conf
[...]
userdb {
  driver = ldap
 
  # Path for LDAP configuration file, see example-config/dovecot-ldap.conf.ext
  args = /etc/dovecot/dovecot-ldap.conf.ext
  default_fields = home=/var/mail/%u uid=mail gid=mail
}

De même pour la base récupérant les informations, on utilise ldap. A noter le champ 'default_fields' qui permet de fournir des valeurs cohérentes si l'arbre LDAP ne contiens pas toutes les informations. Dans ce cas; on crée un répertoire par utilisateur dans /var/mail, et ce répertoire est géré avec les droits de l'utilisateur 'mail' appartenant au groupe 'mail', et aui est l'utilisateur utilisé par dovecot.

Il suffit ensuite de redémarrer dovecot.

ateliers/serveurmail/dovecot.txt · Dernière modification: 2019/10/28 19:42 par okhin