Cet article résume le fonctionnement et les mécanismes de lutte antispam et antivirus mis en œuvre sur la messagerie Gadz.org.

Quelques statistiques en introduction :

Mails entrants 

Mails sortants

Photo de l'architecture mail "gadz.org" en date de juillet 2022 :




Les redirections mails n'ont pas de garanties de fiabilité, les FAI/fournisseurs de messagerie/messagerie pro/etc... ont chacun leurs propres règles et filtrages (dont nous n'avons bien évidement pas la main).


Le Spam est un fléau, qui représenterait environ 90% du trafic e-mail mondial. Chaque acteurs impliqués se doit d'agir pour endiguer ce fléau au maximum.

Voici pour informations les conseils et recommandations de la CNIL à ce sujet : https://www.cnil.fr/fr/spam-phishing-arnaques-signaler-pour-agir

Des filtrages antispam sont présents sur la messagerie Gadz.org ; voici la liste non exhaustive des mécanismes mis en place :



A- Mécanismes de Gadz.org (appliqués sur tous les mails entrants @gadz.org, + @arts-et-metiers.asso.fr + @m4am.net + @agoram.net)

1- Non respect des standards (Intégrité SMTP) et filtrage d'enveloppe

Le premier niveau de filtrage correspond tout simplement au bon respect des standards des protocoles de messagerie (SMTP, HELO, FQDN...)

Les spammeurs / les scripts utilisés ne s'embetent généralement pas trop à respecter les standards (HELO valide, hostname valide au format FQDN, reverse DNS correct, etc...)

Cette première étape permet de bloquer les spammeurs ne maîtrisant pas réellement les systèmes de messagerie. 

Le taux d'efficacité du filtrage d'enveloppe est d'environ 50 %. Ce type de filtrage s'applique uniquement à l'en-tête du message, qui contient souvent assez d'informations pour pouvoir distinguer un spam. Il ne s'attache pas au contenu du courriel.

Cette technique présente l'avantage de pouvoir bloquer les courriels avant même que leur corps ne soit envoyé, ce qui diminue grandement le trafic sur la passerelle SMTP (puisque le corps du message est envoyé après que l'en-tête a été reçu et accepté). De plus, le taux de faux positifs dans ce type de filtrage est quasiment nul : lorsqu'un filtre d'enveloppe a identifié un courriel comme du spam, il se trompe rarement.

Les règles d'intégrité SMTP sont souvent très efficaces, car, pour les spammeurs, elles agissent comme inhibiteurs de performance (elles ralentissent les envois). Or, un spammeur a intérêt à être le plus performant possible et il peut être très payant pour lui de passer outre ces règles.

DNS :

De plus, nos serveurs de mails entrants se reposent sur les résolveurs DNS de Quad9.net (https://quad9.net) qui filtrent déjà en amont certains domaines qui sont liés à des botnets, des attaques par phishing et autres pratiques malicieuses.

La liste des domaines bloqués n'est pas donnée, mais il est possible d'effectuer une recherche depuis le site du projet.

Exemples d'erreurs :

SMTP_responseReasonDescription simple
504 5.5.2Helo command rejected: need fully-qualified hostnameHELO mal formaté / non pleinement qualifié
450 4.1.8Sender address rejected: Domain not foundDomaine d'envoi inexistant (ex: @amazoon.tutu)

Des vérifications sont également effectuées sur l'émetteur et le destinataire (vérifications de l’existence de l'adresse) :

SMTP_responseReasonDescription simple
550 5.1.0Sender address rejected: User unknown in relay recipient tableFausse adresse d'envoi (ex: [email protected] avec un PDF vérolé)
550 5.1.1Recipient address rejected: User unknown in relay recipient table

Destinataire inconnu (ex: [email protected])

Techniques mises en place : 

Sur postfix : helo_restrictions (reject_non_fqdn_helo_hostname, reject_invalid_helo_hostname...) et sender_restrictions (reject_non_fqdn_sender, reject_unknown_sender_domain, reject_invalid_hostname...)

check_helo_access hash:/etc/postfix/helo_checks

2- Filtres "manuels" suite à des plaintes, abus, ou constat dans les logs (exploitations/supervisions)

Une adresse mails et/ou un domaine spécifique (@toto.toto) peuvent faire l'objet d'un filtrage "manuel".

Cela peut se produire suite à des plaintes, rapport d'abus reçus sur les adresses d'exploitation de messagerie "postmaster" et "abusemaster" at gadz.org (envoyé généralement par les FAI ou prestataires en charges des relais de messagerie des FAI et fournisseurs de messagerie, exemple AOL, Laposte.net, Microsoft (Hotmail/Live/Oultook), etc...) ou bien par constat d'un admin sur les interfaces d'exploitation (exemple : adresse mail voulant écrire à plus de 5 000 adresses mails en @gadz.org ...)

Exemple d'erreurs : (le code d'erreur sera toujours identique)

SMTP_responseReasonDescription simple
554 5.7.1Sender address rejected: spamDomaine ou adresse envoyant du spam
554 5.7.1Sender address rejected: abusive domainDomaine abusif
554 5.7.1Sender address rejected: SPAM&PHISH compromised accountCompte mail compromis / utilisé pour relayer du spam
554 5.7.1Blacklisted IPAdresse ou plage IP blacklistée


Depuis fin juin 2018, un filtrage est également effectif sur les extensions de domaines réputées comme émettrices de spam :

 

Voici deux des sources utilisées en plus des constats de la supervision

http://www.surbl.org/tld
https://www.spamhaus.org/statistics/tlds/

SMTP_responseReasonDescription simple
554 5.7.1We reject all .bid domainsRejet des domaines .bid

Voici un extrait des domaines bloqués à ce jour :

.accountant .agency .best .bid .buzz .casa .cam .cf .click .club .cricket .cyou .date .desi .diet .download .exposed .fail .faith .fit .ga .gdn .gq .icu .live .link .loan .men .ml .party .press .pro .pw .racing .reise .review .science .study .stream .surf .tk .tm.co .top .trade .vip .wang .win .world .work .xyz .yokohama .zip


Techniques mises en place : 

Table SQL de blacklist sur le champs "sender"

Sur postfix : 

check_sender_access pcre:/etc/postfix/reject_domains_tlds.pcre

check_client_access cidr:/etc/postfix/rbl_override

check_client_access cidr:/etc/postfix/client_checks

2 bis- Vérifications de SPF (nouveauté juillet 2022)

Les SPF (https://fr.wikipedia.org/wiki/Sender_Policy_Framework) servent à déclarer quelles adresses IP (ou noms de serveurs) sont autorisés à "envoyer en tant que"

Les emails échouant aux vérifications SPF sont rejetés


Avant le 05/07/22, il était possible d'envoyer des mails en tant que gadz.org / gadzarts.org / m4am.net depuis une adresse mail externe type orange.fr, free.fr (ou autre) en utilisant les serveur SMTP d'un autre opérateur. Cela n'est plus possible désormais suite aux problèmes ayant entrainés la suspension des 25 000 comptes Google gadz.org pour détection de spam, ce qui avait fortement impacté et nuit à la communauté.

Il est dorénavant nécessaire d'utiliser son compte Google Gadz.org, et d'utiliser les serveurs de courrier sortant (SMTP) de Google gmail afin de pouvoir envoyer en tant que gadz.org / gadzarts.org / m4am.net :

https://confluence.gadz.org/display/AIDE/Gadzmel%2C+Gmail+pour+gadz.org#Gadzmel,Gmailpourgadz.org-3/Acc%C3%A9der%C3%A0uneboitemailGadzmel

Vous trouverez sur cet article d'aide (disponible depuis aide.gadz.org) les instructions pour activer IMAP sur votre compte Google Gadz .org.

Pour configurer un client de messagerie tiers (Microsoft Outlook, Microsoft Windows Live Mail, etc), spécialement l'utilisation des serveurs de courriers sortants, voir :

https://support.google.com/mail/answer/7126229?hl=fr#zippy=%2C%C3%A9tape-modifier-les-param%C3%A8tres-smtp-et-les-autres-param%C3%A8tres-dans-votre-client-de-messagerie

La mise en place de DMARC, DKIM et le durcissement des SPF sont dû à cela ; éviter que la terre entière puisse envoyer "en tant que" gadz.org et que l'intégralité des comptes Google de la communauté soient de nouveau bloqués pour des raisons de spams.

Exemple d'erreurs :

SMTP_responseReasonDescription simple
5.7.1SPF fail550 This message fails to pass SPF checks - l'émetteur n'est pas autorisé à envoyer en tant que

Techniques mises en place : 

postfix-policyd-spf-python : https://makeityourway.de/enabling-spf-sender-policy-framework-checking-on-postfix/

3- Filtrages par pièce jointe

Afin de lutter contre l'exécution de code malveillants caché/intégré dans des pièces jointes, il a été décidé d'interdire certain type de fichier en pièce jointe des mails.

Les pièces jointes sont filtrées selon les règles suivantes :

.ade, .adp, .bat, .chm, .cmd, .com, .cpl, .exe, .hta, .ins, .isp, .jar, .js, .jse, .lib, .lnk, .mde, .msc, .msi, .msp, .mst, .nsh .pif, .scr, .sct, .shb, .sys, .vb, .vbe, .vbs, .vxd, .wsc, .wsf, .wsh, .zip

+ Les fichiers .doc contenant "facture" dans le nom de fichier sont également bloqués (depuis 2015/2016 suite aux nombreuses vagues de Cryptolocker se servant de ce vecteur d'infection)

Ces règles sont quasiment identiques à celles mise en place par Google pour sa messagerie Gmail : https://support.google.com/mail/answer/6590?hl=fr

Exemple d'erreurs :

SMTP_responseReasonDescription simple
5.7.1header Content-Type: application/zipPour des raisons de securite, nous ne pouvons temporairement pas accepter votre fichier en piece-jointe de type ".zip". Si vous estimez qu'il s'agit d'une erreur, vous pouvez contacter [email protected]. For safety reasons, we temporarily cannot accept emails with ".zip" attached file. If you think your email was rejected for wrong reasons, please contact [email protected].

Techniques mises en place : 

RegEX dans les headers

4- Filtrage par RBL (Real-Time Blackhole)

Des services de blacklists distantes et gratuites (DNSBL : DNS black lists) ont été configurées sur nos serveurs Postfix. Le DNS Black Listing (DNSBL) est une méthode permettant de consulter une liste noire d'émetteurs de courrier électronique en utilisant le protocole DNS

Ils ont comme mandat de fournir une liste de serveurs réputés comme grands envoyeurs de spams, et de lister les grands spammeurs. Il s'agit en fait d'une grande liste noire généralisée. Celle-ci inclut les adresses IP des machines connues pour être la source de spam, des plages d'adresses utilisées par les fournisseurs d'accès à Internet qui hébergent des spammeurs, ou encore des adresses IP qui ont tenté d'envoyer des messages à des systèmes honeypot.

Le principe d'utilisation est simple : lorsqu'un filtre reçoit un courriel, il vérifie si le serveur d'envoi est contenu dans un RBL. Si oui, le courriel est catégorisé comme spam. 

Les filtres utilisés par Gadz.org sont les suivants (dans l'ordre) :

DNSBLUrl

SpamCop

https://www.spamcop.net/
Barracudacentralhttp://barracudacentral.org/rbl
UCEPROTECThttp://www.uceprotect.net/
DroneBLhttp://dronebl.org/
Truncatehttp://www.gbudb.com/index.jsp
CBL Abuseathttps://www.abuseat.org/

Exemple d'erreurs :

SMTP_responseReasonDescription simple
554 5.7.1Client host [XXX.XXX.XXX.XXX] blocked using bl.spamcop.net;Émetteur figurant sur liste noire SpamCop
554 5.7.1Client host [XXX.XXX.XXX.XXX] blocked using b.barracudacentral.org;Émetteur figurant sur liste noire Barracuda
554 5.7.1Client host [XXX.XXX.XXX.XXX] blocked using dnsbl-X.uceprotect.net;Émetteur figurant sur liste noire UCEPROTECT (level 1 = IP, level 2 = network, level 3 = ASN réputation) nous sommes actuellement sur le level 3 : dnsbl-3.uceprotect.net
554 5.7.1Client host [XXX.XXX.XXX.XXX] blocked using dnsbl.dronebl.org;Émetteur figurant sur liste noire DroneBL, la raison est généralement fournie (DDoS drone, Automatically determined botnet IPs, Open HTTP proxy, Open SOCKS proxy...)
554 5.7.1Client host [XXX.XXX.XXX.XXX] blocked using truncate.gbudb.net;Émetteur figurant sur liste noire Truncate
554 5.7.1Client host [XXX.XXX.XXX.XXX] blocked using cbl.abuseat.org;Émetteur figurant sur liste noire Abuseat

Le champ [XXX.XXX.XXX.XXX] correspond à l'IP de l'émetteur, il suffit généralement de se rendre sur le site de la black list et saisir l'IP indiquée pour connaitre les motifs du blacklistage, et effectuer la demande de dé-listage quand elle est possible. Un lien direct est généralement fourni dans la réponse.

Chaque liste possède son propre fonctionnement ; il n'est pas toujours possible de se désinscrire manuellement (les processus sont automatiques et réclament du temps), surtout en cas de récidive.

Nous n'avons pas la main sur ces services : nous ne sommes donc pas en mesure d'y ajouter ou retirer des adresses spécifiques.

Techniques mises en place : 

Sur postfix : reject_rbl_client sur client_restrictions et recipient_restrictions

5- Greylisting (liste grise)

La liste grise est un terme utilisé pour décrire une technologie antispam particulièrement efficace ; Pour simplifier, le courrier entrant est rejeté temporairement et il est indiqué au serveur qui envoie le message d’attendre et de réessayer l’envoi un peu plus tard. Tout serveur de mail légitime respecte cette règle. Les serveurs de mail non légitimes (utilisés par les spammeurs) ne le font pas car cela leur fait perdre de l’efficacité (temps/argent/perf).

Cette technique permettait d’atteindre des taux d’efficacité très élevés, de l’ordre de 99 % quand elle a été proposée en 2003, puisque la très grande majorité des spammeurs préfère sacrifier un courriel plutôt que d’attendre et ainsi, diminuer leur performance. Actuellement l’efficacité est moins importante (~80-90 %) à cause de l’augmentation de l’utilisation des webmails (des vrais serveurs de messagerie), par les spammeurs, pour distribuer les spams.

Cette technique induit cependant des délais plus ou moins long de livraison des mails (entre 5 min et 24 heures selon les cas).

Une liste de domaines "de confiance" qui ne sont pas soumis au greylistage est tenue à jour (et à discrétion) par les équipes Gadz.org

Exemple d'erreurs :

SMTP_responseReasonDescription simple
 450 4.7.1Recipient address rejected: Greylisting in action, please come back laterVérifications de l'émetteur : merci de réessayer l'envoi

Techniques mises en place : 

pfixtools avec postlicyd

6- Antivirus ClamAV

Exemple d'erreurs :

SMTP_responseReasonDescription simple
 450 4.7.1Virus detectedVirus détecté dans le corps du mail

7- Antispam Bogofilter (Filtrage bayésien)

Nous utilisons l'antispam Bogofilter. Le filtrage bayésien du spam (du mathématicien Thomas Bayes) est un système fondé sur l'apprentissage d'une grande quantité de spams et courriels légitimes afin de déterminer si un courriel est légitime ou non. Afin de bien fonctionner, le corpus de spam et le corpus de ham (courriels légitimes) doivent contenir idéalement plusieurs milliers de « spécimens ».

Lors de la détection d'un spam par Bogofilter, il est placé sur la quarantaine mutualisée "https://spam.gadz.org"

Exemple d'erreurs :

SMTP_responseReasonDescription simple
 450 4.7.1Spam filtered by bogofilterLe mail a été classé comme spam et envoyé vers https://spam.gadz.org

B- Mécanismes des fournisseurs de messagerie (appliqués sur toutes les redirections)

Les mails transférés aux adresses de redirections : fournisseurs internet grands publiques (Orange, Free, SFR, LaPoste.net...), fournisseurs de messagerie mondiaux (AOL, Yahoo, Gmail, Microsoft...), organisations privée (Airbus, Renault, Ensam...) sont également soumis à des filtrages lors de leur réception par le service de messagerie final.

Voici des exemples de filtrages possible par ces services :

Type de casFournisseurs de MessagerieErreursDescription simple
SPAM ou VIRUSOrange / Wanadoohost smtp-in.orange.fr[80.12.242.9] said: 550 5.2.0 Mail rejete. Mail rejected. ofr_506 [506]Rejet du mail car détection de Spam par Orange
Boite aux lettre pleineOrange / Wanadoo host smtp-in.orange.fr[80.12.242.9] said: 552 5.1.1 Boite du destinataire pleine. Recipient overquota. OFR_417 [417] Rejet du mail car la boite mail Orange du destinataire est pleine
SPAMFree / AliceADSL / LibertySurfhost mx1.free.fr[212.27.48.6] said: 550 spam detected (in reply to end of DATA commandRejet du mail car détection de Spam par Free
Boite aux lettre pleineFree / AliceADSL / LibertySurfhost mx1.free.fr[212.27.48.6] said: 552 5.2.2 user quota exceeded Rejet du mail car la boite mail Free du destinataire est pleine
Utilisateur suspenduFree / AliceADSL / LibertySurfhost mx1.free.fr[212.27.48.7] said: 550 5.2.1 This mailbox has been blocked due to inactivityRejet du mail car le compte Free du destinataire est suspendu
SPAM ou VIRUSLa Postehost smtpz4.laposte.net[194.117.213.1] said: 550 5.5.0 Service refuse. Veuillez essayer plus tard. service refused, please try later. LPN007_510 ou LPN007_511Rejet du mail car détection de Spam par La Poste
SAPM ou VIRUSSFR / AOL / Neuf / Cegetel / Club-Internet / Numéricablehost smtp-in.sfr.fr[93.17.128.123] said: 550 5.7.1 Message content rejectedRejet du mail car détection de Spam par SFR
SPAM ou VIRUSAlstomhost vip-smtp.alstom.com[159.245.16.220] said: 550 Denied by policyRejet du mail car détection de Spam par Alstom

Cas spécifiques à Google

Cas 1 : Le mail est bloqué en sortie de Gadz.org par les relais antispam Google

En test pour les domaines Google : gmail.com + imelavi.fr (G Suite) + soce.fr (G Suite) + fondam.fr (G Suite) d’août à octobre 2017. Arrêté depuis suite à 2 constats :

Les seuls domaines pour lesquelles les relais Google sont encore utilisés pour l'envoi de mails sont les domaines corporates "internes" (comprendre pour la communication officielle de la part de Google ou bien des gadz salariés Google) :

google.fr
google.com
googlemail.com

L'expéditeur reçoit un retour de ce type si son mail est bloqué par un des relais de Google :

Une copie de ce rapport de blocage est envoyée à la boite "[email protected]" : une règle les archive dans la corbeille durant 30 jours avant suppression



Cas 2 : Le mail est rejeté par les filtres antivirus de Google :

L'expéditeur reçoit dans ce cas un message de retour (non delivery notification) indiquant la raison suivante :

This message was blocked because its content presents a potential 552-5.7.0 security issue


C- Cas spécifiques Gadz.org

Utilisateurs existant, n'ayant ni de compte Google actif, ni d'adresse(s) de redirection active(s)

Vous envoyez un mail à une adresse [email protected] et vous obtenez le retour suivant :


Remote-MTA: dns; hruid.agoram.org
Diagnostic-Code: smtp; 550 5.1.1
    <[email protected]>: Recipient address
    rejected: User unknown in local recipient table

En gros = envoyé par hruid.agoram.org et [email protected] : User unknown

Cela signifie que le compte [email protected] existe (possède un hruid dans le GrAM) mais n'a pas d'adresse de redirection valide/active où livrer le mail...

Redirections emails depuis un domaine/serveur de mail perso vers gadz.org


Relayer les mails vers gadz.org revient à "émettre en tant que" (pour un serveur de mail, "rediriger" et "envoyer en tant que" revient à la même chose) : donc les SPF stricts vont rejeter les mail pour usurpation/spoofing (en gros : un relai gadz.org - se faisant passer pour gadz.org - illégitime)

Si vous souhaitez pouvoir relayer vers gadz.org, alors il est nécessaire de mettre en œuvre SRS en plus de SPF : https://en.wikipedia.org/wiki/Sender_Rewriting_Scheme

voir par exemple cet article en français, le chapitre 5 expose bien le problème appliqué ici à gmx.ch, et le chapitre 6 pour les résolutions : https://support.hostpoint.ch/fr/produits/e-mail/questions-dordre-general-sur-e-mail/sender-policy-framework-spf-et-sender-rewrite-schema-srs