SMTP 란?

 SMTP(Simple Mail Transfer Protocol)인터넷에서 메일을 주고 받기 위한 전송규약 및 프로토콜을 말한다.

SMTP 서버는 SMTP 프로토콜을 이용하여 전자메일 서비스를 제공하는 서버를 말한다. SMTP 서버는 TCP/IP 통신 포트넘버 '25' 를 사용한다. 

 

 Windows Server 2019에서는 웹 *IIS(Internet Informataion Services) 하위 패키지가 아닌, 별도의 *IIS 6 Management Console을 통해 Configuration 해야 한다. 윈도우 서버에서는 메일 서버로 이용하기보다는 IIS 웹서버(웹브라우저)를 통한 폼메일 이메일 발송으로 많이 사용하며, 이에 대한 예시로는, 홈페이지에서 문의나 상담 신청서를 작성하여 보내기 버튼을 누르면 담당자에게 메일로 전달해주는 것을 생각하면 된다.

 

*IIS(Internet Information Services) : 마이크로소프트 윈도우를 사용하는 서버들을 위한 인터넷 기반 서비스들의 모임. 마이크로소프트의 웹 서버 소프트웨어라고 생각하면 된다.


인터넷에서 메일이 전송되는 과정

인터넷(TCP/IP)를 통한 메일 전송 과정

  1. 사용자는 메일 클라이언트 프로그램(MS의 Outlook 또는 Google의 Gmail 등)을 통해 mail을 작성하여 '전송' 버튼을 누르면, 내부적으로 해당 메일은 SMTP 라는 프로토콜을 사용하여 메일 데몬(Mail Daemon)으로 메시지를 전송한다.

  2. *메일 데몬은 종단간 클라이언트의 주소를 분석하고, 가장 가까운 메일 서버(Sender가 소속한 메일서버)로 메시지와 정보를 보내게 된다. 

    *메일 데몬(Mail Daemon) : 일종의 프로세스로서, 송신자(Sender) 및 수신자(Receiver) 메일과 정보를 메일 서버가 해석 가능하도록 재가공하는 역할.

  3. 송신자가 보낸 편지가 일단 송신자 측의 전자우편을 관리하는 메일 서버에 전달되면, 메일 서버는 수신자의 전자우편 주소를 분석하여 최단 경로를 찾아 근접한 메일 서버에 메일을 전달하게 된다.
    최종 수신자 측의 메일 서버에 도착하기까지 위와 같은 최단 경로의 메일서버로 전달하는 중계작업이 계속된다.

  4. 위와 같은 일련의 작업이 계속적으로 이루어짐으로써 송수신자 간 메일 교환이 정확하게 이루어질 수 있게 된다.

Windows Server 2019 SMTP 구축 과정 및 테스트

https://foxydog.tistory.com/56

 

Windows Server 2019 - SMTP서버 설치 및 기본 세팅

Windows Server 2019 - SMTP Server SMTP Server SMTP(Simple Mail Transfer Protocol) Server는 인터넷 메일서버에서 이메일(E-MAIL)을 주고받기 위한 전송 프로토콜입니다. TCP/IP 통신 포트는 25(Port)..

foxydog.tistory.com

Windows Server 2019 환경에서 SMTP 서버를 구축하는 자세한 내용은 위 블로그를 참고하면 아주 쉽게 할 수 있다!

이 포스팅에서는 SMTP 서버 설치 이후에 SMTP 서버가 제대로 작동되고 있는지 테스트 메일을 보내는 방법에 대해 중점적으로 보자!

Step 1. [Powershell] - telnet 접속

1-1. telnet [IP] [PortNumber]

powershell 화면

위 이미지에서는 local에 설치된 SMTP가 제대로 설치되었는지 확인하기 위해 localhost를 사용하였는데, 원격의 SMTP 서버를 테스트하는 경우라면 해당 서버의 IP를 입력하면 된다. 포트 번호는 대부분 25일 것이다.

 

1-2. SMTP 접속 성공

SMTP 접속 성공 화면

위 이미지처럼 '220' 코드가 나타났다면, SMTP 접속에 성공한 것이다. 

접속코드 옆에 나타나는 'ROOT-WinServer.junhotest.com'의 경우 서버 이름이다. 나의 경우 도메인 서버까지 세팅이 되어 있는 상황이기 때문에 'ROOT-WinServer'가 앞에 붙었고, SMTP가 설치된 실제적인 서버 이름은 'junhotest.com'라고 보면 된다.

 

Step 2. SMTP 명령어 입력

2-1. SMTP를 식별하고 대화를 시작

SMTP 서버를 이용하여 메일 서비스를 이용하려면 우선 SMTP 서버와의 '인사' 과정이 필요하다.

 

입력 : helo [IP 주소] 또는 [도메인]

출력 : 250 ROOT-WinServer.junhotest.com Hello [127.0.0.1]

helo 명령어 입력 화면

SMTP가 설치된 서버의 도메인인 'junhotest.com'를 넣어 helo 명령어를 사용하면, 위 이미지처럼 250 코드가 나타나게 되는데, 이는 SMTP 서버가 정상적으로 응답하였다는 뜻이다.

 

2-2. 메일 송신자를 SMTP 서버에 알리기

입력 : mail from : <송신자 메일주소>

출력 : 250 2.1.0 메일주소.... Sender OK

메일 송신자 입력 화면

위 이미지처럼 250 코드가 나타났다면, 메일 송신자 정보가 제대로 입력되었다는 얘기이다.

 

2-3. 메일 수신자를 SMTP 서버에 알리기

입력 : rcpt to : <수신자 메일주소>

출력 : 250 2.1.5 <수신자 메일주소>

수신자 메일주소 입력 화면

 위 이미지처럼 수신자 메일 주소를 입력하고 250 코드가 나타났다면 정상적으로 수신자 정보가 입력되었다는 의미이다.

빨간색 네모박스 위처럼 이메일 주소를 잘못 입력한 경우에는, 501 코드가 나타나며 'Invalid Address' 가 나타나게 된다.

예시에서는 co-no@tistory.com 라고 적었는데, 본인의 메일로 테스트 메일을 받고싶다면, 본인의 메일 주소를 입력하면 된다. 

 

※ 단, 네이버/다음/Gmail 등의 유명 포탈 사이트의 경우, 대부분 고도의 스팸 정책을 적용하고 있기 때문에, 발송자 메일주소가 실제 도메인 주소로서 존재하지 않는 경우, 스팸으로 차단되거나 최악의 경우엔 IP가 차단될 수 있으니 주의하길 바란다.

 

2-4. 메일 내용 입력

입력 : data

출력 : 354 Start mail input; end with <CRLF>.<CRLF>

data 명령어 입력 화면

위 이미지처럼 'data'라고 입력하고 나면 'Start mail input' 이라는 문구가 나타나게 되는데, 이후부터의 입력은 모두 메일의 내용이 된다. 아래처럼 입력하면 된다.

from : [송신자 메일 주소]
to : [수신자 메일 주소]
subject : [메일 제목]
본문 내용
ex) Test 메일 입니다~~~

 

2-5. 메일 내용을 작성 완료하였음을 SMTP 서버에 알리기

입력 : .

출력 : 250 2.6.0 <메시지ID> Queued mail for delivery

메일 내용의 끝마침을 나타내는 마침표(.) 입력 화면

 

Step 3. SMTP 서버와의 연결 종료

입력 : quit

출력 : 221 2.0.0 [SMTP서버 도메인주소] Service closing transmission channel

다음과 같이 221 코드가 나타나며 정상적으로 SMTP 서버와의 연결이 종료되고, Powershell의 서버 접속 전 상태로 돌아오게 된다.

 

지금까지 SMTP 서버의 테스트 과정을 살펴봤다. 위와 같이 테스트 과정을 진행하여 실제 입력한 수신자 메일 주소로 테스트 메일이 전송되는 것까지 확인하였다면, 설치한 SMTP 서버가 정상 설치 및 정상 구동되고 있다고 알면 된다!

 

참고

https://medium.com/@js230023/smtp-aa716e6bd761

 

SMTP

□ mail 전송의 원리

medium.com

 

'OS > Windows' 카테고리의 다른 글

[Windows] AD (2) - FSMO Role  (0) 2022.01.24
[Windows] AD (1) - AD(Active Directory)의 개념  (0) 2022.01.21
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기