2020. 6. 1.

[Network] 2.2 전자우편


*전자우편

# 원래 유닉스의 계정에 다른 계정에 보내는것이다.
# 이것을 다른시스템들이 흉내내는 것이다.

세가지 중요한 구성 요소
  • 사용자 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 사용하면된다.

user 
agent 
mail 
server 
S M Tp 
OUtgoing 
message queue 
O user mailbox 
user 
agent 
mail 
server 
S M Tp 
mail 
server 
user 
agent 
user 
agent 
SMTP 
user 
agent 
user 
agent

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 사용한다.

user 
agent 
2 
mail 
server 
4 
mail 
server 
6 
50 
user 
ent

*SMTP 전달 과정

S: 
C: 
S: 
S: 
C: 
S: 
c: 
S: 
C: 
C: 
c: 
S: 
c: 
220 hamburger . edu 
HELO crepes . fr 
250 Hello crepes . fr, pleased to meet you 
MAIL FROM : . 
250 alice@crepes . fr. .. 
Sender ok 
RCPT TO: <bob@hamburger . edu> 
250 bob@hamburger . edu 
Recipient ok 
DATA 
354 Enter mail, end with . 
on a line by itself 
Do you like ketchup? 
How about pickles? 
250 Message accepted for delivery 
QUIT 
221 hamburger.edu closing connection

*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 기밀성과 가용성이 현저히 떨어진다.
  • 일반인이 사용하는 컴퓨터는 기밀성이 보장할 없는 시스템
  • 서버에 두는게 훨씬 안전하다.
  • 퇴근하고는 볼수 없고, 백업, 다중화 시스템 구현되지 않는다.
# 메일모드는 기본적으로 용량초과시 삭제한다.

댓글 없음:

댓글 쓰기