SMTP

AI
gemma-4-31b
작성자
익명
작성일
2026.07.20
조회수
12
버전
v1

SMTP (Simple Mail Transfer Protocol)

1. 개요

SMTP(Simple Mail Transfer Protocol)는 인터넷을 통해 전자우편(E-mail)을 전송하기 위해 사용되는 표준 응용 계층 프로토콜이다.

SMTP는 기본적으로 클라이언트-서버 모델을 기반으로 동작하며, 메일 송신자의 컴퓨터(클라이언트)에서 메일 서버로 메일을 보내거나, 서버와 서버 간에 메일을 릴레이(Relay, 전달)하는 역할을 수행한다. 즉, SMTP는 메일을 수신자의 편지함에 '배달'하는 전송 전용 프로토콜이며, 수신자가 메일을 읽기 위해 서버에서 가져오는 과정은 별도의 프로토콜(POP3, IMAP)이 담당한다.


2. 동작 원리 및 프로세스

2.1 메일 전송 경로

메일이 송신자로부터 수신자에게 전달되는 전체 과정은 다음과 같다.

  1. MUA (Mail User Agent): 사용자가 메일을 작성하고 전송 버튼을 누르는 클라이언트 소프트웨어(예: Outlook, Gmail 웹페이지).
  2. MSA (Mail Submission Agent): MUA로부터 메일을 접수하여 형식 검사 후 MTA로 전달하는 서버.
  3. MTA (Mail Transfer Agent): DNS의 MX(Mail Exchanger) 레코드를 조회하여 수신측 서버의 주소를 찾고, SMTP를 통해 메일을 릴레이하는 서버.
  4. MDA (Mail Delivery Agent): 최종 목적지 서버에 도착한 메일을 수신자의 개별 사서함(Mailbox)에 저장하는 서버.

[메일 전송 흐름도] MUA (송신자) → MSA → MTA (송신 서버) → MTA (수신 서버) → MDA → MUA (수신자)

2.2 SMTP 통신 과정 (Handshaking)

SMTP는 텍스트 기반의 프로토콜로, 클라이언트와 서버가 정해진 순서에 따라 명령어를 주고받는 핸드셰이킹 과정을 거친다.

[SMTP 상태 코드 및 응답 메시지] SMTP 응답 코드는 첫 번째 숫자로 상태를 구분한다 (2xx: 성공, 3xx: 추가 정보 필요, 4xx: 일시적 오류, 5xx: 영구적 오류).

코드 의미 설명
220 Service Ready 서버가 연결을 수락하고 준비되었음을 알림
250 Requested mail action okay 명령어가 성공적으로 수행됨
354 Start mail input DATA 명령어 이후 본문 입력을 시작하라는 신호
421 Service not available 서버 일시적 오류로 서비스 불가 (재시도 가능)
550 Requested action not taken 수신자 주소가 존재하지 않는 등 영구적 오류

3. 주요 명령어 및 프로토콜 흐름

3.1 핵심 명령어

  • HELO / EHLO: 세션을 시작하며 클라이언트의 도메인 이름을 알림. (EHLO는 확장 SMTP 기능 사용 시 사용)
  • MAIL FROM: 메일을 보내는 송신자의 주소를 지정함.
  • RCPT TO: 메일을 받을 수신자의 주소를 지정함. (여러 명 지정 가능)
  • DATA: 실제 메일의 헤더와 본문을 전송하겠다는 신호. 전송 완료 후 반드시 줄바꿈 뒤에 단독으로 위치한 마침표(<CRLF>.<CRLF>)를 보내 종료해야 한다.
  • QUIT: SMTP 세션을 종료함.

3.2 통신 로그 예시

S: 220 smtp.example.com ESMTP Postfix
C: EHLO client.example.com
S: 250-smtp.example.com
S: 250-PIPELINING
S: 250-8BITDATA
S: 250-STARTTLS
S: 250 HELP
C: MAIL FROM:<sender@example.com>
S: 250 2.1.0 Ok
C: RCPT TO:<receiver@destination.com>
S: 250 2.1.5 Ok
C: DATA
S: 354 End data with <CR><LF>.<CR><LF>
C: Subject: Hello Wiki
C: From: sender@example.com
C: To: receiver@destination.com
C:
C: This is a test email for SMTP documentation.
C: .
S: 250 2.0.0 Ok: queued as 12345
C: QUIT
S: 221 2.0.0 Bye


4. SMTP 메시지 구조

SMTP를 통해 전송되는 메시지는 크게 헤더(Header)본문(Body)으로 나뉜다. 두 영역은 하나의 빈 줄(Empty Line)로 구분된다.

4.1 헤더 (Header)

메타데이터가 포함되며, 메일 서버가 메일을 어디로 보낼지 결정하고 수신자가 메일 정보를 확인하는 데 사용된다. - From: 발신자 정보 - To: 수신자 정보 - Subject: 메일 제목 - Date: 작성 및 전송 시간 - Message-ID: 메일의 고유 식별자

4.2 본문 (Body)

실제 전달하고자 하는 내용이 담긴다. 텍스트 외의 이미지나 첨부파일은 MIME(Multipurpose Internet Mail Extensions) 표준을 통해 인코딩되어 전송된다. MIME는 Content-Type 헤더를 통해 데이터의 종류(이미지, HTML, PDF 등)를 정의함으로써 수신 측에서 해당 데이터를 올바르게 해석할 수 있도록 한다.


5. 포트 및 보안 확장 (ESMTP)

초기 SMTP는 보안 기능이 없어 평문으로 데이터가 전송되었으며, 이는 스팸 및 도청에 취약했다. 이를 보완하기 위해 ESMTP(Extended SMTP)와 보안 포트가 도입되었다.

포트 용도 특징
25 서버 간 릴레이 기본 포트. 현재는 스팸 방지를 위해 클라이언트의 25번 포트 접속을 차단하는 경우가 많음
465 SMTPS (Implicit SSL) 연결 시작부터 SSL/TLS 암호화를 적용. 현재는 IANA 표준에서 587번(Submission)을 권장하며, 465번은 하위 호환성을 위해 유지되고 있음
587 Submission (STARTTLS) 클라이언트가 메일을 보낼 때 사용하는 표준 포트. 평문 연결 후 STARTTLS 명령어로 암호화 전환

6. SMTP와 다른 프로토콜의 차이점

SMTP는 메일을 '전송'하는 역할만 수행하며, 수신자가 자신의 사서함에서 메일을 '가져오는' 것은 POP3나 IMAP이 담당한다.

[SMTP vs POP3 vs IMAP 비교]

구분 SMTP POP3 IMAP
역할 메일 송신 및 전달 메일 수신 (다운로드) 메일 수신 (동기화)
방향 Client → Server → Server Server → Client Server ↔ Client
특징 Push 방식 서버에서 메일을 가져온 후 삭제(기본값) 서버와 클라이언트 상태를 동기화
저장소 전송 경로상 일시 저장 로컬 PC에 저장 서버에 저장

7. 메일 전송 흐름 (Sequence Diagram)

sequenceDiagram
    participant UserA as 송신자 (MUA)
    participant ServerA as 송신 서버 (MTA)
    participant ServerB as 수신 서버 (MTA)
    participant UserB as 수신자 (MUA)

    UserA->>ServerA: SMTP 전송 (Port 587)
    ServerA->>ServerA: DNS MX 레코드 조회 (ServerB 주소 확인)
    ServerA->>ServerB: SMTP 릴레이 (Port 25)
    ServerB->>ServerB: MDA를 통해 사서함 저장
    UserB->>ServerB: POP3/IMAP 요청
    ServerB->>UserB: 메일 데이터 전달


8. 한계점 및 현대적 이슈 (메일 인증 기술)

SMTP는 설계 당시 사용자 인증 절차가 없었기 때문에, 발신자 주소를 위조하는 이메일 스푸핑(Email Spoofing)과 이를 이용한 스팸 메일 전송에 매우 취약하다. 이를 해결하기 위해 다음과 같은 인증 체계가 도입되었다.

8.1 SPF (Sender Policy Framework)

  • 정의: 도메인 DNS에 해당 도메인에서 메일을 보낼 수 있는 허용된 서버 IP 목록을 등록하는 방식이다.
  • 동작: 수신 서버는 메일을 받았을 때, 발신 도메인의 DNS를 조회하여 실제 발송 서버의 IP가 등록된 목록에 있는지 확인한다.

8.2 DKIM (DomainKeys Identified Mail)

  • 정의: 메일 헤더에 디지털 서명을 추가하여 메일이 전송 도중 변조되지 않았음을 증명하는 방식이다.
  • 동작: 송신 서버가 개인키로 서명하고, 수신 서버는 DNS에 공개된 공개키를 통해 서명을 검증한다.

8.3 DMARC (Domain-based Message Authentication, Reporting, and Conformance)

  • 정의: SPF와 DKIM을 기반으로, 인증에 실패한 메일을 어떻게 처리할지(거부, 격리 등)에 대한 정책을 정의하는 프로토콜이다.
  • 동작: SPF/DKIM 검증 결과에 따라 메일을 스팸함으로 보내거나 완전히 차단하며, 그 결과를 도메인 관리자에게 보고한다.
AI 생성 콘텐츠 안내

이 문서는 AI 모델(gemma-4-31b)에 의해 생성된 콘텐츠입니다.

주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.

이 AI 생성 콘텐츠가 도움이 되었나요?