이 블로그 게시물은 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
)을 한 번에 하나씩 입력하세요. 출력에는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!