このブログ投稿では、Go を使用したシンプルな電子メール検証ツールの構築を示します。 これは、電子メール検証の中心的な概念とその基礎となるメカニズムを説明するために設計されたミニプロジェクトです。 すべての詳細を掘り下げることはしませんが、しっかりとした理解を提供するのに十分な範囲をカバーします。
プロセスは、電子メール アドレスから抽出されたドメイン (例: google.com
) を検証することから始まります。
Go プロジェクトのセットアップ:
ターミナルを開いて次のコマンドを実行します:
<code class="language-bash">1. go mod init github.com/username/email-verifier // Replace 'username' with your GitHub username. 2. touch main.go</code>
Go コードの実装 (main.go):
main.go
ファイルにはコア ロジックが含まれます。この最初のスニペットは、コマンド ラインからドメイン入力を読み取ります:
<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>
verifyDomain
関数は実際の検証プロセスを処理します。 MX、SPF、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>
電子メール検証コンポーネントの説明:
コードの実行:
コードを保存した後、ターミナルから実行します: go run main.go
。 ドメイン名 (例: google.com
、example.com
) を一度に 1 つずつ入力します。出力には、MX、SPF、および DMARC レコードが見つかったかどうかが表示されます。
出力例:
<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>
この出力は、ドメイン google.com
に MX レコードと DMARC レコードがあるが、この例では SPF レコードの検索が失敗したことを示しています。 結果はドメインの DNS 構成によって異なります。
"github.com/username/email-verifier"
を実際の GitHub リポジトリ情報に置き換えてください。 さらに詳しい議論が必要な場合は、LinkedIn、GitHub、Twitter/X で私と連絡を取ってください!
以上がGo を使用した電子メール検証ツールの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。