Modification de la configuration d’OpenDKIM (/etc/opendkim.conf) :
Socket inet:8891@localhost
LogWhy yes
MilterDebug 1
# Log to syslog
Syslog yes
# Required to use local socket with MTAs that access the socket as a non-
# privileged user (e.g. Postfix)
UMask 002
KeyTable /etc/dkim/KeyTable
SigningTable /etc/dkim/SigningTable
ExternalIgnoreList /etc/dkim/TrustedHosts
InternalHosts /etc/dkim/TrustedHosts
Il faut maintenant générer les clefs & ce script va nous y aider :
#!/bin/bash
# Script sous licence BEERWARE
SELECTOR="mail"
REPERTOIRE="/etc/dkim"
DOMAINE=$1
USERDKIM="opendkim"
GROUPDKIM="opendkim"
if ! [ -d "${REPERTOIRE}" ] ; then
echo "Le répertoire ${REPERTOIRE} n'existe pas."
exit 1
fi
if [ -z ${DOMAINE} ] ; then
echo "Vous devez avoir renseigner le domaine en argument du script."
exit 2
fi
if [ -d "${REPERTOIRE}/keys/${DOMAINE}" ] ; then
echo "Le répertoire ${REPERTOIRE}/keys/${DOMAINE} existe déjà... vous devez déjà avoir dû lancé le script."
exit 3
else
mkdir -p ${REPERTOIRE}/keys/${DOMAINE}
fi
opendkim-genkey -D ${REPERTOIRE}/keys/${DOMAINE} -r -d ${DOMAINE} -s ${SELECTOR}
chown ${USERDKIM}:${GROUPDKIM} ${REPERTOIRE}/keys/${DOMAINE}/${SELECTOR}.private
echo "${SELECTOR}._domainkey.${DOMAINE} ${DOMAINE}:${SELECTOR}:${REPERTOIRE}/keys/${DOMAINE}/${SELECTOR}.private" >> ${REPERTOIRE}/KeyTable
echo "${DOMAINE} ${SELECTOR}._domainkey.${DOMAINE}" >> ${REPERTOIRE}/SigningTable
echo "${DOMAINE}" >> ${REPERTOIRE}/TrustedHosts
if [ -f ${REPERTOIRE}/keys/${DOMAINE}/${SELECTOR}.txt ]; then
cat ${REPERTOIRE}/keys/${DOMAINE}/${SELECTOR}.txt
else
echo "Une erreur s'est produite !"
fi
Exemple d’utilisation du script :
$ ./addDkimKey.sh mercereau.info
mail._domainkey IN TXT "v=DKIM1; g=*; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDEOxRe2sVbsmDYbnB1pRWdx5U6FgZiwUKRl0gPFmsgPNA035P7gBLmhXrmALeJLZv0n7ARkStoIvl/ZNAbUep/YUgMynW5q2fsh4Pa/q82ocPKRKGLBYTxFDa+tyhG0oi5pzI6d37Ji9M40c5DgD/2QqTfyY5ywLqKG47+HuivJQIDAQAB" ; ----- DKIM mail for mercereau.info
Le script vous sort l’enregistrement DNS a ajouter pour terminer la configuration
On redémarre les services :
$ service opendkim restart
$ service postfix restart
Ajouter des services décentralisés « à la maison » c’est le bien mais à force d’empiler des briques… ça déborde. Et là j’étais à un stade ou la SWAP était un chouilla trop utilisée.
J’avais déjà désactivé ClamAv (anti-virus) pour économiser de la mémoire vive mais ça ne suffisait pas. Mon autre plus gros poste de dépense en RAM était Amavis/Spamassasin. Je me suis donc mis à chercher une alternative ; La plus légère et efficace semble être DSPAM.
Attention : Le fait de remplacer Amavis/Spamassasin va, de fait vous amputer de fonctionnalité administrable par le panel ISPconfig « Stratégie anti-spam », « liste blanche » car Ispconfig ne support pas (encore !?) DSPAM
Préparation
Étant donné que le serveur est déjà en prod j’ai modifié mon script de firewall (iptables) en spécifiant seulement mon adresse IP pour l’accès au SMTP (pour les tests) ça aura pour effet de faire patienter vos emails en file d’attente sur le serveur émetteur quoi que vous fassiez comme bêtise…
5 jours, c’est par défaut le temps d’attente maximal de la plupart des MTA. Vous pouvez donc théoriquement bricoler pendant 5 jours sans perdre d’email dans cet état…
Installation
Je suis sous Debian squeeze, les paquets Dsapm existe pour squeeze mais dans le backport (non activé pour ma part)
Dans mon cas j’ai choisi de tout le temps délivrer les SPAM et de tagger le sujet. L’apprentissage se fera via l’interface web (dont nous verrons la configuration plus tard)
Activer le démarrage de Dspam /etc/default/dspam
< start=NO
---
> start=YES
La configuration de Dspam à largement été inspiré du howto d’UNIX garden :
L’objectif premier était d’économiser de la mémoire vive, c’est chose faite ! la preuve en image :
Je suis aussi très satisfait de l’apprentissage de DSPAM. Au début ça peut faire peur parce qu’il laisse vraiment tout passer, mais l’apprentissage est rapide et significatif :
Edit 13/04/2015 : Ajout d’@mynetworks pour que les réseaux connus soient marqués DKMI.
DKIM (DomainKeys Identified Mail) est une norme d’authentification par clef publique/privé du nom de domaine de l’expéditeur d’un courrier électronique. Une partie de la signature est comprise dans l’entête du message & une autre dans un enregistrement DNS TXT dédié.
Elle constitue une protection efficace contre le spam et l’hameçonnage. Elle permet aussi surtout (et c’est en ça qu’elle nous intéresse le plus) d’éviter de se faire considérer comme SPAM.
Je parle d’ISPconfig dans mon titre car c’est ce qui motorise mon serveur en ce moment, mais je pense que la procédure fonctionne avec Amavis en règle générale.
Pour être vraiment certain que votre message est signé vous pouvez vous envoyer un email sur une adresse externe et vérifier les entêtes. Sinon vous pouvez envoyer un email à : check-auth [arobase] verifier.port25.com et vous reverser un rapport complet sur « l’état de votre port 25 »
==========================================================
Summary of Results
==========================================================
SPF check: pass
DomainKeys check: neutral
DKIM check: pass
Sender-ID check: pass
SpamAssassin check: ham
La partie importante pour nous est donc le DKIM check qui doit être à « pass ». D’autre part je ne peux que vous conseiller d’ajouter aussi un enregistrement SPF.
Le rapport m’indique que j’ai un SpamAssassin score de -2 ce qui est très bon car la configuration par défaut de SpamAssassin annonce les messages en SPAM lorsqu’il dépasse un score de +5.
Pour des besoins personnels j’ai codé un petit script en Perl (toujours sous licence beerware) afin de pouvoir scanner un répertoire IMAP avec la puissance de SpamAssassin à distance. ça s’avère très pratique :
Quand on ne maîtrise pas le serveur de messagerie ;
Qu’il n’y a pas d’anti-spam (ou un anti-spam tout pourrit) ;
Que votre serveur est trop « petit » (en terme de ressource) pour accueillir un SpamAssassin ;
Des solutions anti-spam déporté existait ici ou là et même là mais elle ne me satisferaient pas pleinement.. Du coup j’ai pris mes petits doigts et c’est partie…
Commentaire
Petit commentaire sur le code (visible dans ma bébé forge) :
Je n’ai pas trouvé mieux que la base sqlite pour dire « hey toi je t’ai déjà scanner je passe mon chemin » Ma première idée était de créer un flags IMAP personnalisé (genre « SpamChecked ») d’après ce que j’ai lu ça n’est pas permis dans le protocole IMAP standard… c’est moche…
(Une amélioration à penser) Il faudrait pouvoir stocker le mot de passe en crypté.. le hic est qu’il faut que ça soit réversible pour le servir au serveur IMAP (?) là si quelqu’un à des idées je suis preneur…
J’ai décidé sur mon blog d’inciter les gens à installer un anti-pub je vais vous expliquer pourquoi.
Les pieds dans le plats
Imaginons que votre prestataire de mail n’active pas l’anti-spam par défaut. Pas sympa pour Madame Michu qui ne sait pas forcément installer un anti-spam, tant pis elle subira… (ironie) Et les pauvres gens qui veulent vivre du spam, quelqu’un y pense ? Mais un anti-spam n’empêchera pas Monsieur Michu, s’il le souhaite, d’aller voir les promotions sur le viagra dans son dossier spam !
Mettre un anti-spam pour ses emails c’est comme mettre un stop-pub sur sa boîte aux lettres (papier) et, par prolongement, installer un anti-pub sur son navigateur.
Dans mon idéal les anti-pub seraient installés par défaut sur tous les navigateurs… Mais comme les principaux navigateurs sont InternetExplorer, Firefox et Chrome je doute que cela arrive un jour :
Mozilla Firefox est largement financé par Google. Google étant le principal annonceur sur Internet avec la régie Adsense
Google Chrome.. hum même problème…
Microsoft Internet Explorer : pas vraiment d’arguments solides mais pas convaincu non plus… (oui c’est un procès d’intention)
Le financement du web
Pour les sites à petit revenu, blog, ect.. Aujourd’hui le coût d’un hébergement web est relativement négligeable par rapport à beaucoup d’autres dépenses du quotidien. Pour 1€, 2€/mois et vous avez une plateforme personnelle sans publicité. Sans compter les hébergeurs associatifs gratuits, le RHIEN, l’auto-hébergement…
Pour les sites à fort trafic des modèles économiques sont à trouver mais ils en existent déjà, en voici déjà une liste non exhaustive qui fonctionnent sans pub :
Si tout le monde bloque la pub Internet ne sera plus gratuit
Publicité != Gratuité
La publicité à un coût, un coût non négligeable. Nous payons ce coût quand nous achetons des produits d’entreprise qui font de la publicité. Donc de mon point de vue : « argument rejeté »
La neutralité du net
La neutralité du réseau n’a rien à voir là dedans, tant que c’est désactivable et que c’est sur le FreeBox.
Par rapport à Free, Benjamin Bayart semble être du même avis et vous l’expliquera bien mieux que mois sur le blog de FDN
Quand à l’argument qui consiste à dire qu’avec la publicité les sites sont indépendants financièrement et donc libres. A ceux-là je répondrai en leur demandant de regarder une très bonne émission d’arrêtsurimages traitant du sujet. Pour faire court, si vous voulez parler d’une marque/entreprise et qu’elle vous finance à travers la publicité, allez vous le faire ? La réponse est évidemment « non » c’est votre source de revenu… Est-ce que c’est ça la liberté ?
Pour toutes ces raisons : multiplions/facilitons les installations d’anti-pub sur nos ordinateurs !
Je partage avec vous le bout de script (certainement à améliorer, je ne suis pas développeur) pour que vous puissiez faire la même chose si le cœur vous en dit.
Créer un répertoire ‘testads’ accessible en http qui contiendra le fichier banners.js :
document.write("<div id='adstest'></div>");
Puis copiez ce bout de code juste avant la fin de votre </body> sur toutes les pages :
<script language="JavaScript" type="text/javascript" src="http://www.mercereau.info/testads/banners.js"></script>
<script language="JavaScript" type="text/javascript">
/*
* Script sous licence Beerware (http://fr.wikipedia.org/wiki/Beerware)
*/
var divAds = document.getElementById("adstest");
if(divAds) {
document.write("<p>Vous n'avez pas d'anti-pub ?</p>");
}
</script>
3, 2, 1… Inciter !!!!
Edit : Renommage du fichier ads.js en banners.js pour coller avec la liste Fanboy’s d’adblock (merci @mart-e)
Edit2: Ajout de la licence au script (très important !) :-p
Postgrey permettra à votre serveur mail de lutter de manière radicale contre le Spam..
Son fonctionnement est simple, il refuse une première fois n’importe quel mail qui arrive et enregistre l’IP de l’hôte distant, les vrais serveurs mail gardent les messages en queue et tentent de les renvoyer quelques minutes plus tard.
C’est là que Postgrey acceptera le message, seulement s’il est renvoyé : Les spammeurs ne renvoient que très rarement un même mail avec une même IP. Nous utiliseront donc une blacklist pour supprimer ceux qui auraient réussi à passer.
Le greylist se base sur le respect de la RFC 2821, page 46–47
Lorsqu’un même serveur envois 5 mails et qu’ils sont valides, il enregistre automatiquement son IP en whitelist.
En continuant à utiliser le site, vous acceptez l’utilisation des cookies (au chocolat) Plus d’informations
Les cookies sont utilisés à des fin de statistique de visite du blog sur une plateforme indépendante que j'héberge moi même. Les statistiques sot faites avec un logiciel libre. Aucune information n'est redistribué à google ou autre. Je suis seul autorisé à lire ces informations