단순 전자우편 전송 프로토콜(SMTP)이란?

단순 전자우편 전송 프로토콜(SMTP)은 이메일 전송용 네트워킹 표준입니다.

학습 목표

이 글을 읽은 후에 다음을 할 수 있습니다:

  • SMTP(Simple Mail Transfer Protocol) 작동 방식 설명
  • SMTP 명령, 서버, 봉투 이해하기
  • 확장 SMTP(ESMTP) 정의

글 링크 복사

단순 전자우편 전송 프로토콜(SMTP)이란?

단순 전자우편 전송 프로토콜(SMTP)은 네트워크를 통해 전자우편(이메일)을 전송하는 기술 표준입니다. 다른 네트워킹 프로토콜과 마찬가지로 컴퓨터와 서버는 SMTP를 이용하여 기반 하드웨어나 소프트웨어와 관계없이 데이터를 교환할 수 있습니다. 편지 봉투에 표준화된 주소 양식을 사용해서 우편 서비스가 이루어지는 것처럼, SMTP 덕분에 이메일이 발신자에게서 수신자에게로 이동하는 방식이 표준화되므로 광범위하게 이메일을 전송할 수 있습니다.

SMTP는 메일 검색 프로토콜이 아니라 메일 전송 프로토콜입니다. 우편 서비스로 우편함에 우편물이 전달되더라도 수신자는 우편함에서 우편물을 찾아야 합니다. 마찬가지로 SMTP도 이메일 공급자의 메일 서버로 이메일을 전송하지만, 수신자가 메일 서버에서 이메일을 검색해 읽는 데는 별도의 프로토콜이 이용됩니다.

SMTP의 작동 방식은?

모든 네트워킹 프로토콜은 미리 정의한 데이터 교환 프로세스를 따릅니다. SMTP는 이메일 클라이언트와 메일 서버 간의 데이터 교환 프로세스를 정의합니다. 사용자는 이메일 클라이언트와 상호 작용합니다. 이메일 클라이언트는 사용자가 액세스하여 이메일을 전송하는 컴퓨터나 웹 응용 프로그램을 말합니다. 메일 서버는 이메일의 전송, 수신, 전달을 위한 특화된 컴퓨터입니다. 사용자는 메일 서버와 직접 상호 작용하지 않습니다.

다음은 이메일 클라이언트와 전자 메일 서버 사이에서 이메일 전송이 시작되는 과정을 요약한 내용입니다.

  • SMTP 연결 열림: SMTP는 전송 프로토콜로 전송 제어 프로토콜(TCP)을 이용하므로 첫 번째 단계는 클라이언트와 서버 간 TCP 연결로 시작됩니다. 그 다음 이메일 클라이언트가 특화된 "Hello" 명령(HELO 또는 EHLO, 아래 설명됨)으로 이메일 전송 프로세스를 시작합니다.
  • 이메일 데이터 전송: 클라이언트가 이메일 헤더(대상 및 제목 줄 포함), 이메일 본문, 기타 추가 구성 요소로 이루어진 실제 이메일 콘텐츠와 함께 일련의 명령을 서버에 보냅니다.
  • 메일 전송 에이전트(MTA): ��버가 메일 전송 에이전트(MTA)라는 프로그램을 실행합니다. MTA는 수신자의 이메일 주소 도메인을 확인하고 발신자와 다를 경우 수신자의 IP 주소를 찾도록 도메인 네임 시스템(DNS)에 쿼리합니다. 이는 우체국에서 우편물 수신자의 우편번호를 조회하는 것과 비슷합니다.
  • 연결 닫힘: 데이터 전송이 완료되면 클라이언트가 서버에 알림을 보내며 서버가 연결을 닫습니다. 이때 클라이언트가 SMTP 연결을 새로 열지 않는 한 서버는 클라이언트로부터 이메일 데이터를 추가로 받지 않습니다.

일반적으로, 이 첫 번째 이메일 서버는 이메일의 실제 최종 목적지가 아닙니다. 클라이언트로부터 이메일을 수신한 서버는 다른 메일 서버와 이러한 SMTP 연결 프로세스를 반복합니다. 최종적으로 이메일이 수신자의 이메일 공급자가 제어하는 메일 서버 내 수신자의 받은메일함에 도착할 때까지, 두 번째 서버도 같은 작업을 수행합니다.

우편이 발신자에게서 수신자에게로 이동하는 과정과 이 프로세스를 비교해봅시다. 우편 집배원은 발신자에게서 수신자에게로 직접 편지를 전달하지 않습니다. 우편 집배원은 그 대신 편지를 우체국으로 가져갑니다. 우체국은 편지를 다른 도시의 다른 우체국으로 보내고, 또 다른 우체국으로 가며, 이는 편지가 수신자에게 도착할 때까지 계속됩니다. 마찬가지로 이메일도 수신자의 받은메일함에 도착할 때까지 SMTP를 통해 서버에서 서버로 이동합니다.

SMTP 봉투란?

SMTP "봉투"는 이메일 클라이언트가 이메일의 출발지와 목적지에 관해 메일 서버에게 보내는 정보의 집합입니다. SMTP 봉투는 이메일 헤더 및 본문과 구별되며 이메일 수신자에게는 보이지 않습니다.

SMTP 명령이란?

SMTP 명령은 미리 정의된 텍스트 기반 지시사항이며, 클라이언트나 서버에서 수행해야 할 작업과 이에 수반된 데이터를 처리할 방법을 알려줍니다. 서버에서 데이터를 정확하게 받아들이도록 클라이언트가 누를 수 있는 버튼이라고 생각해보세요.

  • HELO/EHLO: 이 명령을 사용하면 "Hello"라고 말한 다음 클라이언트와 서버 사이에 SMTP 연결이 시작됩니다. "HELO" 는 이 명령의 기본 버전이고 "EHLO"는 특수 유형 SMTP를 위한 버전입니다.
  • MAIL FROM: 이는 이메일을 전송하는 서버를 알려줍니다. Alice가 친구 Bob에게 이메일을 보내려고 하는 경우 클라이언트가 "MAIL FROM:<alice@example.com>"을 전송할 수 있습니다.
  • RCPT TO: 이 명령으로 이메일 수신자가 나열됩니다. 수신자가 여러 명일 경우 클라이언트는 이 명령을 여러 번 전송할 수 있습니다. 상기 예시에서 Alice의 이메일 클라이언트는 "RCPT TO:<bob@example.com>"을 전송하게 됩니다.
  • DATA: 이는 다음과 같이 이메일 콘텐츠 앞에 위치합니다.

DATA
날짜: 2022년 4월 4일 월요일
보낸 사람: Alice alice@example.com
제목: 에그 베네딕트 캐서롤
받는 사람: Bob bob@example.com

안녕 Bob,
금요일에 에그 베네딕트 캐서롤 레시피 가져갈게.
-Alice
.
  • RSET: 이 명령을 사용하면 연결이 초기화되어 SMTP 연결이 닫히지 않고 미리 전송한 모든 정보가 제거됩니다. RSET은 클라이언트가 잘못된 정보를 전송할 때 사용합니다.
  • QUIT: 이 명령으로 연결이 종료됩니다.

SMTP 서버란?

SMTP 서버는 SMTP 프로토콜을 사용해 이메일을 전송하고 수신할 수 있는 메일 서버입니다. 이메일 클라이언트는 이메일 전송을 시작할 수 있게 이메일 공급자의 SMTP 서버와 직접 연결합니다. SMTP 서버에서 실행���는 각기 다른 소프트웨어 프로그램은 다음과 같습니다.

  • 메일 제출 에이전트(MSA): MSA는 이메일 클라이언트로부터 이메일을 수신합니다.
  • 메일 전송 에이전트(MTA): MTA는 전달망의 다음 서버로 이메일을 전송합니다. 앞에서 설명한 대로 필요할 경우 수신자 도메인의 메일 교환(MX) DNS 레코드를 찾기 위해 DNS를 쿼리할 수 있습니다.
  • 메일 전달 에이전트(MDA): MDA는 MTA에서 이메일을 수신해서 수신자의 받은메일함에 보관합니다.

SMTP에서 사용하는 포트는?

네트워킹에서 포트란 네트워크 데이터를 수신하는 가상 지점입니다. 우편 주소에 있는 아파트 번호라고 생각해보세요. 컴퓨터가 네트워킹 데이터를 올바른 응용 프로그램으로 정렬하는 데 포트가 도움을 줍니다. 방화벽과 같은 네트워크 보안 조치로 불필요한 포트를 차단하여 악의적 데이터의 전송 및 수신을 방지할 수 있습니다.

이전에 SMTP에는 포트 25만 사용했습니다. 현재도 SMTP에 포트 25를 여전히 사용하고 있으나 포트 465, 587, 2525를 사용할 수도 있습니다.

  • 포트 25는 SMTP 서버 사이를 연결하는 데 가장 많이 사용됩니다. 스팸 발송자가 이 포트를 악용해 스팸을 대량 전송하려고 하므로, 현재는 최종 사용자 네트워크의 방화���에서 이 포트를 차단할 때가 많습니다.
  • 한때 포트 465보안 소켓 계층(SSL) 암호화와 함께 SMTP에 사용하도록 지정되었습니다. 하지만 SSL은 Transport Layer Security(TLS)으로 대체되어, 최신 이메일 시스템에서는 이 포트를 사용하지 않습니다. 레거시(이전) 시스템에서만 나타납니다.
  • 이제 포트 587이 이메일 제출용 기본 포트입니다. 이 포트를 통과하는 SMTP 통신은 TLS 암호화를 이용합니다.
  • 포트 2525는 SMTP와 공식적으로 연결되어 있지는 않지만, 일부 이메일 서비스에서는 앞서 언급한 포트가 차단되었을 경우 이 포트로 SMTP 전송이 제공됩니다.

SMTP vs. IMAP와 POP

인터넷 메시지 접속 프로토콜(IMAP)과 ��스트 오피스 프로토콜(POP)은 최종 수신처로 이메일을 전달하는 데 사용됩니다. 사용자에게 이메일을 표시하려면 이메일 클라이언트가 망 내 최종 메일 서버에서 이메일을 검색해야 합니다. 이러한 목적으로 클라이언트는 SMTP가 아닌 IMAP나 POP를 사용합니다.

나무 토막과 밧줄의 차이점을 생각해보면 SMTP와 IMAP/POP 간의 차이를 이해할 수 있을 것입니다. 나무 토막은 무언가를 앞으로 미는 데는 사용할 수는 있지만 끌어올 수는 없습니다. 밧줄은 물건을 끌어올 수는 있지만 밀 수는 없습니다. 유사하게 SMTP는 이메일을 메일 서버로 "푸시"하지만 IMAP와 POP은 사용자의 응용 프로그램으로 향하는 나머지 과정에서 이를 "끌어"옵니다.

확장 SMTP(ESMTP)란?

확장 단순 전자우편 전송 프로토콜(ESMTP)은 기존 기능을 확장하여 이메일 첨부 파일 전송, TLS 사용, 기타 기능을 사용할 수 있게 해주는 프로토콜 버전입니다. 대부분의 이메일 클라이언트와 이메일 서비스는 기본 SMTP가 아닌 ESMTP를 사용합니다.

ESMTP에는 "extended hello"인 "EHLO"를 포함해 연결을 시작할 때 ESMTP를 사용할 수 있도록 하는 추가 명령이 있습니다.

Cloudflare Email Routing이란?

Cloudflare Email Routing은 추가로 만든 메일함에 계속 신경쓸 필요 없이 이메일 주소를 생성하고 관리하는 과정을 단순화하도록 설계된 서비스입니다. 기본 이메일 주소를 공유하지 않으려는 경우 사용자는 Email Routing으로 사용자 지정 이메일 주소를 얼마든지 생성할 수 있습니다. 그러면 기본 이메일 주소를 공개하지 않고도 원하는 이메일의 받은메일함으로 이메일이 라우팅됩니다.

Cloudflare Email Routing은 헤더와 본문을 변경하지 ���고 이메일의 SMTP 봉투를 수정하여 작업을 수행합니다. 자세히 알아보려면 Cloudflare의 블로그 게시물을 읽어보세요.