DKIM (Domain Keys Identified Mail)



메일 발송자 도메인과 메일 내용의 무결성을 검증 있는 기술


스팸메일을 차단하기 위해 개발된 기술 하나 (발신자가 위조되지 않았는지 수신자 측에서 검증할수 있음)


송신자의 사인과 수신자의 검증단계로 구성된 피싱 검출, 스팸 방지의 목적의 RFC 4871 기술로 Sendmail, Cisco Yahoo에서 만듬


Dkim 메일 헤더에 추가하여 사인이 맞을경우 메일의 컨텐츠가 수정/변경/손상이 없을을 신뢰할수 있게 해주는 기술


 


공개키,비밀키를 기반으로한 이메일 인증 시스템


메일에 사용하는 도메인 공개키 TXT 저장, 메일을 발송하는 서버 비밀키 저장





  1. 공개키 DNS에 등록
  2. 메일 발송
  3. 발신서버에서 비밀키를 이용한 서명을 헤더에 붙여 발송
  4. 수신서버에서 DNS등록된 공개키로 서명분석
  5. pass여부에 따라 스팸이 결정됨


 



Ex)Header 등록된 DKIM 정보


      DKIM-Signature: v=1; a=rsa-sha256; d=example.net; s=brisbane;

      c=simple; q=dns/txt; i=@eng.example.net;

      t=1117574938; x=1118006938;

      h=from:to:subject:date;

      z=From:foo@eng.example.net|To:joe@example.com|

       Subject:demo=20run|Date:July=205,=202005=203:44:08=20PM=20-0700;

      bh=MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI=;

      b=dzdVyOfAKCdLXdJOc9G2q8LoXSlEniSbav+yuU4zGeeruD00lszZVoG4ZHRNiYzR


   



출처


Postmark - DKIM 설명

https://postmarkapp.com/guides/dkim

한글] DKIM 이론과 실습

http://kr.minibrary.com/278/

한글] DKIM

http://nocode.tistory.com/7

한글] DKIM

http://blog.naver.com/PostView.nhn?blogId=andwise&logNo=220823011841

한글] DKIM

https://joesimong.blogspot.kr/2013/11/dkimdomainkeys-indentified-mail.html




'Server > MAIL' 카테고리의 다른 글

SMTP란 - 3. status code  (0) 2017.02.23
SMTP란 - 2. flow/commands  (0) 2017.02.13
SMTP란 - 1. Relay, Gateway  (0) 2017.02.12
POP3/IMAP 소개  (0) 2017.02.02
메일 전송 과정 간단 이해  (0) 2017.01.31



SMTP Flow


SMTP 전송 흐름에대한 전체적인 흐름

전송은 각각의 command절차에 의해서 발생이되며 성공/실패에 따라서 reply code가 발생이 되며 reply code의 결과에 따라 절차 진행이 결정됨.

각각의 command마다 reply code발생이 다르기 때문에 실패시에는 reply code로 어디에 문제가 있는지 여부를 확인할수 있음.





Commands


Basic SMTP Command

다음은 설명 된 기본 SMTP 명령.

SMTP 프로토콜 사양을 따르는 모든 SMTP 서버는 이러한 기본 명령을 지원해야함.


HELO (Hello)    클라이언트는 SMTP 서버에이 명령을 전송하여 SMTP 서버를 식별하고 SMTP 대화를 시작.

   일반적으로 SMTP 클라이언트의 도메인(FQDN)이나 IP 주소는 명령과 함께 인수로 전송 ( : "HELO client.example.com").


MAIL FROM    보낸 사람의 전자 메일 주소를 지정.

또한 새 메일 트랜잭션이 시작되고 있다는 것을 SMTP 서버에 알리고 서버가 모든 상태 테이블과 버퍼 등을 재설정하도록 . 이 명령은 일반적으로 식별 및 로그인 프로세스 후 첫 번째 명령으로 전송.


RCPT TO (Recipient To)    받는 사람의 전자 메일 주소를 지정.

 주어진 전자 메일 메시지에 대해 여러 번 반복하여 여러 명의받는 사람에게 단일 전자 메일 메시지를 배달 가능


DATA                메시지 내용 (본문, 첨부 파일 등)의 전송을 시작.

                DATA 명령이 클라이언트에서 서버로 전송 된 후 서버는 354 응답 코드로 응답하며 후 메시지 내용을 서버로 전송. 모든

   메시내용이 전송되면 단일 점 ( ".")을 한 줄에 단독으로 입력하여 마무리.


RSET (Reset)    RSET 명령이 전자 메일 서버로 보내지면 현재 메일 트랜잭션이 중단.

연결은 닫히지 않음 (QUIT 명령에 대해 예약되어 있음. 아래 참조). 그러나 보낸 사람,받는 사람 및 전자 메일 데이터에 대한 모든 정보는 제거되고 버퍼 및 상태 테이블은 삭제됨.


VRFY (Verify)    이 명령은 서버에 지정된 사용자 이름이나 사서함이 유효한지 (존재하는지) 확인하도록 요청.

    사용자 이름을 묻는 메시지가 표시되면 사용자의 전체 이름과 완전히 지정된 사서함이 반환. 일부 전자 메일 서버에서는 보

    안 홀이 될 수 있으므로 VRFY 명령은 무시. 이 명령을 사용하여 서버의 로그인 이름을 조사 가능. VRFY 명령을 무시하는 서버

    는 일종의 응답을 보내지 만 클라이언트가 요청한 정보는 보내지 않습니다.


NOOP (No operation)    NOOP 명령은 수신자가 OK 응답을 보내도록하는 것 외에는 아무것도 수행하지 않음.

      주된 목적은 서버가 여전히 연결되어 있고 클라이언트와 통신 할 수 있는지 확인하는 것.


QUIT                    연결을 닫기 위해 서버에 요청. 연결을 닫을 수 있으면 서버는 숫자 코드로 응답하고 세션을 닫음.


 


Extended SMTP (ESMTP) Commands

클라이언트가 HELO 명령 대신 EHLO (확장 Hello) 명령을 사용하여 SMTP 통신을 시작하면 몇 가지 추가 SMTP 명령을 사용할 수 있음.

모든 서버에는 고유 한 확장 SMTP 명령 집합이있을 수 있음. 클라이언트가 EHLO 명령을 서버에 보낸 후 서버는 사용 가능한 ESMTP 명령 목록을 클라이언트에 다시 보내는 경우가 많음.


EHLO (Extended Hello) HELO와 동일하지만 클라이언트가 확장 SMTP (ESMTP) 프로토콜을 대신 사용할 수도 있음을 서버에 알림.

         EHLO ESMTP 명령을 사용하지 않더라도 사용가능. 추가 ESMTP 명령을 제공하지 않는 서버는 일반적으로 최소한

         EHLO 명령을 인식하고 적절한 방식으로 응답.


AUTH (Authentication)   AUTH 명령은 서버에 대한 클라이언트를 인증하는 데 사용. AUTH 명령은 클라이언트 사용자 이름과 암호를 전자

메일 서버로 전송. AUTH PLAIN, LOGIN CRAM-MD5와 같은 다른 키워드 ( : AUTH LOGIN)와 결합하여 다양한 로 그인 방법과 다양한 보안 수준을 사용.


STARTTLS (Start Transport Layer Security)    

보안을 강화하기 위해 전자 메일 서버와 클라이언트간에 통신 할 때 암호화 된 TLS (전송 계층 보안) 연결하는데 사용.


SIZE                            SIZE 명령에는 두 가지 목적 있으며 SMTP 서버는 클라이언트에게 최대 메시지 크기를 알리고 클라이언트는 전송할 전자

메일 메시지의 (예상 된) 크기를 SMTP 서버에 알릴 수 있음. 클라이언트는 서버에서보고 한 크기보다 큰 전자 메일 메시지를 보내지 않아야하지만 일반적으로 메시지가 클라이언트에서 서버에 알린 크기보다 약간 큰 경우 문제가 없음.


HELP                          이 명령은 서버가 클라이언트에 유용한 정보 ( : SMTP 서버가 지원하는 명령 목록)를 보내도록 .











출처


SMTP/POP3/IMAP Flow

https://www.codeproject.com/search.aspx?q=Understanding+the+insides+of+the+POP3+mail+protocol&sbo=kw&x=0&y=0

SMTP Flow

https://www.codeproject.com/Articles/399207/Understanding-the-Insides-of-the-SMTP-Mail-Protoco

SMTP state diagram

http://www.sosnoski.com/presents/building-on-akka.html#/11


'Server > MAIL' 카테고리의 다른 글

DKIM이란?  (1) 2017.02.23
SMTP란 - 3. status code  (0) 2017.02.23
SMTP란 - 1. Relay, Gateway  (0) 2017.02.12
POP3/IMAP 소개  (0) 2017.02.02
메일 전송 과정 간단 이해  (0) 2017.01.31

 

 

SMTP

 

목적: 신뢰할 수 있고 효율적으로 메일을 전송하는 것

전송을 담당하는 하위 시스템과는 독립적, 신뢰할 수 잇는 순서로 배열된 데이터 스트림 채널만을 필요

(TCP이외의 전송방법도 존재 - RFC821 부록)

 

SMTP 사용시 프로세스는 동일한 네트워크에 있는 다른 프로세스로 메일을 전송할 수 있으며

또한 양쪽 네트워크에 접근할 수 있는 RelayGateway 프로세스를 경유하게 되면 다른네트워크에 있는 프로세스에게도 메일 전달가능

 




 

Relay

목적지 서버로 메일을 전달하기 위해 여러 서버를 거쳐 전달하는것

Mail receiver 메일을 받은뒤 mail sender역할을 실행하게 된다.

Relay back end 부하를 감소시키며 관리자들이 병목 현상을 해결하고 성능을 활용하기에 가장 쉬운 방법.

 



 




 


Gateway

TCP/IP 이메일을 다른 이메일 시스템의 형식에 적합하도록 하거나, 다른 이메일 시스템의 형식을 TCP/IP 이메일에 적합하도록 변환하는 기능

 



 














아직 자료가 완벽하지 않습니다.

추후 실습을 통하여 자료를 보충하겠습니다.

 

출처

RFC821, RFC2821, RFC5321

mailjet

https://www.mailjet.com/blog/news/email-101-what-is-an-smtp-relay/

sendgrid

https://sendgrid.com/blog/smtp-relay-service-basics/

SMTP 자료

SMTP 프로토콜 (rfc281, rfc2821)


'Server > MAIL' 카테고리의 다른 글

DKIM이란?  (1) 2017.02.23
SMTP란 - 3. status code  (0) 2017.02.23
SMTP란 - 2. flow/commands  (0) 2017.02.13
POP3/IMAP 소개  (0) 2017.02.02
메일 전송 과정 간단 이해  (0) 2017.01.31

 

POP3 (Post Office Protocol 3)

이메일을 받아오는 표준프로토콜이다.

POP3 인터넷 서버에서 이메일을 수신받을수 있는 client/server Protocol이다.

비동기화 방식, 주기적으로 서버의 메일박스를 체크하여 메일을 다운로드한다.

POP3 서버에서 메일을 받아오는 즉시 삭제되도록 만들어졌지만 대부분의 MUA에서는 이를 방지하기위해 서버에 저장이되도록 설정을 할수 있다.

Store-and-forward

Port:110, 995(encryption)

 


IMAP (Internet Message Access Protocol)

이메일을 받아오는 표준 프로토콜

IMAP 인터넷 서버와 동기화되어 이메일을 열람할수 있다.  이메일 전체에 대해 동기화 하는것이아니라 메일의 제목을 동기화 하여  사용자가 선택적으로 메일을 다운로드할 있다.

또한 서버측 편지함의 메시지의 다양한 상태플래그(읽음, 읽지 않음) 표시할수도 있으며 사용자로부터 확실한 제거요청이 있기전 까지는 서버측 편지함에 저장된다.

Remote-fileserver

Port:143, 993(encryption)

 




POP3/IMAP 비교








POP3, IMAP 설명을 하면서 삭제라는 말에 걱정하는 사람이 많을 것입니다.


하지만 MUA(Outlook, Thunderbird)나 대부분은 아니지만 일부 포털 사이트에서도 원본/복사본 저장 기능이 있기 때문에 이 부분만 염두 해서 설정한다면 삭제에 대해서 걱정할 필요가 없습니다.




Outlook POP3/IMAP 복사본 저장





DAUM POP3 설정 - 원본 저장 기능




출처

http://searchexchange.techtarget.com/definition/SMTP


http://searchexchange.techtarget.com/definition/POP3



IMAP/POP3 비교

http://lyb1495.tistory.com/45


Port 번호

https://ko.wikipedia.org/wiki/TCP/UDP%EC%9D%98_%ED%8F%AC%ED%8A%B8_%EB%AA%A9%EB%A1%9D

'Server > MAIL' 카테고리의 다른 글

DKIM이란?  (1) 2017.02.23
SMTP란 - 3. status code  (0) 2017.02.23
SMTP란 - 2. flow/commands  (0) 2017.02.13
SMTP란 - 1. Relay, Gateway  (0) 2017.02.12
메일 전송 과정 간단 이해  (0) 2017.01.31

전체적인 전송과정




MTA(Mail Transport Agent)

MUA에서 작성되고 전송된 E-mail을 처리하는 공간이라고 볼수 있으며우리가 배우고자 하는 메일서버가 MTA.

 

MDA(Mail Delivery Agent)

MUA에 의해서 전송된 E-mail MTA로부터 넘겨받아 MUA를 통해서 받기전 까지 E-mail을 저장해 주거나 MUA로 전송해주는 역할 (메일 보관함)


MUA(Mail User Agent)

Client E-mail을 읽고 답장하고 삭제할 수 있는 Program들을 의미

우리가 흔히 사용하는 Outlook Express , Thunder Bird 등의 Client Program을 의미


SMTP(Simple Mail Transfer Protocol)

SMTP는 메일을 주고받는데 사용되어지는 TCP/IP 프로토콜이다.

하지만 수신 측에서는 메시지를 대기열에 넣을 수 잇는 기능이 제한되어

일반적으로 POP3/IMAP과 같이 서버 사서함에 메시지를 저장하고 주기적으로 다운로드 할 수 있는 두가지 프로토콜 중 하나와 함께 사용한다.

Port: 25, 465(SSL), 587(TLS

 

POP3/IMAP

메일 수신 프로토콜

-클릭-






MTA와 MDA의 차이



위의 사진만 보고서 MTA와 MDA를 구별하기 힘들기 때문에 좀더 간소화 해놓았습니다.


1. Outlook(MUA)로 메일 발송

2. Naver(MTA)에서 수신자의 MX레코드 네임서버로 질의한뒤 전송

3. DAUM(MTA)에서 전달

4. DAUM(MTA)에서 DAUM 받은메일함(MDA)로 수신

5. 받은메일함(MDA)에서 연결해놓은 Outlook(MUA) 최종 수신


위쪽은 발신 아래쪽은 수신의 역할.



'Server > MAIL' 카테고리의 다른 글

DKIM이란?  (1) 2017.02.23
SMTP란 - 3. status code  (0) 2017.02.23
SMTP란 - 2. flow/commands  (0) 2017.02.13
SMTP란 - 1. Relay, Gateway  (0) 2017.02.12
POP3/IMAP 소개  (0) 2017.02.02

+ Recent posts