내가 개인 서버를 하나 장만하고 그냥 웹서비스만 하고 그냥 방치하는거라 너무 비효율적이라 뭐 하나라도 해보자는 생각에 메일서버 생각해냈다.
내가 여태까지 하면서 고난과 삽질, 여러가지 팁같지않는 팁을 줄려고 한다.
일단 메일서버를 진행하기전에 메일이 동작하는 방법에 대해 알아야 서버를 구축할수있다.
메일서버 동작과 원리
메일이 동작하기 위해선 2가지의 서비스가 필요하다
1. 메일을 보내는 서비스
2. 메일을 받는 서비스
1번 보내는 서비스는 Simple Mail Transfer Protocol(smtp)라고 한다.
2번 받는 서비스는 Internet Message Access Protocol(imap)라고 한다.
자세하게 파악하기 위해 사진을 첨부하겠다.
바퀴벌레와 곱등이가 서로 이메일로 대화를 할려고 한다.
바퀴벌레가 곱등이에게 구애를 할려고 먼저 메일을 보낼려고 한다.
여기서 바퀴벌레는 전문용어로 "클라이언트"라고 하고 바퀴벌레서버는 그냥 "서버"이다. 곱등이도 동일.
바퀴벌레 클라이언트는 먼저 이메일에 제목과 내용을 적는다. 그런 다음 "전송"버튼을 누르면
메일 전송 서비스 "SMTP"프로토콜이 동작한다. 우린 "전송"버튼을 누른거니 서버에서는 해당 프로토콜을 실행하는거다.
바로 SMTP이다.
바퀴벌레 서버는 SMTP를 이용해 인터넷을 통해 신호를 준다. 당연히 목적지는 곱등이 서버로.
이제 메일을 보냈으니 바퀴벌레 서버는 할일을 끝낸거다. SMTP의 목표는 메일보내면 끝이니 끝낸거다.
이제 곱등이 서버는 메일이 왔으니 메일을 받는 IMAP프로토콜이 동작한다. 왜냐? 바퀴벌레 서버가 SMTP를 통해 목적지인 곱등이 서버로 왔으니깐.
이렇게 IMAP를 통해 메일을 받으면 클라이언트(곱등이)한테 전달해준다. 이렇게 순환하면서 메일이 주고받고 그런다.
꽤복잡하고 조잡하다.
이제 동작방식을 알았으니 서버를 통해 서비스를 구축하면 된다.
일단 나는 리눅스(우분투)를 이용해서 서버를 구축하는거다.
먼저 메일서비스를 구축하기 위해 필요한 사항을 알아야한다.
짬뽕만드는법은 알지만, 짬뽕을 만들 재료가 없으면 홍철없는 홍철팀이다.
메일서비스를 하기 위해 여러가지 방법이 있다.
웹메일이 있고 그냥 메일서버가 있다.
웹 메일은 네이버메일, 구글메일 같이 해당 URL을 주소창에 치고 들어가서 html로 보는 방식이 있다.
메일서버는 위에 설명한거 없이 그냥 알맹이만 만드는거다.
물론 웹메일이 더 간편해보이고 쉬워보이지만 결코 만만하게 볼 수준이 아니다.
웹메일은 우리가 직접 코드를 짜는게 아니니 수정하거나 원하는 기능을 추가하기 어렵다.
후자인 알맹이만 있는 메일서버는 필요한 핵심만 있지, 추가적인건 우리가 직접 추가해야 한다.
내가 느낀건데 웹메일은 하지말자, 내가 여러번 시도했지만 내가 아는욕을 다 하고, 세상에 없는 욕까지 창조해냈다.
하고싶은 사람들은 smtp, imap를 직접 서버에 구축 후 웹메일까지 설치해야 한다.
smtp에서 유명한 프로그램은 "postfix"
imap에서 유명한 프로그램은 "dovecot"이다.
웹으로 하는건 라운드큐브(Roundcube), 레인루프(Rainloop)
여기서 내가 진행할 프로그램은 아파치재단에서 제작한 자바기반 메일서버이다.
Java Aapahe Mail Enterprise Server로 흔히 james, 제임스라고 부른다.
끝마침
끝으로 내가 여태까지 혼자서 메일 서버를 구축했을때 진짜 똥같은 경험을 많이 겪었다.
원래는 제임스로 진행할려고 했으나, 서버가 아무런 이유없이 다운되는 증상을 겪었다. 제임스를 삭제해도 계속 다운되길래 리눅스를 재설치 하였고 다시 제임스를 진행할려고 하니 자바쪽에서 문제가 생겼다. 결국은 또 밀었다.
제임스는 포기하고 웹메일로 진행할려고 했으나, smtp와 imap를 제대로 설정하였지만 메일 발송이 안되는 ㅈ같은 경험을 겪었다.
그래도 어찌저찌 해결하고 라운드큐브를 설치를 하였고, 로그인만 하면 완성되는 메일서버인데 로그인이 안된다. 공식문서를 읽어보니 로그인은 지들도 모른다고 한다.
라운드큐브를 버리고 레인루프를 진행할려고 했으나 라운드큐브에서 막히던 로그인은 해결되었으나 메일 발송이 아예 안된다. 뭔 문제인지 몰라 아예 웹메일을 싹 지우고 결국 다시 제임스로 했다.
제임스로 다시 와서 설정했는데 모든건 다 잘되고 메일을 외부(네이버, 구글)로 보내면 바로 오류가 난다.
결국 이것도 해결했으니 마음이 싹 놓인다.
이제 이걸로 포스팅을 할려고 한다.
'리눅스, 네트워크' 카테고리의 다른 글
메일서버 - 시작하기 (1) | 2024.03.24 |
---|---|
정보보안 - AP (0) | 2023.08.13 |
리눅스 - 시작하기 (0) | 2021.11.16 |
정보보안 (0) | 2021.11.03 |
리눅스 (0) | 2021.05.27 |