Matériel

2 sun V210

Configuration Système

OS Gentoo
MTA Postfix
Base de données MySQL
Greylisting Postgrey
Antivirus clamav
Antispam dspam
POP/IMAP dovecot
Serveur web Lighttpd
Webmail roundcube

Architecture

make.conf

CFLAGS="-O2 -mcpu=ultrasparc -pipe"
CXXFLAGS="-O2 -mcpu=ultrasparc -pipe"
# WARNING: Changing your CHOST is not something that should be done lightly.
# Please consult http://www.gentoo.org/doc/en/change-chost.xml before changing.
CHOST="sparc-unknown-linux-gnu"
MAKEOPTS="-j4"
USE="-X ipv6 ssl perl slang unicode mysql vhosts php5 iproute2 png"
FEATURES="parallel-fetch distcc"
VIDEO_CARDS=""

# faire les mises a jour lorsque la machine sera en prod
#PORTAGE_NICENESS=15

packages.use

mail-mta/postfix mysql sasl
dev-db/mysql latin1
net-mail/dovecot pop3d
dev-lang/php ctype pcre session unicode cgi xml gd imap sockets
www-servers/lighttpd rrdtools fastcgi php
mail-filter/dspam mysql logrotate clamav daemon

HowTo Non terminé : Redaction bragon et Mr_Smoke

GeekMail, ou GeekMX pour reprendre son nom officiel, a maintenant dépassé le stade du projet. Néanmoins, il est temps de créer un petit “HOWTO créer un mx à la GeekMX”.

Introduction

Le but de ce document est de vous guider pas-à-pas dans la réalisation d'un serveur mail complet, capable de gérer des comptes virtuels et locaux, sécurisé, et relativement facile à administrer.

Par ailleurs, plutôt que de vous proposer une marche à suivre sans réfléchir, nous expliquerons les différentes étapes, sans forcément rentrer dans le détail, mais suffisamment pour donner une vue d'ensemble assez claire du système global et des interactions entre les différents éléments.

Si les versions des logiciels que vous installez sont (beaucoup) plus récentes ou plus vieilles que les versions utilisées ici, il est possible que vous rencontriez des différences (parfois significatives) dans la syntaxe de certains fichiers de configuration. Nous nous efforcerons de tenir ce document le plus à jour possible afin de minimiser le problème.

CHANGELOG :

Logiciels utilisés

Pourquoi ces choix ? Il se trouve que ces différents logiciels s'intègrent très bien les uns aux autres sans que le tout deviennent une usine à gaz. Notons au passage qu'il est possible d'utiliser PostgreSQL en lieu et place de MySQL ou de remplacer Lighty par Apache2 sans trop de problèmes.

Pour ce qui est des autres distributions, les différences se situeront principalement au niveau de la gestion des paquetages. Si vous suivez ce HOWTO et que vous voulez l'adapter à votre distribution, il faudra bien évidemment utiliser le gestionnaire de paquetages idoine (rpm, apt-get …), mais aussi parfois improviser un peu quant aux noms des paquetages.

Par exemple, si sous Gentoo il suffit d'activer le USE flag “mysql” pour compiler Postfix avec le support MySQL, sous Debian il faudra installer un paquetage séparé (postfix-mysql), tandis que si vous installez depuis des tarballs, il faudra mettre la main au cambouis et taper quelque chose du genre make -f Makefile.init makefiles 'CCARGS=-DHAS_MYSQL -I/usr/local/mysql/include' 'AUXLIBS=-L/usr/local/mysql/lib -lmysqlclient -lz -lm'.

Enfin, nous n'entrerons pas dans les détails du système de log choisi, car c'est un choix très général qui aura des implications bien en dehors du cadre d'un simple serveur mail.

Installation des logiciels - Première partie : le coeur du serveur

Avant de passer à l'installation de chaque logiciel (qui se résumera en général à une commande emerge), il convient de choisir les USE flags dont nous auront besoin dans les différentes applications.

Notez que ces flags constituent un minimum nécessaire (mais pas forcément suffisant) au bon fonctionnement de notre futur serveur mail. Certains sont peut-être déjà activés sur votre serveur. Par ailleurs, nous partons du principe que les applications seront installés sur une machine configurée en profil “server” ou “hardened”, ce qui active certains flags par défaut.

Tout en un

Si vous êtes pressés ou que vous nous faites une confiance aveugle sur les logiciels à installer, vous pouvez lancer la compilation de toutes les applications d'une seule commande :

echo "www-apps/postfixadmin" >> /etc/portage/package.keywords && emerge -av postfix dovecot lighttpd postfixadmin

Si vous avez choisi les bons USE flags, l'installation de ces quatre paquetage suffira, le jeu des dépendances se chargeant du reste.

Postfix

Le MTA (Mail Transfer Agent) est le coeur du serveur de messagerie. C'est lui qui reçoit et délivre les mails qu'il est censé gérer (votre domaine par exemple), et qui envoie les mails en provenance des clients autorisés. C'est le serveur par défaut de plusieurs systèmes UNIX et distributions Linux.

USE flags : dovecot-sasl ipv6 mbox mysql pam ssl vda. Rajoutez hardened au besoin si par exemple vous tournez en vserver.

Pour l'installation en elle-même, rien que du très classique.

emerge -av postfix

Si vous avez activé les flags ci-dessus, l'installation de Postfix entraînera celle de MySQL, OpenSSL et Cyrus-SASL.

Dovecot

En général, quand Postfix reçoit les mails pour votre domaine, il les stocke localement (nous verrons où dans la section Configuration). Cela dit, il faut bien donner un moyen aux utilisateurs de récupérer leur courrier. C'est là qu'intervient Dovecot : il nous fournira les services POP et IMAP nécessaires, ainsi qu'une couche SASL pour Postfix.

USE flags : ipv6 mbox mysql pam pop3d ssl

Encore une fois, l'installation à la Gentoo reste simple :

emerge -av dovecot

Cette fois-ci, l'installation n'amène rien de bien intéressant au niveau des dépendances (MySQL et OpenSSL ont été installés à l'étape du dessus).

LightTPD

Pour administrer notre serveur mail, on peut bien sûr créer nos données à la main dans les bases MySQL. Bon courage si vous choisissez cette voie :-)

Heureusement, il existe une interface Web de gestion des comptes mails qui nous simplifiera beaucoup la vie. Pour la faire tourner, il faut donc un serveur Web. Nous allons donc installer LightTPD, plus léger et simple à maintenir qu'un Apache complet.

USE flags : bzip2 ipv6 mysql pcre php ssl. Rajoutez fastcgi si le coeur vous en dit, mais vous devrez le configurer pour qu'il fonctionne correctement avec PHP.

emerge -av lighttpd

Lighty va entraîner PHP dans son sillage, ce qui nous arrange bien.

PostfixAdmin

La voilà, notre interface WWW de gestion des comptes mails. Vu que tous les pré-requis sont déjà installés, il n'y a plus qu'à :

emerge -av postfixadmin

A compléter

Amavisd et postgrey

Configuration des logiciels

Postfix avec SASL et TLS

Dans la configuration de Postfix, il faut :

Le support SASL de Postfix existe côté serveur et côté client. Dans la plupart des cas, vous n'aurez besoin que du SASL serveur, qui permettra à Postfix de demander aux clients de s'identifier avant de pouvoir envoyer un message. C'est ce que nous allons faire ici. Le SASL client n'est nécessaire que si votre serveur Postfix doit relayer des messages en s'adressant à un autre serveur mail qui requiert l'identification ; si c'est votre cas, vous devrez compiler Postfix avec le flag sasl et définir des options d'identification particulières que nous ne verrons pas dans ce document.

Le TLS permet de chiffrer les échanges entre Postfix et les clients mail ou les autres serveurs mail à qui il transmet des messages. Cependant, tout le monde n'utilise pas forcément TLS. Nous allons donc faire du TLS dit opportuniste. Postfix acceptera les communications en clair, en se gardant la possibilité de chiffrer la transaction si l'interlocuteur le permet ou le demande.

La plupart des options figureront dans le main.cf de Postfix ; les options MySQL seront quant à elles définies dans des fichiers séparés, appelés depuis main.cf.

Cet exemple suppose que vous ayez un serveur MySQL à l'adresse 192.168.1.2. Remplacez cette adresse par celle de votre serveur MySQL, ou par localhost si tout est installé sur le même serveur. De même, nous avons choisi ici le couple UID/GID 1001/1001 comme propriétaire du répertoire contenant les mails des comptes virtuels ; libre à vous de modifier ce paramètre au besoin.

Enfin, une brève remarque avant de commencer : Postfix refusera de démarrer tant que les alias ne seront pas créés. Pour cela, il suffit de lancer la commande

newaliases

et tout rentrera dans l'ordre.

/etc/postfix/main.cf

# Configuration générale. A modifier selon vos besoins et désirs
myhostname  = mail.gplmail.org
mydomain  = gplmail.org
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost
local_recipient_maps = proxy:unix:passwd.byname $alias_maps
mynetworks  = $config_directory/mynetworks
# Réglages standard
alias_maps  = hash:/etc/aliases
alias_database = hash:/etc/aliases
# Réglages comptes virtuels et références aux confs MySQL
relay_domains = mysql:/etc/postfix/mysql_relay_domains_maps.cf
virtual_alias_maps      = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_uid_maps        = static:1001
virtual_gid_maps        = static:1001
virtual_mailbox_base    = /var/spool/mail
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_limit   = 25600000
virtual_mailbox_maps    = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_minimum_uid     = 1001
virtual_transport = virtual
# Support des quota
virtual_create_maildirsize     = yes
virtual_mailbox_extended       = yes
virtual_mailbox_limit_maps     = mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message  = Sorry, the user has exceeded his current quota. Please try again later.
vacation_destination_recipient_limit = 1
maildrop_destination_recipient_limit = 1
# Support sasl (serveur)
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
broken_sasl_auth_enable = yes
smtpd_recipient_restrictions =
        permit_mynetworks,
        permit_sasl_authenticated,
        reject_unauth_destination
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = dovecot
# Support TLS
smtp_tls_security_level          = may
smtpd_tls_security_level         = may
smtpd_tls_auth_only              = no
smtpd_tls_key_file               = /etc/postfix/postfix-ssl.key
smtpd_tls_cert_file              = /etc/postfix/postfix-ssl.crt
smtpd_tls_session_cache_database = btree:/etc/postfix/tls_smtpd_scache
smtpd_tls_loglevel               = 1
smtpd_tls_received_header        = yes

Nous allons maintenant générer les clés nécessaires au bon fonctionnement de TLS :

cd /etc/postfix
openssl genrsa -out postfix-ssl.key 1024

Il est important de NE PAS ENTRER DE MOT DE PASSE à cette étape, sans quoi Postfix sera incapable de lire la clé et ne pourra pas accepter de transaction TLS.

openssl req -new -key postfix-ssl.key -out postfix-ssl.csr
openssl x509 -req -days 3650 -in postfix-ssl.csr -signkey postfix-ssl.key -out postfix-ssl.crt
chmod 0600 postfix-ssl.*

mysql_relay_domains_maps.cf

Domaines pour lesquels notre Postfix va relayer les messages ; ici, il s'agira des domaines pour lesquels notre serveur agit en tant que MX de secours.

user = ****
password = **** 
hosts = 192.168.1.2
dbname = mail
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = '1'

mysql_virtual_domains_maps.cf

Domaines mails virtuels

user = ****
password = ****
hosts = 192.168.1.2
dbname = mail
query = SELECT domain FROM domain WHERE domain='%s'

mysql_virtual_mailbox_limit_maps.cf

Table des quotas

user = ****
password = **** 
hosts = 192.168.1.2
dbname = mail
query = SELECT quota FROM mailbox WHERE username='%s'

mysql_virtual_alias_maps.cf

Table des alias

user = ****
password = ****
hosts = 192.168.1.2
dbname = mail
query = SELECT goto FROM alias WHERE address='%s' AND active = 1

mysql_virtual_mailbox_maps.cf

Table des comptes mail

user = ****
password = **** 
hosts = 192.168.1.2
dbname = mail
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1

Dovecot POP/IMAP et SASL

Comme nous l'avons dit plus haut, Dovecot fournira à nos clients de quoi récupérer leurs messages via POP ou IMAP, de façon sécurisée. Il permettra aussi aux clients de s'identifier lors de l'envoi de mails via Postfix, en fournissant le mécanisme SASL. Pour que tout cela fonctionne correctement, Dovecot a besoin d'accéder aux mêmes tables que Postfix. C'est ce que nous allons configurer.

dovecot.conf

Fichier de configuration principal de Dovecot. Nous avons ici ajouté les workarounds pour des bugs connus dans les clients mails les plus répandus, la configuration spécifique à notre serveur, et les réglages SSL. Le reste est conforme aux réglages par défaut de Dovecot.

Le mécanisme d'identification choisi est plain. Les autres méthodes (chiffrées) ne sont pas toutes bien supportées par les clients mails, et le choix de plusieurs méthodes nous forcerait à stocker les mots de passe en clair dans la base (pas souhaitable du tout !). Cela dit, le mécanisme plain cesse d'être un problème de sécurité dès lors que l'on utilise SSL pour chiffrer la communication. C'est donc ce que nous allons faire :)

protocols = imap pop3 imaps pop3s         
disable_plaintext_auth = no     
mail_location = maildir:/var/spool/vmail/%u/
mmap_disable=yes
mail_access_groups = users
verbose_proctitle = yes
first_valid_uid = 1001           
first_valid_gid = 1001          
protocol imap {                 
      imap_client_workarounds = delay-newmail outlook-idle netscape-eoh tb-extra-mailbox-sep
}                               
protocol pop3 {                 
      pop3_uidl_format = %08Xu%08Xv
}                               
                              
auth_username_chars = abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@
auth_debug = no                 
auth_verbose = yes              
                              
ssl_cert_file = /usr/local/ssl/mail.gplmail.org.pem
ssl_key_file = /usr/local/ssl/mail.gplmail.org.pem
ssl_ca_file = /usr/local/ssl/mail.gplmail.org.pem
                              
auth default {                  
      mechanisms = plain
      passdb sql {
              args = /etc/dovecot/dovecot-sql.conf
      }
      userdb sql {
              args = /etc/dovecot/dovecot-sql.conf
      }
}

Si le certificat que vous utilisez n'est pas signé par une CA reconnue par le logiciel mail client, vos utilisateurs auront probablement à acquitter certains avertissements.

dovecot-sql.conf

C'est ici que l'on “explique” à Dovecot comment vérifier les noms d'utilisateur et mots de passe, tant pour ses besoins propres que pour Postfix/SASL. Comme expliqué précédemment, nous ne voulons pas stocker les mots de passe en clair dans la base de données. Nous avons donc choisi le schéma de stockage MD5-CRYPT, qui est supporté par l'interface de gestion PostfixAdmin.

driver = mysql
default_pass_scheme = MD5-CRYPT
# Database options
connect = host=localhost dbname=mail user=**** password=****
# Variante pour l'utilisation de socket (pas de communication réseau)
# connect = host=/var/run/mysqld/mysqld.sock  dbname=mail user=**** password=****  
password_query = SELECT password FROM mailbox WHERE username = '%u' AND active = '1'
user_query = SELECT maildir, 1001 AS uid, 1001 AS gid FROM mailbox WHERE username = '%u' AND active = '1'

MySQL, backend de stockage

Nous avons décidé de stocker tous les paramètres des comptes mails dans une base MySQL. Encore faut-il que MySQL nous y autorise. Pour ce faire, c'est assez simple. Avant tout, il faut initialiser la base où MySQL stocke ses propres données :

/usr/bin/mysql_install_db

Ceci fait, lancez votre serveur MySQL (/etc/init.d/mysql start) puis créez la table et l'utilisateur idoines :

mysql -u root -p
create database mail;
GRANT ALL PRIVILEGES ON mail.* TO postfix@localhost IDENTIFIED BY 'MotDePasse';
flush privileges; 

Encore une fois, libre à vous de choisir un autre nom d'utilisateur, ou de spécifier autre chose que localhost si votre base MySQL et votre Dovecot ne résident pas sur la même machine.

LightTPD

Lighty ne requiert pas de configuration particulière dans notre cas. Cependant, comme la sécurité doit rester une préoccupation constante, il serait judicieux de chiffrer l'accès à notre PostfixAdmin, afin d'éviter que les mots de passe ne circulent en clair.

Modifiez /etc/lighttpd/lighttpd.conf :

# {{{ mod_ssl
# see ssl.txt
#
  ssl.engine    = "enable"
  ssl.pemfile   = "server.pem"
#  }}}

Avec cette modifications, toutes les pages servies par Lighty seront accessibles UNIQUEMENT en SSL. Dans notre cas, c'est parfait. Si toutefois vous envisagez d'étendre l'usage de Lighty, il vous faudra certainement établir un paramétrage plus fin.

Au niveau de l'OS

Avant de passer au paramétrage de PostfixAdmin, il nous faut créer le répertoire qui servira à abriter les comptes mails. Voici ce qu'il faut faire, en tant que root :

mkdir /home/vmail
chown 1001: /home/vmail

PostfixAdmin

Le fichier de configuration de PostfixAdmin est par défaut /var/www/localhost/htdocs/postfixadmin/config.inc.php. Voici les paramètres nécessaires :

$CONF['configured'] = true;
$CONF['postfix_admin_url'] = ‘votredomaine.tld/postfixadmin’;

Connexion à la base de données $CONF['database_type'] = ‘mysqli’; $CONF['database_host'] = ‘localhost’; $CONF['database_user'] = ‘postfix’; $CONF['database_password'] = ‘MotDePasse’; $CONF['database_name'] = ‘mail’; $CONF['database_prefix'] = ”; Adresse email de l'administrateur

$CONF['admin_email'] = ‘postmaster@votredomaine.tld’;

Alias créés par défaut pour chaque domaine $CONF['default_aliases'] = array ( ‘abuse’ ⇒ ‘abuse@votredomaine.tld’, ‘hostmaster’ ⇒ ‘hostmaster@votredomaine.tld’, ‘postmaster’ ⇒ ‘postmaster@votredomaine.tld’, ‘webmaster’ ⇒ ‘webmaster@votredomaine.tld’ ); Ceci permet d'obtenir une structure /domain/user dans votre répertoire /home/vmail créé plus haut

$CONF['domain_path'] = ‘NO’;
$CONF['domain_in_mailbox'] = ‘YES’;
// Cryptage compatible avec Dovecot
$CONF['encrypt'] = 'md5crypt';

Un petit mot sur le paramètre $[CONF]['default_aliases']. Ce paramètre permet, lorsque vous ajoutez un domaine, de faire automatiquement pointer les adresses définies vers un domaine en particulier (ici votredomaine.tld). Au minimum, vous DEVEZ avoir un compte postmaster valid pour CHAQUE DOMAINE (RFC 1123 section 5.2.7).

Par conséquent, après la configuration de PostfixAdmin, vous DEVEZ créer le compte postmaster@votredomaine.tld afin que votredomaine.tld et tous les nouveaux domaines aient dès le départ un compte postmaster valide.

Sasl

Pour dire à saslauthd d'utiliser pam il suffit d'éditer le fichier saslauthd qui se trouve dans /etc/conf.d/saslauthd et de commenter la ligne :

#SASLAUTHD_OPTS="${SASLAUTHD_OPTS} -a pam"

et de rajouter a la fin de ce même fichier ces deux lignes ci :

SASLAUTHD_OPTS="${SASLAUTH_MECH} -a rimap -r"
SASLAUTHD_OPTS="${SASLAUTHD_OPTS} -O localhost"

Dernière étape

Si vous en êtes arrivés là, le plus dur est fait. Il reste maintenant à lancer les services et terminer la configuration de PostfixAdmin. MySQL a déjà dû être démarré, inutile de le relancer ici.

/etc/init.d/postfix start
/etc/init.d/dovecot start
/etc/init.d/lighttpd start

Un petit coup d'oeil à /var/log/messages permet de s'assurer que les services ont bien démarré :

postfix/postfix-script[14481]: starting the Postfix mail system
postfix/master[14482]: daemon started -- version 2.5.5, configuration /etc/postfix
dovecot: Dovecot v1.1.1 starting up
dovecot: auth-worker(default): mysql: Connected to /var/run/mysqld/mysqld.sock (mail)

Il ne vous reste plus qu'à vous rendre à l'adresse https://votredomaine.tld/postfixadmin/setup.php. Le script vérifiera l'état de votre installation, et si tout est correct vous allez créer un compte administrateur. Entrez votre adresse email et un mot de passe, et validez.

Une fois le compte administrateur ajouté, vous devez supprimer le fichier setup.php ou empêcher que l'on puisse y accéder :

cd /var/www/localhost/htdocs/postfixadmin
mv setup.php setup.php.disabled

Vous pouvez maintenant aller à l'adresse http://votredomaine.tld/postfixadmin/ et entrer votre login administrateur fraîchement créé pour commencer à administrer vos domaines mail !

Pour plus tard

Ce paragraphe contient des infos qui ne sont pas encore à leur place ….

auth smtp pam_mysql /etc/pam.d/smtp (pas pour le moment en prod)

# File autogenerated by pamd_mimic in pam eclass
#auth   include         system-auth
#account        include         system-auth

auth    required   pam_mysql.so user=**** passwd=**** host=127.0.0.1 db=mail table=mailbox usercolumn=username passwdcolumn=password crypt=1
auth       required     pam_nologin.so
auth       required     pam_env.so

account sufficient pam_mysql.so user=**** passwd=**** host=127.0.0.1 db=mail table=mailbox usercolumn=username passwdcolumn=password crypt=1
account    required     pam_unix.so

Mise a jour de l'antivirus regulierement

ajoutez ceci au crontab de root.

33 */2 * * * /usr/bin/freshclam --quiet

master.cf (pour gerer l'antispam)

#
# 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
submission inet n       -       n       -       -       smtpd
#  -o smtpd_enforce_tls=yes
#  -o smtpd_sasl_auth_enable=yes
#  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
smtpd     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
#  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#628      inet  n       -       n       -       -       qmqpd
pickup    fifo  n       -       n       60      1       pickup
cleanup   unix  n       -       n       -       0       cleanup
qmgr      fifo  n       -       n       300     1       qmgr
#qmgr     fifo  n       -       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
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

maildrop  unix  -       n       n       -       -       pipe
  flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}

# amavisd (sur gn1)
smtp-amavis   unix   -   -   y   -   8   smtp 
   -o smtp_data_done_timeout=1200 
   -o disable_dns_lookups=yes
   -o smtp_send_xforward_command=yes

81.93.248.68:10025   inet   n   -   y   -   -   smtpd 
   -o content_filter= 
   -o local_recipient_maps= 
   -o relay_recipient_maps= 
   -o smtpd_restriction_classes= 
   -o smtpd_helo_restrictions= 
   -o smtpd_sender_restrictions= 
   -o smtpd_recipient_restrictions=permit_mynetworks,reject 
   -o mynetworks=128.0.0.0/8,192.168.1.0/24,81.93.248.0/24
   -o strict_rfc821_envelopes=yes 

/etc/postfix/sasl/smtpd.conf

Uniquement si l'on utilise cyrus-sasl

pwcheck_method: saslauthd
mech_list: plain login
allow_plaintext: true
auxprop_plugin: mysql
sql_hostnames: 192.168.1.2
sql_user: ****
sql_passwd: ****
sql_database: mail
sql_select: select password from users where email = '%u'

/etc/mail/spamassassin/local.cf

# This is the right place to customize your installation of SpamAssassin.                                             
#                                                                                                                     
# See 'perldoc Mail::SpamAssassin::Conf' for details of what can be                                                   
# tweaked.                                                                                                            
#                                                                                                                     
# Only a small subset of options are listed below                                                                     
#                                                                                                                     
###########################################################################                                           

#   Add *****SPAM***** to the Subject header of spam e-mails                                                          
#                                                                                                                     
rewrite_header Subject ***SPAM***


#   Save spam messages as a message/rfc822 MIME attachment instead of                                                 
#   modifying the original message (0: off, 2: use text/plain instead)                                                
#                                                                                                                     
# report_safe 1                                                                                                       


#   Set which networks or hosts are considered 'trusted' by your mail                                                 
#   server (i.e. not spammers)                                                                                        
#                                                                                                                     

trusted_networks 81.93.248.


#   Set file-locking method (flock is not safe over NFS, but is faster)                                               
#                                                                                                                     
# lock_method flock                                                                                                   


#   Set the threshold at which a message is considered spam (default: 5.0)                                            
#                                                                                                                     
required_score 5.0


#   Use Bayesian classifier (default: 1)                                                                              
#                                                                                                                     
use_bayes 1


#   Bayesian classifier auto-learning (default: 1)                                                                    
#                                                                                                                     
bayes_auto_learn 1
bayes_auto_learn_threshold_nonspam 1
bayes_auto_learn_threshold_spam 14.00

#   Set headers which may provide inappropriate cues to the Bayesian                                                  
#   classifier                                                                                                        
#                                                                                                                     
# bayes_ignore_header X-Bogosity                                                                                      
bayes_ignore_header X-Spam-Flag
# bayes_ignore_header X-Spam-Status                 
# Filtrage amavis
content_filter = smtp-amavis:[127.0.0.1]:10024 

# Greylisting via postgrey 
check_policy_service = inet:127.0.0.1:10030