SMTP(단순 전자우편 전송 규약)이란 무엇일까요?
SMTP (Simple Mail Transfer Protocol) 란 인터넷 연결을 통하여 이메일을 보낼 때 사용되는 프로토콜을 일컫습니다. 발신자가 Gmail, Outlook Express 등을 통해 발신한 이메일을 메일 서버에서 받아서 전달하는 과정의 기술 표준입니다. 현존하는 거의 모든 이메일 시스템은 SMTP 프로토콜을 사용해 만들어 졌습니다.
목차
SMTP가 무엇인가요?
SMTP는 이메일을 전송할 때에 사용되는 규약 또는 절차입니다. 우리가 작성한 이메일은 SMTP를 통해서 상대방의 메일박스까지 전송됩니다. 사용자는 Outlook Express나 Gmail 등의 프로그램을 이용해 메일을 전송하고 나면 전송과정이 끝났다 생각할 수도 있습니다.
하지만 사실 그 뒤에는 TCP/IP 프로토콜에 기반한 SMTP 프로토콜이 메일을 전송해 줘야 합니다. 가끔 사람들은 이메일과 SMTP 개념을 혼동하여 둘이 같은 개념으로 착각하고는 합니다. 그 둘은 관련 있는 개념이지만 동일하지는 않습니다. 이메일은 편지에 비유할 수 있고, SMTP는 편지를 전송하는 과정에 사용되는 기술을 의미합니다. Gmail SMTP라고 하는 것은 Gmail이 사용하는 SMTP 기술을 의미하겠지요.
이 글에서 SMTP의 개념과 동작 방식, 보안 취약점, VPN을 이용한 정보 보안 방법까지 자세히 알아봅시다.
SMTP 서버란 무엇인가요?
SMTP 프로토콜에 따라서 이메일 전달 과정을 처리해 주는 ‘이메일 서버’가 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가 동작하기 위해서는 여러 가지 명령어를 통해 트랜잭션을 수행해야 합니다. 그 일련의 과정에서 사용하는 기본적인 명령어들을 알아봅시다.
명령어 | 수행 작업 |
---|---|
HELO | 클라이언트가 SMTP 통신을 시작하기를 원한다는 것을 알리고, 연결이 시작됩니다. 네트워크 개념에서 ‘핸드 쉐이킹’에 해당 합니다. |
MAIL FROM | 발신자의 이메일 주소를 나타냅니다. |
RCPT TO | 수신자의 이메일 주소를 나타냅니다. 여러 명의 수신자가 있을 경우 여러 번 RCPT TO를 사용할 수 있습니다. |
DATA | 이메일 본문 내용을 한 줄씩 전송합니다. 그러다가 본문이 끝나면 ‘.’ 마침표를 넣어서 끝났다는 것을 알립니다. |
NOOP | 서버에 NULL 명령을 전달합니다. 따로 동작을 수행하기 위한 용도가 아니고, 서버와 클라이언트 연결이 유효한지 확인하기 위해 사용합니다. |
RSET | RESET 이라는 뜻으로, 현재 진행중인 트랜잭션이 중단 및 초기화 됩니다. 그렇다고 해서 연결이 종료되는 것은 아닙니다. 하지만 수신자, 발신자 등의 진행중인 작업의 정보가 모두 삭제됩니다. |
QUIT | 연결이 완전히 종료됩니다. |
SMTP에는 어떤 포트가 사용되나요?
예전에는 SMTP에 주로 25번 포트를 사용하였습니다. 최근에는 보안상의 이유로 587번 포트를 사용하는 경우가 많습니다.
- 25번: SMTP 기본 포트로, 아직도 많이 사용되고 있지만 봇넷 스팸 공격에 악용되는 경우가 많습니다. 그래서 25번 포트 사용을 점차 차단하는 추세입니다.
- 587번: 현재 25번 포트 대용으로 사용하는 포트입니다. TLS 연결을 지원하므로 이메일을 안전하게 보낼 수 있습니다.
- 465번: 한때 이메일 시스템에 사용되었지만 현재는 SMTP 시스템에 사용하지 않습니다. 하지만 레거시 시스템(예전에 만든 노후화된 시스템)에서는 찾아볼 수 있습니다.
- 2525번: 공식적인 SMTP 포트는 아니지만, 587번 포트를 사용할 수 없을 때 대신 사용할 수 있습니다.
SMTP와 IMAP, POP의 차이점
메일 시스템에는 2가지 종류의 프로토콜이 필요합니다. 그 중 하나는 여태까지 공부한 SMTP입니다. 하지만 SMTP만으로 최종 수신자가 이메일에 접근까지는 할 수 없고, 도착한 이메일을 받아 오기 위해서 IMAP이나 POP이라는 프로토콜을 이용해야 합니다. 쉽게 말해서, 우체국에서는 SMTP 프로토콜을 이용해 상대방의 집 앞 우편함까지 편지를 넣어줬습니다. 하지만 최종 수신자가 우편함에 접근해서 편지를 찾아야만 내용을 볼 수 있겠죠? 그 과정을 하는 프로토콜이 바로 IMAP이나 POP라고 하는 것입니다.
IMAP과 POP는 둘 다 메일을 이메일 클라이언트까지 끌어오는 역할을 하는데, 서로 기능상 약간의 차이점이 있으므로 다 같이 정리해 보겠습니다.
- SMTP: 메일을 보내기 위한 목적으로 사용됩니다. 상대 이메일 메일서버까지 이메일이 잘 전송되도록 푸쉬하는 역할입니다.
- IMAP: 도착한 이메일을 이메일 클라이언트로 끌어오는 역할입니다. 메일 서버에 접속해서 수신자의 이메일 클라이언트(아웃룩, 브라우저 등)로 이메일을 받아온 후 정리합니다. 이메일을 받아온 이후에도 메일 서버에서 원본을 삭제하지 않습니다.
- POP: 앞에서 말한 IMAP과 같이 이메일 클라이언트로 메일을 받아오는 역할이지만, 이메일을 받아온 후 메일 서버에 있는 내용을 삭제합니다. 그러므로 이메일 클라이언트에서 메일을 삭제하였다면 나중에 서버에서 되찾기가 힘듭니다.
SMTP와 ESMTP의 차이점
ESMTP란 Extended SMTP, 즉 기존의 SMTP에 기능을 확장한 버전의 프로토콜입니다. 1990년대 초에 SMTP보다 보안상으로 좀 더 발전시키고, 복잡한 문자열과 멀티미디어가 포함된 이메일을 전송할 수 있도록 개발하였습니다. SMTP와 비교했을 때의 달라진 부분은 다음과 같습니다.
- SMTP는 처음 통신을 시작할 때 HELO로 시작하지만, ESMTP는 EHLO(Extended HELLO라는 뜻)로 시작합니다.
- SMTP에서는 사용자가 인증되지 않아서 스팸 공격에 악용되는 경우가 있었습니다. 하지만 ESMTP에서는 발송자의 신원 인증과정이 추가되었고, 통신 보안을 위해 SSL 인증도 합니다.
- SMTP에서는 이메일의 용량을 줄일 수 없지만 ESMTP에서는 이메일의 용량을 줄이는 것이 가능합니다.
- SMTP에서는 멀티미디어 파일을 첨부하려면 MIME의 도움을 받아야 하지만, ESMTP에서는 MIME 없이도 멀티미디어 파일 첨부가 가능합니다.
- 메일이 발송되지 못했을 경우에 대한 에러 핸들링 방식이 향상되었습니다.
SMTP는 안전한가요? SMTP의 보안 취약점은 어떤 것이 있을까요?
SMTP를 사용할 때 보안에 항상 주의해야 합니다. 여느 통신기술과 다를 바 없이, SMTP 또한 항상 공격받을 수 있습니다. 흔히 일어나는 몇 가지 사례들을 짚어 보겠습니다.
- 스팸 및 피싱 공격: 해커들이 SMTP 서버를 해킹하여 스팸 및 피싱 이메일을 보내는 경우입니다. 예를 들어, 해커가 이메일 서버를 해킹한 다음 금전이나 개인정보를 요구하는 용도로 사용할 수도 있습니다.
- 데이터 유출: 해커들이 SMTP 서버의 접근 권한을 불법적으로 획득하여 이메일 내용을 유출시킵니다. 이메일 안에 포함된 개인정보, 회사 경영 정보 등이 유출될 수 있습니다.
- 멀웨어: SMTP 서버 자체를 멀웨어 바이러스에 감염시키고, 또 이메일을 통해서 다른 곳으로 바이러스를 전파시킵니다. 추가적인 피해를 막기 위해 바이러스 및 위협 방지Pro 안티 멀웨어 프로그램을 사용하는 것이 좋습니다.
- DDoS 공격: SMTP 서버를 좀비 서버로 만들어서 다른 서버에 계속 통신을 요청합니다. 그러면 그 서버는 요청에 응답을 하므로 과부하 상태가 됩니다.
SMTP를 안전하게 이용하기 위한 제안사항
어떻게 하면 SMTP를 안전하게 이용할 수 있을까요? 아래에 몇 가지 적용할 수 있는 SMTP 정보보안 기술을 제시하여 보았습니다.
- SSL/TLS 연결: 이메일 클라이언트와 서버 사이의 통신을 암호화 하는 기술입니다. 이메일의 내용이 암호화 되어 있으므로 해커가 데이터를 탈취하기 어렵습니다.
- 종단간 암호화: 공개키와 개인키를 이용하여 서버 포함 이메일이 전송되는 모든 구간에서 암호화를 적용하는 기술입니다. 종단간 암호화 기술에는 S/MIME, PGP 등이 있습니다.
- 기타: 그 외에도 SPF, DKIM, DMARC 등의 추가적인 인증 기술을 통해 SMTP 보안을 지킬 수 있습니다.