*전자우편
# 원래 유닉스의 계정에 다른 계정에 보내는것이다.
# 이것을 다른시스템들이 흉내내는 것이다.
세가지 중요한 구성 요소
- 사용자 agent
- Mail server
- SMTP (simple mail TP)
User agent
- Mail reader라 불리기도 한다.
- Mail message를 읽고 쓰고 전달하고 저장하고 구성하는 등의 역할을 한다.
- 예 : Outlook, elm, Eudora …
# 메일 쓰고 읽기 위한 프로그램들
- Server에 message를 전달하거나 server로 부터 수신하는 역할을 한다.
# 메일박스가 홈디렉토리 밑에 잇던게 var로 옮긴것은 이유
- /home 밑에 있으면 퍼미션이 700 이여야하는데 시스템이 접근하지 못해 메일떔에 755 유지하다보니 보안의 문제가 생겼다.
# 사서함 시스템
# 메일을 보내면 메시지 큐에 저장된다.
# 메일서버는 들어온 메일의 받는사람 주소를 확인한다.
# DNS 서버에게 MX레코드로 등록된 친구를 물어본다.
# 확인된 메일박스로 전달한다.
# 정보보안상 매우 위험한 방식이라 못쓰게한다. 쓸려면 허가받아야함.
# 해외에선 네이버나 다음 등의 메일을 법으로 인정해주지않지만 한국에선 인정
# 서버에 저장된 메일은 내용증명으로 인정된다. - 메일버서는 반드시 호스팅 서버를 이용하여야한다.
# 자기의 메일박스를 받을떄는 인증을 받아야한다. 프로토콜이 다름 imnp or kal
# SMTP 쓸때 다른사람이랑 주고받을때 기밀성 유지하려면 PGP로 사용하면된다.
outgoing message queue - 나가는 메시지의 큐
user mailbox - 특이한 퍼미션을 가진다. 내꺼지만 다른사람이 수정할 수 있으나 삭제는 할 수 있다.
*전자우편 : mail server
Mail server
- Mailbox : 사용자에게 온 message를 저장한다.
- Message queue : 다른 메일서버로 전송될 message를 임시로 저장하는 queue
- SMTP : mail server간에 mail message를 송수신하는 protocol
- Client : mail을 보내는 서버
- Server : mail을 받는 서버
# 대용량 메일서버를 서비스하는 네이버 같은 곳은 메일박스 사용하지 않고 데이터베이스관리 시스템을 사용한다.
# 같은 시스템인 경우는 큐를 거치지않고 메일박스로 보내준다.
# 서로가 서버일때도 있꼬 클라이언트 일때도 있다.
*전자우편 : SMTP [RFC 2821]
Client
server간의 mail message는 TCP의
신뢰적인 데이터전송 서비스를 이용한다. (25번
port)
송수신하는 mail server간에는
중간에 어떤 서버를 이용하지 않고 반드시 직접 연결한다.
Mail
server 전송 과정
- Handshaking
- Message 전송
- TCP 연결 종료
Command/response
- Command : ASCII text
- Response : 응답코드와 영문설명(phrase)
Message는 반드시
7bit ASCII 이다.
SMTP는
persistent connection이다.
# 다른 OS들과도 전자우편 서비스를 하기 위해서 표준화한것이다.
# SMTP가 25번으로 채택됬다는 것은 이미 표준화 프로토콜이 나오기전부터 사용하고 있었다는것을 의미한다.
# persistent
connection : 많은 양의 메시지를 보내기위해 10개면 10개를 복사해서 보내는 방식. 컨넥션을 하나 맺어서 쭈르륵 받는다.
# nonpersistent connection : 첫번째 파일을 받는동안 두번째파일을 받을 수 없다. 동시에 컨넥션을 여러개맺어서 리소스를 많이 사용한다.
# 초기는 nonpersistent를 사용하다가 개선되면서 persistent를 사용하였다.
- 네트워크이 컴퓨터사양에 비해 월등히 떨어졌다.
- 현재는 네트워크가 더 빠르다.
# 파일하나하나를 퍼시스턴트냐 언퍼시턴트냐로 구분한다.
*메일전송과정
1) Alice는 UA를 이용 message을 작성하고 제공한 메일 주소로 전송하도록 한다.(Bob)
2) UA는 mail server로 message를 전송한다. message는 서버의 message queue에 놓인다.
3) Client측 SMTP는 message queue를
확인하고 TCP connection을 BOB쪽 mail server와 연결한다.
4) TCP connection을 이용 message를 전송한다.
5) BOB 측의 mail 서버는 message를 bob의 메일 박스에 저장한다.
6) Bob는 UA를 이용 message를 꺼내와서 읽는다.
# 2번과 4번이 사용하는 프로토콜 push protoceol(요청없이 무작정 보내는것)
# 메일서버를 통해 계정을 등록하지 않아도 송신이 가능했었다.
- 지금은 계정없이 사용금지
# 제한된 인터페이스 : 로그인하였을때와 안했을때 할 수 있는 권한의 차이가 있다. ex) 로그인없이 게시판 글쓰기, 댓글 사용불가
# 6번에서 pop을 사용한다.
*SMTP 전달 과정 예
*SMTP 전달 과정 실습
*SMTP
SMTP
persistent connection을 이용한다.
SMTP의 message는 7
bit ASCII이다. (header &
body)
SMTP server는 meaage를 CRLF.CRLF로 끝낸다.
HTTP와
비교
- HTTP : pull
- SMTP : push (server간)
- Command& response 모두 7bit ASCII 포맷을 요구한다.
- HTTP는 response의 각 object를 각각 캡슐화한다.
- SMTP는 여러 object를 하나의 msg로 만든다
# merge - 빗사이사이에 들어가는 것
# http는 접속하는동안 동글뱅이가 돌아가는동안은 커넥션이 활성화된 상태이며 다 받고 동글뱅이가 멈추면 접속이 끊어진상태이다.
*Mail message
format
SMTP : email msgs를
전송하기 위한 protocol
RFC 822 : msg의 표준 포맷
Header
line
- To:
- From:
- Subject:
(SMTP 명령과는
다르다)
Body
- Msg (only ascII)
*Message format
: multimedia extensions
- MIME : multimedia mail extension, RFC 2045, 2056
- Msg header에 mime content type에 대한 line을 추가해야 한다.
*Mail access
protocol
# 메일 박스에 있는 메일을 user agent가 받아 가는 프로토콜이다.
SMTP : 수신쪽 서버에 msgs를
전송하기 위한 protocol
Mail access protocol : 수신자의
메일 서버로 부터 수신자의 UA로 메일을 가져오는데 이용한다.
- POP : Post office protocol [RFC1939]
- Authorization and download (agent와 서버간)
# IMAP를 안쓰고 가볍게 쓰기위해 POP를 쓴다.
- IMAP : Internet mail access protocol [RFC 1730
- 다양한 특성을 가지며 구현이 복잡하다.
- 서버의 msgs를 다양하게 다룰 수 있다.
- 메일박스를 다른 디렉토리로 옮기거나 재생성하는 핸들링이 가능
# POP이나 IMAP로 요청해서 받아오는 것이다. ex) 네이버가 일정시간마다 자동으로 메일을 긁어올수도 있다. 한군데로 메일 모으기 가능
- HTTP : Hotmail, yahoo mail…
*POP3 protocol
authorization phase
- Client commands:
- user : 사용자명
- pass : password
- Server response
- +OK
- -ERR
transaction phase
- Client
- list : msgs의 크기의 나열
- retr : 지정한 번호의 msg 전송요청
- dele : 종료후 서버의 msg 삭제
*POP3와 IMAP
POP3
(port : 110)
- 앞의 예제는 ‘download and delete’ mode 이다.
- 만일 UA 에서 전송된 msg를 잃어버리면 다시는 메일을 읽을 수 없다.
- ‘download and keep’ 모드를 사용하면 여러 호스트의 UA에서 msg을 동시에 저장하고 볼 수 있다.
- POP3는 stateless로 session이 유지되는 동안만 상태정보를 저장한다. (특히 msg의 삭제여부)
IMAP (port : 143)
- 모든 msgs를 서버의 한곳에 저장한다.
- 사용자는 msgs를 folders에 연결시킬 수 있다.
- 사용자는 msgs를 새 폴더로 옮기거나 읽거나 삭제 할 수 있다.
- IMAP는 사용자의 상태정보를 유지한다.
- 폴더의 이름과 어떤 msg가 어떤 폴더와 연결되어 있는가 하는 정보
- UA가 다양한 방법으로 msg의 구성 요소에 접근하는 방법을 제공
- msg의 헤더만을 얻거나 mime msg의 일부만을 얻을 수 도 있다.
# POP3에서 지원하는건 IMAP이 모두 지원한다.
# POP3, IMAP는 기밀성과 가용성이 현저히 떨어진다.
- 일반인이 사용하는 컴퓨터는 기밀성이 보장할 수 없는 시스템
- 서버에 두는게 훨씬 안전하다.
- 퇴근하고는 볼수 없고, 백업, 다중화 시스템 구현되지 않는다.
# 메일모드는 기본적으로 용량초과시 삭제한다.
댓글 없음:
댓글 쓰기