SMTP란 무엇인가
Simple Mail Transfer Protocol의 약자이다
인터넷을 통해 이메일 메시지를 보내고 받는 데 사용되는 통신 프로토콜이다
통신 프로토콜이라는 뜻은 간단히 이야기해서 통신 규약 (약속)이라고 말 할 수 있다
컴퓨터와 컴퓨터 사이 데이터를 원활히 주고 받기 위해 약속한 여러가지 규약이라고 말할 수 있다
그럼 다시 묻는다 SMTP란 무엇일까
인터넷을 통해 이메일 메세지를 주고 받는다면 SMTP라고 말할 수 있다
그냥 편지를 주고 받는 약속을 인터넷 세상에서 SMTP로 정의했다고 볼 수 있다고 생각한다
메일 서버 및 기타 메시지 전송 에이전트(MTA)는 SMTP를 사용하여
메일 메시지를 보내고, 받고, 중계하는 것 SMTP이라고 말 할 수 있다
이 SMTP 규약에는
신호 송신의 순서 , 데이터의 표현법 오류 검출법 등이 있다
다만
SMTP는 주로 이메일(보내는 메일)을 보내는 데 사용되는 반면,
IMAP 또는 POP3와 같은 다른 프로토콜은 들어오는 메일을 검색하고 저장하는 데 사용된다
목차
- SMTP가 무엇인가요
- SMTP 서버가 무엇인가요
- SMTP는 어떻게 작동합니까?
- SMTP 사용 Port
- SMTP 라이브러리
- SMTP 서버는 어떻게 이메일을 보내나요?
SMTP가 무엇인가요
간이 우편 전송 프로토콜으로 메일 서버끼리 메일을 송신 수신한다
아니면 SMTP 서버(ex. gmail, naver)에 메일 클라이언트가 연결을 맺고 다른 서버에 메일을 보내는 형식으로 사용된다
특징만 간단히 정리하면 다음과 같다
- 텍스트 기반 프로토콜
- 프로토콜은 TCP(SSL/TLS)
- SMTP 서버와 클라이언트로 구성
SMTP는 메일 검색 프로토콜이 아니라 메일 전송 프로토콜이다
우편 서비스로 우편함에 우편물이 전달되더라도
수신자는 우편함에서 우편물을 찾아야 한다
마찬가지로 SMTP도 이메일 공급자의 메일 서버로 이메일을 전송하지만,
수신자가 메일 서버에서 이메일을 검색해 읽는 데는 별도의 프로토콜이 이용된다
나는 그것을 IMAP이라고 알고있다
SMTP는 이메일을 전송할 때에 사용되는 규약 또는 절차라고 말 할 수 있다
우리가 작성한 이메일은 SMTP를 통해서 상대방의 메일박스까지 전송이 된다
사용자는 Outlook Express나 Gmail 등의 프로그램을 이용해 메일을 전송하고 나면
전송과정이 끝났다 생각할 수도 있다
하지만 사실 그 뒤에는 TCP/IP 프로토콜에 기반한 SMTP 프로토콜이 메일을 전송해 줘야 한다
가끔 사람들은 이메일과 SMTP 개념을 혼동하여 둘이 같은 개념으로 착각하고는 한다
그 둘은 관련 있는 개념이지만 동일하지는 않는다
이메일은 편지에 비유할 수 있고, SMTP는 편지를 전송하는 과정에 사용되는 기술을 의미합니다.
SMTP는 곧 이메일을 전송하는 과정에 사용되는 기술이다
Gmail SMTP라고 하는 것은 Gmail이 사용하는 SMTP 기술을 의미하는 것이다
TCP(SSL/TLS)
SSL(Secure Socket Layer) 이란 직역해보면 보안 소켓 레이어라는 뜻으로,
인터넷 상에서 데이터 전송시에 안전하게 데이터가 오갈 수 있도록 도와주는 레이어다.
TLS란 Transport Layer Security의 약자로, SSL과 거의 동일한 프로토콜입니다.
단, TLS는 SSL에 대한 IETF에서 1999년 1월 RFC 2246과 같은 표준 규약으로 정의된 버전이라고 할 수 있습니다.
SMTP 서버가 무엇인가요
발신 메일 서버라고도 하는 SMTP 서버는 발신 이메일 메시지를 처리하는 컴퓨터 또는 소프트웨어이다
일반적으로 메일 서버는 이메일을 수집, 처리 및 전달하는 시스템을 말한다
SMTP 서버는 특히 간이 전자 우편 전송 프로토콜(SMTP)을 사용하여 메일을 보내는 메일 서버의 구성 요소이다
메일 서버가 수신 및 발신 이메일을 모두 처리하지만 SMTP 서버는 발신 이메일을 적절한 목적지로 보내고
릴레이하는 작업에만 관심이 있다 발신 이메일 서버라고도 한다
SMTP 서버는 SMTP 프로토콜을 사용해 이메일을 전송하고 수신할 수 있는 메일 서버이다
이메일 클라이언트는 이메일 전송을 시작할 수 있게 이메일 공급자의 SMTP 서버와 직접 연결한다
(이메일 클라이언트란 구글이나 네이버를 말하는 것 같다 )
SMTP 서버에서 실행되는 각기 다른 소프트웨어 프로그램은 다음과 같다
- 메일 제출 에이전트(MSA): MSA는 이메일 클라이언트로부터 이메일을 수신한다
- 메일 전송 에이전트(MTA):MTA는 전달망의 다음 서버로 이메일을 전송하며 앞에서 설명한 대로 필요할 경우 수신자 도메인의 메일 교환(MX) DNS 레코드를 찾기 위해 DNS를 쿼리할 수 있다
- 메일 전달 에이전트(MDA): MDA는 MTA에서 이메일을 수신해서 수신자의 받은메일함에 보관한다
SMTP 프로토콜에 따라서 이메일 전달 과정을 처리해 주는 ‘이메일 서버’가 SMTP 서버이다
SMTP 서버는 이메일 클라이언트가 보낸 메일을 수신하여 다른 메일 서버로 전달해 주는 역할을 한다 .
SMTP 서버는 우체국이다
쉽게 설명한다면 우체국과 같은 역할을 한다고 보면 된다
이를테면, 전라도 광주에 사는 김영희씨가
서울에 사는 박철수씨에게 편지를 보내기 위해서는 중개자인 우체국을 이용한다
그러면 우체국에서 편지를 받고, 분류하고, 서울에 사는 박철수씨의 집 앞 우편함까지 배달 해 주는 것이다
SMTP는 어떻게 작동할까
간이 전자 우편 전송 프로토콜(SMTP) 모델에서 발신자의 이메일 클라이언트 또는 서버는 SMTP 클라이언트 역할을 하고 발신자의 이메일 서버는 SMTP 서버 역할을 한다
이 클라이언트는 서버와의 연결을 시작하고 수신자 세부 정보, 제목 및 본문이 포함된 이메일을 전송한다
서버는 이 이메일을 처리하고 수신자 주소를 기반으로 적합한 다음 서버를 결정한다 (구글 이메일이나 네이버 말하는 듯)
다음 서버는 전송 경로에 있는 다른 SMTP 서버일 수도 있고 최종 대상, 즉 수신자의 이메일 서버일 수도 있다
메시지가 받는 사람의 서버에 도착하면 POP 또는 IMAP 같은 다른 프로토콜을 사용하여
받는 사람의 받은 편지함으로 전달된다
모든 네트워킹 프로토콜은 미리 정의한 데이터 교환 프로세스를 따른다
SMTP는 이메일 클라이언트와 메일 서버 간의 데이터 교환 프로세스를 정의한다 사용자는 이메일 클라이언트와 상호 작용한다 이메일 클라이언트는 사용자가 액세스하여 이메일을 전송하는 컴퓨터나 웹 응용 프로그램을 말한다
메일 서버는 이메일의 전송, 수신, 전달을 위한 특화된 컴퓨터이다 사용자는 메일 서버와 직접 상호 작용하지 않는다
다음은 이메일 클라이언트와 전자 메일 서버 사이에서 이메일 전송이 시작되는 과정을 요약한 내용이다
- SMTP 연결 열림: SMTP는 전송 프로토콜로 전송 제어 프로토콜(TCP)을 이용하므로 첫 번째 단계는 클라이언트와 서버 간 TCP 연결로 시작된다 그 다음 이메일 클라이언트가 특화된 "Hello" 명령(HELO 또는 EHLO, 아래 설명됨)으로 이메일 전송 프로세스를 시작한다
- 이메일 데이터 전송: 클라이언트가 이메일 헤더(대상 및 제목 줄 포함), 이메일 본문, 기타 추가 구성 요소로 이루어진 실제 이메일 콘텐츠와 함께 일련의 명령을 서버에 보낸다
- 메일 전송 에이전트(MTA): 서버가 메일 전송 에이전트(MTA)라는 프로그램을 실행한다. MTA는 수신자의 이메일 주소 도메인을 확인하고 발신자와 다를 경우 수신자의 IP 주소를 찾도록 도메인 네임 시스템(DNS)에 쿼리한다 이는 우체국에서 우편물 수신자의 우편번호를 조회하는 것과 비슷하다
- 연결 닫힘: 데이터 전송이 완료되면 클라이언트가 서버에 알림을 보내며 서버가 연결을 닫는다 이때 클라이언트가 SMTP 연결을 새로 열지 않는 한 서버는 클라이언트로부터 이메일 데이터를 추가로 받지 않는다
일반적으로, 이 첫 번째 이메일 서버는 이메일의 실제 최종 목적지가 아니다 클라이언트로부터 이메일을 수신한 서버는 다른 메일 서버와 이러한 SMTP 연결 프로세스를 반복한다 최종적으로 이메일이 수신자의 이메일 공급자가 제어하는 메일 서버 내 수신자의 받은메일함에 도착할 때까지, 두 번째 서버도 같은 작업을 수행한다
우편이 발신자에게서 수신자에게로 이동하는 과정과 이 프로세스를 비교해보자
우편 집배원은 발신자에게서 수신자에게로 직접 편지를 전달하지 않는다.
우편 집배원은 그 대신 편지를 우체국으로 가져간다 우체국은 편지를 다른 도시의 다른 우체국으로 보내고,
또 다른 우체국으로 가며, 이는 편지가 수신자에게 도착할 때까지 계속된다.
마찬가지로 이메일도 수신자의 받은메일함에 도착할 때까지 SMTP를 통해 서버에서 서버로 이동한다.
먼저, SMTP 시스템을 이해하기 위해서 알아야 할 용어와 개념이다
- MUA (Mail User Agent): 사용자가 이메일을 작성하고 내려 받을 수 있게 하는 프로그램이다 예를 들어 Gmail, Outlook express 등이 여기에 해당 됩니다.
- MSA (Mail Submission Agent): MUA에서 이메일을 최초로 전달 받으며 MTA로 메시지를 전달 합니다.
- MTA (Mail Transfer Agent): MSA 또는 다른 메일 서버의 MTA와 통신하여 이메일 전달을 담당합니다.
- MDA (Mail Delivery Agent): MTA로부터 받은 이메일을 최종적으로 수신자의 메일함에 넣어놓는 역할을 합니다.
- SMTP 봉투 (SMTP envelope): 이메일의 출발지와 도착지 정보를 나타내는 집합이다. from, to, cc, bcc 그러니까 발신자, 수신자, 참조 및 비밀참조자가 들어간다
SMTP 프로토콜에 따라서 이메일을 발송하는 과정을 예제와 함께 알아보겠다.
가상의 인물 김영희씨와 박철수씨가 있다고 가정한다. 영희씨는 Gmail을 사용하고, 철수씨는 Naver 이메일을 사용한다
영희씨가 철수씨의 메일함까지 이메일을 보내는 과정은 다음과 같다
- 영희씨가 Gmail을 켜서 철수씨의 Naver 이메일 주소로 내용을 작성해서 전송 버튼을 누른다
여기서 Gmail은 MUA, 즉 이메일 클라이언트에 해당된다 - 이메일 클라이언트가 보내준 메시지 내용이 Gmail 내부의 MSA에 전달됩니다. MSA는 메시지 상에 날짜, 이메일 주소 등 뭔가 잘못된 것이 없는지 체크한 후 내부 MTA로 메시지를 다시 전달한다
- MTA가 메일을 전달받고, 철수씨의 이메일 주소를 확인한다 확인해 보니 같은 Gmail이 아니다 그러므로 DNS 조회를 통해 Naver 메일서버의 MTA로 이메일을 전달한다
- 철수씨의 이메일인 Naver 메일 서버의 MTA가 이메일을 확인한다. 그리고 MDA로 전달한다
- MDA는 받은 이메일을 메일함에 저장한다 이 이메일은 나중에 철수씨의 Naver 이메일 클라이언트가 별도의 프로토콜을 통해서 내용을 끌어 올 것이다
SMTP 서버는 어떻게 이메일을 보내나요?
SMTP 서버는 일련의 단계에 따라 이메일을 전송한다. 먼저 발신자의 이메일 클라이언트 또는 서버가 수신자의 SMTP 서버와 연결을 설정하고 수신자의 이메일 주소와 같은 필수 정보를 제공한다 그런 다음 SMTP 서버는 이 정보를 처리하고 수신자의 주소를 확인하여 이메일 수락 여부를 결정한다 수신자 주소가 유효하면 이메일이 배달 대기열에 추가된다
그러면 수신자의 서버가 수신자의 이메일 받은편지함이나 지정된 폴더로 이메일을 전송하려고 시도한다
SMTP 사용 Port 포트는?
그래서 SMTP 서버에는 그럼 어떤 주소로 접근을 해야할까
위에서도 잠깐 얘기했지만, SMTP 서버는 자기들만의 주소가 이미 있다 (smtp.xxx.com 이런거)
자기만의 SMTP 서버 만들고 싶으면 돈내고 사면 된다 아주 간단하다
그러면 주소는 있고, Port만 알면 되는거다
검색하면 다 나오는데 내가 볼려고 적어 놓을거다
기본 TCP 포트: 25
SSL 포트: 465
TLS 포트: 587
되시겠다.
네트워킹에서 포트란 네트워크 데이터를 수신하는 가상 지점이다 우편 주소에 있는 아파트 번호라고 생각해보자 컴퓨터가 네트워킹 데이터를 올바른 응용 프로그램으로 정렬하는 데 포트가 도움을 준다
방화벽과 같은 네트워크 보안 조치로 불필요한 포트를 차단하여 악의적 데이터의 전송 및 수신을 방지할 수 있다
이전에는 SMTP에 포트 25만 사용했다
현재도 SMTP에 포트 25를 여전히 사용하고 있으나 포트 465, 587, 2525를 사용할 수도 있다
- 포트 25는 SMTP 서버 사이를 연결하는 데 가장 많이 사용된다 스팸 발송자가 이 포트를 악용해 스팸을 대량 전송하려고 하므로, 현재는 최종 사용자 네트워크의 방화벽에서 이 포트를 차단할 때가 많다
- 포트 465는 보안 소켓 계층(SSL) 암호화와 함께 SMTP에 사용하도록 지정되었다 하지만 SSL은 Transport Layer Security(TLS)으로 대체되어, 최신 이메일 시스템에서는 이 포트를 사용하지 않는다. 이전 시스템에서만 나타난다
- 포트 587이 이메일 제출용 기본 포트이다. 이 포트를 통과하는 SMTP 통신은 TLS 암호화를 이용한다
- 포트 2525는 SMTP와 공식적으로 연결되어 있지는 않지만, 일부 이메일 서비스에서는 앞서 언급한 포트가 차단되었을 경우 이 포트로 SMTP 전송이 제공된다
예전에는 SMTP에 주로 25번 포트를 사용했다
최근에는 보안상의 이유로 587번 포트를 사용하는 경우가 많다
- 25번: SMTP 기본 포트로, 아직도 많이 사용되고 있지만 봇넷 스팸 공격에 악용되는 경우가 많다 그래서 25번 포트 사용을 점차 차단하는 추세이다.
- 587번: 현재 25번 포트 대용으로 사용하는 포트입니다. TLS 연결을 지원하므로 이메일을 안전하게 보낼 수 있다.
- 465번: 한때 이메일 시스템에 사용되었지만 현재는 SMTP 시스템에 사용하지 않는다 하지만 레거시 시스템(예전에 만든 노후화된 시스템)에서는 찾아볼 수 있다
- 2525번: 공식적인 SMTP 포트는 아니지만, 587번 포트를 사용할 수 없을 때 대신 사용할 수 있다
SMTP 라이브러리
SMTP 서버는 어떻게 이메일을 보내나요?
번외
SMTPS란 무엇인가요?
SMTPS(간이 전자 우편 전송 프로토콜 보안)은 전송 계층 보안을 사용하여 SMTP를 보호하는 방법이다
통신 파트너에 대한 인증, 데이터 무결성 및 기밀성을 제공하기 위한 것
SSL(보안 소켓 계층) 또는 TLS(전송 계층 보안)를 사용하여 보안 연결을 설정함으로써이메일 전송의 기밀성 및 무결성을 보장
클라이언트와 서버는 애플리케이션 계층에서 일반 SMTP를 사용하며 연결은 SSL 또는 TLS로 보호
그냥 간단하게 SMTP 보안(S)가 붙은 것이라고 생각하면 될 듯하다
SSL/TLS 인증서란 무엇입니까?
전송 계층 보안(SSL/TLS) 프로토콜을 사용하여 다른 시스템에 대한 암호화된 네트워크 연결을 설정할 수 있도록 하는
디지털 객체
개인 데이터 보호 ,고객 신뢰 ,강화 규제 준수 지원 ,SEO 개선
SMTP 명령어는 어떤 것이 있나요?
SMTP가 동작하기 위해서는 여러 가지 명령어를 통해 트랜잭션을 수행해야 합니다. 그 일련의 과정에서 사용하는 기본적인 명령어들을 알아봅시다.
SMTP 봉투란?
SMTP "봉투"는 이메일 클라이언트가 이메일의 출발지와 목적지에 관해 메일 서버에게 보내는 정보의 집합입니다. SMTP 봉투는 이메일 헤더 및 본문과 구별되며 이메일 수신자에게는 보이지 않습니다.
SMTP 명령이란?
SMTP 명령은 미리 정의된 텍스트 기반 지시사항이며, 클라이언트나 서버에서 수행해야 할 작업과 이에 수반된 데이터를 처리할 방법을 알려줍니다. 서버에서 데이터를 정확하게 받아들이도록 클라이언트가 누를 수 있는 버튼이라고 생각해보세요.
HELO/EHLO: 이 명령을 사용하면 "Hello"라고 말한 다음 클라이언트와 서버 사이에 SMTP 연결이 시작됩니다. "HELO" 는 이 명령의 기본 버전이고 "EHLO"는 특수 유형 SMTP를 위한 버전입니다.MAIL FROM: 이는 이메일을 전송하는 서버를 알려줍니다. Alice가 친구 Bob에게 이메일을 보내려고 하는 경우 클라이언트가 "MAIL FROM:<alice@example.com>"을 전송할 수 있습니다.RCPT TO: 이 명령으로 이메일 수신자가 나열됩니다. 수신자가 여러 명일 경우 클라이언트는 이 명령을 여러 번 전송할 수 있습니다. 상기 예시에서 Alice의 이메일 클라이언트는 "RCPT TO:<bob@example.com>"을 전송하게 됩니다.DATA: 이는 다음과 같이 이메일 콘텐츠 앞에 위치합니다.
DATA
날짜: 2022년 4월 4일 월요일
보낸 사람: Alice alice@example.com
제목: 에그 베네딕트 캐서롤
받는 사람: Bob bob@example.com
안녕 Bob,
금요일에 에그 베네딕트 캐서롤 레시피 가져갈게.
-Alice
.
RSET: 이 명령을 사용하면 연결이 초기화되어 SMTP 연결이 닫히지 않고 미리 전송한 모든 정보가 제거됩니다. RSET은 클라이언트가 잘못된 정보를 전송할 때 사용합니다.QUIT: 이 명령으로 연결이 종료됩니다.
SMTP와 IMAP이 함께 작동하는 예
이메일을 작성하고 '보내기'를 누르면 이메일 클라이언트(예: Gmail, Thunderbird, Outlook 등)는 SMTP를 사용하여 이메일 클라이언트에서 이메일 서버로 메시지를 보냅니다.다음으로 이메일 서버는 SMTP를 사용하여 수신자의 수신 이메일 서버로 메시지를 전송합니다.SMTP 전송이 성공적으로 수신되면(250 OK 응답 코드로 표시됨) 수신자의 이메일 클라이언트는 IMAP을 사용하여 메시지를 가져와 수신자가 액세스할 수 있도록 받은 편지함에 넣습니다.
IMAP이란 무엇입니까?
SMTP가 전송에 관한 것이라면 IMAP이란 무엇입니까?
간단히 말해서, IMAP(인터넷 액세스 메시지 프로토콜)은 수신 서버에서 이메일 메시지를 관리하고 검색하는 이메일 프로토콜입니다.
IMAP은 메시지 검색을 처리하므로 IMAP 프로토콜을 사용하여 이메일을 보낼 수 없습니다. 대신 메시지 수신에는 IMAP이 사용됩니다.
IMAP: 도착한 이메일을 이메일 클라이언트로 끌어오는 역할입니다. 메일 서버에 접속해서 수신자의 이메일 클라이언트(아웃룩, 브라우저 등)로 이메일을 받아온 후 정리합니다. 이메일을 받아온 이후에도 메일 서버에서 원본을 삭제하지 않습니다.
SMTP vs. IMAP와 POP
인터넷 메시지 접속 프로토콜(IMAP)과 포스트 오피스 프로토콜(POP)은 최종 수신처로 이메일을 전달하는 데 사용됩니다. 사용자에게 이메일을 표시하려면 이메일 클라이언트가 망 내 최종 메일 서버에서 이메일을 검색해야 합니다. 이러한 목적으로 클라이언트는 SMTP가 아닌 IMAP나 POP를 사용합니다.
나무 토막과 밧줄의 차이점을 생각해보면 SMTP와 IMAP/POP 간의 차이를 이해할 수 있을 것입니다. 나무 토막은 무언가를 앞으로 미는 데는 사용할 수는 있지만 끌어올 수는 없습니다. 밧줄은 물건을 끌어올 수는 있지만 밀 수는 없습니다. 유사하게 SMTP는 이메일을 메일 서버로 "푸시"하지만 IMAP와 POP은 사용자의 응용 프로그램으로 향하는 나머지 과정에서 이를 "끌어"옵니다.
메일 시스템에는 2가지 종류의 프로토콜이 필요합니다. 그 중 하나는 여태까지 공부한 SMTP입니다. 하지만 SMTP만으로 최종 수신자가 이메일에 접근까지는 할 수 없고, 도착한 이메일을 받아 오기 위해서 IMAP이나 POP이라는 프로토콜을 이용해야 합니다. 쉽게 말해서, 우체국에서는 SMTP 프로토콜을 이용해 상대방의 집 앞 우편함까지 편지를 넣어줬습니다. 하지만 최종 수신자가 우편함에 접근해서 편지를 찾아야만 내용을 볼 수 있겠죠? 그 과정을 하는 프로토콜이 바로 IMAP이나 POP라고 하는 것입니다.
IMAP과 POP는 둘 다 메일을 이메일 클라이언트까지 끌어오는 역할을 하는데, 서로 기능상 약간의 차이점이 있으므로 다 같이 정리해 보겠습니다.
SMTP: 메일을 보내기 위한 목적으로 사용됩니다. 상대 이메일 메일서버까지 이메일이 잘 전송되도록 푸쉬하는 역할입니다.
IMAP: 도착한 이메일을 이메일 클라이언트로 끌어오는 역할입니다. 메일 서버에 접속해서 수신자의 이메일 클라이언트(아웃룩, 브라우저 등)로 이메일을 받아온 후 정리합니다. 이메일을 받아온 이후에도 메일 서버에서 원본을 삭제하지 않습니다.
POP: 앞에서 말한 IMAP과 같이 이메일 클라이언트로 메일을 받아오는 역할이지만, 이메일을 받아온 후 메일 서버에 있는 내용을 삭제합니다. 그러므로 이메일 클라이언트에서 메일을 삭제하였다면 나중에 서버에서 되찾기가 힘듭니다.
SMTP 서버를 설정하는 방법은 무엇입니까?
SMTP 서버를 설정하려면 컴퓨터, 서버 또는 클라우드에 SMTP 서버 소프트웨어를 설치해야 합니다. SMTP 서버를 설정하는 구체적인 단계는 선택한 소프트웨어에 따라 다릅니다. 일반적으로 서버 주소, 포트 번호, 보안 프로토콜 및 인증 옵션과 같은 서버 설정을 구성해야 합니다. 이메일이 제대로 전송되도록 DNS 설정과 방화벽 규칙을 구성해야 할 수도 있습니다.
확장 SMTP(ESMTP)란?
확장 단순 전자우편 전송 프로토콜(ESMTP)은 기존 기능을 확장하여 이메일 첨부 파일 전송, TLS 사용, 기타 기능을 사용할 수 있게 해주는 프로토콜 버전입니다. 대부분의 이메일 클라이언트와 이메일 서비스는 기본 SMTP가 아닌 ESMTP를 사용합니다.
ESMTP에는 "extended hello"인 "EHLO"를 포함해 연결을 시작할 때 ESMTP를 사용할 수 있도록 하는 추가 명령이 있습니다.
SMTP와 ESMTP의 차이점
ESMTP란 Extended SMTP, 즉 기존의 SMTP에 기능을 확장한 버전의 프로토콜입니다. 1990년대 초에 SMTP보다 보안상으로 좀 더 발전시키고, 복잡한 문자열과 멀티미디어가 포함된 이메일을 전송할 수 있도록 개발하였습니다. SMTP와 비교했을 때의 달라진 부분은 다음과 같습니다.
- SMTP는 처음 통신을 시작할 때 HELO로 시작하지만, ESMTP는 EHLO(Extended HELLO라는 뜻)로 시작합니다.
- SMTP에서는 사용자가 인증되지 않아서 스팸 공격에 악용되는 경우가 있었습니다. 하지만 ESMTP에서는 발송자의 신원 인증과정이 추가되었고, 통신 보안을 위해 SSL 인증도 합니다.
- SMTP에서는 이메일의 용량을 줄일 수 없지만 ESMTP에서는 이메일의 용량을 줄이는 것이 가능합니다.
- SMTP에서는 멀티미디어 파일을 첨부하려면 MIME의 도움을 받아야 하지만, ESMTP에서는 MIME 없이도 멀티미디어 파일 첨부가 가능합니다.
- 메일이 발송되지 못했을 경우에 대한 에러 핸들링 방식이 향상되었습니다.
RFC 821에서 RFC 5321로 대체 되었다
RFC 821은 인터넷 이메일 통신의 토대를 마련했습니다
새로운 표준으로 업데이트되고 대체되었지만 기본 원칙은 오늘날에도 이메일이 작동하는 방식을 여전히 뒷받침되었다
SMTP는 25/tcp와 587/tcp 포트를 사용하며 SMPTS는 465/tcp 포트를 사용한다.
1982년 RFC821에서 표준화되어
현재는 RFC5321에서 정의된 ESMTP(Extended SMTP; 확장 SMTP)로 2008년 갱신되었다.
SMTP는 보안과 호환성의 문제로 그대로는 사용하지 않는 경우가 많다.
일반적으로 쓰이는 확장 프로그램은 SMTP-AUTH(송신자 인증 서비스), ESMTP(SASL을 이용한 보안 연결),
MIME(non-ascii 데이터 전송 포맷)가 있다.
-
MAIL 명령어: 수신자 지정 -
RCPT 명령어: 송신자 지정 -
DATA 명령어: 메시지 내용의 시작이 되는 부분이다. 메시지 헤더와 바디로 구성된다.
'Android' 카테고리의 다른 글
안드로이드 자바 카카오 로그인 API 예제 구현하기 (1) | 2024.01.19 |
---|---|
Javax로 Email 보내기 (0) | 2024.01.16 |
안드로이드 회원가입 이메일 비밀번호 유효성 검사 (0) | 2023.12.27 |
[Android] 안드로이드 네이밍/변수명 규칙 정하기 (0) | 2023.12.27 |
[Android] EditeText password 숨기기 (0) | 2023.12.27 |