전자 메일 사용자 환경
전자 메일 작업
- 메일 편집
- 메시지 작성, 수신 메일 회신, 수신 메일을 제3자에게 전달
- 헤더: 메일 주소, 작성 일자, 참조 수신자
- 메일 내용 읽기
- 메일 프로그램에서 제공하는 기본 기능을 이용해 읽음
- 첨부 문서를 읽기 위해 문서 편집기와 연결
- 수신 메일 관리
- 수신한 메일을 보관, 관리 가능, 메일 삭제나 파일 시스템에 보관할 수 있음
- 전달 여부 통지
- 전송한 메일이 수신자에게 수신되었는지에 대해 송신자에게 회신하는 용도
- 수신자의 수신 확인을 옵션으로 설정하여 수신 여부 확인
- 메일 전달
- 메일 송신자가 전송한 메일은 목적지 호스트까지 안전하게 전달되어야함
- 호스트 간 전송은 TCP
메일 처리
-
<로그인 이름>@<메일 서버 이름>
- 로그인 이름: 호스트에 등록된 사용자 구분자, 일반적으로 메일이 저장되는 메일 박스의 파일명으로 사용됨
- 메일 서버 이름: 메일이 전송되는 최종 목적지 호스트의 DNS 이름
-
수신 메일 읽는 방법
- 메일 박스가 보관된 서버에 직접 로그인하여 메일 프로그램을 실행함으로써 메일 확인
- 웹 브라우저 사용 (웹 메일)
- 메일 서버에 보관된 메일을 pc로 다운로드하여 관리 ex) MS outlook
메일 형식
- 메일 내용
- ASCII 코드 기반의 텍스트 형식으로 정의됨
- 멀티미디어 데이터를 수용하도록 기능 확장
- 메일 구성
- 헤더와 내용을 공백 한 줄로 구분한다.
- 메시지 헤더
- 메시지 내용
- 사용자 헤더
- <헤더 이름>:<헤더 값> 형식으로 표현
- To: 수신자의 전자메일 주소, 송신자가 메일을 전달하고자 하는 최종 수신자로, DNS 주소 형식으로 표현
- CC: 참조 수신자의 전자 메일 주소, 추가로 지정하는 메일 수신자, 기술적인 측면에서 To 필드에 표시한 수신자와 구분되지 않지만 메일 내용을 참고할 필요가 있다는 논리적 의미로 참조자를 지정한다.
- BCC: 참조 수신자의 전자 메일 주소, CC필드와 유사한 형식으로 추가 지정하는 수신자로, 여기에 표기한 수신자 목록은 메일 내용에 포함되지 않기 때문에 다른 수신자들은 누가 BCC 수신자로 메일을 함께 수신했는지 모른다.
- From: 송신자의 이름 Sender 필드와 함께 메일 송신자를 의미하지만, 메일 주소를 입력할 필요는 없다. 송신자의 이름이나 소속 같은 논리적 의미를 나타낸다.
- Sender: 송신자의 전자 메일 주소
- Date: 송신자가 메시지를 전송한 시간
- Subject: 간단하게 요약된 메시지 제목, 메일의 메시지 내용을 간략하게 요약한 메일 제목 표기
MIME
- 7bit ASCII 기반의 메시지 형식을 그대로 유지
- 메시지 내용에 멀티미디어 데이터 인코딩 방법을 추가로 정의하여 멀티미디어 데이터를 수용 가능하게 확장함
MIME 헤더
- MIME-Version: MIME 버전, MIME의 버전 정보를 제공하는데, 이어지는 데이터가 MIME 메시지임을 의미한다. 이 필드 값이 없으면 이후의 데이터를 모두 텍스트로 간주하여 처리한다.
- Content-Description: 메시지 내용 설명, 수신자는 이 값을 이용해 메시지 내용을 대략적으로 파악할 수 있다.
- Content-Id: 구분자, MIME 객체를 식별하기 위한 구분자 역할을 한다.
- Content-Trasfer-Encoding: 전송 시 메시지 내용의 형식, 네트워크 전송이 편리하도록 변환하기 위한 인코딩 방법을 정의
- Content-Type: 메시지 유형, 메시지의 데이터 종류를 구분하는 것으로, 이 값을 해석하여 수신자가 적절한 방식으로 데이터를 처리할수 있도록 해준다.
- Text
- Plain
- 7비트의 ASCII 형식, MIME 변환이 필요없는 텍스트 데이터
- Image
- Gif
- Jpeg
- 정지 영상 정보를 전송하는데 사용, 추후에 더 추가될 예정
- Audio
- Video
- Application
- Octet-stream
- PostScript
- MIME에서 직접 지원하지 않는 데이터 종류를 위해 정의된다. Octet-stream은 단순히 바이트의 연속으로 해석되며, 이 파일을 어떻게 처리할지는 메일 응용 프로그램이나 사용자의 몫, PostScript 서브타입은 어도비 사의 포스트스크립트 형식 지원
- Message
- Rfc822
- Partial
- External-body
- 메일 메시지에 다른 전자 메일 포함 시 사용, 예를 들어 메일을 포워딩할 때 유용
- Multipart
- Mixed
- Parallel
- Digest
- Alternative
- 메시지 내용에 독립적인 부분을 여러개 포함하도록 지원, 각 부분의 시작과 끝을 명확히 구분할 수 있어야함.
전자 메일 시스템 구조
- 사용자 환경
- 사용자가 메일 작성, 수신하는 UI
- 메일 응용프로그램인 사용자 에이전트(UA)
- 네트워크 환경
- 메일을 중개하고 송수신하는 메일 전송 에이전트(MTA)
사용자 에이전트
- 메일을 송수신하기 위해 이용하는 프로그램
- 사용자 화면
- 그래픽 환경 제공
- MS outlook, 유닉스 mailx
- UA 사용자 프로그램 입력 정보
- 송신자의 메일주소
- 수신자의 메일주소
- 참조자의 메일주소
- 메일의 메세지 헤더: 제목
- 메일의 메세지 바디: 내용
메일 전송 에이전트
-
메일 전송
- MTA client: 전자 메일을 전송하는 호스트
- MTA server: 전자 메일을 수신하고 보관하는 호스트
-
MTA 정보 설정
- 보내는 메일 서버: STMP 프로토콜
- 받는 메일 서버: POP3 프로토콜
-
UA 프로그램 독립적
-
MTA 서버 같은 호스트
SMTP
SMTP 호스트
- SMTP client/server
- SMTP 명령과 그에 따른 SMTP 응답과정을 반복해 메일 전송
메일 보내는 과정
- 연결 설정 단계: SMTP 클라이언트가 TCP 이용해 SMTP 서버와 세션 설정
- 데이터 전송 단계: SMTP 서버에 메일 보내는 단계
- 연결 해제 단계: 메일 전송 완료하면 TCP 연결 해제
SMTP 구조
- STMP 클라이언트와 SMTP 서버 사이 데이터 전송
- 클라이언트가 명령을 보내고 서버가 응답으로 회신
- 메시지를 실시간으로 전송하지 않는다.
- 저장과 중개 방식으로 동작한다.
SMTP 명령과 응답
- SMTP 명령 := {문자코드, 줄바꿈}
- HELO+송신자 호스트이름: SMTP 세션 시작, 송신자의 호스트 이름 전송하여 서버에 자신의 신분을 알림, SMTP 확장 버전에서는 EHLO 명령으로 대체되었지만, HELO 명령도 가능
- MAIL+송신자 메일주소: 송신자 메일 주소 통지
- RCPT+수신자 메일주소: 수신자 메일주소 통지, 서버는 이 주소의 수신자가 자신의 호스트에 존재하는지 확인하여 응답한다. 만일 수신자의 메일주소가 서버에 등록되어있지 않으면 오류처리 과정 진행
- DATA+메시지 내용: 메일 메시지 송신, 메일 헤더와 메시지 전송하려면 DATA 명령을 사전에 전송하여 서버로부터 응답을 받아야한다.
- QUIT: 세션 종료
- RSET: 현재 연결 상태가 종료됨을 통지하고, 연결 재설정
- VRFY+수신자 메일주소: 수신자의 주소를 조회할 때 사용
- NOOP: 수신자 상태 검사
- SMTP 응답: (yz): 특정코드
- 2yz: 긍정적 완료 응답
- 3yz: 긍정적 중간 응답, 요구된 명령이 처리되었으나 추가 과정 필요
- 4yz: 임시 부정적 완료 응답, 요구된 명령이 거절되었으나, 향후 처리 가능성
- 5yz: 영구 부정적 완료 응답
연결 설정
- Well-known 25번 포트로 TCP 연결
- 명령과 응답
- SMTP 세션의 연결 설정 절차
- 421: 서비스 연결 준비가 되지않음
데이터 전송
- 명령과 응답: Client가 메일 내용 전송
- 송수신자 메일 주소 확인
- 메일 헤더 정보 전송
- DATA 명령으로 시작(from,to date 등 헤더 정보)
- 응답 코드 354(긍정 중간 응답)
- 메일 메시지 전송
연결 해제
- 명령과 응답
- SMTP 클라이언트가 QUIT 명령 전송
- SMTP 서버의 응답 코드 221을 회신
POP 서비스
- 메일 서버에서 메일 관리 프로그램으로 메일을 가져오는 프로토콜
POP과 SMTP
- POP 서비스의 필요성
- POP 서비스: SMTP와 별도로 SMTP 서버와 PC/스마트폰 연동
- POP 서비스로 메일을 PC로 다운 로드
- POP과 SMTP 비교
- POP
- POP 명령과 POP 응답
- Well-known port: TCP 110번
- 메일 다운로드 과정에서 사용자 인증 허가 반드시 필요
- SMTP
- SMTP 명령과 SMTP 응답
- Well-known port: TCP 25번
- 메일 송수신 과정에서 사용자 인증 허가가 불필요
- POP 명령과 응답
- 주요 POP 명령
- USER+POP3 서버의 로그인 이름: 사용자 인증 절차에 필요한 정보 전송, POP3 서버에 등록된 메일 주소의 로그인 이름을 매개변수로 전송
- PASS+POP3 서버의 로그인 암호: 사용자 인증 절차에 필요한 정보 전송, POP3 서버에 등록된 로그인 이름의 암호를 매개변수로 전송
- STAT: 고르인 사용자에게 POP3 서버에 보관된 메일 개수 회신
- LIST+일련번호: 일련번호 생략하면 도착한 메일 정보를 일련번호와 출력, 일련번호가 주어지면 해당 메일 정보만 출력
- RETR+일련번호: 일련번호에 해당하는 메일을 POP3 서버에서 읽어옴, 명령 성공시 메일이 POP 클라이언트로 복사됨
- DELE+일련번호: RETR 명령으로 복사 한 후 POP3 서버에 남은 메일 삭제, PC에서 메일을 다운로드 할 때 읽은 메일을 서버에 보관할지를 확인하는 옵션이 있는데, DELE 명령의 사용 여부에 따라 구현됨
- QUIT: 세션 종료
- POP3 응답