Heim >Backend-Entwicklung >Golang >E-Mail-Verifizierer mit Go
Dieser Blog-Beitrag zeigt den Aufbau eines einfachen E-Mail-Verifizierungstools mit Go. Es handelt sich um ein Miniprojekt, das die Kernkonzepte der E-Mail-Verifizierung und die zugrunde liegenden Mechanismen veranschaulichen soll. Wir werden nicht auf jedes Detail eingehen, aber wir werden genug behandeln, um ein solides Verständnis zu vermitteln.
Der Prozess beginnt mit der Überprüfung der aus einer E-Mail-Adresse extrahierten Domäne (z. B. google.com
).
Einrichten Ihres Go-Projekts:
Öffnen Sie Ihr Terminal und führen Sie die folgenden Befehle aus:
<code class="language-bash">1. go mod init github.com/username/email-verifier // Replace 'username' with your GitHub username. 2. touch main.go</code>
Implementierung des Go-Codes (main.go):
Die Datei main.go
enthält die Kernlogik. Dieses erste Snippet liest Domäneneingaben aus der Befehlszeile:
<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>
Die Funktion verifyDomain
übernimmt den eigentlichen Verifizierungsprozess. Es prüft auf MX-, SPF- und DMARC-Einträge:
<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>
Erklärung der E-Mail-Verifizierungskomponenten:
Code ausführen:
Nachdem Sie den Code gespeichert haben, führen Sie ihn auf Ihrem Terminal aus: go run main.go
. Geben Sie nacheinander Domänennamen (z. B. google.com
, example.com
) ein. Die Ausgabe zeigt, ob MX-, SPF- und DMARC-Einträge gefunden wurden.
Beispielausgabe:
<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>
Diese Ausgabe zeigt an, dass die Domäne google.com
über einen MX-Eintrag und einen DMARC-Eintrag verfügt, die Suche nach dem SPF-Eintrag ist in diesem Beispiel jedoch fehlgeschlagen. Die Ergebnisse variieren je nach DNS-Konfiguration der Domain.
Denken Sie daran, "github.com/username/email-verifier"
durch Ihre tatsächlichen GitHub-Repository-Informationen zu ersetzen. Kontaktieren Sie mich auf LinkedIn, GitHub und Twitter/X für weitere Diskussionen!
Das obige ist der detaillierte Inhalt vonE-Mail-Verifizierer mit Go. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!