ホームページ > バックエンド開発 > Golang > Go を使用した電子メール検証ツール

Go を使用した電子メール検証ツール

Linda Hamilton
リリース: 2025-01-12 18:08:44
オリジナル
411 人が閲覧しました

Email Verifier using Go

このブログ投稿では、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>
ログイン後にコピー

電子メール検証コンポーネントの説明:

  • MX (メール エクスチェンジャー) レコード: ドメインの電子メールの受け入れを担当するメール サーバーを識別します。
  • SPF (Sender Policy Framework) レコード: ドメインに代わって電子メールを送信する許可されたメール サーバーを指定します。スプーフィングの検出に役立ちます。
  • DMARC (ドメインベースのメッセージ認証、レポートおよび適合性): SPF および DKIM に基づいて構築され、電子メール認証とレポートを強化します。 SPF または DKIM チェックに失敗した電子メールの処理方法を指定します。

コードの実行:

コードを保存した後、ターミナルから実行します: go run main.go。 ドメイン名 (例: google.comexample.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" を実際の G​​itHub リポジトリ情報に置き換えてください。 さらに詳しい議論が必要な場合は、LinkedIn、GitHub、Twitter/X で私と連絡を取ってください!

以上がGo を使用した電子メール検証ツールの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート