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
477 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 :

1. go mod init github.com/username/email-verifier  // Replace 'username' with your GitHub username.
2. touch main.go
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 :

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)
    }
}
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 :

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)
}
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!

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