Maison > développement back-end > Tutoriel Python > Créez une API pour protéger vos e-mails marketing du spam

Créez une API pour protéger vos e-mails marketing du spam

Susan Sarandon
Libérer: 2024-12-23 22:23:13
original
648 Les gens l'ont consulté

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.

Pourquoi Apache SpamAssassin ?

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.

Premiers pas avec SpamAssassin

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
Copier après la connexion

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
Copier après la connexion

results.txt contiendra alors l'e-mail traité avec les en-têtes et les scores de SpamAssassin.

Utilisez FastAPI pour envelopper SpamAssassin en tant qu'API

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.

Exemple de code FastAPI

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}
Copier après la connexion

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>
Copier après la connexion

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"
  }
]
Copier après la connexion

Déployer l'API en ligne

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".

Build an API to Keep Your Marketing Emails Out of Spam

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!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal