« Mise en place d'un serveur de mail complet » : différence entre les versions

Aller à la navigation Aller à la recherche
Ligne 625 : Ligne 625 :
=maildrop=
=maildrop=


maildrop est un mail delivery agent (MDA). Son rôle est de délivrer les messages reçus par un serveur smtp dans les boites mails des utilisateurs. Nous allons mettre en place maildrop pour remplacer le démon virtual de postfix parce qu'il permet de gérer les quotas et les filtres.
maildrop est un mail delivery agent (MDA). Son rôle est de délivrer les messages reçus par un serveur smtp dans les boites mails des utilisateurs. Nous allons mettre en place <code>maildrop</code> pour remplacer le démon <code>virtual</code> de postfix parce qu'il permet de gérer les quotas et les filtres.


Le paquet maildrop de debian lenny fournit maildrop 2.0.4 qui a un comportement étrange dans la gestion des quotas. Pour régler ce problème il faut compiler soit même maildrop 2.0.4.
Le paquet maildrop de debian lenny fournit <code>maildrop 2.0.4</code> qui a un comportement étrange dans la gestion des quotas. Pour régler ce problème il faut compiler soit même <code>maildrop 2.0.4</code>.


Pour commencer il faut installer <code>g++</code> ainsi que les paquets <code>courier-authlib-dev</code> et <code>libpcre3-dev</code> :
Pour commencer il faut installer <code>g++</code> ainsi que les paquets <code>courier-authlib-dev</code> et <code>libpcre3-dev</code> :
<pre>aptitude install g++ courier-authlib-dev libpcre3-dev</pre>
<pre>aptitude install g++ courier-authlib-dev libpcre3-dev</pre>
Téléchargez maildrop et extrayez le :
<pre>
wget http://prdownloads.sourceforge.net/courier/maildrop-2.0.4.tar.bz2
tar jxf maildrop-2.0.4.tar.bz2
</pre>
il faut maintenant configurer maildrop :
<pre>
cd maildrop-2.0.4
./configure -prefix=/usr/local/courier --enable-maildrop-uid=5000 --enable-maildrop-gid=5000 --enable-maildirquota --without-db
</pre>
Ici, on installe maildrop avec l'utilisateur d'<code>uid 5000</code> et de <code>gid 5000</code> ce qui correspond à notre utilisateur <code>vmail</code>. maildrop sera installé dans <code>/usr/local/courier</code>
Compilons et installons maildrop :
<pre>
make
make install
</pre>
Une erreur de compilation peut apparaître sur l'un des composants. Cela n'empêchera pas maildrop de fonctionner mais vous pouvez régler le problème comme ceci :
<pre>
cd makedat
ln -s makedatprog.c makedatprog
cd ..
make install
</pre>
Il faut adapter les droits de <code>/usr/local/courier/bin/</code> :
<pre>
chown vmail: /usr/local/courier/bin/*
chmod o+rx /usr/local/courier/
</pre>
Pour que maildrop fonctionne il faut qu'il puisse accéder au socket de courier situé dans <code>/var/run/courier/authdaemon/</code> :
<pre>chgrp vmail /var/run/courier/authdaemon/</pre>
==maildroprc==
Le fichier <code>/etc/maildroprc</code> contient la configuration ainsi que les règles de filtrage par défaut de maildrop.
Pour commencer nous allons activer les logs de maildrop. Ajoutez la ligne suivante dans <code>/etc/maildroprc</code> :
<pre>logfile "/var/log/maildroprc.log"</pre>
Créez le fichier de log et attribuez le à l'utilisateur vmail :
<pre>
touch /var/log/maildroprc.log
chown vmail:vmail /var/log/maildroprc.log
</pre>
Vous voudrez peut-être ajouter maildrop à la rotation des logs. Éditez le fichier <code>/etc/logrotate.d/maildrop</code> et ajoutez y les lignes suivantes :
<pre>
/var/log/maildroprc.log {
        weekly
        missingok
        rotate 12
        compress
        delaycompress
        notifempty
        create 640 vmail vmail
        sharedscripts
        postrotate
        endscript
}
</pre>
Pour créer automatiquement la mailbox si elle n'existe pas lors de la réception d'un message ajoutez les lignes suivantes à <code>/etc/maildroprc</code> :
<pre><nowiki>
# Si la mailbox représenté par $DEFAULT n'existe pas
`test -e $DEFAULT/`
if ( $RETURNCODE != 0 )
{
  # On la crée
  `maildirmake $DEFAULT`
  #  ainsi que les quelques sous-répertoire de base
  `maildirmake -f Junk $DEFAULT`
`maildirmake -f Sent $DEFAULT`
`maildirmake -f Trash $DEFAULT`
  # Puis on change les droits
  `chmod -R go-rwx $DEFAULT`
}
</pre></nowiki>
Enfin nous allons configurer un fichier de filtre local à chaque utilisateur virtuel :
<pre><nowiki>
# On load les filtres spécifiques de l'utilisateur $DEFAULT s'ils existent
`test -r $DEFAULT/mailfilter`
if( $RETURNCODE == 0 )
        {
      log "(==) Including $DEFAULT/mailfilter"
              exception {
                        include $DEFAULT/mailfilter
              }
        }
</nowiki></pre>
Par exemple, voici comment je filtre les spams dans mon fichier <code>/srv/vmail/pfoo\@csnu.org/mailfilter</code> :
<pre><nowiki>
if (/^X-Spam-Flag:.*YES/)
{
        exception {
              to $DEFAULT/.Junk/
        }
}
</nowiki></pre>
4 203

modifications

Menu de navigation