Lors de l'exécution de campagnes de marketing par e-mail, l'un des plus grands défis est de garantir que vos messages parviennent dans la boîte de réception plutôt que dans le dossier spam.
Apache SpamAssassin est un outil largement utilisé par de nombreux clients de messagerie et outils de filtrage de messagerie pour classer les messages comme spam. Dans cet article, nous explorerons comment tirer parti de SpamAssassin pour valider si votre e-mail sera marqué comme spam et pourquoi il est marqué ainsi.
La logique sera conditionnée sous forme d'API et déployée en ligne, afin qu'elle puisse être intégrée à votre flux de travail.
Apache SpamAssassin est une plateforme open source de détection de spam gérée par Apache Software Foundation. Il utilise une multitude de règles, un filtrage bayésien et des tests de réseau pour attribuer un « score » de spam à un e-mail donné. En règle générale, un e-mail ayant un score de 5 ou plus présente un risque élevé d'être signalé comme spam.
Étant donné que le score de SpamAssassin est transparent et bien documenté, vous pouvez également l'utiliser pour identifier exactement les aspects de votre courrier électronique qui provoquent des scores de spam élevés et améliorer votre rédaction.
SpamAssassin est conçu pour fonctionner sur les systèmes Linux. Vous aurez besoin d'un système d'exploitation Linux ou créerez une VM Docker pour l'installer et l'exécuter.
Sur les systèmes Debian ou Ubuntu, installez SpamAssassin avec :
apt-get update && apt-get install -y spamassassin sa-update
La commande sa-update garantit que les règles de SpamAssassin sont à jour.
Une fois installé, vous pouvez diriger un message électronique vers l'outil de ligne de commande de SpamAssassin. Le résultat comprend une version annotée de l'e-mail avec les scores de spam et explique quelles règles sont déclenchées.
Une utilisation typique pourrait ressembler à ceci :
spamassassin -t < input_email.txt > results.txt
results.txt contiendra alors l'e-mail traité avec les en-têtes et les scores de SpamAssassin.
Ensuite, créons une API simple qui accepte deux champs de courrier électronique : sujet et html_body. Il transmettra les champs à SpamAssassin et renverra le résultat de la validation.
from fastapi import FastAPI from datetime import datetime, timezone from email.utils import format_datetime from pydantic import BaseModel import subprocess import re def extract_analysis_details(text): rules_section = re.search(r"Content analysis details:.*?(pts rule name.*?description.*?)\n\n", text, re.DOTALL) if not rules_section: return [] rules_text = rules_section.group(1) pattern = r"^\s*([-\d.]+)\s+(\S+)\s+(.+)$" rules = [] for line in rules_text.splitlines()[1:]: match = re.match(pattern, line) if match: score, rule, description = match.groups() rules.append({ "rule": rule, "score": float(score), "description": description.strip() }) return rules app = FastAPI() class Email(BaseModel): subject: str html_body: str @app.post("/spam_check") def spam_check(email: Email): # assemble the full email message = f"""From: example@example.com To: recipient@example.com Subject: {email.subject} Date: {format_datetime(datetime.now(timezone.utc))} Content-Type: text/html; charset="UTF-8" {email.html_body}""" # Run SpamAssassin and capture the output directly output = subprocess.run(["spamassassin", "-t"], input=message.encode('utf-8'), capture_output=True) output_str = output.stdout.decode('utf-8', errors='replace') details = extract_analysis_details(output_str) return {"result": details}
La réponse contiendra les détails de l'analyse des résultats de SpamAssassin.
Prenons cette entrée comme exemple :
subject: Test Email html_body: <html> <body> <p>This is an <b>HTML</b> test email.</p> </body> </html>
La réponse serait comme ceci :
[ { "rule": "MISSING_MID", "score": 0.1, "description": "Missing Message-Id: header" }, { "rule": "NO_RECEIVED", "score": -0.0, "description": "Informational: message has no Received headers" }, { "rule": "NO_RELAYS", "score": -0.0, "description": "Informational: message was not relayed via SMTP" }, { "rule": "HTML_MESSAGE", "score": 0.0, "description": "BODY: HTML included in message" }, { "rule": "MIME_HTML_ONLY", "score": 0.1, "description": "BODY: Message only has text/html MIME parts" }, { "rule": "MIME_HEADER_CTYPE_ONLY", "score": 0.1, "description": "'Content-Type' found without required MIME headers" } ]
L'exécution de SpamAssassin nécessite un environnement Linux avec le logiciel installé. Traditionnellement, vous pourriez avoir besoin d'une instance EC2 ou d'un droplet DigitalOcean à déployer, ce qui peut être coûteux et fastidieux, surtout si votre utilisation est faible.
Quant aux plates-formes sans serveur, elles ne fournissent souvent pas de moyen simple d'exécuter des packages système comme SpamAssassin.
Maintenant, avec Leapcell, vous pouvez déployer n'importe quel package système comme SpamAssassin, tout en gardant le service sans serveur - vous ne payez que pour les invocations, ce qui est généralement moins cher.
Déployer l'API sur Leapcell est très simple. Vous n'avez pas à vous soucier de la façon de configurer un environnement Linux ou de créer un Dockerfile. Sélectionnez simplement l'image Python à déployer et remplissez correctement le champ "Build Command".
Une fois déployé, vous disposerez d’un point de terminaison que vous pourrez appeler à la demande. Chaque fois que votre API est invoquée, elle exécutera SpamAssassin, évaluera l'e-mail et renverra la réponse.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!