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