Outils personnels
Vous êtes ici : Accueil GNU / Linux Debian Configurer Exim 4 sur Debian 4.0 Etch
Actions sur le document
  • Send this page to somebody
  • Print this page
  • Add Bookmarklet

Configurer Exim 4 sur Debian 4.0 Etch

Par Pierre-Yves Landuré - Dernière modification 03/12/2009 10:34

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 :

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 start
Afin 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_rcpt
Nous 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 :

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 :

Attachements

Configuration de EXIM 4 sur Etch

Posté par zecat le 17/09/2008 10:35
Bonjour,

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 ??

configurer Exim 4

Posté par Pierre-Yves Landuré le 17/09/2008 10:54
Le problème c'est que la configuration d'un serveur SMTP est très personelle. On peut souhaiter avoir un serveur email complet, ou encore un serveur de relais pour son réseau local, ou encore un serveur mail pour l'ordinateur, etc.

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

Posté par abking le 09/10/2008 14:53
merci pour ce guide c'est très intéressant
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é

Posté par lwolf le 09/10/2008 15:00
je te conseille de rechercher des guides pour configurer Exim avec identification depuis une base de données MySQL. Personnellement, j'ai un guide sur la création d'un serveur de mail complet (avec IMAP et tout). Mais ne l'attend pas trop... je travaille dessus par intermittence.

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

Posté par PouLpeX le 05/08/2010 12:52
Justement, je souhaiterai utiliser exim pour effectuer un relais SMTP. Plus précisement, j'aimerai qu'il soit capable de recevoir les mails avant le vrai serveur mail du LAN, effectuer le traitement de l'antispam/antivirus et donc envoyer les mails valide au réel serveur de mail pour la remise aux utilisateurs. Sa manque pas mal d'information à ce niveau là sur le net.. Si quelqu'un à déjà voulu faire ce genre de configuration ou encore l'a déjà réaliser, je serai pas mal intéréssé pour en avoir quelques informations.

Merci beaucoup. Sinon, superbe tuto :)

petit problémes

Posté par babeulone le 14/05/2009 09:04
bonjour,
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

Posté par lwolf le 14/05/2009 11:44
- La suppression de linux-kernel-headers n'est pas importante, il s'agit juste de sources du noyaux.
- 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

Posté par babeulone le 14/05/2009 15:48
merci pour ces réponses rapide, qui m'ont permises tout résoudre sauf pour la mise à jour de clamav... mais je me penche sur le sujet. :-)

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

Posté par Pierre-Yves Landuré le 14/05/2009 17:06
Bonjour,

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

Posté par antoine ssii le 04/08/2011 17:42
salut,

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

Posté par Lone Wolf le 05/08/2011 11:18
Bonjour,

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

BlogBang
Navigation
 

Réalisé avec Plone

Ce site respecte les normes suivantes :

Wikio