Romain DUCHENE

Voyages · Tech · Innovation

Étiquette : qmail

  • Howto: Installer qmail sur Debian Sarge

    Dans cet article, nous allons faire une installation de Qmail sur une distribution Debian Sarge. Nous activerons/installerons :
    - La gestion des utilisateurs et domaines virtuels (via vpopmail)
    - Un serveur POP3 (via qmail-popup) avec fonction de roaming SMTP des utilisateurs authentifiés
    - Un serveur IMAP4 (courier-imap).
    - Un anti-spam (spamassassin)
    - Un antivirus (clamav).

    Il est possible (et même recommandé) d’utiliser les DaemonTools pour gérer qmail, plutot que le système de démon classique. Pour des raisons de simplicité, et dans un soucis d’avoir un minimum de package externe à l’install classique de debian, nous utiliserons les démons classiques, fournit et installés par défaut dans l’install debian de qmail.

    Installation de base de qmail

    Il faut tout d’abord ajouter dans /etc/apt/sources.list les non-free. En effet, qmail ne possédant pas une licence « free » (au sens debian du terme), il ne se trouve pas dans la distribution de base. Il faut donc rajouter le terme « non-free » à la fin de la ligne principale de package des sources apt (à personnaliser suivant le mirroir que vous utilisez). /etc/apt/sources.list


    deb http://ftp.fr.debian.org/debian/ stable main non-free

    Nous mettons maintenant à jour notre base APT, et nous allons désinstaller exim, pour y mettre les sources de Qmail et de ucspi-tcp. En effet, en raison de sa licence, il ne peut être livré que sous forme de code source, à nous donc de le compiler. Nous devrons être root durant cette installation.


    su -
    apt-get update
    apt-get remove --purge exim exim4-base exim4-config
    apt-get install -y procmail qmail-src ucspi-tcp-src exim4-daemon-light

    Nous lançons maintenant la compilation et la création des paquets .deb qui seront installés. Suivez les instructions dans chacune des compiliations, les infos sont claires.


    build-ucspi-tcp
    build-qmail

    Afin de cloturer cette installation de base de qmail, nous devons lui donner quelques paramètres de base : le nom de la machine (tel qu’il va se présenter), les hosts locaux, et le domaine par défaut.


    echo "smtp.mondomaine.com" > /var/qmail/control/me
    echo "localhost" > /var/qmail/control/locals
    echo "mondomaine.com" > /var/qmail/control/defaultdomain

    Nous pouvons maintenant démarrer et stopper qmail pour tester que tout fonctionne bien via le script /etc/init.d/qmail


    /etc/init.d/qmail start
    /etc/init.d/qmail stop

    Vérifier bien dans les logs mail (/var/log/mail.*) que tout est fonctionnel.

    Installation de vpopmail : support utilisateurs et domaines virtuels

    De base, qmail utilise des fichiers de type .qmail* dans les répertoires des utilisateurs (physique) pour gérer les adresses mails.

    Ici, nous voulons pouvoir gérer facilement et à grande échelle les boites mails, et sur plusieurs domaines. De plus, nous ne désirons pas que les utilisateurs existent sur le serveur pour des raisons de sécurité. Nous allons donc utiliser une base de données pour stocker les domaines, les noms de boites mails, les alias, et les forward. Les mails en eux-mêmes seront bien sûr stockés sous forme de fichiers (au format Maildir) sur le serveur.

    La gestion virtuelle est fournie par vpopmail. Nous allons donc tout d’abord installé le serveur MySQL, y créer le compte utilisateur de vpopmail, et créer la base. N’oubliez pas ensuite de sécuriser votre installation MySQL (password de l’utilisateur root qui est vide par défaut, etc…).


    apt-get install -y mysql-server
    cat > /tmp/sql.cmd
    INSERT INTO mysql.user SET Host = 'localhost',
    User = 'vpopmail', Password = PASSWORD('pass-a-modifier'),
    Select_priv = 'N', Insert_priv = 'N', Update_priv = 'N',
    Delete_priv = 'N', Create_priv = 'N', Drop_priv = 'N',
    Reload_priv = 'N', Shutdown_priv = 'N', Process_priv = 'N',
    File_priv = 'N', Grant_priv = 'N', References_priv = 'N',
    Index_priv = 'N', Alter_priv = 'N';

    FLUSH PRIVILEGES;

    CREATE DATABASE vpopmail;

    GRANT Select, Insert, Update, Delete, Create, Drop,
    Index, Alter ON `vpopmail`.* TO 'vpopmail'@'localhost';

    FLUSH PRIVILEGES;

    Ctrl+c

    cat /tmp/sql.cmd |mysql -p && rm -f /tmp/sql.cmd
    Enter password: <laisser vide, faites entrée>

    Et maintenant, téléchargeons, et installons vpopmail. Il faut avant tout lui créer ses users locaux, et installer quelques logiciels/librairies.


    apt-get install -y make g++ libmysqlclient10-dev

    groupadd -g 89 vchkpw && \
    useradd -g vchkpw -u 89 -d /var/lib/vpopmail vpopmail && \
    mkdir /var/lib/vpopmail && \
    mkdir /etc/vpopmail && \
    mkdir /usr/share/doc/vpopmail && \
    ln -s /etc/vpopmail /var/lib/vpopmail/etc && \
    ln -s /usr/bin /var/lib/vpopmail/bin && \
    ln -s /usr/share/doc/vpopmail /var/lib/vpopmail/doc && \
    ln -s /usr/include /var/lib/vpopmail/include && \
    ln -s /usr/lib /var/lib/vpopmail/lib && \
    chown -R vpopmail.vchkpw /var/lib/vpopmail

    cd /usr/src
    wget http://ovh.dl.sourceforge.net/sourceforge/vpopmail/vpopmail-5.4.16.tar.gz
    tar xvfz vpopmail-5.4.16.tar.gz
    cd vpopmail-5.4.16
    ./configure --prefix=/usr \
    --enable-qmaildir=/var/qmail \
    --enable-qmail-newu=/var/qmail/bin/qmail-newu \
    --enable-qmail-inject=/var/qmail/bin/qmail-inject \
    --enable-qmail-newmrh=/var/qmail/bin/qmail-newmrh \
    --enable-tcprules-prog=/usr/bin/tcprules \
    --enable-tcpserver-file=/etc/tcp.smtp \
    --enable-incdir=/usr/include/mysql --enable-libdir=/usr/lib \
    --enable-auth-module=mysql --enable-valias \
    --enable-logging=p --enable-md5-passwords \
    --enable-qmail-ext \
    --enable-mysql-limits \
    --enable-roaming-users=y \
    --enable-tcprules-prog=/usr/bin/tcprules \
    --enable-tcpserver-path=/etc/tcp.smtp

    make && make install-strip

    On configure vpopmail pour se connecter à notre base de données :


    echo "localhost|0|vpopmail|pass-a-modifier|vpopmail" \
    > ~vpopmail/etc/vpopmail.mysql

    On met en place l’effacement du roaming SMTP


    crontab -e

    Ajouter la ligne suivante dans le fichier, et quitter vi en sauvant le fichier.


    40 * * * * /var/lib/vpopmail/bin/clearopensmtp 2>&1 > /dev/null

    Relançons maintenant qmail pour être sur que tout est opérationnel (vérifier encore une fois les logs)


    /etc/init.d/qmail start
    /etc/init.d/qmail stop

    Pour créer des domaines et des comptes mails, nous devons maintenant utiliser les commandes de vpopmail (le compte postmaster est créé automatiquement à chaque création de domaine) :


    # Création d'un nouveau domaine virtuel
    vadddomain nouveau-domaine.com password-postmaster

    # Création d'un compte sur le domaine virtuel
    vadduser test@nouveau-domaine.com password

    # Création d'alias de postmaster (nouvel alias : romain)
    valias -i postmaster@nouveau-domaine.com romain@nouveau-domaine.com

    # Visualiser les alias / forwards
    valias postmaster@nouveau-domaine.com

    # Création d'un forward de postmaster vers romain@mail-externe.com
    valias -i romain@mail-externe.com postmaster@nouveau-domaine.com

    Il y a beaucoup de commande vpopmail disponibles, elles commencent toutes par v* Je vous laisse les décrouvrir… vaddaliasdomain, vdeldomain, vmoduser, vadddomain, vadduser , vdeloldusers, valias, vdeluser, vdir, vipmap, vpopbull vchangepw, vdominfo, vchkpw (utilisation interne), vkill, vsetuserquota, vconvert, vmkpasswd (interne), vmoddomlimits, vuserinfo

    Il y a des interfaces de gestion web qui existent pour gérer directement vpopmail. On pourra utiliser par exemple un module de Webmin, ou bien le très sympa qmailadmin. Toutefois, j’ai préféré créer la mienne, qui est totalement intégrée à l’interface de l’intranet de l’espace client que j’ai mis en place pour Wiroo.

    Configuration du serveur POP3

    Maintenant que qmail est fonctionnel, nous allons nous attacher à ce que nos utilisateurs puissent aller chercher leurs mails en POP3. Le serveur POP3 est déjà présent dans qmail, mais nous allons juste devoir l’activer et changer sa méthode de vérification des comptes (pour utiliser vpopmail, et non plus les comptes systèmes).

    Pour cela, modifions le fichier /etc/init.d/qmail Décommentez les lignes concernant POP3 (environs entre les lignes 59 et 63), et modifions /usr/bin/checkpassword en /usr/bin/vchkpw Vous devriez donc avoir les lignes suivantes dans ce fichier (entre 59 et 63) :


    sh -c "start-stop-daemon --start --quiet --user root \
    --pidfile /var/run/tcpserver_pop3d.pid --make-pidfile \
    --exec /usr/bin/tcpserver -- -R -H \
    0 pop-3 /usr/sbin/qmail-popup `hostname`.`dnsdomainname` \
    /usr/bin/vchkpw /usr/sbin/qmail-pop3d Maildir &"

    Configuration du serveur IMAP4

    A venir

    Configuration de l’antivirus

    A venir

    Configuration de l’antispam

    A venir