« Mise en place d'un serveur de mail complet » : différence entre les versions

Aller à la navigation Aller à la recherche
Ligne 915 : Ligne 915 :


==Mise en place de spamassassin==
==Mise en place de spamassassin==
Commencez par installer spamassassin et les quelques outils antispams suivants :
<pre>aptitude install spamassassin razor pyzor</pre>
Mettez à jour les règles de spamassassin :
<pre>sa-update</pre>
Configurez le fichier <code>/etc/spamassassin/local.cf</code> :
<pre>
report_safe 0
lock_method flock
   
# Bayes-related operations
use_bayes 1
use_bayes_rules 1
bayes_auto_learn 1
bayes_auto_expire 1
bayes_auto_learn_threshold_spam 8.0
bayes_path /var/lib/amavis/.spamassassin/bayes
   
# External network tests 
dns_available yes
skip_rbl_checks 0
use_razor2 1
use_pyzor 1
# dcc
#use_dcc 1
#dcc_path /usr/bin/dccproc
#dcc_add_header 1
#dcc_dccifd_path /var/lib/dcc/dccifd
# Use URIBL (http://www.uribl.com/about.shtml)
urirhssub      URIBL_BLACK  multi.uribl.com.        A  2
body            URIBL_BLACK  eval:check_uridnsbl('URIBL_BLACK')
describe        URIBL_BLACK  Contains an URL listed in the URIBL blacklist
tflags          URIBL_BLACK  net
score          URIBL_BLACK  3.0
   
urirhssub      URIBL_GREY  multi.uribl.com.        A  4
body            URIBL_GREY  eval:check_uridnsbl('URIBL_GREY')
describe        URIBL_GREY  Contains an URL listed in the URIBL greylist
tflags          URIBL_GREY  net
score          URIBL_GREY  0.25
   
# Use SURBL (http://www.surbl.org/)
urirhssub      URIBL_JP_SURBL  multi.surbl.org.        A  64
body            URIBL_JP_SURBL  eval:check_uridnsbl('URIBL_JP_SURBL')
describe        URIBL_JP_SURBL  Has URI in JP at http://www.surbl.org/lists.html
tflags          URIBL_JP_SURBL  net
score          URIBL_JP_SURBL  3.0
   
# Optional Score Increases
score DCC_CHECK 4.000
score SPF_FAIL 10.000
score SPF_HELO_FAIL 10.000
score RAZOR2_CHECK 2.500
score BAYES_99 4.300
score BAYES_95 3.500
score BAYES_80 3.000
internal_networks 213.186.47.110 87.98.136.217
trusted_networks 213.186.47.110 87.98.136.217
Les directives <code>internal_networks</code> et <code>trusted_networks</code> sont très importantes pour la pertinence des résultats. Elles permettent à spamassassin de savoir à quels headers il peut faire confiance dans le mail scanné. <code>trusted networks</code> doit contenir les mêmes entrées que <code>internal_networks</code>.
Les différents modules chargés par spamassassin se situent dans les fichier <code>/etc/spamassassin/init.pre</code>, <code>/etc/spamassassin/v310.pre</code> et <code>/etc/spamassassin/v312.pre</code>.
Certains sont commentés par défaut. Pour les activer, dé-commentez les simplement.
Nous allons maintenant configurer razor en utilisant l'utilisateur amavis :
<pre>
su - amavis
razor-admin -d --create
razor-admin -d --register
exit
</pre>
Si jamais vous avez eu une erreur lors du register précédent, procédez comme cela :
<pre>
su - amavis
razor-admin -discover
razor-admin -create
razor-admin -register
exit
</pre>
L'identité sera stockée dans <code>/var/lib/amavis/.razor/</code>
Il faut aussi configurer pyzor avec l'utilisateur amavis :
<pre>
su - amavis
pyzor discover
exit
</pre>
Ceci enregistrera la liste des serveurs du projet pyzor dans <code>/var/lib/amavis/.pyzor/</code>
Il faut encore activer le support anti-spam de amavis dans <code>/etc/amavis/conf.d/15-content_filter_mode</code> :
<pre><nowiki>
@bypass_spam_checks_maps = (
    \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);
</nowiki></pre>
Puis modifiez le fichier <code>/etc/amavis/conf.d/20-debian_defaults</code> comme suit :
<pre>
$sa_spam_subject_tag = '***SPAM*** ';
$final_virus_destiny      = D_DISCARD;
$final_banned_destiny    = D_BOUNCE;
$final_spam_destiny      = D_PASS;
$final_bad_header_destiny = D_PASS;
</pre>
De cette manière, amavis tagera le sujet des mails considérés comme spam, mais les délivrera quand même dans la boite mail. Les virus sont quant-à-eux supprimés directement et un rapport de détection est envoyé à <code>$virus_admin</code>.
<pre>/etc/init.d/amavis restart</pre>
Notez qu'il n'est pas nécessaire de lancer spamassassin dans le cas présent.
Si il semble que amavis ne tag pas les spams, allez faire un tour dans le fichier <code>/etc/amavis/conf.d/05-domain_id</code>. Par défaut, ce fichier charge en tant que <code>$mydomain</code> le fichier <code>/etc/mailname</code>. Ensuite, il défini <code>@local_domains_acl</code> comme étant la variable <code>$mydomain</code>. Seuls les domaines contenu dans <code>@local_domains_acl</code> seront scannés. Pour mes tests, j'ai simplement commenté la ligne <code>@local_domains_acl</code> et j'ai ajouté <code>@local_domains_acl = ( ".csnu.org" );</code> à la place.
Pour simplement scanner tous les domaines, utilisez <code>@local_domains_acl = ( "." );</code>
Vous pouvez trouver un exemple de spam dans <code>/usr/share/doc/spamassassin/examples/sample-spam.txt</code>
==Le problème de la cohabitation entre Sender Policy Framework (SPF) et l'envoi de mails==
Actuellement lorsque vous envoyez un mail, il est scanné par spamassassin. en temps normal, cela ne pose aucun problème étant donné que vos mails ne devraient pas être reconnu comme spam. Cependant, le fichier <code>/etc/spamassassin/init.pre</code> charge par défaut le plugin SPF de spamassassin (ligne <code>loadplugin Mail::SpamAssassin::Plugin::SPF</code>). Si vous avez configuré des champs spf dans la zone dns de votre domaine, vous remarquerez très vite que vos mails sortant seront tagués spams et positifs au test du spf. C'est normal étant donné que votre ip ne fait pas partie des ips autorisées à envoyer des mails pour le domaine. Pour régler ce problème, il va falloir modifier la configuration de postfix afin d'avoir un port sur lequel on peut envoyer des emails qui ne seront pas scannés par spamassassin.
Ouvrez le fichier <code>/etc/postfix/master.cf</code> et ajoutez les lignes suivantes :
<pre>
submission inet n      -      -      -      -      smtpd
#  -o smtpd_enforce_tls=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o content_filter=amavis:[127.0.0.1]:10026
</pre>
Désormais, le port 587 est aussi écouté par postfix. Pour envoyer des mails sur ce port, il faut être authentifié par SASL (donc on n'est pas un relai pour le spam) et les mails sont passés à amavis sur le port 10026.
Il faut ensuite modifier le fichier <code>/etc/amavis/conf.d/20-debian_defaults</code> (attention un champ <code>$inet_socket_port</code> existe déjà et il faudra le commenter/modifier):
<pre>
$inet_socket_port = [10024,10026]; # écoute sur les ports tcp 10024 et 10026
$interface_policy{'10026'} = 'SASLBYPASS';
$policy_bank{'SASLBYPASS'} = { # mail provenant des ports submission et smtps
  bypass_spam_checks_maps  => [1],  # ne pas vérifier le spam
  bypass_banned_checks_maps => [0],  # ne pas vérifier le ban
  bypass_header_checks_maps => [1],  # ne pas vérifier les headers
};
</pre>
Ainsi, les mails reçus sur le port 587 passeront par amavis mais ne subiront aucun test de la part de spamassassin et le problème est réglé. La vérification antivirus est réalisée normalement.
Notez qu'il faudra configurer votre logiciel de messagerie pour qu'il envoi les mails sur le port 587.
Par la même occasion vous pouvez désactiver l'authentification sur le port smtp (25) en modifiant la ligne smtp de votre <code>master.cf</code> :
<pre>
smtp      inet  n      -      -      -      -      smtpd
  -o smtpd_sasl_auth_enable=no
</pre>
Cela vous permettra par la suite de bloquer facilement une ip (iptables, ...) qui fait du brute-forcing sur votre smtp tout en lui permettant toujours de vous envoyer des mails.
Notez cependant qu'il faudra adapter la configuration de votre webmail afin qu'il utilise le port 587
==Sender Policy Framework (SPF) et ipv6==
Depuis la version 3.2 de SpamAssassin le nouveau <code>plugin Mail::SPF</code> est utilisé pour la vérification des champs SPF. Ce plugin gère l'ipv6. Cependant, il semblerait que certains scripts perl de SpamAssassin ne gère pas ou mal l'ipv6. Il semble par exemple impossible d'ajouter une ipv6 aux directives <code>internal_networks</code> ou <code>trusted_networks</code> (ce qui est important vis-à-vis de la vérification SPF). D'après un message d'une mailing-list, ce problème devrait être corrigé pour la version 3.3.0.
=clamav=
Commencez par installer ClamAV ainsi que quelques librairies de compressions afin d'analyser les archives:
<pre>aptitude install clamav clamav-daemon gzip bzip2 unzip unrar zoo arj</pre>
Ajoutez l'utilisateur clamav au groupe amavis:
<pre>adduser clamav amavis</pre>
Pour activer le support de clamav de amavis, modifiez le fichier <code>/etc/amavis/conf.d/15-content_filter_mode</code> comme suit :
<pre>
@bypass_virus_checks_maps = (
  \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);
</pre>
Et redémarrez les services :
<pre>
/etc/init.d/clamav-daemon restart
/etc/init.d/amavis restart
</pre>
4 203

modifications

Menu de navigation