티스토리 뷰
이 글은 작년에 어떤 곳에 연재를 해보려고 쓴 글이다.
연재를 하게 되지 않아 그냥 놔뒀던 글인데, 혹 도움이 되실 분이 있을지 몰라 올려 본다.
인터넷을 접하면서 홈페이지라는 말 이외에 가장 많이 듣는 말이 이메일(e-mail)이다. "너 이메일 주소가 어떻게 되? 내가 메일 보낼께, 메일 주소 알려 주시면 견적서 보내 드릴께요" 등등 이메일은 인터넷을 사용하면서 생기는 나만의 편지함이다.
이메일. 한글로 굳이 풀어쓴다면 '전자우편(Electronic Mail)' 줄여서 e-mail이라고 한다. 우편인데 전자적인 방법으로 주고 받을 수 있다는 뜻으로 해석이 가능하겠다.
나는 이메일을 자주 전화에 비유하곤 한다. 전화는 음성을 주로하는 통신 수단이다. 이메일은 텍스트, 이미지 등을 주 수단으로 이용하는 통신이다. 그것도 지극히 사적인 통신 수단이다.
전화를 하기 위해서 상대방의 전화번호가 필요하듯이 메일을 주고 받기에도 주소가 필요하다. 전화는 개통이라는 절차와 함께 고유의 전화 번호가 부여되고 비용이 청구되고 있다. 하지만 이메일은 무료로 제공하는 곳이 많으며 자신이 소속한 기관에서 업무용으로 무상으로 제공하는 경우가 많으며 또한 이에 따른 사용료라는 개념이 거의 없다. 여기서 '거의'라고 표현한 것은 실제 메일을 사용하는 것은 공짜가 아니다라는 뜻이다. 이에는 인터넷 사용을 전제로 하기에 인터넷 사용은 실제 비용이 발생하기에 이에 따른 비용을 이야기 한 것이다.
전화와는 달리 이메일은 즉시성이라는 개념이 없다. 즉 전화는 상대방의 번호를 누르고 연결이 되면 바로 의사전달을 할 수 있는 반면 이메일은 우편처럼 보내고 받고 개봉하는 등의 과정을 거쳐야만 의사전달이 된다. 그런 반면 글로써 전달하기에 말보다 정제되고 더 많은 표현을 할 수 있으며 자료도 같이 보낼 수 있다. 그리고 보내고 받는 방법이 간편하며 지역적으로 멀리 떨어져 있어도 전화처럼 더 이상의 별도의 요금이 추가되지 않는다는 점이 다르다.
사용측면에서는 전화와 비교할 수 있지만 실제 동작되는 원리는 우편(Mail) 체계와 비슷하다. 그렇기때문에 전자 우편(Mail)이라고 하는 것이다. 그럼 어떤 어떤 요소가 필요할까?
1. 메일 서버 (우체국)
우체국이 있기에 우린 편하게 어떤 지역으로 편지나 소포 등을 보낼 수 있다. 그런 업무를 전담하기에 일반인이 일일히 전달하지 않아도 원하는 지역으로 편지를 보낼 수 있는 것이다. 마찬가지로 이메일도 우체국의 성격인 메일 서버가 있어야만 상대에게 보낼 수 있다. 하지만 실제 우체국와 메일 서버의 차이점은, 우체국은 지역적으로 구분을 두어 업무를 지역의 테두리에서 할 수 있게 하는 반면(같은 동네에 우체국이 두개가 필요없다라는 얘기다), 이메일은 필요에 의해 지역적이 아닌 사용 구분에 의해 서버가 필요하게 된다. 이 세상의 우체국보다는 이 세상의 메일 서버가 훨씬 많다. 메일 서버는 메일을 주고 받는 주 업무를 처리한다.
2. MTA (우편물 배송 차량)
배송 차량은 우편물을 우체국에서 다른 우체국으로 전달하는 역할을 한다. 이메일도 마찬가지로 MTA(Mail Transfer Agent 메일 전송 대리자)라고 하여 이메일을 메일 서버에서 다른 메일 서버로 보내는 역할을 하는 프로그램이 있다. 대표적인 것이 sendmail 이나 qmail 이라는 프로그램이다. 이들의 임무는 메일을 안전하게 송신 서버에서 수신 서버로 보내는 것이다.
3. MDA (집배원)
이렇게 도착한 우편물은 집배원에 의해 해당 지역의 고객들에게 우편물을 직접 나누어 주게 된다. 거꾸로 지역마다 준비된 우체통에서 우편물을 모아 우체국으로 모으는 역할도 겸하게 된다. 이메일에서는 이런 역할을 하는 것을 MDA(Mail Delivery Agent 메일 전달 대리자)라고 한다. 메일 서버에 도착한 메일을 사용자 계정(ID)로 전달해 주는 역할이다. 아웃룩이나 유도라 같은 프로그램이 이런 MDA라고 보면 쉽게 이해가 될 것이다.
4. SMTP
Simple Mail Trasfer Protocol의 약자로서 메일을 주고 받는데 필요한 서로간의 약속이다. 우체국도 국가간이나 국내 우체국간에도 서로 약속을 하여 우편물을 주고 받게 된다. 예를들면 zip code라고 하는 우편번호는 우편물을 관리하기 위해 지역을 번호로 구분하여 쉽게 우편물을 주고 받기 위한 하나의 약속이다. 나라마다 전화의 국가 코드가 있는것처럼 이메일에서도 이런 지켜야할 약속을 SMTP라고 하는 규격으로 만들어 두었다.
SMTP 규격은 기술의 발전에 따라 바뀌게 되는데 그것을 규정한 것이 SMTP RFC이다. RFC는 IETF라는 기관에서 만든 기술 규약집이다. 현재 SMTP의 RFC는 RFC2821이다. 가끔 전자우편 주소에 한글을 사용하면 왜 메일이 전달되지 않느냐고 질문하는 경우가 있는데, 이것도 SMTP규약에 따른 것이어서 그렇다. 모두가 이해할 수 있는 언어로 메일 규격을 만들기로 하였고 그 규격은 반드시 영어로 하기로 약속했기 때문에 한글을 이용한 메일 주소는 국제적으로 통용되지 않는 것이다. 최근엔 국내 모 업체가 한글 이메일 사용을 주장한 적이 있는데 그리 큰 호응은 얻지 못하고 있다. 이는 규격을 벗어나면 문제가 많이 발생하기 때문이다.
5. Header와 Body, Encoding과 Decoding
메일 자체를 살펴보면 header와 body라는 것으로 구분이 된다. header는 메일의 주요 정보들을 저장해 둔 것이다. 일반적으로 메일을 받을때에는 보이지 않게 설정되어 있다. 여기에는 메일을 보낸 서버명과 메시지 ID, 메일을 보낸 시각, 전달된 경로, 인코딩 방법 등을 표시하고 있다. body는 메일은 본문 내용이라고 할 수 있다. 일반적으로 메일을 읽는다고 할때 이 body를 읽는 것을 말한다.
메일의 body는 여러가지 언어와 파일 첨부 여부에 따라 encoding(암호화) 이라는 과정이 필요하게 된다. 이는 본문(body)에 언어문제나 첨부파일 때문에 메일 교환이 안되는 것을 방지하고 메일 서버가 어디부터 메일 본문인지를 구분하기 위하여 특수한 방식으로 본문을 특정 양식으로 암호화 하는 과정을 말한다.
반대로 받는 쪽에서는 이렇게 받은 메일을 특정양식에서 원래의 메일 내용으로 변환하는 과정을 거치는데 이때 decoding(복호화)이라는 과정을 거친다. encoding 방식은 다양하기 때문에 표준이 있긴하지만 대표적으로 사용되는 방식은 몇개 되지 않는다. 여러개가 존재하는 이유는 메일 본문을 더욱 효율적으로 압축하거나 특수기능을 이용하기 위해서이다. 가끔 메일이 깨어진다는 표현을 하는데, 이는 인코딩과 디코딩의 방법이 맞지않을 경우이다.
이상에서 메일의 가장 기본적인 원리와 용어들을 살펴 보았다.
요약하면
"이메일은 SMTP라는 약속을 기반으로 MDA, MTA 등에 의해 메일 서버간의 메일 교환에 의해 주고 받을 수 있다."