Maison > développement back-end > Golang > Vérificateur d'e-mails utilisant Go

Vérificateur d'e-mails utilisant Go

Linda Hamilton
Libérer: 2025-01-12 18:08:44
original
410 Les gens l'ont consulté

Email Verifier using Go

Cet article de blog montre la création d'un outil simple de vérification des e-mails à l'aide de Go. Il s'agit d'un mini-projet conçu pour illustrer les concepts fondamentaux de la vérification des e-mails et ses mécanismes sous-jacents. Nous n'entrerons pas dans tous les détails, mais nous en couvrirons suffisamment pour fournir une compréhension solide.

Le processus commence par la vérification du domaine extrait d'une adresse e-mail (par exemple, google.com).

Configuration de votre projet Go :

Ouvrez votre terminal et exécutez les commandes suivantes :

<code class="language-bash">1. go mod init github.com/username/email-verifier  // Replace 'username' with your GitHub username.
2. touch main.go</code>
Copier après la connexion

Implémentation du code Go (main.go) :

Le fichier main.go contiendra la logique de base. Cet extrait initial lit les entrées de domaine à partir de la ligne de commande :

<code class="language-go">package main

import (
    "bufio"
    "log"
    "net"
    "os"
    "strings"
)

func main() {
    scanner := bufio.NewScanner(os.Stdin)
    for scanner.Scan() {
        verifyDomain(scanner.Text())
    }

    if err := scanner.Err(); err != nil {
        log.Fatal("Error: could not read from input %v\n", err)
    }
}</code>
Copier après la connexion

La fonction verifyDomain gère le processus de vérification proprement dit. Il vérifie les enregistrements MX, SPF et DMARC :

<code class="language-go">func verifyDomain(domain string) {
    var hasMX, hasSPF, hasDMARC bool
    var spfRecord, dmarcRecord string

    // MX Record Check
    mxRecords, err := net.LookupMX(domain)
    if err != nil {
        log.Printf("Error: could not find MX record for %s due to %v\n", domain, err)
    }
    if len(mxRecords) > 0 {
        hasMX = true
    }

    // SPF Record Check
    txtRecords, err := net.LookupTXT("spf." + domain)
    if err != nil {
        log.Printf("Error: could not find SPF record for %s due to %v\n", domain, err)
    }
    for _, record := range txtRecords {
        if strings.HasPrefix(record, "v=spf1") {
            hasSPF = true
            spfRecord = record
            break
        }
    }

    // DMARC Record Check
    dmarcRecords, err := net.LookupTXT("_dmarc." + domain)
    if err != nil {
        log.Printf("Error: could not find DMARC record for %s due to %v\n", domain, err)
    }
    for _, record := range dmarcRecords {
        if strings.HasPrefix(record, "v=DMARC1") {
            hasDMARC = true
            dmarcRecord = record
            break
        }
    }

    log.Printf("Domain: %v,\n MX: %v,\n SPF:  %v,\n DMARC:  %v,\n SPF Rec: %v,\n DMARC Rec %v,\n\n", domain, hasMX, hasSPF, hasDMARC, spfRecord, dmarcRecord)
}</code>
Copier après la connexion

Explication des composants de vérification des e-mails :

  • Enregistrement MX (Mail Exchanger) : Identifie les serveurs de messagerie responsables de l'acceptation des e-mails pour un domaine.
  • Enregistrement SPF (Sender Policy Framework) : Spécifie les serveurs de messagerie autorisés à envoyer des e-mails au nom d'un domaine. Aide à détecter l'usurpation d'identité.
  • DMARC (Authentification, reporting et conformité des messages basés sur le domaine) : S'appuie sur SPF et DKIM pour une authentification et un reporting améliorés des e-mails. Spécifie comment gérer les e-mails ayant échoué aux vérifications SPF ou DKIM.

Exécution du code :

Après avoir enregistré le code, exécutez-le depuis votre terminal : go run main.go. Saisissez les noms de domaine (par exemple, google.com, example.com) un par un. Le résultat indiquera si des enregistrements MX, SPF et DMARC ont été trouvés.

Exemple de sortie :

<code>Domain: google.com,
 MX: true,
 SPF: false,
 DMARC: true,
 SPF Rec: ,
 DMARC Rec v=DMARC1; p=reject; rua=mailto:mailauth-reports@google.com,
</code>
Copier après la connexion

Cette sortie indique que le domaine google.com possède un enregistrement MX et un enregistrement DMARC, mais la recherche d'enregistrement SPF a échoué dans cet exemple. Les résultats varieront en fonction de la configuration DNS du domaine.

N'oubliez pas de remplacer "github.com/username/email-verifier" par les informations réelles de votre référentiel GitHub. Connectez-vous avec moi sur LinkedIn, GitHub et Twitter/X pour en savoir plus !

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:php.cn
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