전자 메일

이정민·2022년 6월 13일
0

네트워크

목록 보기
12/12

전자 메일 사용자 환경

전자 메일 작업

  • 메일 편집
    • 메시지 작성, 수신 메일 회신, 수신 메일을 제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
      • Basic
      • 음성 메시지 지원
    • Video
      • Mpeg
      • 동영상 정보인 MPEG를 지원
    • 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가 메일 내용 전송
    • 송수신자 메일 주소 확인
      • MAIL 명령
      • RCPT 명령
    • 메일 헤더 정보 전송
      • 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 응답
      • +OK: 성공
      • -ERR: 실패
profile
으악

0개의 댓글