gbmin's Tech Notes

서버 구축 및 유지보수, 클라우드 컴퓨팅, 네트워크 보안, IT 분야 기술 노트. :)

Tech Notes/Mail Server

SMTP(Simple Mail Transfer Protocol): 이메일 프로토콜 핵심 정리

gbmin 2023. 8. 8. 21:49

POP3/IMAP과 함께 이메일 핵심 프로토콜 중 하나인 SMTP (Simple Mail Transfer Protocol)에 대한 글을 정리하였다.

 

SMTP 프로토콜


[목차]

1. SMTP (Simple Mail Transfer Protocol)

2. SMTP의 작동 원리

3. SMTP 포트

4. SMTP의 구성 요소

5. 보안: SMTP와 관련된 보안 이슈

6. SMTP를 대체할 기술

7. SMTP의 미래


1. SMTP (Simple Mail Transfer Protocol)

SMTP의 정의

SMTP (Simple Mail Transfer Protocol)는 인터넷을 통해 이메일을 전송하기 위한 표준 프로토콜이다. SMTP을 사용하면 서로 다른 이메일 서비스 사이에서도 메시지를 교환할 수 있다. SMTP는 1982년 처음 도입되었으며, 이메일을 안정적으로 전송하고 관리하기 위한 기본 프로토콜로 성장했다. 전자 메일은 현대 비즈니스와 개인 통신의 수단으로, 신속하고 효과적인 의사소통을 가능하게 한다. SMTP는 이러한 이메일 전송의 핵심 역할을 담당한다.

 

 

2. SMTP의 작동 원리

SMTP는 클라이언트와 서버 간의 상호작용을 통해 메일을 전송한다. 클라이언트가 메일을 보내면, 서버는 해당 메시지를 적절한 목적지로 전달한다. 메일 전송은 여러 단계로 이루어지며, 보내는 이, 받는 이, 본문 등의 정보를 포함한다.

 

[Tech Notes/Mail Server] - 메일 서버 기본 구조와 개념: 메일 시스템 운영을 위한 지침

 

메일 서버 기본 구조와 개념: 메일 시스템 운영을 위한 지침

메일 시스템은 인터넷이 등장하면서 초기부터 꾸준하게 사용되어 오는 시스템이며 현재 까지도 활발하게 사용된다. 여러 가지 구조적 문제와 취약점들도 꾸준히 발견되고 있으나, 인터넷 비즈

gbminnote.com

 

 

SMTP 주요 명령어와 응답 코드 소개

SMTP에서 사용되는 명령어와 서버 응답 코드는 이메일을 보내는 과정에서 클라이언트와 서버 간의 통신을 제어한다. 각 명령어는 특정 작업을 수행하고, 서버 응답은 각 명령어에 대한 상태를 나타내는 코드로 이루어진다.

SMTP 주요 명령

명령어 수행작업 응답코드예시
HELO 클라이언트가 SMTP 통신을 시작하기위한 연결의 시작이다. 핸드 쉐이크 과정이 해당. 250 OK
MAIL FROM 발신자의 이메일 주소 250 OK
RCPT TO 수신자의 이메일 주소 여러 번 RCPT TO를 사용할 수 있음 250 OK
DATA 이메일 본문 내용을 한 줄씩 전송 본문 마지막에 [.] 마침표를 넣어 본문의 끝을 처리함. 354 Start mail
NOOP 서버에 NULL 명령을 전달, 서버와 클라이언트 연결이 유효한지 확인하기 위함. 250 OK
RSET RESET이라는 뜻으로, 현재 진행중인 트랜잭션이 중단 및 초기화 연결 종료는 아님 250 OK
QUIT 연결이 완전히 종료 221 Bye

SMTP 응답 코드

응답코드 범위 설명
1xx 정보: 서버가 명령어를 받았으며 클라이언트에 추가 정보를 요청한는것.
2xx 성공: 명령어가 성공적으로 수행.
3xx 중간 응답: 명령어가 일부 수행되었으며 추가 정보나 작업이 필요한경우.
4xx 임시 오류: 명령어를 완전히 수행할 수 없으며, 나중에 다시 시도도 하도록 알림.
5xx 영구 오류: 명령어를 수행할 수 없으며, 같은 명령어로 다시 시도해도 실패할 것을 알림.

SMTP 응답 코드 예시

응답코드 범위 설명
200 서비스 준비 완료
221 서비스 종료
250 요청된 작업 완료
354 데이터 입력 시작, 종료는 마침표('.')로
421 서비스를 사용할 수 없음
450 임시 오류로 인해 메일을 보낼 수 없음
550 요청된 작업을 수행할 수 없음 (예: 주소가 잘못됨 등)

 


3. SMTP 포트

  • 포트 25
    전통적인 SMTP 작업에 사용되는 표준 포트다. 이 포트는 이메일 서버 간에 메시지를 릴레이 하는 데 주로 사용된다. 일반적인 인터넷 사용자는 25번을 통해 직접 메일을 보내지 않는다. 스팸 전송을 방지하기 위해 많은 ISP(Internet Service Providers)가 이 포트를 차단하기 때문이다.
  • 포트 587
    메일 클라이언트에서 이메일 서버로 메일을 보내는 데 주로 사용되는 포트로, 서브미션 포트라고도 불린다. 이 포트는 사용자의 이메일 클라이언트와 이메일 서비스 제공자 간에 보안 연결을 위해 주로 사용된다. 일반적으로 TLS/SSL 보안이 함께 사용된다.
  • 포트 465
    예전에 SSL 보안과 함께 SMTP를 사용하는 데 사용되었다. 하지만, 현재는 공식적으로 사용되지 않으며, 대신 587포트가 권장되어 널리 사용된다.

 

 

4. SMTP의 구성 요소

  • SMTP 서버
    SMTP 서버는 이와 같은 전송을 관리하고 제어하는 역할을 수행한다.

  • MTA (Mail Transfer Agent)
    MTA는 이메일 메시지를 전달하는 소프트웨어 컴포넌트로, SMTP 프로토콜을 사용하여 작동한다. MTA는 발신자의 메일 서버에서 수신자의 메일 서버로 이메일을 전달하는 데 필요한 모든 프로세스를 처리한다. 각각의 메일 서버에는 자체 MTA가 있으며, 이를 통해 서로 다른 메일 서버 간의 메시지 전달이 가능하다. MTA의 작동 원리를 간략히 설명하면, 발신자의 이메일 클라이언트가 메시지를 작성하면 해당 서버의 MTA가 메시지를 받아 해당 도메인의 MTA로 전달한다. 최종 수신자의 메일 서버 도메인을 확인하고, 도메인의 MX (Mail Exchange) 레코드를 찾은 후, 이메일을 수신자의 서버로 전달한다.

  • MUA (Mail User Agent)
    MUA는 이메일을 읽고 작성하는 사용자 인터페이스를 제공한다. 이메일 클라이언트 소프트웨어나 웹 기반 이메일 서비스가 MUA의 역할을 하며, 사용자는 MUA를 통해 이메일을 작성, 읽기, 전달, 삭제 등의 작업을 수행할 수 있다. MUA는 사용자의 요청을 해당하는 프로토콜로 변환하여 MTA에 전달하고, MTA로부터 받은 응답을 사용자에게 표시한다. 이러한 과정은 이메일을 전송하거나 받는 과정에서 중요한 역할을 하며, 사용자가 이메일을 쉽게 관리할 수 있도록 도와준다.

 

 

5. 보안: SMTP와 관련된 보안 이슈

이메일 시스템은 중요한 정보의 교환과 비즈니스를 위한 허브의 기능을 하므로 메일보안은 중요한 고려사항이다. SMTP는 여러 보안 이슈와 관련된 다양한 방법을 사용한다.

  • TLS/SSL
    TLS(전송 계층 보안) 및 SSL(보안 소켓 계층) 은 이메일의 기밀성과 무결성을 보장하는 프로토콜이다. 이 기술을 사용하면 이메일 데이터가 전송 중에 암호화되므로, 중간자 공격이나 데이터 변조와 같은 위협으로부터 보호받을 수 있다. TLS/SSL을 적용한 서버와 클라이언트 간의 통신을 암호화되므로, 제삼자가 데이터 패킷을 가로채도 정보를 읽을 수 없다. 이렇게 메시지의 기밀성과 무결성이 유지된다.

  • 스팸과 악성 코드 필터
    이메일은 스팸이나 악성 코드 전송의 주요 수단이 될 수 있으므로, 이를 방지하는 방법이 필요하다.
    인증 기술은 SPF (Sender Policy Framework), DKIM (DomainKeys Identified Mail)과 같은 표준을 사용하여 발신자의 신원을 검증하고 허가되지 않은 발신자로부터 메일을 보호한다. 필터링 시스템은 메시지 내용, 발신자, URL 패턴 등을 기반으로 의심스러운 이메일을 차단하거나 격리시킬 수 있습니다.

  • 인증 기술
    인증 메커니즘은 사용자의 신원을 확인하고 악의적인 접근을 방지하는 데 사용된다. 사용자 이름과 비밀번호 또는 2단계 인증을 통해 수행될 수 있으며, 메일 서버가 오직 인증된 사용자만 이메일을 전송하도록 허용한다.

 

 

6. SMTP를 대체할 기술

SMTP는 매우 중요한 프로토콜이지만 한계점이 명확하다. 예를 들면 대량의 메일전송을 효율적으로 처리하기 어려운 점이 있으며 기술적으로 간소화되어있지 않아 설정과 관리가 복잡 한 측면도 있다. 이와 같은 문제로 이메일 전송 시스템은 지속적인 변화와 발전을 겪으며, 표준 SMTP의 한계점을 극복하고 추가 기능을 제공하기 위한 여러 확장 프로토콜과 대안 프로토콜을 도입하고 있다.

  • ESMTP (Extended SMTP)
    ESMTP는 기존 SMTP(Simple Mail Transfer Protocol)의 확장된 개념으로 더 많은 기능을 제공한다. ESMTP는 새로운 명령어와 응답 코드를 도입하여 보안 강화, 인증 메커니즘, 다양한 메시지 형식 지원 등을 가능하게 했다. 기존 SMTP 클라이언트와의 호환성을 유지하면서 더 나은 기능을 제공하기 위한 발전으로 볼 수 있으며, 현대의 이메일 시스템에서는 ESMTP가 일반적으로 사용되고 있다.

  • LMTP (Local Mail Transfer Protocol)
    LMTP (Local Mail Transfer Protocol)은 SMTP(Simple Mail Transfer Protocol)의 간호화된 형태로, 특히 로컬 네트워크 내에서 이메일 전송을 처리하기 위해 설계되었다. 동일한 네트워크에 속한 도메인에 메일을 보낼 때 사용하면 네트워크를 거치지 않고 보내기 때문에 속도가 매우 빠르고 보안성이 유지될 수 있다. 때문에 이메일을 효과적으로 처리해야 하는 기업이나 조직에서 사용된다.

  • SEND Protocol
    SEND 프로토콜은 보안 이메일 전송을 목표로 하며, 수발신자 모두의 신원을 인증과 암호화를 하는 프로토콜이다. 민감한 정보를 주고받아야 하는 금융기관이나 정부 기관에서 종종 사용되는 것을 볼 수 있다.

 

 

7. SMTP의 미래

이메일 전송 기술은 계속해서 발전하고 있으며, SMTP 역시 변화하고 있다. 더 높은 보안 수준, 속도, 증가하는 모바일 환경에 지속적으로 대응해야 하며, 보안, 효율성, 사용 편의성 등 여러 면에서 SMTP의 개선 가능성이 있어야 한다. 구 시대적 프로토콜이자 현재까지도 많은 마케팅과 기업 간 커뮤니케이션 용도로 사용되며 지속적인 발전을 하고 있는 몆 안 되는 기술 중 하나이다. 마지막으로 규제와 법률의 변화에 따른 보안 및 개인정보 보호 요구도 SMTP 기술이 진화하는데 어느 정도 영향을 줄 것으로 보인다. SMTP의 변화와 발전은 시장과 산업 전반의 시스템을 변화를 주거나 최소한 현상유지를 할 것으로 생각된다.