Vous êtes ici : Accueil / Debian GNU/Linux / Serveurs / E-Mails / Configurer Exim 4 sur Debian

Configurer Exim 4 sur Debian

Par Pierre-Yves Landuré Dernière modification 27/04/2013 09:15

Exim 4 est transport de courrier (M.T.A.) par défaut de Debian. Il présente de nombreux avantages, bien que sa configuration réputée plus complexe que celle de Postfix puisse rebuter les moins expérimentés. Ce guide présente différentes étapes de la configuration d'Exim 4 pour implémenter les fonctionnalités anti-spam et anti-virus.

Ce guide est testé sur

  • Debian 5.0 Lenny
  • Debian 6.0 Squeeze
  • Debian 7.0 Wheezy

Prérequis

Ce guide nécessite:

Paramètres

La réception et l'envoi des emails par le serveur SMTP nécessite que le HELO soit un nom de domaine qualifié (visible sur Internet). Renseignez le nom de domaine qualifié du serveur:

NEW_FQDN="smtp.domain.com"

Renseignez le nom du certificat SSL à utiliser pour chiffrer l'application avec TLS ou IMAPS (créé via la procédure Créer un certificat SSL / TLS sur Debian) (optionnel, recommandé):

SSL_KEY_NAME="${NEW_FQDN}"

Installation

Installez le serveur:

command apt-get install exim4-daemon-heavy

Séparez la configuration du serveur en plusieurs fichiers:

command sed -i \
-e 's/^\(dc_use_split_config=\).*/\1'true'/' \
  '/etc/exim4/update-exim4.conf.conf'

Prenez en compte la modification:

command update-exim4.conf

Configuration du chiffrement

Ajoutez l'utilisateur Debian-exim groupe ssl-cert:

command adduser Debian-exim ssl-cert

Déterminez les chemins du certificat SSL:

SMTP_SSL_KEY="/etc/ssl/private/${SSL_KEY_NAME}.key"
if [ -e "/etc/ssl/certificates/${SSL_KEY_NAME}.crt+chain+root" ]; then
SMTP_SSL_CRT="/etc/ssl/certificates/${SSL_KEY_NAME}.crt+chain+root"
else
SMTP_SSL_CRT="/etc/ssl/certificates/${SSL_KEY_NAME}.crt"
fi

Configurez le chiffrement TLS du serveur SMTP, si possible:

if [ -e "${SMTP_SSL_KEY}" -a -e "${SMTP_SSL_CRT}" ]; then
command echo "
### main/02_exim4-config_tlscert
#################################

# ENABLING TLS
MAIN_TLS_ENABLE = true

# SSL private key
MAIN_TLS_PRIVATEKEY = ${SMTP_SSL_KEY}

# SSL public key
MAIN_TLS_CERTIFICATE = ${SMTP_SSL_CRT}

# Disabling certificate verification to avoid problems with some
# mail clients when using CACert (or self signed) certificates.
# Concerned mail clients : Outlook 2003, Mail for Mac OS X...
MAIN_TLS_VERIFY_CERTIFICATES = /dev/null
" > '/etc/exim4/conf.d/main/02_exim4-config_tlscert'
fi

Rechargez la configuration:

/etc/init.d/exim4 restart

Configuration du EHLO

Le HELO est déterminé par le nom d'hôte du serveur.

Modifiez le nom d'hôte du serveur à l'aide de la procédure Modifier le nom d'un hôte Debian GNU/Linux.

Protection anti-spam

Filtrer les HELO

Refuser les connexion SMTP utilisant des HELO incorrects est une protection anti-spam simple. Cela bloque une grande part des Spam envoyés au serveur.

Téléchargez les règles de filtrage des HELO:

command wget 'https://raw.github.com/biapy/howto.biapy.com/master/exim4/exim4_helo_checks.conf' \
--quiet --no-check-certificate --output-document='/tmp/exim4_helo_checks.conf'

Ajoutez les règles de filtrage des HELO à la configuration du serveur:

command sed -i \
-e '/hosts[ \t]*=[ \t]*:/r /tmp/exim4_helo_checks.conf' \
'/etc/exim4/conf.d/acl/30_exim4-config_check_rcpt'

Supprimez le fichier téléchargé:

command rm '/tmp/exim4_helo_checks.conf'

Initialisez la liste des IP et hôtes considérés comme HELO incorrects:

command echo "127.0.0.1
localhost
localhost.localdomain" \
> '/etc/exim4/rejected-helo.conf'

Rechargez la configuration du serveur:

/etc/init.d/exim4 reload

Filtrer avec SpamAssassin

Installez les logiciels nécessaires:

command apt-get install spamassassin sa-exim re2c make gcc libc6-dev

Activez le démon SpamAssassin et la mise à jour quotidienne des filtres:

command sed -i \
-e 's/^ENABLED=.*/ENABLED=1/' \
-e 's/^CRON=.*/CRON=1/' \
'/etc/default/spamassassin'

Mettez à jour les filtres SpamAssassin:

/etc/cron.daily/spamassassin

Démarrez le démon SpamAssassin:

/etc/init.d/spamassassin start

La vérification anti-spam est très consommatrice de ressources. Pour réduire la charge du serveur, désactivez le scan anti-spam pour les e-mails envoyés par des utilisateurs identifiés et par les hôtes pour lesquels le relais est autorisé.

Téléchargez les règles d'ignorance du filtre anti-spam:

command wget 'https://raw.github.com/biapy/howto.biapy.com/master/exim4/exim4_no_spam_scan_acl.conf' \
--quiet --no-check-certificate --output-document='/tmp/exim4_no_spam_scan_acl.conf'

Ajoutez les règles d'ignorance du filtre anti-spam à la configuration du serveur:

command sed -i \
  -e '/hosts[ \t]*=[ \t]*:/r /tmp/exim4_no_spam_scan_acl.conf' \
'/etc/exim4/conf.d/acl/30_exim4-config_check_rcpt'

Supprimez le fichier téléchargé:

command rm '/tmp/exim4_no_spam_scan_acl.conf'

Activez SA-Exim et configurez-le pour vérifier tous les e-mails non marqués par le serveur Exim:

command sed -i -e 's/^SAEximRunCond: [01]/SAEximRunCond: ${if !eq{$acl_m0}{do-not-scan}}/' \
-e '/SAEximRejCond:/a\
SAEximRejCond: ${if !eq{$acl_m0}{do-not-reject}}' \
'/etc/exim4/sa-exim.conf'

Rechargez la configuration:

/etc/init.d/exim4 reload

Remarque: Ajustez le seuil de rejet des Spam dans le fichier /etc/exim4/sa-exim.conf en modifiant la valeur:

SApermreject: 12.0

Protection antivirus

Installez le démon ClamAV et les outils associés:

command apt-get install clamav-daemon \
daemon unrar arj debconf-utils unzip unace \
cpio zoo nomarch lzop cabextract pax

Autorisez l'accès aux fichiers du serveur Exim par l'antivirus:

command adduser clamav Debian-exim

Redémarrez le démon ClamAV:

su - -c "/etc/init.d/clamav-daemon restart"

Configurez Exim 4 pour utiliser l'antivirus:

command sed -i \
-e 's|^.*av_scanner[ \t]*=.*$|av_scanner = clamd:/var/run/clamav/clamd.ctl|' \
'/etc/exim4/conf.d/main/02_exim4-config_options'

Configurez le rejet des emails infectés:

echo '
# local-acl.conf
###################"

# This file is included in acl/40_exim4-config_check_data
# using the CHECK_DATA_LOCAL_ACL_FILE macro.

 # Deny viruses.
deny
  message = Message contains malware or a virus ($malware_name).
log_message = $sender_host_address tried sending $malware_name
demime = *
malware = *
' >> '/etc/exim4/local-acl.conf'

Créez la macro CHECK_DATA_LOCAL_ACL_FILE:

echo "
### main/01_exim4-local_acl_macrodefs
#################################

.ifndef CHECK_DATA_LOCAL_ACL_FILE
CHECK_DATA_LOCAL_ACL_FILE = /etc/exim4/local-acl.conf
.endif
" > '/etc/exim4/conf.d/main/01_exim4-local_acl_macrodefs'

Rechargez la configuration du serveur SMTP:

/etc/init.d/exim4 restart

Le projet eicar (The antivirus or malwhare test file) fournit des fichiers tests générant des faux positifs. La configuration est fonctionnelle si les emails contenant un de ces fichiers sont rejetés.

Pour aller plus loin

Pour adapter Exim 4 à vos besoins, utilisez le script de configuration automatisé fourni par Debian:

command dpkg-reconfigure exim4-config

Attention: choisissez de séparer la configuration en plusieurs fichiers.

Augmenter le nombre de messages envoyés par connexion SMTP

Utilisez cette configuration avec prudence car elle peut entrainer une surcharge de votre serveur.

Si vous voyez fréquemment le message suivant dans vos journaux Exim:

no immediate delivery: more than 10 messages received in one connection

Augmentez le nombre maximum de messages acceptés lors d'une connexion SMTP:

echo "
### main/04_exim4-config_queueoptions
#################################

# Allow up to 100 messages by connexion.
# Avoid the apparition of 'no immediate delivery: more than 10 messages received in one connection' warning.
smtp_accept_queue_per_connection = 100
" > '/etc/exim4/conf.d/main/04_exim4-config_queueoptions'

Rechargez la configuration d'Exim :

/etc/init.d/exim4 reload

Déboguer Exim 4

Si vous rencontrez des problèmes de démarrage du serveur SMTP, il est possible de déboguer le script de lancement d'Exim à l'aide la commande :

EX4DEBUG=1 /etc/init.d/exim4 restart

Pour déboguer le chemin suivi par les emails dans le serveur SMTP, activez le mode de débogage d'Exim:

command sed -i \
-e "s/\(COMMONOPTIONS='.*\)'.*/\1 -d'/" \
'/etc/default/exim4'

Relancez le serveur pour prendre en compte la configuration:

/etc/init.d/exim4 restart

Désactivez le débogage avec:

command sed -i \
-e "s/\(COMMONOPTIONS='.*\) -d'.*/\1'/" \
'/etc/default/exim4'
/etc/init.d/exim4 restart

Références

Ces livres peuvent vous aider:

Remerciements :