Accueil > Logiciel, Tutoriel > Installation Serveur Mail Postfix, Amavisd, Mysql, Spamassassin, Dspam, Dovecot

Installation Serveur Mail Postfix, Amavisd, Mysql, Spamassassin, Dspam, Dovecot

31/12/2018 Categories: Logiciel, Tutoriel Tags: , , ,
Print Friendly, PDF & Email

Ce tutoriel a été intégralement repris du site  http://www.starbridge.org et a été réalisé par tonio. Il est distribué sous licence creativecommons  Creative Commons License

Cet article, initié en 2007, est mis à jour régulièrement.
Le système sur lequel est basé ce document est une DEBIAN stable (Wheezy).
Le tuto est aussi entièrement compatible avec la version Testing (Jessie).

Ce tuto fonctionne également sous Ubuntu mais certains paquets présentent de légères différences. On essaiera de les indiquer si possible.

Mise à jour du 5/5/2015

Table des matières

Préparation de l’environnement

On prendra comme base pour l’exemple le domaine starbridge.org et le hostname du serveur de mail sera spike.

On met le système à jour :

aptitude update
aptitude full-upgrade

On vérifie les fichiers :

/etc/hostname : spike.starbridge.org
/etc/hosts : 127.0.0.1    spike.starbridge.org localhost.localdomain localhost spike

Cache DNS Local

Le fonctionnement d’un serveur de mail nécessite l’utilisation intensive de requêtes DNS.
Pour des raisons de performances, il est très fortement conseillé d’installer un cache DNS local.

aptitude install unbound

La configuration de base sous Debian fournie un serveur cache (on peut bien sur le configurer pour gérer son domaine local voire son domaine public mais ce n’est pas le sujet de cet article).

On modifie le /etc/resolv.conf pour pointer en local :

nameserver 127.0.0.1
search starbridge.org

on relance le serveur DNS :

/etc/init.d/unbound restart

Puis on teste la résolution avec nslookup ou dig

nslookup 

 >server

doit retourner :

Default server: 127.0.0.1
Address: 127.0.0.1#53

puis :

>yahoo.fr

La résolution doit se faire correctement.

On installe ensuite les outils pour la compilation, ils seront nécessaires tout au long de l’installation :

aptitude install bzip2 gcc libpcre3-dev libpcre  -dev g   libtool libmysqlclient-dev make libssl-dev libmysqld-dev libdb-dev automake autoconf bzip2 lbzip2 libbz2-1.0 libbz2-dev curl libcurl3 libcurl4-openssl-dev libexpat1 libexpat1-dev

On crée le dossier de configuration général :

mkdir /etc/caremail

Postfix et Mysql

  • La version stable de Debian (Wheezy) utilise postfix 2.9.6.
  • La dernière version de Postfix est la 2.11.
    La version Testing de Debian utilise la version 2.11.

Un paramètre important a fait son apparition en 2.10 et il est nécessaire de modifier la configuration pour ceux qui utiliseront la 2.10. On le précisera plus bas.
Le fait de rester en 2.9.6 n’impacte pas les autres fonctionnalités mises en place dans le tuto, donc pour le moment il n’est pas forcément nécessaire de passer en 2.10 pour ceux qui sont en Debian stable
On peut aussi utiliser les backports de la version stable qui proposent la 2.11.2

On lance l’installation de postfix :

aptitude install postfix-mysql postfix-pcre

l’installeur va demander l’effacement de exim que l’on valide
puis il va demander le type d’installation pour postfix, on laisse tout par défaut.

on installe ensuite les autres paquets nécessaires :

aptitude install mysql-client-5.5 mysql-server-5.5 libsasl2-2 libsasl2-modules sasl2-bin openssl ntp

voir le sujet sur le forum concernant l’optimisation de mysql :
https://www.starbridge.org/support/viewtopic.php?f=6&t=1599

On installe apache php5 pour gérer plus tard le tout avec l’interface postfixadmin.

aptitude install libapache2-mod-php5 php5-mysql

Note : Il est fortement conseillé d’installer le SSL avec Apache pour sécuriser les échanges. Cette configuration sera détaillée plus loin lors de l’installation de Postfixadmin.

Pour ceux qui le préfère, on peut tout de suite installer Phpmyadmin pour effectuer l’étape suivante.
(on ne détaillera pas cette installation, en dehors du scope de ce document)

On passe donc à la création de la base sql Postfix :

Note : Si l’on a mis un password lors de l’installation du paquet mysql, il faut sauter la première commande ci dessous et exécuter directement la seconde.

mysqladmin -u root password '*****'
mysqladmin -u root --password='*****' create postfix

Création de l’user postfix :

$ mysql -u root -p
Enter password:
GRANT ALL PRIVILEGES ON postfix.* TO "postfix"@"localhost" IDENTIFIED BY '******';

On crée les tables suivantes dans la base Postfix :


Évidemment on modifie la commande sed pour inclure son domaine
.

cd ~
wget http://www.starbridge.org/spip/doc/Procmail/postfix/postfix.sql
sed -i 's/starbridge.org/toto.com/g' postfix.sql
mysql -u root -p < postfix.sql

Explications :
Seules 3 tables sont nécessaires à Postfix.
Le reste est pour l’interface Postfixadmin que l’on installera plus tard.

Le password (MD5) est « secret »

Le premier INSERT permet à Postfix de savoir que ce domaine est virtuel et qu’il doit donc le gérer.

Le 3ème INSERT est un alias virtuel pointant vers un user de la table mailbox. Cet alias vers lui même sera utilisé par Postfixadmin.

le 4ème INSERT est un simple alias virtuel.

Le 7ème INSERT est un compte (boite email) virtuel, qui utilise un mot de passe encrypté en MD5.

Les deux derniers INSERT permettent de créer le superadministrateur que l’on utilisera plus tard dans Postfixadmin.
#PAGINATION

Paramétrage de Postfix

On remplace tout le /etc/postfix/main.cf par le contenu ci dessous :
n’oubliez pas de remplacer myhostname = spike.starbridge.org par votre domaine

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
append_dot_mydomain = no
myhostname = spike.starbridge.org
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = $mydomain
mydestination = $myhostname, localhost.$mydomain, localhost
mynetworks = 127.0.0.0/8
recipient_delimiter =  
home_mailbox = Maildir/ 
notify_classes = 2bounce, bounce, delay, policy, protocol, resource, software
smtpd_helo_required = yes
strict_rfc821_envelopes = yes
relay_domains = proxy:mysql:/etc/postfix/mysql_relay_domains_maps.cf
relay_recipient_maps = proxy:mysql:/etc/postfix/mysql_relay_recipients_maps.cf
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf,proxy:mysql:/etc/postfix/mysql_virtual_alias_domain_maps.cf,proxy:mysql:/etc/postfix/mysql_virtual_alias_domain_catchall_maps.cf
virtual_gid_maps = static:20001
virtual_mailbox_base = /home/virtual
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf,proxy:mysql:/etc/postfix/mysql_virtual_alias_domain_mailbox_maps.cf
virtual_minimum_uid = 20001
virtual_uid_maps = static:20001
transport_maps = proxy:mysql:/etc/postfix/mysql_transport.cf,proxy:mysql:/etc/postfix/mysql_transport2.cf
proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $smtpd_recipient_restrictions $smtpd_sender_login_maps $has_our_domain_as_sender
message_size_limit = 50240000

smtpd_recipient_restrictions =
        permit_mynetworks,
        reject_unauth_destination,
        permit
smtpd_data_restrictions =
        reject_unauth_pipelining,
        permit

Ceux qui sont en postfix 2.10 et supérieur doivent ajouter cette ligne au dessus du bloc smtpd_recipient_restrictions

smtpd_relay_restrictions =

ce qui donne :

smtpd_relay_restrictions =
smtpd_recipient_restrictions =
        permit_mynetworks,
        reject_unauth_destination,
        permit
smtpd_data_restrictions =
        reject_unauth_pipelining,
        permit

On modifie le /etc/postfix/master.cf comme ci dessous :

#
# Postfix master process configuration file.  For details on the format
# of the file, see the master(5) manual page (command: "man 5 master").
#
# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command   args
#               (yes)   (yes)   (yes)   (never) (100)
# ==========================================================================
smtp      inet  n       -       n       -       -       smtpd
#smtp      inet  n       -       n       -       1       postscreen
#smtpd     pass  -       -       n       -       -       smtpd
#dnsblog   unix  -       -       n       -       0       dnsblog
#tlsproxy  unix  -       -       n       -       0       tlsproxy
#submission inet n       -       n       -       -       smtpd
587      inet    n    -    n    -    -    smtpd 
    -o smtpd_tls_security_level=encrypt
    -o smtpd_sasl_auth_enable=yes
    -o smtpd_etrn_restrictions=reject
    -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#smtps     inet  n       -       -       -       -       smtpd
# -o smtpd_tls_wrappermode=yes
# -o smtpd_sasl_auth_enable=yes
# -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#628      inet  n       -       -       -       -       qmqpd
pickup    fifo  n       -       n       60      1       pickup
        -o receive_override_options=no_header_body_checks
        -o content_filter=
cleanup   unix  n       -       n       -       0       cleanup
qmgr      fifo  n       -       n       300     1       qmgr
#qmgr     fifo  n       -       -       300     1       oqmgr
tlsmgr    unix  -       -       n       1000?   1       tlsmgr
rewrite   unix  -       -       n       -       -       trivial-rewrite
bounce    unix  -       -       n       -       0       bounce
defer     unix  -       -       n       -       0       bounce
trace     unix  -       -       n       -       0       bounce
verify    unix  -       -       n       -       1       verify
flush     unix  n       -       n       1000?   0       flush
proxymap  unix  -       -       n       -       -       proxymap
proxywrite unix -       -       n       -       1       proxymap
smtp      unix  -       -       n       -       -       smtp
# When relaying mail as backup MX, disable fallback_relay to avoid MX loops
relay     unix  -       -       n       -       -       smtp
#       -o fallback_relay=
#       -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq     unix  n       -       n       -       -       showq
error     unix  -       -       n       -       -       error
retry     unix  -       -       n       -       -       error
discard   unix  -       -       n       -       -       discard
local     unix  -       n       n       -       -       local
virtual   unix  -       n       n       -       -       virtual
lmtp      unix  -       -       n       -       -       lmtp
anvil     unix  -       -       n       -       1       anvil
scache    unix  -       -       n       -       1       scache
#
# # See the Postfix UUCP_README file for configuration details.
#
uucp      unix  -       n       n       -       -       pipe
 flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)

On crée le groupe et le user vmail avec l’uid et gid 20001, ainsi que le répertoire des mails :

groupadd -g 20001 vmail
useradd -g vmail -u 20001 vmail -d /home/virtual -m

On sécurise :

chown -R vmail: /home/virtual
chmod 770 /home/virtual

On crée les fichiers d’appel des tables par Postfix :
(la commande sed permet de spécifier votre password d’accès à la base, dans l’exemple ici c’est toto)

cd /etc/postfix
wget http://www.starbridge.org/spip/doc/Procmail/postfix/mysql_virtual_alias_maps.cf
wget http://www.starbridge.org/spip/doc/Procmail/postfix/mysql_virtual_domains_maps.cf
wget http://www.starbridge.org/spip/doc/Procmail/postfix/mysql_virtual_mailbox_maps.cf
wget http://www.starbridge.org/spip/doc/Procmail/postfix/mysql_relay_domains_maps.cf
wget http://www.starbridge.org/spip/doc/Procmail/postfix/mysql_relay_recipients_maps.cf
wget http://www.starbridge.org/spip/doc/Procmail/postfix/mysql_virtual_alias_domain_maps.cf
wget http://www.starbridge.org/spip/doc/Procmail/postfix/mysql_virtual_alias_domain_catchall_maps.cf
wget http://www.starbridge.org/spip/doc/Procmail/postfix/mysql_virtual_alias_domain_mailbox_maps.cf
wget http://www.starbridge.org/spip/doc/Procmail/postfix/mysql_transport.cf
wget http://www.starbridge.org/spip/doc/Procmail/postfix/mysql_transport2.cf
sed -i 's/****/toto/g' mysql_virtual_alias_maps.cf mysql_virtual_domains_maps.cf mysql_virtual_mailbox_maps.cf mysql_relay_domains_maps.cf mysql_relay_recipients_maps.cf mysql_virtual_alias_domain_maps.cf mysql_virtual_alias_domain_catchall_maps.cf mysql_virtual_alias_domain_mailbox_maps.cf mysql_transport.cf mysql_transport2.cf

On sécurise le tout :

chmod 640 /etc/postfix/mysql_*
chgrp postfix /etc/postfix/mysql_*

Activation du TLS

Pour un serveur en production, il serait préférable d’utiliser un véritable certificat fourni et signé par une autorité de certification de confiance.

On édite la configuration de ssl pour pouvoir signer des certificats sur 10 ans, au lieu de 1 an par défaut :

vi /etc/ssl/openssl.cnf

on change la ligne default_days en

default_days    = 3650

On crée le Certificat Racine :

cd ~
/usr/lib/ssl/misc/CA.pl -newca

on entre les parametres requis, on choisis un pass phrase de son choix et on laisse « challenge password » vide.

CA certificate filename (or enter to create)

Making CA certificate ...
Generating a 1024 bit RSA private key
.......  
.........................................  
writing new private key to './demoCA/private/cakey.pem'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:

You are about to be asked to enter information that will be incorporated
into your certificate request.



What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.

Country Name (2 letter code) [AU]:FR
State or Province Name (full name) [Some-State]:Paris 
Locality Name (eg, city) []:Paris
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Starbridge 
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:starbridge.org
Email Address []:tonio@starbridge.org

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Using configuration from /usr/lib/ssl/openssl.cnf
Enter pass phrase for ./demoCA/private/cakey.pem:
Check that the request matches the signature
Signature ok
Certificate Details:
        Serial Number:
            84:7c:ce:d2:f7:cf:df:6c
        Validity
            Not Before: Nov 13 16:44:33 2007 GMT
            Not After : Nov 12 16:44:33 2010 GMT
        Subject:
            countryName               = FR
            stateOrProvinceName       = Paris
            organizationName          = Starbridge
            commonName                = starbridge.org
            emailAddress              = tonio@starbridge.org
        X509v3 extensions:
            X509v3 Subject Key Identifier: 
                B9:04:A3:81:E5:5D:D6:82:72:F4:6E:0C:FB:3F:E2:62:1B:EF:B9:57
            X509v3 Authority Key Identifier: 
                keyid:B9:04:A3:81:E5:5D:D6:82:72:F4:6E:0C:FB:3F:E2:62:1B:EF:B9:57
                DirName:/C=FR/ST=Paris/O=Starbridge/CN=starbridge.org/emailAddress=tonio@starbridge.org
                serial:84:7C:CE:D2:F7:CF:DF:6C

            X509v3 Basic Constraints: 
                CA:TRUE
Certificate is to be certified until Nov 12 16:44:33 2010 GMT (1095 days)

Write out database with 1 new entries
Data Base Updated

Ce certificat racine sert à signer les certificats. Il est localisé dans le répertoire /demoCA.

On crée maintenant une clé privée pour le serveur ainsi qu’un csr (Certificate Signing Request : demande de signature de certificat).

mkdir ~/CERT
cd ~/CERT
openssl req -new -nodes -keyout starbridge-key.pem -out starbridge-req.pem -days 3650

et on entre les paramètres comme ci dessous :

Generating a 1024 bit RSA private key
.............  
.............  
writing new private key to 'starbridge-key.pem'

You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.

Country Name (2 letter code) [AU]:FR
State or Province Name (full name) [Some-State]:Paris
Locality Name (eg, city) []:Paris
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Starbridge
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:spike.starbridge.org
Email Address []:tonio@starbridge.org

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

Note : le paramètre le plus important est le Common Name qui doit être le même que le nom avec lequel se connecte les clients sur le serveur. Ici il s’agit du FQDN : spike.starbridge.org.

cela génère 2 fichiers :
la clé privée, à protéger absolument
la demande de certificat, qui est pour faire simple un certificat public non signé

On signe maintenant notre certificat public avec le certificat racine :

cd ~
openssl ca -out CERT/starbridge-cert.pem -infiles CERT/starbridge-req.pem

Voici la sortie de la signature :

Using configuration from /usr/lib/ssl/openssl.cnf
Enter pass phrase for ./demoCA/private/cakey.pem:
Check that the request matches the signature
Signature ok
Certificate Details:
        Serial Number:
            84:7c:ce:d2:f7:cf:df:6d
        Validity
            Not Before: Nov 13 16:51:32 2007 GMT
            Not After : Nov 10 16:51:32 2017 GMT
        Subject:
            countryName               = FR


            stateOrProvinceName       = Paris
            organizationName          = Starbridge
            commonName                = spike.starbridge.org
            emailAddress              = tonio@starbridge.org
        X509v3 extensions:
            X509v3 Basic Constraints: 
                CA:FALSE
            Netscape Comment: 
                OpenSSL Generated Certificate
            X509v3 Subject Key Identifier: 
                05:2A:A9:90:6F:2A:80:F7:E3:EF:2B:F9:44:9D:8E:CF:C3:16:18:EF
            X509v3 Authority Key Identifier: 
                keyid:B9:04:A3:81:E5:5D:D6:82:72:F4:6E:0C:FB:3F:E2:62:1B:EF:B9:57

Certificate is to be certified until Nov 10 16:51:32 2017 GMT (3650 days)
Sign the certificate? [y/n]:y


1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

On copie maintenant le certificat et la clé dans postfix :

mkdir /etc/postfix/tls
cp demoCA/cacert.pem CERT/starbridge-key.pem CERT/starbridge-cert.pem /etc/postfix/tls/
chmod 644 /etc/postfix/tls/starbridge-cert.pem /etc/postfix/tls/cacert.pem 
chmod 400 /etc/postfix/tls/starbridge-key.pem
chmod 400 ~/CERT/*

On ajoute ceci au /etc/postfix/main.cf :

smtp_tls_CAfile = /etc/postfix/tls/cacert.pem
smtp_tls_security_level = may
smtp_tls_session_cache_database = btree:${data_directory}/smtp_tls_session_cache
smtpd_tls_security_level = may
smtpd_tls_auth_only = yes
smtpd_tls_key_file = /etc/postfix/tls/starbridge-key.pem
smtpd_tls_cert_file = /etc/postfix/tls/starbridge-cert.pem
smtpd_tls_CAfile = /etc/postfix/tls/cacert.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_tls_session_cache
tls_random_source = dev:/dev/urandom
smtpd_tls_protocols = !SSLv2,!SSLv3

On redémarre Postfix :

postfix reload

on testera le fonctionnement après l’installation de dovecot.

Dovecot : SASL, LDA, IMAP et SIEVE

De « simple » serveur imap, Dovecot est devenu un ensemble d’outils indispensables pour la messagerie :
il permet de gérer le SASL très simplement au travers de Postfix afin de fournir à ce dernier un moyen d’authentifier les transactions SMTP,
il fournit un agent de livraison de mail très performant et parfaitement intégré à Postfix,
il permet de prendre en charge le langage Sieve pour le filtrage des mails lors de la livraison,
et bien sur, il demeure un serveur imap rapide et léger.

On va détailler ici son installation, fonction par fonction.

Installation de Dovecot :

On va utiliser la version 2.2 de Dovecot.
On compilera depuis les sources.

Créer les users pour dovecot :

adduser --system --group --home /usr/lib/dovecot --gecos "Dovecot mail server" --disabled-password --quiet dovecot
adduser --system --home /nonexistent --gecos "Dovecot login user"  --disabled-password --quiet dovenull

on compile :

cd ~
mkdir dovecot
cd dovecot
wget http://dovecot.org/releases/2.2/dovecot-2.2.16.tar.gz
wget http://pigeonhole.dovecot.org/releases/2.2/dovecot-2.2-pigeonhole-0.4.7.tar.gz
tar xvzf dovecot-2.2.16.tar.gz
tar xvzf dovecot-2.2-pigeonhole-0.4.7.tar.gz
cd dovecot-2.2.16
./configure --prefix=/usr/ --sysconfdir=/etc/ --with-mysql --libexecdir=/usr/lib/ --localstatedir=/var --with-moduledir=/usr/lib/dovecot/modules --disable-rpath --disable-static --with-zlib --with-bzlib --with-solr
make
make install
cd ../dovecot-2.2-pigeonhole-0.4.7
./configure --with-dovecot=/usr/lib/dovecot/ --prefix=/usr/ --sysconfdir=/etc/ --libexecdir=/usr/lib/ --disable-static
make
make install

On copie les fichiers de configuration nécessaires :

cd /etc/dovecot/
wget http://www.starbridge.org/spip/doc/Procmail/dovecot/dovecot.conf 
wget http://www.starbridge.org/spip/doc/Procmail/dovecot/dovecot-sql.conf
wget http://www.starbridge.org/spip/doc/Procmail/dovecot/dovecot-dict-quota-sql.conf
chown vmail:dovecot dovecot-dict-quota-sql.conf
chmod 600 dovecot-sql.conf 
chmod 640 dovecot-dict-quota-sql.conf

On indique le password de la table postfix :

sed -i 's/*****/toto/g' dovecot-sql.conf dovecot-dict-quota-sql.conf

on ne relance pas encore dovecot pour le moment

La livraison des emails : Dovecot LDA

Nous avons maintenant besoin d’un MDA (mail delivery agent) pour livrer les mails dans les boîtes.
Le service de livraison Virtual de Postfix ne convient pas totalement pour notre usage.
En effet nous allons avoir besoin de capacité de filtrage sur le MDA ainsi que la possibilité de gérer les quotas, ce que ne sait pas faire Virtual.
Procmail est très bien pour le filtrage, mais ne supporte pas les users/domaines virtuels, car il ne sait pas communiquer avec une base de données.
Une méthode répandue pour les quotas est l’application du patch VDA sur Postfix, option que nous ne choisirons pas pour des raisons de fiabilité.

Maildrop convient bien, il a d’ailleurs longtemps été utilisé dans ce tuto, mais nous l’avons maintenant remplacé par le MDA inclus dans Dovecot, plus performant et surtout très bien maintenu.

C’est donc Dovecot LDA (Local Delivery Agent, le MDA de dovecot) qui s’occupera de la livraison des mails dans les home.

Il faut configurer Postfix pour qu’il utilise Dovecot comme MDA :

On ajoute ceci au /etc/postfix/main.cf :

dovecot_destination_recipient_limit = 1
virtual_transport = dovecot

et on ajoute un transport dovecot au /etc/postfix/master.cf :

A noter que la configuration du tuto permet de choisir son transport par domaine. Il faut pour cela choisir Dovecot dans la configuration de domaine dans Postfixadmin.
Le domaine par défaut, crée par le script sql du tuto, est déja paramétré pour utiliser Dovecot.

Dovecot est également préconfiguré pour utiliser les mêmes certificats SSL que Postfix, que l’on a généré dans l’étape précédente.
Il n’y a donc rien de particulier à configurer pour le SSL sauf si vous avez modifié les noms de fichiers des certificats ssl à l’étape postfix.

il faut maintenant créer un fichier /etc/init.d/dovecot :

cd /etc/init.d/
wget http://www.starbridge.org/spip/doc/Procmail/init.d/dovecot
chmod 755 /etc/init.d/dovecot
insserv -v /etc/init.d/dovecot

On lance Dovecot :

/etc/init.d/dovecot start

on relance Postfix :

postfix reload

On verifie dans les logs que tout a démarré correctement.

On teste cette première configuration de base en envoyant un mail a user@starbridge.org

mail user@starbridge.org

note : il faut taper un . (un point seul sur la ligne) pour terminer le message.

On regarde les logs pour les erreurs.
Si tout a fonctionné on devrait trouver dans une ligne :

...dovecot: lda(user@starbridge.org)...

note : si la commande mail n’existe pas sur le système (Ubuntu par exemple) l’installer avec aptitude install mailx

Puis on teste en direct sur le port 25 :

(ce qu’il faut taper est précédé de —>, le reste c’est le retour du serveur) :

---> telnet localhost 25
220 [127.0.0.1] ESMTP Postfix
---> HELO localhost
250 [127.0.0.1]
---> MAIL FROM: <>
250 2.1.0 Sender  OK
---> RCPT TO: <user@starbridge.org> 
250 2.1.5  OK
---> DATA
354 End data with <CR><LF>.<CR><LF>
---> .
250 2.0.0 Ok: queued as 079474CE44
---> QUIT
221 2.0.0 Bye
Connection closed by foreign host

On regarde les logs pour vérifier.

on regarde dans le dossier /home/virtual/user@starbridge.org : on devrait trouver les dossiers suivants :

drwx------ 9 vmail vmail  4096 11 sept. 18:20 .
drwxrwx--- 4 vmail vmail  4096 11 sept. 18:13 ..

-rw------- 1 vmail vmail   384 11 sept. 18:20 dovecot.mailbox.log
-rw------- 1 vmail vmail   291 11 sept. 18:20 dovecot-quota
drwx------ 2 vmail vmail  4096 11 sept. 18:20 mailboxes

En regardant dans mailboxes on trouvera les dossiers par défaut qui sont crées automatiquement.

Sieve

Dovecot LDA permet d’utiliser le langage de filtrage Sieve.
Celui-ci offre la possibilité d’appliquer des règles spécifiques pour les utilisateurs (redirection dans les répertoires, etc).
Mais avant cela, nous avons besoin d’un fichier de filtre Sieve global (son utilisation est paramétrée dans dovecot.conf) qui permettra de rediriger les spams dans un dossier de l’utilisateur :

mkdir /home/virtual/sieve
chown vmail: