MTP는 전자우편을 보내고 받는데 사용되는 TCP/IP 프로토콜이며, 기본적으로 25포트를 사용하지만, 특정 포트로 변경하여 설정할 수 있다. SMTP도 POP와 마찬가지로 기본적으로 보안 기능을 제공하지 않는다.
[그림.1 일반적인 SMTP 통신]
1. 3-way handshaking 과정을 거친 후 SMTP 서버는 준비가 되었다는 것을 알리는 코드 220으로 응답한다.
2. 클라이언트는 호스트 이름과 HELO 또는 EHLO를 전송한다.
HELO : 표준 SMTP 세션 시작
EHLO : 메일 서비스 확장을 지원하는 SMTP세션 시작
3. 클라이언트는 MAIL FROM과 함께 form 이메일 주소를 제공한다.
4. (4-1.) 이메일 주소를 제공 받은 SMTP서버는 이를 승인 한다. 만약 승인이 되지 않는다면, 이메일 전송은 불가능 하다.
5. 클라이언트는 전송될 이메일이 있다는 RCPT TO를 전송한다.
6. 클라이언트는 이메일을 전송할 준비가 되었음을 알리는 DATA를 전송한다.
7. 서버는 준비가 완료되면, 354 Start Mail Input으로 응답한다. 354 Start Mail Input을 받은 클라이언트는 이메일을 전송한다.
8. 이메일 전송이 완료되면, 클라이언트는 연결 종료를 알리는 QUIT를 전송한다.
다음으로 SMTP 패킷 구조를 살펴보자.
SMTP 패킷 구조는 POP 동일하게 매우 간단하다. SMTP 패킷 구조는 명령어와 응답 코드로 구성되어 있으며, TCP 헤더 바로 뒤에 존재한다.
[그림.2]는 클라이언트가 전송하는 명령어 패킷 이다. 명령어와 필요에 따라 파라미터를 전송한다.
[그림.2 클라이언트 명령어]
클라이언트가 전송하는 명령어는 [표.1]과 같으며, 더욱 자세한 내용을 알고 싶으면
http://www.iana.org/assignments/mail-parameters을 참고 하기 바란다.
명령어 | 설명 |
HELO | SMTP 세션 시작 |
이메일 전송 시작 | |
RCPT | 이메일 수신 확인 |
DATA | 이메일 전송 시작 |
QUIT | 연결 종료 |
다음으로 [그림.3]은 서버에서 보내는 응답 코드 패킷 이다. 응답 코드와 간단한 설명 및 파라미터로 구성되어 있다.
[그림.3 SMTP 응답 코드]
표.2]는 응답 코드의 일부분 이며, http://www.iana.org/assignments/smtp-enhanced-status-codes/smtp-enhanced-status-codes.xml 에서 더 많은 응답 코드를 확인할 수 있다.
응답 코드 | 설명 |
220 | 서비스 준비 |
250 | 요청한 동작을 승인 및 완료 |
452 | 저장 공간 부족 |
550 | 메일 박스를 이용할 수 없음 |
554 | 트랜잭션 실패 |
[표.2 응답 코드]
'Analysis' 카테고리의 다른 글
PingTunneling 패킷 분석 (0) | 2013.01.30 |
---|---|
기본적인 HTTP Packet 분석 (0) | 2013.01.30 |
기본적인 POP Packet 분석 (0) | 2013.01.30 |
기본적인 FTP Packet 분석 (0) | 2013.01.30 |
기본적인 TCP Packet 분석 (0) | 2013.01.30 |