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>
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>
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>
Explication des composants de vérification des e-mails :
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>
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!