SMTP

덤프버전 :


1. 개요
2. 상세
3. 예시


1. 개요[편집]


Simple Mail Transfer Protocol / 간이 우편 전송 프로토콜

이메일 전송에 사용되는 네트워크 프로토콜이다.

2. 상세[편집]


인터넷에서 메일 전송에 사용되는 표준이다. 1982년 RFC821에서 표준화되어 현재는 RFC5321에서 정의된 ESMTP(Extended SMTP; 확장 SMTP)로 2008년 갱신되었다. SMTP는 보안과 호환성의 문제로 그대로는 사용하지 않는 경우가 많다. 일반적으로 쓰이는 확장 프로그램은 SMTP-AUTH(송신자 인증 서비스), ESMTP(SASL을 이용한 보안 연결), MIME(non-ascii 데이터 전송 포맷)가 있다.

SMTP는 25/tcp와 587/tcp 포트를 사용하며 SMPTS는 465/tcp 포트를 사용한다.

SMTP는 연결지향적이고 텍스트 기반으로 작동하는 프로토콜이다. SMTP 클라이언트와 SMTP 서버 사이에 SMTP 세션이 생성되며, 명령행을 이용해 메일을 송수신한다. SMTP 교환은 다음의 세 명령어를 통해 이루어진다.
  1. MAIL 명령어: 수신자 지정
  2. RCPT 명령어: 송신자 지정
  3. DATA 명령어: 메시지 내용의 시작이 되는 부분이다. 메시지 헤더와 바디로 구성된다.

3. 예시[편집]


SMTP 세션의 예[1]:

S: 220 smtp.example.com ESMTP Postfix

C: HELO relay.example.org

S: 250 Hello relay.example.org, I am glad to meet you

C: MAIL FROM:<[email protected]

S: 250 Ok

C: RCPT TO:<[email protected]

S: 250 Ok

C: RCPT TO:<[email protected]

S: 250 Ok

C: DATA

S: 354 End data with <CR><LF>.<CR><LF>

C: From: "Bob Example" <[email protected]

C: To: "Alice Example" <[email protected]

C: Cc: [email protected]

C: Date: Tue, 15 January 2008 16:02:43 -0500

C: Subject: Test message

C:

C: Hello Alice.

C: This is a test message with 5 header fields and 4 lines in the message body.

C: Your friend,

C: Bob

C: .

S: 250 Ok: queued as 12345

C: QUIT

S: 221 Bye

{The server closes the connection}


각 프로그래밍 언어마다 smtp 사용을 위한 lib를 지원한다. Python 경우에는 smtplib가 기본 내장되어 있으며 SSL/TLS 인증을 지원하여 gmail 이나 네이버 메일을 사용가능하다. 단 문제는 script 상에서 계정 정보와 패스워드가 노출되기 때문에 보안에 유의해야 한다.
파일:크리에이티브 커먼즈 라이선스__CC.png 이 문서의 내용 중 전체 또는 일부는 2023-11-03 14:39:01에 나무위키 SMTP 문서에서 가져왔습니다.

[1] telnet 으로 포트25에 접속해보자