새벽을 밝히는 붉은 달

2021.03.09 오늘의 기록 본문

Developer/Record

2021.03.09 오늘의 기록

자윰 2021. 3. 10. 01:16

이것이 우분투 리눅스다


<메일 서버>

  • SMTP(Simple Mail Transfer Protocol): 클라이언트가 메일을 보내거나 메일 서버끼리 메일을 주고 받을 때 사용하는 프로토콜
  • POP3(Post Office Protocol)/IMAP(Internet Mail Access Protocol): 메일 서버에 도착한 메일을 클라이언트로 가져올 때 사용하는 프로토콜
  • Sendmail 서버의 작동 원리
    1. 메일 클라이언트 1은 SMTP 프로토콜을 이용해서 메일 서버의 sendmail 서비스(=데몬)에 메일을 보내달라고 요청한다
    2. Sendmail 서비스는 메일을 '메일 큐'에 넣어둔다
    3. Sendmail 서비스는 시간이 되면 MDA에 메일을 보내달라고 요청한다
    4. MDA는 SMTP 프로토콜을 이용해서 메일 서버 2의 Sendmail 서비스로 메일을 전송한다.
    5. 메일 서버 2의 Sendmail 서비스는 받은 메일을 MDA를 통해 사용자의 메일 박스에 넣어둔다.
    6. 메일 클라이언트 2는 메일 서버 2의 dovecot 서비스에 자신의 메일을 달라고 요청한다.
    7. dovecot 서비스는 메일 박스에서 메일 클라이언트 2의 메일을 POP3 또는 IMAP 프로토콜을 이용해 전송한다.
  • sendmail.cf 파일
    - Cw도메인이름: 도메인 이름을 가진 메일 서버로 사용하겠다는 의미이다
    - MaxMessageSize=용량: 메일 1개의 본문과 첨부 파일을 합친 제한 용량(바이트 단위)이다.
    - Mlocal 설정내용: 전체 메일 공간을 '설정내용'으로 제한한다.
    - O QueueDirectory-/var/spool/mqueue: 메일 전송 시 사용하는 임시 저장 디렉터리이다.
    - O DaemonPortOptions=Faminy=inet, Name=MTA-v4, Port=smtp, Addr=127.0.0.1: 'Addr 127.0.0.1'은 자기 자신에게만 메일을 보낼 수 있다는 의미이다 -> 외부에서도 메일을 보낼 수 있게 하려면 주소 부분을 삭제한다.
  • 메일 릴레이(Mail Relay): 다른 네트워크 또는 호스트에서 자신의 메일 서버를 경유하여 메일을 전송하는 것. 이 기능을 악용해서 스팸 메일이나 바이러스 메일 등을 발송하는 경우도 있음. Sendmail에서 제공하는 메일 릴레이 기능은 자기 자신의 IP 주소 외에 아무도 메일을 발송할 수 없도록 설정되어 있지만, 모든 사용자가 메일 서버 컴퓨터 앞에 앉아서 메일을 보낼 수는 없음 -> 신뢰할 수 있는 도메인이나 호스트 또는 네트워크에는 메일 릴레이를 할 수 있도록 허용함.
    (예를 들어,
    192.168.111.200           RELAY         // 192.168.111.200 컴퓨터의 릴레이 허용
    abc.com                          RELAY         // abc.com 도메인에 릴레이 허용
    192.168                            RELAY         // 192.168.*.*의 모든 컴퓨터에 릴레이 허용
    babo@                             DISCARD   // babo라는 메일 계정의 메일 거부 (거부 메시지 안 보냄)
    @daum.net                    REJECT     // daum.net 메일 사용자의 메일 거부 (거부 메시지 보냄)
  • (사족: 사실, 책에서 웹서버와 디비 서버 구축을 제외하고 나머지는 대학교 다니면서 구축할 일이 없을 것 같아서 건너뛸 생각이었다. 그런데 책 하나를 깔끔하게 보자 라는 생각에 안 건너뛰고, 차근차근 네임서버부터 구축을 해보았는데 생각보다 재미있었다. 그리고 이렇게 직접 서버를 구축해보며 컴퓨터 네트워크 강의에서 배웠던 지식을 다시금 되새길 수 있었다. 왜 다들 개발자라면 네트워크에 대해 기본적인 지식을 알아야 한다고 하는지도 어렴풋이 깨닫게 되었다. 특히 지식이 없었다면 낭패를 봤을 수도 있겠다 싶었던 게, daum.net을 도메인으로 하는 서버의 sendmail.cf 파일을 수정할 때 잘못해서 Cwdaum.net으로 써야할 것을, Cwlocalhost라고 써버렸다. 그래서 내가 의도한대로 SMAP 이 동작하지 않았고, 다른 서버에서 내가 구축한 daum.net의 서버로 아무리 메일을 보내도 메일이 오지 않는 것이었다. 만약 내가 네트워크에 관한 기초적인 지식조차 없었다면, 그냥 처음부터 다시 해보았을지도 모른다. 그러나 나에게 주어진 상황을 종합해본 결과 큐에 저장된 메일이 전송되고, 다른 메일 서버가 받는 과정에서 SMTP의 동작에 문제가 있다고 판단했고, 그 결과 어디에서 문제가 생긴건지 정확하게 찾는데 걸린 시간을 단축할 수 있었다. 여러모로 컴퓨터 네트워크의 중요성과 함께 앞으로 네트워크에 대해서 더 공부하고 싶어지는 계기가 되었다.)

'Developer > Record' 카테고리의 다른 글

2021.03.22 오늘의 기록  (0) 2021.03.22
2021.03.15 오늘의 기록  (0) 2021.03.15
2021.03.08 오늘의 기록  (0) 2021.03.09
2021.03.06 오늘의 기록  (0) 2021.03.07
2021.03.04 오늘의 기록  (0) 2021.03.05
Comments