Configurer Exim 4 sur Debian 4.0 Etch
Exim 4 est transport de courrier (cad. MTA) 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.
Pour aller plus loin
Ce guide est le premier d'un ensemble de guide vous permettant de mettre en place un serveur mail complet :
- Installer le serveur IMAP Cyrus sur Debian 4.0 Etch et 5.0 Lenny
- Installer Horde Groupware Webmail Edition sur Debian 4.0 Etch ou 5.0 Lenny
Prérequis
Certain logiciels liés aux virus et aux spam doivent être mis à jour régulièrement pour rester efficaces, nous allons utiliser les paquets fournis par le projet Debian Volatile afin de disposer d'une version récente de ces logiciels :
DIST=lenny
if [ "$(/bin/cat /etc/debian_version)" = "4.0" ]; then
DIST=etch
fi
echo "# Debian Volatile
deb http://volatile.debian.org/debian-volatile ${DIST}/volatile main contrib non-free" \
| tee /etc/apt/sources.list.d/${DIST}-volatile.list
Nous ajoutons la clef signant ce dépôt à nos clefs de confiance :
wget http://www.debian.org/volatile/etch-volatile.asc -O- | apt-key add -
Enfin, nous mettons à jour la liste des paquets disponibles
apt-get update
Installation d'Exim 4
Nous installons Exim 4:
/usr/bin/apt-get install exim4-daemon-heavy
Nous modifions la configuration afin de la séparer en plusieurs fichiers:
/bin/sed -i -e "s/^\(dc_use_split_config=\).*/\1'true'/" /etc/exim4/update-exim4.conf.conf
Et nous mettons à jour la configuration:
/usr/sbin/update-exim4.conf
Configuration du EHLO
Afin que votre serveur fonctionne correctement, il est nécessaire de faire en sorte que le EHLO présente un nom de domaine complètement qualifié. Pour que ce soit le cas, il faut modifier votre fichier /etc/hosts, et y ajouter le nom de domaine complètement qualifié au début de la ligne correspondant au nom d'hôte de votre serveur. Le résultat recherché est le suivant :
xx.xx.xx.xx smtp.mon-domaine.fr mon-serveur mon-server.domaine.local
Pour obtenir ce résultat, vous pouvez utiliser la méthode qui suit, mais sans aucune garantie de fonctionnement, car cette configuration est intimmement liée à celle de votre serveur.
Commencez par renseignez le nom de domaine à utiliser pour les EHLO de votre serveur SMTP. Dans l'idéal, ce nom de domaine pointe vers l'IP publique de votre serveur SMTP :
SMTP_EHLO_DOMAIN=smtp.domaine.fr
Une fois le domaine renseigné, utilisez cette commande pour modifier votre fichier hosts :
/bin/sed -i -e "s/\(^[0-9.]*[ \t]*\)\(${HOSTNAME}.*\)$/\1${SMTP_EHLO_DOMAIN} \2/" /etc/hosts
Une fois la configuration appliquée, redémmarez Exim :
/etc/init.d/exim4 restart
Mise en place d'une protection contre les EHLO forgés
Afin de refuser les emails avec des EHLO forgés, nous allons apporter certaines modifications à notre configuration Exim 4.
En premier lieu, nous téléchargeons le fichier contenant les règles de configuration à ajouter:
/usr/bin/wget http://howto.landure.fr/gnu-linux/debian-4-0-etch/installer-spamassassin-avec-exim-4-sur-debian-4-0-etch/exim4_helo_checks.conf \
--output-document=/tmp/exim4_helo_checks.conf
Et nous les insérons dans la configuration d'Exim 4:
/bin/sed -i -e '/hosts[ \t]*=[ \t]*:/r /tmp/exim4_helo_checks.conf' /etc/exim4/conf.d/acl/30_exim4-config_check_rcpt
Et nous créons le fichier listant les IP et hôtes considérés comme des EHLO forgés:
/bin/echo "127.0.0.1
localhost
localhost.localdomain" | /usr/bin/tee /etc/exim4/rejected-helo.conf
Enfin, nous redémarrons le serveur Exim:
/etc/init.d/exim4 restart
Mise en place du filtrage anti-spam
Nous installons maintenant SpamAssassin et SA-Exim ainsi que les logiciels nécessaires à la compilation des règles de SpamAssassin (via sa-compile) :
apt-get install spamassassin sa-exim re2c make gcc libc6-dev
Nous activons SpamAssassin :
/bin/sed -i -e 's/^ENABLED=.*/ENABLED=1/' /etc/default/spamassassin
Nous activons de même la mise à jour nocturne des règles de Spam Assassin :
/bin/sed -i -e 's/^CRON=.*/CRON=1/' /etc/default/spamassassin
Nous mettons ensuite à jour manuellement les règles de Spam Assassin :
sa-update
sa-compile
Et nous démarrons le démon SpamAssassin :
/etc/init.d/spamassassin startAfin d'éviter que tous les emails transitant par notre serveur ne soient scanné, nous ajoutons des règles désactivant le scan anti-spam pour les e-mails des utilisateurs authentifiés, et des hôtes dont nous relayons le courrier. En premier lieu, nous téléchargeons le fichier contenant les règles de configuration à ajouter:
/usr/bin/wget http://howto.landure.fr/gnu-linux/debian-4-0-etch/installer-spamassassin-avec-exim-4-sur-debian-4-0-etch/exim4_no_spam_scan_acl.conf \
--output-document=/tmp/exim4_no_spam_scan_acl.conf
Et nous les insérons dans la configuration d'Exim 4:
/bin/sed -i -e '/hosts[ \t]*=[ \t]*:/r /tmp/exim4_no_spam_scan_acl.conf' /etc/exim4/conf.d/acl/30_exim4-config_check_rcptNous activons ensuite SA-Exim afin qu'il filtre tous les e-mails sauf ceux marqué par le serveur Exim :
/bin/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
Remarque : Vous pouvez modifier le seuil de rejet des Spam en modifiant la ligne suivante dans le fichier /etc/exim4/sa-exim.conf :
SApermreject: 12.0
Enfin, redémarrez Exim 4 :
/etc/init.d/exim4 restart
Source : Merci à Chirik pour son exemple dans le README de SAExim.
Mise en place du filtrage anti-virus
Nous installons maintenant ClamAV et les logiciels de décompression nécessaire à la vérification des archives, ainsi que les outils nécessaire au dialogue entre Exim 4 et les antivirus. De plus, le filtrage anti-virus par Exim 4 nécessite la version lourde du démon. Il nous faut donc l'installer. Voici la ligne de commande a exécuter pour faire tout cela :
/usr/bin/apt-get install exim4-daemon-heavy clamav-daemon \
daemon unrar lha arj debconf-utils unzip unace \
cpio zoo nomarch lzop cabextract pax
Une fois ceci fait, nous allons autoriser l'accès aux fichiers Exim par ClamAV :
/usr/sbin/adduser clamav Debian-exim
Nous redémarrons le démon ClamAV afin qu'il prenne en compte ces nouvelles permissions :
/bin/su - -c "/etc/init.d/clamav-daemon restart"
Et nous configureons Exim 4 afin qu'il utilise cet anti-virus :
/bin/sed -i -e 's|^.*av_scanner[ \t]*=.*$|av_scanner = clamd:/var/run/clamav/clamd.ctl|' \
/etc/exim4/conf.d/main/02_exim4-config_options
Pour que l'anti-virus soit pris en compte, il nous faut configurer les messages de 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 = *
' | /usr/bin/tee -a /etc/exim4/local-acl.conf
Nous créons 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
" | /usr/bin/tee /etc/exim4/conf.d/main/01_exim4-local_acl_macrodefs
Enfin, nous redémarrons Exim :
/etc/init.d/exim4 restart
Remarque : Vous pouvez tester votre anti-virus en utilisant les fichiers fournis par eicar (The antivirus or malwhare test file). Si les emails contenant ce fichier sont détecté comme contenant un virus, c'est que votre configuration est fonctionnelle.
Augmenter le nombre de messages envoyés par connexion SMTP
Si vous voyez fréquemment le message suivant dans vos journaux Exim :
no immediate delivery: more than 10 messages received in one connection
Vous pouvez augmenter le nombre maximum de messages acceptés lors d'une connexion SMTP avec la commande suivante :
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
" | /usr/bin/tee /etc/exim4/conf.d/main/04_exim4-config_queueoptions
Vous devez ensuite recharger la configuration d'Exim :
/etc/init.d/exim4 reload
Remarque : Utilisez cette configuration avec prudence car elle peut entrainer une surcharge de votre serveur.
Mise en place de DKIM
DKIM signifie DomainKeys Identified Mail. C'est le successeur de Domain Keys. C'est une méthode imaginée par Yahoo! permettant de certifier qu'un email a été envoyé par un serveur autorisé. Ainsi, si un email en provenance d'un domaine donné a été envoyé par un serveur non validé pour ce domaine, il est fort probable que cet email soit un spam.
Pour mettre en place ce système, il est nécessaire d'installer un proxy SMTP chargé de signer les messages sortants à l'aide de DomainKeys :
/usr/bin/apt-get install dkimproxy
Si vous ne vous en servez pas, arrêtez et désactivez amavisd-new :
/etc/init.d/amavis stop
/usr/sbin/update-rc.d -f amavis remove
Renseignez aussi le code du serveur sur lequel vous configurez DKIM.
Vous devez utiliser un code différent pour chaque serveur envoyant
des emails pour le domaine :
SELECTOR=server_code
Une fois le code choisi, nous mettons à jour la configuration de dkimproxy :
/bin/sed -i "s/^selector[ \t]*.*$/selector ${SELECTOR}/" \
/etc/dkimproxy/dkimproxy_out.conf
Nous faisons en sorte qu'Exim attende des connexion entrantes sur le port local 10029 pour qu'il puisse récupérer les messages traités par dkimproxy :
/bin/sed -i "s/^\(dc_local_interfaces='.*\)'/\1;127.0.0.1.10029'/" /etc/exim4/update-exim4.conf.conf
/usr/sbin/update-exim4.conf
Nous mettons en place un transport permettant à Exim 4 de passer les messages à dkimproxy :
/bin/echo '
### transport/40_exim4-config_dkimproxy_smtp
#################################
# This router is used to pass outgoing emails to dkimproxy
# in order to add DomainKeys signature.
dkimproxy_smtp:
driver = smtp
port = 10028
hosts_avoid_tls = 127.0.0.1
allow_localhost
' > /etc/exim4/conf.d/transport/40_exim4-config_dkimproxy_smtp
Nous ajoutons un routeur passant les emails sortants par le transport dkimproxy pour ajouter la signature DomainKeys :
/bin/echo '
### router/020_exim4-config_dkimproxy
#################################
# This routeur pass outgoing emails to dkimproxy
# in order to add DomainKeys signature.
dkimproxy:
driver = manualroute
condition = "${if eq {$interface_port}{10029} {0}{1}}"
transport = dkimproxy_smtp
route_list = "* localhost byname"
self = send
' > /etc/exim4/conf.d/router/020_exim4-config_dkimproxy
Nous rechargeons la configuration d'Exim :
/etc/init.d/exim4 reload
Ajout d'un domaine à la configuration de DKIMproxy
Nous allons maintenant créer la clef de chiffrement qui va servir pour signer les e-mail en provenance d'un domaine donné envoyés par notre serveur.
En premier lieu, renseignez le domaine d'email pour lequel vous souhaitez configurer le DKIM :
DOMAIN=mon-domaine.com
Nous ajoutons ce domaine à la configuration de dkimproxy :
if [ -z "$(/bin/grep '^domain' /etc/dkimproxy/dkimproxy_out.conf)" ]; then
/bin/sed -i "s/^#domain.*/domain ${DOMAIN}/" \
/etc/dkimproxy/dkimproxy_out.conf
else
/bin/sed -i "s/^\(domain.*\)/\1,${DOMAIN}/" \
/etc/dkimproxy/dkimproxy_out.conf
fi
Nous rechargeons la configuration de dkimproxy :
/etc/init.d/dkimproxy reload
Vous pouvez obtenir la configuration que vous devez placer dans la zone DNS du domaine à l'aide de la commande suivante :
SELECTOR=$(/bin/grep '^selector' /etc/dkimproxy/dkimproxy_out.conf \
| /bin/sed 's/^selector[ \t]*//')
PUBLIC_KEY=$(/bin/grep -v "PUBLIC KEY-----" /var/lib/dkimproxy/public.key \
| sed -n -e ":a" -e "$ s/\n//gp;N;b a")
/bin/echo "
# Dkim configuration for domain ${DOMAIN} and server with selector {$SELECTOR}.
_asp._domainkey.${DOMAIN}. IN TXT \"dkim=all\"
_adsp._domainkey.${DOMAIN}. IN TXT \"dkim=all\"
_domainkey.${DOMAIN}. IN TXT \"t=y; o=-;\"
${SELECTOR}._domainkey.${DOMAIN}. 14400 IN TXT \"k=rsa; p=${PUBLIC_KEY};\"
"
Il vous suffit maintenant d'ajouter les lignes spécifiées à la configuration de votre zone DNS.
Remarque : les lignes _asp._domainkey et _adps._domainkey sont utilisée pour signaler si tous les e-mails pour le domaine sont signés (all). Si vous n'utilisez pas forcément votre propre serveur SMTP, vous pouvez signalez que seulement certain emails sont signés (unknown).
De même la ligne "_domainkey" signale à l'aide de "o=-" que tous les emails doivent être signés. Si ce n'est pas le cas, il vous suffit de modifier cette option par "o=~".
Une fois cette configuration mise en place, vous pouvez la tester avec les outils suivants :
- http://www.brandonchecketts.com/emailtest.php
- http://www.myiptest.com/staticpages/index.php/DomainKeys-DKIM-SPF-Validator-test
Lorsque vos tests auront été couronnés de succès (laissez passer 24h lors de corrections dans les DNS pour laisser le temps aux mises à jour de se diffuser), retirez "t=y; " de la valeur de l'enregistrement _domainkey : cette option signale que l'installation DKIM est en cours de test. Sa présence n'est plus nécessaire lorsque vous avez réussi à mettre en place la signature.
Par la suite
Maintenant que vous avez configuré Exim 4 pour éjecter les spams et les virus, il ne vous reste qu'a le configurer pour correspondre à vos besoin. Vous pouvez y parvenir avec le script de configuration automatisé fourni par Debian:
/usr/sbin/dpkg-reconfigure exim4-config
Attention: choisissez de séparer la configuration en plusieurs fichiers.
Vous pouvez aussi vous inspirer de l'excellent article de Samuel ROZE pour configurer Sender ID et DomainKeys pour mettre en place le SPF (Sender Framework Policy) afin que vous e-mails ne soient pas considérés comme spam par Windows Live Mail.
Déboguer Exim 4
Problèmes de démarrage
Si vous rencontrez des problèmes de démarrage d'Exim 4, il est possible de déboguer le script de lancement d'Exim à l'aide la commande :
EX4DEBUG=1 /etc/init.d/exim4 restart
Problèmes d'envoi ou de réception des e-mails
Si votre installation d'Exim 4 ne fonctionne pas correctement, vous pouvez activer le débogage à l'aide de la commande :
/bin/sed -i -e "s/\(COMMONOPTIONS='.*\)'.*/\1 -d'/" /etc/default/exim4
Relancez ensuite Exim 4 afin d'activer le débogage :
/etc/init.d/exim4 restart
Remerciements :
- Merci au contributeurs du projet Debian Volatile.
- Merci à Didier Mission pour son article Configuration antivirus et antispam avec Exim4, ClamAV et SpamAssassin.
-
Merci à l'auteur de HOWTO: Debian Sarge/Etch: Setting up a Mail Server on Exim4 with Antivirus and Antispam filtering.
- Merci à l'auteur de HELO restrictions for Exim4.
- Merci à l'auteur de Howto setup a Virtual Mail System with Exim, MySQL, SpamAssassin, ClamAV and Dovecot.
- Merci à Justin Koivisto pour son article Installing and configuring Exim 4 on Debian.
- Merci à Lee Maguire pour son article Quick setup for Exim4 TLS/SMTP-AUTH.
- Merci à WPKG Blog pour l'article Setting up DKIMproxy with Exim for DKIM and DomainKeys signing.
- Merci aux développeurs de DKIMproxy.
configurer Exim 4
Si vous souhaitez mettre en place un serveur e-mail complet, je suis en train d'écrire un guide pour ce faire, et j'espère qu'il sera terminé dans les semaines qui viennent.
Pour le reste, je vous conseille de faire quelques recherches Google pour trouver les informations concernant votre configuration propre.
comment configurer exim 4 pour n'envoyer que des mail avec authentification
comment faire pour configurer exim4 pour l'envoi des mail seulement avec authentification smtp
pour se proteger de les attaques de spammeurs qui utilisons mon serveur pour envoyer ces spam
merci d'avance
sujet compliqué
C'est quelque chose d'un peu compliqué a faire avec Exim, mais il y a foison de guide à ce sujet sur le net.
Google est ton ami sur ce point :)
Bon courage
Serveur SMTP de relais sur un LAN
Merci beaucoup. Sinon, superbe tuto :)
petit problémes
Je te remercie pour ce tuto super sympa et qui m'a été utile. Je suis encore que novice avec linux, et j'ai quelques questions:
- à l'installation de spamassassin, le système dit qu'il va supprimer le paquet: LINUX-KERNEL-HEADERS --> est ce grave?
- j'ai oublié de mettre à jour les paquets avant de télécharger clamav du coup je n'ai pas la derniére version 0.95.1 mais la 0.94.2, comment la mettre à jour je n'y arrive pas?...
- et je n'arrive pas à éxécuter la commande: /bin/sed -i -e 's|^.*av_scanner[ \t]*=.*$|av_scanner = clamd:/var/run/clamav/clamd.ctl|' /etc/exim4/conf.d/main/02_exim4-config_options de ton tuto, il bloque sur le " 's| " . ai-je oublié quelque chose?
merci encore
de rien, et réponse à tes questions
- essaye en supprimant clamav, puis en réinstallant, ou simplement en relancant l'installation (apt-get remove clamav*; apt-get install clamav par exemple).
- pour la commande posant problème, il me faudrait l'erreur exacte pour diagnostiquer. Mon conseil est d'utiliser le copier coller pour éxecuter ces scripts... la recopie à la main est dangereuse.
Bonne continuation.
Autre question
Sinon pour le lien que tu as donné pour tester la config (le "testfile"), comment on fait pour l'utiliser? et est-il sûr? car ils mettent sur le site que si on l'utilise c'est à nos risques et périls.... et que pour l'enlève il faut contacter notre vendeur... bref, il me faudrait tes lumières.
merci d'avance
testfile Eicar
enregistre le fichier sur ton disque, et envoie le en pièce jointe d'un email destiné à une adresse protégée par ton serveur mail. Si tu ne le reçois pas, ou que tu reçois un avertissement,c'est que l'antivirus a "annulé" l'email contenant le faux virus.
deplacement repertoire queue mail
je ne sais pas comment faire pour deplacer de dossier la queue de mail
a l'origine ca passe par /var/spool/exim4/inpput mias la je voudrais le mettre sur /home/utilisateur/log/xmailqueue
et je ne suis pas du tout un cador dans linux
merci pour votre reponse
Changement d'emplacement du spool
je ne sais pas comment réaliser cette opération, mais vous pourriez utiliser la commande grep sur le dossier de configuration d'exim pour trouver la valeur à modifier :
grep -r "/var/spool" /etc/exim4
Bonne chance
Configuration de EXIM 4 sur Etch
J'ai lu et relu, très intéressant mais il me semble que la seule ligne a propos de la configuration de EXIM
soit /usr/sbin/dpkg-reconfigure exim4-config
l'article traite (il me semble, des "a cotés" de Exim) Serait-il possible d'avoir les pages concernant la configuration
de Exim ??