C# 기본 DNS MX 서버 조회(종속성 없음)
문맥
때로는 이메일에 유효한 도메인이 있는지, 이 도메인에 MX 레코드가 잘 구성되어 있는지 확인해야 할 때가 있습니다.
이는 양식 제출 전 이메일 검증, AWS SES, SendGrid 또는 다른 이메일 제공업체에 이메일을 보내기 전 반송률 방지, 기본 검증을 통해 CRM의 오래된 데이터베이스 정리 등과 같은 많은 제안에 사용될 수 있습니다.
이 응용 프로그램의 기능은 무엇입니까?
앱에서 MX 레코드를 확인하려는 이메일을 묻습니다.
그런 다음 DNS MX 조회를 실행하고 각 서버 기본 설정(우선순위)이 있는 모든 메일 서버를 표시합니다.
알퍼 모두 앱을 다시 실행할 것인지, 프로그램을 종료할 것인지 묻습니다.
프로젝트의 스택 및 주요 주제
.NET 6.0 콘솔 애플리케이션
- 기음#
- UDP 프로토콜 통신
- 콘솔 입력, 출력 및 청소
- DNS MX 프로토콜 표준 사용
도커
- 도커 빌드
- 도커 실행
- 도커 컨테이너 bash 상호 작용(도커의 호스트 셸에서)
작성자 및 라이센스 정보
- Erick은 수석 백엔드 개발자이자 설계자입니다.
- 이메일 [email protected] 또는 Linkedin https://www.linkedin.com/in/seixaserick/을 통해 Erick에게 연락할 수 있습니다.
- 기타 Github 저장소: https://github.com/seixaserick/
- MIT 라이선스(자세한 내용은 LICENSE.txt를 확인하세요)
이 프로젝트를 실행하는 방법
저장소 복제
Windows용 Git을 이미 설치한 경우 아래 명령을 실행하세요.
git clone https://github.com/seixaserick/dotnet-dns-mx-lookup
cd dotnet-dns-mx-lookup
Docker 컨테이너에서 이 프로젝트를 실행하는 방법
Docker Desktop을 이미 설치한 경우 아래 단계를 따르세요.
도커 이미지 만들기
Docker 이미지를 생성하려면 프로젝트 디렉터리의 명령 프롬프트에서 아래 명령줄을 실행하세요.
docker build -t dotnet-dns-mx-lookup -f Dockerfile .
Docker 컨테이너에서 앱 실행
Docker 컨테이너에서 이미지를 실행하고 상호작용하려면 아래 명령줄을 실행하세요.
docker run -it --name=dotnet-dns-mx-lookup --restart=unless-stopped dotnet-dns-mx-lookup
컨테이너를 중지하려면 아래 명령줄을 실행하세요.
docker stop dotnet-dns-mx-lookup
컨테이너를 제거하려면(실행 중인 경우에도) 아래 명령줄을 실행하세요.
docker rm --force dotnet-dns-mx-lookup
Docker 없이 빌드하고 실행하는 방법(Windows)
리포지토리를 복제한 후 Visual Studio를 사용하여 프로젝트를 열 수 있습니다. F5
눌러 빌드하거나 디버그하세요.
Windows에서 컴파일하고 실행하려면 (Visual Studio 필요)
Visual Studio에서 솔루션 파일 dotnet-dns-mx-lookup.sln
연 다음 F5
눌러 프로젝트를 실행하세요!
테이크아웃
- DNS 프로토콜은 UPD 프로토콜 포트 53을 사용합니다.
- 이메일 도메인에 MX 레코드가 두 개 이상 있고 우선순위가 높은 서버와 통신해야 합니다.
- Dotnet 앱(콘솔 여부)은 Linux 또는 Windows OS에서 실행될 수 있습니다.
- Docker는 종속성 및 구성에 대한 걱정 없이 프로젝트를 빠르게 실행할 수 있는 훌륭한 도구입니다.
- C#은 다른 ECMA 기반 언어(Java, Javascript 등)와 매우 유사합니다.
- 콘솔 앱은 간단하고 데이터 입력 및 출력이 쉽습니다.
- 좋은 Markdown README.md 파일은 다른 개발자가 프로젝트를 이해, 복제, 실행 및 테스트하는 데 도움이 될 수 있습니다.
숙제 도전
- 이메일에 유효한 서버 도메인이 하나 이상 있으면 true를 반환하도록 이메일 유효성 검사 기능을 구현해 보세요.
- 콘솔에 인쇄하기 전에 서버 기본 설정에 따라 DNS MX 서버 목록을 정렬해 보십시오.
- 각 DNS 서버 IP가 유효한지 확인하고 해당 TCP 25, 587 또는 465 포트(공통 SMTP 포트)를 호출해 보세요. 팁: 기본 dotnet DNS A 레코드 쿼리를 사용하여 서버의 IP(IPv4 또는 IPv6) 찾기 https://docs.microsoft.com/en-us/dotnet/api/system.net.dns?view=net-6.0
- 코드를 검사하고 DNS 쿼리 시간 초과를 늘리고 한 DNS 서버 조회(이더넷 카드와 Wi-Fi 연결 해제) 간에 네트워크 연결을 강제로 끊어 무슨 일이 일어나는지 확인하세요. 시간 초과 오류에 대한 오류 처리를 구현해 보세요. 기본 DNS 실패 및 쿼리를 반환하는 보조 DNS(네트워크를 다시 연결한 후)를 시뮬레이션할 수 있습니다.
- Dockerfile 콘텐츠를 검사하여 docker가 이미지 허브에서 이미지를 가져오는 방법을 확인하세요.
- WebAPI를 생성하고 엔드포인트를 구현하여 이메일이 유효한지 확인해보세요(https://my-api-server.com/api/[email protected]). 귀하의 웹사이트에서 이를 사용하여 양식 제출을 통해 귀하에게 연락하는 가짜 이메일(잘못된 도메인 포함)을 방지할 수 있습니다.
- 기본 닷넷 메모리 캐시 또는 REDIS 분산 캐시를 사용하여 도메인 MX 레코드 CACHE를 구현해 보세요.