Modifications entre les versions 1 et 3 (s'étendant sur 2 versions)
Version 1 à la date du 2009-03-04 12:02:11
Taille: 5242
Éditeur: RogerYerbanga
Commentaire:
Version 3 à la date du 2009-03-04 17:17:04
Taille: 11910
Éditeur: RogerYerbanga
Commentaire:
Texte supprimé. Texte ajouté.
Ligne 4: Ligne 4:
Exim est un serveur de messagerie électronique (Mail Transfer Agent) utilisé sur de nombreux systèmes UNIX. Son choix est justifié par le fait qu’il est très complet avec de nombreux paramètres, qu’il permet de faire du maildir (livraison des mails dans un répertoire), qu’il permet de choisir notre méthode de gestion des utilisateurs (soit base de données mysql, ldap, passwd, …), il est robuste (il peut gérer des grands systèmes avec des milliers d’utilisateurs et de mails par jour), il est capable de rejeter les mails dans la session SMTP ce qui génère moins de trafic, et il est assez aisé à configurer, et qu'il est très bien documenté. Exim est un serveur de messagerie électronique (Mail Transfer Agent) utilisé sur de nombreux systèmes UNIX. Son choix est justifié par le fait qu’il est très complet avec de nombreux paramètres, qu’il permet de faire du maildir (livraison des mails dans un répertoire), qu’il permet de choisir notre méthode de gestion des utilisateurs (soit base de données mysql, ldap, passwd, …), il est robuste (peut gérer des grands systèmes avec des milliers d’utilisateurs et de mails par jour), il est capable de rejeter les mails dans la session SMTP ce qui génère moins de trafic, et il est assez aisé à configurer, et il est très bien documenté.
Ligne 14: Ligne 14:
- Et les mails qu’il délivre aux utilisateurs dans leur répertoire respectif. - Et les mails qu’il délivre aux utilisateurs dans leur répertoire ou fichier respectif.
Ligne 18: Ligne 18:
== 1. Prérequis ==
Pour son installation, sur une debian lenny, il suffit juste de faire : aptitude install exim4-daemon-heavy L'installation est donc très facile;-) Cependant, pour qu'exim tourne, il lui faut obligatoirement un anti-virus (on fait appel à clamav), et un antispam est optionnel, mais fortement recommandé, le standard de fait est spamassassin, possible de mettre du mailman pour ceux qui veulent gérer des listes de diffusion. Exim utilise sa-exim pour contrôler sa manière de causer avec des programmes comme spamassassin, et préciser comment on traite les spams en fonction de leur score ; il est également à installer. Un autre programme interessant est greylistd, qui permet de faire du greylistd à la sauce debian.
== 1- Prérequis ==

Pour son installation, sur une debian lenny, il suffit juste de faire : aptitude install exim4-daemon-heavy L'installation est donc très facile;-) Cependant, pour qu'exim tourne, il lui faut obligatoirement un anti-virus (on fait appel à clamav), et un antispam est optionnel, mais fortement recommandé, le standard de fait est spamassassin, possible de mettre du mailman pour ceux qui veulent gérer des listes de diffusion. Exim utilise sa-exim pour contrôler sa manière de causer avec des programmes comme spamassassin, et préciser comment on traite les spams en fonction de leur score ; il est également à installer. Un autre programme interessant est greylistd, qui permet de faire du greylisting à la sauce debian.
Ligne 23: Ligne 24:
=== 1.1 clamav === === 1.1- ClamAV ===
Ligne 99: Ligne 100:
=== 1.2 spamassassin ===
 * tail -f /var/log/clamav/freshclam.log
 * tail -f /var/log/clamav/clamav.log


=== 1.2- SpamAssassin ===
Ligne 104: Ligne 110:
''' Quelques options tout de même du fichier local.cf '''

{{{

# le score à partir duquel un message est classé comme spam. Par défaut, c’est 5, mais j’ai déjà vu des configurations avec 7.
required_score 5.0
# Mettre ces 2 paramètres à 1 pour dire à SA de faire attention aux mots ou séquences de mots souvent présents dans les spams et de les apprendre lui-même. La commande sa-learn permet de faire apprendre manuellement.
use_bayes 1
bayes_auto_learn 1
# permet de spécifier des réseaux auxquels on a confiance, donc des réseaux non spammeurs.
trusted_networks 10.196.1/24 <IPserveurencoursdeconfiguration>

}}}
Ligne 105: Ligne 125:
   * spamassassin -D --lint // Puis avoir le courage de lire et analyser ce qui s'affiche
 * spamassassin --lint // Pour les plus pressés, en cas d'erreur, il vous dira quelle est l'erreur
 * Trouver les fichiers sample-nonspam.txt et sample-spam.txt ou bien créez vous deux mails : un spam et un nonspam, puis :
  * spamassassin –t < sample-nonspam.txt > nonspam.out
  * spamassassin –t < sample-spam.txt > spam.out
  * Et lire les fichiers spam.out et nonspam.out à la recherche du score du message.
 * utilisation de ps et lecture des logs

=== 1.3- Greylist ===

Pas forcément necessaire, mais interessant pour faire du greylisting : rejet de mail temporairement avec écriture d'informations (expéditeur, récepteur, serveur d'envoi) dans une base de données, puis demande de ressayer plus tard.

Permet avec spamassassin de lutter contre les spams.

Pour installer : aptitude install greylistd // et répondre oui ou non aux questions qu'il vous pose.


Puis ouvrir le fichier /etc/greylistd/whitelist-hosts et rajouter sur 2 lignes différentes les IP du serveur mail de Montreal et de Dakar, puis d'autres serveurs auxquels vous avez assez confiance en matière de spam.

== 2- Installation de exim ==

Tout simplement : aptitude install exim4-daemon-heavy sa-exim

== 3- Configuration de exim ==

Il est possible de travailler avec l'installation par défaut de exim, mais vu qu'on aime pas les choses par défaut et qu'on comprend bien le fonctionnement de exim et son fichier de conf, on élimine la config par défaut pour créer notre propre fichier de configuration.

=== 3.1 - Destruction de la configuration par défaut ===

mv /etc/exim4/exim4.conf.template /etc/exim4/exim4.conf.template.orig

Il est possible de supprimer tout ce qu'il y'a dans le répertoire /etc/exim4, à part le fichier sa-exim.conf

=== 3.2 - Fichier de conf de exim ===

Dans le cas de notre installation, il s'appelle /etc/exim4/exim4.conf.template. Mais il poourrait s'appeler n'importe quoi d'autre y compris prog ou fou ;-) Il faut donc le recréér puisqu'on vient juste d'être malin en le supprimant.

La structure du fichier de configuration de exim ressemble à s'y méprendre au traitement qu'effectue un MTA sur un mail qu'il reçoit. Ce fichier est divisé en plusieurs sections, la première définit les options globales, tandis que les autres plus ou moins optionnelles commencent par '' begin <nomdesection> ''. Les commentaires, les macros, les affectations, les inclusions sont disponibles, et la syntaxe ressamble à du langage de script shell. Le commentaire dans ce fichier est le caractère # en début de ligne.En général, on a 7 parties, et chaque partie à part la section globale correspond aux différentes actions réalisées sur un message :


==== 3.2.1 Section globale ====

La section qui précise les paramètres globaux :
{{{
# Donner les paramètres d'une base de données à exim.
hide mysql_servers = <IPServeurMySQL>/<nomdebasededonnées>/<UtilisateurAyantDroitDeSelect>/<Motdepasse>
# Quelques paramètres pour Mailman dans la section principale
MAILMAN_HOME=/usr/lib/mailman
MAILMAN_VAR=/var/lib/mailman
MAILMAN_WRAP=MAILMAN_HOME/mail/mailman
MAILMAN_USER=list
MAILMAN_GROUP=list
domainlist MM_DOMAINS = gn.refer.org : gn.auf.org
# Pour faire du routage de mail manuel vers des serveurs qu'on veut
# Mettre dans un fichier les domaines qu'on veut router manuellement
# Par exemple, si je veux que les mails envoyés à auf.org passent d'abord par un serveur précis : pas de requête DNS pour savoir vers quel serveur envoyer
domainlist MR_DOMAINS = /etc/exim4/manual_route
# Il est clair que ce fichier (/etc/exim4/manual_route) est à créer et doit contenir les domaines à router manuellement ; un domaine par ligne
# Pour ceux qui ne font ni de l'authentification mysql, ni du mailman, ni du routage manuel, pas besoin de ces paramètres.

# Le canonical name de votre serveur :
# Je conseille de prendre le nom qui est déclaré dans le DNS, qui correspond au reverse et qui est souvent celui qui se trouve dans /etc/mailname
primary_hostname = <NomPrincipalDeVotreServeurDeMail>
# Le ou les domaines locaux
# Choisir l'une des deux lignes suivantes en fonction que vous gérez plusieurs dizaines de domaines ou juste deux trois domaines
domainlist local_domains = /etc/exim4/local_domains
domainlist local_domains = @ : <domainegéré1> : <domainegéré2> : <domainegéré3>
# Si vous décidez de choisir la première méthode, il faudra créer le fichier /etc/exim4/local_domains, et inscrire les différents domaines : une par ligne.
# Pour la deuxième option, le @ signifie le nom de la machine.

# Les domaines pour lesquels on sert de relay. C'est mis dans un fichier, mais si on n'a que peut de domaines qui ne changeront pas souvent, il est conseillé de les mettre directement sur la ligne comme dans l'option 2 du local_domains.
domainlist relay_to_domains = /etc/exim4/relay_to_domains

# Les clients, les IP qui ont le droit sans s'authentifier d'utiliser ce serveur pour envoyer des mails
# Fichier à créer, sinon mettre les réseaux (exemple : 10.196.1.0/24) directement sur la ligne
hostlist relay_from_hosts = /etc/exim4/relay_from_hosts

# On définit deux ACL qu'on utilisera pour traiter les mails.
# acl_check_rcpt qui analyse les entêtes pour voir essentiellement l'emetteur et le recepteur
acl_smtp_rcpt = acl_check_rcpt
# qui analyse les données
acl_smtp_data = acl_check_data
# Ces deux acls seront décrites plus loin dans la section des acls.

# Comment on appelle l'antivirus
av_scanner = clamd:127.0.0.1 3310
# C'est pour cela qu'il est important de tester que le port 3310 répond

# Comment on appelle l'antispam
spamd_address = 127.0.0.1 783

# On dit à tout le monde qu'on fait du TLS.
tls_advertise_hosts = *

}}}

Exim sur ue lenny

(Exim4 à la manière RogerYerbanga) - http://www.exim.org -

Exim est un serveur de messagerie électronique (Mail Transfer Agent) utilisé sur de nombreux systèmes UNIX. Son choix est justifié par le fait qu’il est très complet avec de nombreux paramètres, qu’il permet de faire du maildir (livraison des mails dans un répertoire), qu’il permet de choisir notre méthode de gestion des utilisateurs (soit base de données mysql, ldap, passwd, …), il est robuste (peut gérer des grands systèmes avec des milliers d’utilisateurs et de mails par jour), il est capable de rejeter les mails dans la session SMTP ce qui génère moins de trafic, et il est assez aisé à configurer, et il est très bien documenté.

Exim tourne grâce et/ou avec un certain nombre de fichiers qu’on peut classer en 4 groupes :

- Les binaires qui sont les exécutables de exim et qui définissent le fonctionnement global de exim.

- Les fichiers de configurations sur lesquels se basent les binaires et qui déterminent la manière dont exim tourne sur notre système

- Les fichiers logs, des fichiers journaux qui donnent des détails sur le processus d’exécution de Exim.

- Et les mails qu’il délivre aux utilisateurs dans leur répertoire ou fichier respectif.

Dans ce document, j'expliquerai beaucoup plus la configuration de exim ainsi que les tests à faire pour valider sa configuration de exim.

1- Prérequis

Pour son installation, sur une debian lenny, il suffit juste de faire : aptitude install exim4-daemon-heavy L'installation est donc très facile;-) Cependant, pour qu'exim tourne, il lui faut obligatoirement un anti-virus (on fait appel à clamav), et un antispam est optionnel, mais fortement recommandé, le standard de fait est spamassassin, possible de mettre du mailman pour ceux qui veulent gérer des listes de diffusion. Exim utilise sa-exim pour contrôler sa manière de causer avec des programmes comme spamassassin, et préciser comment on traite les spams en fonction de leur score ; il est également à installer. Un autre programme interessant est greylistd, qui permet de faire du greylisting à la sauce debian.

Sur une lenny, l'installation de ces paquets se fait juste avec aptitude install <nomdupaquet> Il faut cependant faire attention pour clamav et s'assurer que les deux paquets clamav-freshclam et clamav-daemon.

1.1- ClamAV

- http://www.clamav.net/ -

Deux sous-programmes :

- clamav-freshclam : qui se charge des mises à jour de la base de définitions des virus

- clamav-daemon : qui fait le vrai boulot, scanne les fichiers à la recherche de virus

Les fichiers de configurations sont dans /etc/clamav et sont :

- /etc/clamav/clamd.conf : C’est le principal fichier de configuration, c’est lui qui précise les paramètres comme le type de fichiers à scanner ou ne pas scanner et les options qui vont avec, les fichiers où écrire les logs, la taille maximale des fichiers à scanner, …

Pour ce fichier, les options à retenir sont :

Mettre un # devant la ligne commençant par LocalSocket pour la commenter
Ajouter la ligne : TCPSocket 3310
Ajouter la ligne : TCPAddr 127.0.0.1
Vérifier la ligne : User clamav
Vérifier la ligne LogFile : LogFile /var/log/clamav/clamd.log
Vérifier ou activer les lignes :
LogTime true
ScanPE true
ScanOLE2 true
ScanHTML true
ScanMail yes
ScanArchive true
Mais : Ne pas activer l’option MailFollowURLs
MailFollowURLs false

- /etc/clamav/freshclam.conf : C’est le fichier de configuration de freshclam. Il précise les paramètres de mise à jour automatique de l’antivirus (toutes les 2h), les serveurs proxy, si nécessaire, le nombre de tentatives de mise à jour, et les fichiers logs.

Pour ce fichier, les options à retenir en plus de la config par défaut sont :

DatabaseOwner clamav
UpdateLogFile /var/log/clamav/freshclam.log
LogFileMaxSize 10M
LogTime true
DatabaseDirectory /var/lib/clamav/
DNSDatabaseInfo current.cvd.clamav.net
DatabaseMirror db.XY.clamav.net # Où XY représente le country code de votre pays
DatabaseMirror database.clamav.net

Quelques outils pour vérifier que clamav fonctionne bien

  • freshclam -V : Pour voir la version
  • freshclam : pour faire la mise à jour de la base de données
  • telnet 127.0.0.1 3310

Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
SCAN /home/roger/
/home/roger/: OK
Connection closed by foreign host.
  • clamscan -r -l /home/roger/scan.txt /etc/clamav/

/etc/clamav/freshclam.conf: OK
/etc/clamav/freshclam.conf.old: OK
/etc/clamav/clamd.conf: OK
/etc/clamav/clamd.conf.old: OK

----------- SCAN SUMMARY -----------
Known viruses: 514191
Engine version: 0.94.2
Scanned directories: 4
Scanned files: 4
Infected files: 0
Data scanned: 0.00 MB
Time: 1.786 sec (0 m 1 s)
  • tail -f /var/log/clamav/freshclam.log
  • tail -f /var/log/clamav/clamav.log

1.2- SpamAssassin

- http://www.spamassassin.org/ -

La configuration par défaut de spamassassin fonctionne assez bien, même si des config plus sophistiquées avec des règles spécifiques sont possibles. Une doc sur spamassassin pourrait être bientôt rédigée.

Quelques options tout de même du fichier local.cf

# le score à partir duquel un message est classé comme spam. Par défaut, c’est 5, mais j’ai déjà vu des configurations avec 7.
required_score 5.0
# Mettre ces 2 paramètres à 1 pour dire à SA de faire attention aux mots ou séquences de mots souvent présents dans les spams et de les apprendre lui-même. La commande sa-learn permet de faire apprendre manuellement.
use_bayes 1 
bayes_auto_learn 1
# permet de spécifier des réseaux auxquels on a confiance, donc des réseaux non spammeurs.
trusted_networks 10.196.1/24 <IPserveurencoursdeconfiguration>

Pour tester

  • spamassassin -D --lint // Puis avoir le courage de lire et analyser ce qui s'affiche
  • spamassassin --lint // Pour les plus pressés, en cas d'erreur, il vous dira quelle est l'erreur
  • Trouver les fichiers sample-nonspam.txt et sample-spam.txt ou bien créez vous deux mails : un spam et un nonspam, puis :
    • spamassassin –t < sample-nonspam.txt > nonspam.out

    • spamassassin –t < sample-spam.txt > spam.out

    • Et lire les fichiers spam.out et nonspam.out à la recherche du score du message.
  • utilisation de ps et lecture des logs

1.3- Greylist

Pas forcément necessaire, mais interessant pour faire du greylisting : rejet de mail temporairement avec écriture d'informations (expéditeur, récepteur, serveur d'envoi) dans une base de données, puis demande de ressayer plus tard.

Permet avec spamassassin de lutter contre les spams.

Pour installer : aptitude install greylistd // et répondre oui ou non aux questions qu'il vous pose.

Puis ouvrir le fichier /etc/greylistd/whitelist-hosts et rajouter sur 2 lignes différentes les IP du serveur mail de Montreal et de Dakar, puis d'autres serveurs auxquels vous avez assez confiance en matière de spam.

2- Installation de exim

Tout simplement : aptitude install exim4-daemon-heavy sa-exim

3- Configuration de exim

Il est possible de travailler avec l'installation par défaut de exim, mais vu qu'on aime pas les choses par défaut et qu'on comprend bien le fonctionnement de exim et son fichier de conf, on élimine la config par défaut pour créer notre propre fichier de configuration.

3.1 - Destruction de la configuration par défaut

mv /etc/exim4/exim4.conf.template /etc/exim4/exim4.conf.template.orig

Il est possible de supprimer tout ce qu'il y'a dans le répertoire /etc/exim4, à part le fichier sa-exim.conf

3.2 - Fichier de conf de exim

Dans le cas de notre installation, il s'appelle /etc/exim4/exim4.conf.template. Mais il poourrait s'appeler n'importe quoi d'autre y compris prog ou fou ;-) Il faut donc le recréér puisqu'on vient juste d'être malin en le supprimant.

La structure du fichier de configuration de exim ressemble à s'y méprendre au traitement qu'effectue un MTA sur un mail qu'il reçoit. Ce fichier est divisé en plusieurs sections, la première définit les options globales, tandis que les autres plus ou moins optionnelles commencent par begin <nomdesection> . Les commentaires, les macros, les affectations, les inclusions sont disponibles, et la syntaxe ressamble à du langage de script shell. Le commentaire dans ce fichier est le caractère # en début de ligne.En général, on a 7 parties, et chaque partie à part la section globale correspond aux différentes actions réalisées sur un message :

3.2.1 Section globale

La section qui précise les paramètres globaux :

# Donner les paramètres d'une base de données à exim.
hide mysql_servers = <IPServeurMySQL>/<nomdebasededonnées>/<UtilisateurAyantDroitDeSelect>/<Motdepasse> 
# Quelques paramètres pour Mailman dans la section principale
MAILMAN_HOME=/usr/lib/mailman
MAILMAN_VAR=/var/lib/mailman
MAILMAN_WRAP=MAILMAN_HOME/mail/mailman
MAILMAN_USER=list
MAILMAN_GROUP=list
domainlist MM_DOMAINS = gn.refer.org : gn.auf.org
# Pour faire du routage de mail manuel vers des serveurs qu'on veut
# Mettre dans un fichier les domaines qu'on veut router manuellement
# Par exemple, si je veux que les mails envoyés à auf.org passent d'abord par un serveur précis : pas de requête DNS pour savoir vers quel serveur envoyer
domainlist MR_DOMAINS = /etc/exim4/manual_route 
# Il est clair que ce fichier (/etc/exim4/manual_route) est à créer et doit contenir les domaines à router manuellement ; un domaine par ligne
# Pour ceux qui ne font ni de l'authentification mysql, ni du mailman, ni du routage manuel, pas besoin de ces paramètres.

# Le canonical name de votre serveur :
# Je conseille de prendre le nom qui est déclaré dans le DNS, qui correspond au reverse et qui est souvent celui qui se trouve dans /etc/mailname
primary_hostname = <NomPrincipalDeVotreServeurDeMail>
# Le ou les domaines locaux
# Choisir l'une des deux lignes suivantes en fonction que vous gérez plusieurs dizaines de domaines ou juste deux trois domaines
domainlist local_domains = /etc/exim4/local_domains 
domainlist local_domains = @ : <domainegéré1> : <domainegéré2> : <domainegéré3>
# Si vous décidez de choisir la première méthode, il faudra créer le fichier /etc/exim4/local_domains, et inscrire les différents domaines : une par ligne.
# Pour la deuxième option, le @ signifie le nom de la machine.

# Les domaines pour lesquels on sert de relay. C'est mis dans un fichier, mais si on n'a que peut de domaines qui ne changeront pas souvent, il est conseillé de les mettre directement sur la ligne comme dans l'option 2 du local_domains.
domainlist relay_to_domains = /etc/exim4/relay_to_domains

# Les clients, les IP qui ont le droit sans s'authentifier d'utiliser ce serveur pour envoyer des mails
# Fichier à créer, sinon mettre les réseaux (exemple : 10.196.1.0/24) directement sur la ligne
hostlist   relay_from_hosts = /etc/exim4/relay_from_hosts

# On définit deux ACL qu'on utilisera pour traiter les mails.
# acl_check_rcpt qui analyse les entêtes pour voir essentiellement l'emetteur et le recepteur
acl_smtp_rcpt = acl_check_rcpt
# qui analyse les données
acl_smtp_data = acl_check_data
# Ces deux acls seront décrites plus loin dans la section des acls.

# Comment on appelle l'antivirus
av_scanner = clamd:127.0.0.1 3310
# C'est pour cela qu'il est important de tester que le port 3310 répond

# Comment on appelle l'antispam
spamd_address = 127.0.0.1 783

# On dit à tout le monde qu'on fait du TLS.
tls_advertise_hosts = *

RogerYerbanga/Exim4 (dernière édition le 2009-03-07 17:06:42 par RogerYerbanga)