CertNote/ 출퇴근 학습 노트
로드맵
KOEN
리눅스마스터 2급 · 2급리눅스마스터 2급
리눅스마스터 1급 · 1급리눅스마스터 1급
  • Week 1
    • 1.운영체제와 리눅스: 커널이 하는 일
    • 2.자유 소프트웨어와 배포판: 라이선스가 만든 생태계
    • 3.설치와 부팅: 전원을 켜는 순간부터
    • 4.파일시스템 구조와 파일의 종류: 모든 것은 파일이다
    • 5.Week 1 종합 복습: 개념을 꿰뚫는 시간
  • Week 2
  • Week 3
  • Week 4
  • Week 5
  • Week 6
  • Week 7
  • Week 8
  • Week 9
  • Week 10
    • 1.메일 서비스: MTA·MDA·MUA와 SMTP·POP3·IMAP의 삼각 구도
    • 2.파일 전송 서비스: FTP의 능동·수동 모드와 vsftpd
    • 3.원격 접속의 표준: SSH와 sshd_config, 키 인증, 포트 포워딩
    • 4.원격 GUI: VNC와 X 윈도 시스템의 클라이언트·서버 역전
    • 5.Week 10 종합 복습: 네트워크 서비스를 포트 한 장으로 꿰기
  • Week 11
  • Week 12
  • Week 13
  • Week 14
합격 후기

© CertNote · 주간랩스

  • 소개
  • 수정 기록
  • 문의
  • 이용약관
  • 개인정보처리방침
← 리눅스마스터 1급/Week 10/Day 1

기준: 리눅스마스터 1급 출제 기준·오류 제보

리눅스마스터 1급· AssociateWeek 10 · Day 1읽기 약 11분
핵심 정리
  • 메일 시스템은 "보내기는 SMTP, 가져오기는 POP3/IMAP"라는 비대칭 구조다. 이 비대칭만 그리면 포트도 설정 파일도 자리를 잡는다.
  • 역할 분담: MUA(사용자 클라이언트) → MTA(서버 간 전송) → MDA(사서함 최종 배달).
  • 포트 즉답: SMTP 25 · POP3 110 · IMAP 143, 암호화는 SMTPS 465 · 제출 587 · IMAPS 993 · POP3S 995.
  • POP3는 내려받고 서버에서 삭제(단일 기기), IMAP은 서버에 보관·동기화(여러 기기). "여러 기기 = IMAP".
  • MTA는 Sendmail(레거시, /etc/mail/sendmail.cf)과 Postfix(모듈형·보안, /etc/postfix/main.cf). mynetworks를 넓게 열면 오픈 릴레이가 된다.

Day 1 - 메일 서비스: MTA·MDA·MUA와 SMTP·POP3·IMAP의 삼각 구도

메일 시스템의 3대 구성요소 — MTA·MDA·MUA

  • 메일은 사람이 직접 주고받는 게 아니라 역할이 분리된 세 프로그램의 릴레이로 전달된다.
구성요소풀네임역할대표 프로그램
MUAMail User Agent사용자가 메일을 작성·읽는 클라이언트Outlook, Thunderbird, mutt, mail
MTAMail Transfer Agent메일을 서버 간 전송(라우팅)하는 핵심 엔진Sendmail, Postfix, Exim
MDAMail Delivery AgentMTA가 받은 메일을 사용자 사서함에 최종 배달Procmail, Dovecot의 LDA, mail.local
  • 흐름을 한 줄로 그리면 이렇다.
[발신자 MUA] --SMTP--> [발신 MTA] --SMTP--> [수신 MTA] --MDA--> [사서함]
                                                              ↑
                          [수신자 MUA] <--POP3/IMAP-- [사서함]

MTA는 "우체국 간 트럭 운송", MDA는 "집배원이 우편함에 넣는 일", MUA는 "사람이 편지를 쓰고 읽는 일"이다. MTA끼리는 SMTP로 대화하고, MDA가 사서함에 넣은 뒤, MUA는 POP3/IMAP으로 그 사서함을 들여다본다. 이 분업이 메일 구조의 뼈대다.

핵심 구분: MTA와 MDA는 단계가 다르다. MTA는 서버에서 서버로 메일을 옮기는 전송 단계이고, MDA는 그 메일을 로컬 사용자 사서함에 떨어뜨리는 최종 배달 단계다. SMTP는 MTA의 언어, POP3/IMAP은 사서함을 읽는 MUA의 언어다.

메일 프로토콜과 포트 — 발송과 수신의 비대칭

  • 실기에서 묻는 부분이다. 포트 번호는 통째로 암기해야 한다.
프로토콜방향평문 포트암호화(SSL/TLS) 포트
SMTP발송 (MUA→MTA, MTA→MTA)25465(SMTPS), 587(STARTTLS 제출)
POP3수신 (서버→MUA, 다운로드)110995(POP3S)
IMAP수신 (서버→MUA, 서버 보관)143993(IMAPS)

기억 고정 포인트:

  • 발송 = SMTP = 25, 보안 발송 = 465 / 587
  • POP3 = 110 → 995, IMAP = 143 → 993 (둘 다 끝자리 패턴으로 외우면 안전)
  • 25는 MTA 간 릴레이 표준, 587은 사용자가 메일을 "제출(submission)"하는 인증 포트

⚠️ 함정: 465와 587을 헷갈리는 문제가 있다. 465는 처음부터 SSL로 감싸는 SMTPS, 587은 평문으로 시작해 STARTTLS로 암호화하는 메일 제출(submission) 포트다. 또 "수신 = 110/143, 발송 = 25"라는 방향을 뒤집은 보기는 오답이다. POP3에 25를 붙인 보기도 마찬가지다.

핵심 구분: POP3 vs IMAP — POP3는 메일을 클라이언트로 다운로드하고 서버에서 삭제(기본)하므로 한 기기에서만 쓸 때 적합하다. IMAP은 메일을 서버에 그대로 두고 동기화하므로 여러 기기에서 같은 사서함을 보는 데 적합하다. "여러 기기 동기화 = IMAP"이 정답 신호다.

직접 쳐보기 — 포트와 서비스 확인

# 메일 관련 포트가 LISTEN 중인지 확인
ss -tlnp | grep -E ':(25|110|143|465|587|993|995)'
 
# /etc/services에서 표준 포트 정의 확인
grep -E '^(smtp|pop3|imap|submission|imaps|pop3s)\b' /etc/services
 
# 로컬 메일 전송 테스트 (telnet으로 SMTP 대화)
telnet localhost 25
# 응답: 220 mail.example.com ESMTP Postfix

SMTP가 25번 포트인 이유는 1982년 RFC 821 시절 지정된 역사적 번호다. 이후 ISP들이 스팸 차단을 위해 25번 외부 발신을 막으면서, 인증된 사용자 메일 제출용으로 587(RFC 4409)이 분리되었다. 그래서 오늘날 "메일은 보내지는데 받기만 된다"는 장애의 상당수가 25번 차단이 원인이다.

Sendmail vs Postfix — 두 MTA의 대결

  • 리눅스의 대표 MTA는 전통의 Sendmail과 현대의 Postfix다.
  • 시험은 둘의 차이와 설정 파일 위치를 묻는다.
항목SendmailPostfix
출시1983년, 가장 오래된 MTA1998년, 보안·단순성 목표로 개발
구조단일 거대 프로세스여러 작은 프로세스로 분리(모듈형)
설정 파일/etc/mail/sendmail.cf (m4로 생성)/etc/postfix/main.cf (직관적)
설정 난이도매우 복잡(.mc → .cf 컴파일)상대적으로 쉬움(key=value)
보안권한 분리 약함(역사적 취약점 다수)권한 분리로 보안 강함
현재 위상레거시사실상 표준, RHEL 기본

Postfix가 Sendmail을 대체한 이유는 "하나의 거대 프로세스"가 보안의 약점이었기 때문이다. Postfix는 수신·큐·배달을 각각 다른 권한의 작은 프로세스로 쪼개, 한 부분이 뚫려도 전체로 번지지 않게 설계했다. "보안·모듈형 = Postfix"가 핵심이다.

Postfix main.cf 주요 지시어

# /etc/postfix/main.cf — 핵심 설정 항목
myhostname = mail.example.com      # 이 서버의 호스트명
mydomain = example.com             # 도메인명
myorigin = $mydomain               # 발신 메일의 도메인(보내는 주소 보정)
inet_interfaces = all              # 수신 대기 인터페이스(all=모든 NIC)
mydestination = $myhostname, localhost, $mydomain   # 로컬 배달로 처리할 도메인
mynetworks = 127.0.0.0/8, 192.168.0.0/24            # 릴레이 허용 신뢰 네트워크
relayhost = [smtp.isp.com]:587     # 외부 발신을 거치는 중계 서버
home_mailbox = Maildir/            # 사서함 형식(Maildir/ vs mbox)
  • 설정을 바꾼 뒤에는 반드시 다시 읽혀야 한다.
postconf -n                # 기본값과 다른 설정만 출력(점검용)
postfix check              # 설정 문법 검사
systemctl reload postfix   # 무중단 설정 재적용
newaliases                 # /etc/aliases 변경 후 DB 재생성

⚠️ 함정: inet_interfaces를 localhost로 두면 외부에서 메일을 못 받는다. 또 mynetworks 범위를 너무 넓게(예: 0.0.0.0/0) 열면 누구나 이 서버로 메일을 중계하는 오픈 릴레이가 되어 스팸 발송지로 악용된다. "받기 안 됨 = inet_interfaces, 오픈 릴레이 위험 = mynetworks"로 짝지어진다.

핵심 구분: 사서함 저장 방식 mbox vs Maildir — mbox는 한 파일에 모든 메일을 이어 붙여 잠금 충돌이 잦고, Maildir는 메일 한 통을 파일 하나로 디렉터리에 저장해 동시 접근에 안전하다. home_mailbox = Maildir/처럼 슬래시(/)로 끝나면 Maildir 형식이라는 신호다.

메일 별칭과 큐 관리

# /etc/aliases — 수신 주소 재지정(별칭)
root:       admin@example.com    # root로 온 메일을 admin에게 전달
webmaster:  root                 # 다단계 별칭도 가능
# 수정 후 반드시
newaliases
 
# 메일 큐 확인·처리
mailq              # 대기 중인 메일 큐 조회 (postqueue -p와 동일)
postqueue -f       # 큐 즉시 플러시(재전송 시도)
postsuper -d ALL   # 큐의 모든 메일 삭제

메일이 즉시 안 가고 큐에 쌓이는 일은 흔하다. 수신 서버 일시 다운, DNS MX 조회 실패, 그레이리스팅 등으로 MTA는 메일을 버리지 않고 큐에 두고 주기적으로 재시도한다. 그래서 "메일이 지연된다"는 신고가 오면 가장 먼저 mailq로 큐 상태를 본다. 이것이 메일 관리자의 첫 진단 명령이다.

시험 직전 체크리스트

  • 25(SMTP), 110(POP3), 143(IMAP), 465(SMTPS), 587(제출), 993(IMAPS), 995(POP3S)을 즉답
  • MTA(서버 간 전송) ≠ MDA(사서함 배달) ≠ MUA(사용자 클라이언트)
  • Postfix 설정은 /etc/postfix/main.cf, Sendmail은 /etc/mail/sendmail.cf
  • POP3=다운로드 후 삭제, IMAP=서버 보관·동기화
  • 오픈 릴레이를 막으려면 mynetworks를 좁게

📖 용어

  • MUA(Mail User Agent) : 사람이 메일을 쓰고 읽는 클라이언트. Outlook·Thunderbird·mutt 등.
  • MTA(Mail Transfer Agent) : 서버에서 서버로 메일을 옮기는 전송 엔진. Sendmail·Postfix가 대표다.
  • MDA(Mail Delivery Agent) : MTA가 받아 온 메일을 로컬 사용자 사서함에 떨어뜨리는 최종 배달 담당.
  • SMTP : 메일을 보내는 프로토콜. MUA→MTA, MTA→MTA 모두 이걸 쓴다.
  • submission(587) : 사용자가 인증을 거쳐 메일을 제출하는 전용 포트. STARTTLS로 암호화한다.
  • SMTPS(465) : 처음부터 SSL로 감싸 연결하는 발송 포트. 587과 헷갈리기 쉽다.
  • POP3 vs IMAP : 내려받고 서버에서 지우는 방식(단일 기기) / 서버에 두고 동기화하는 방식(여러 기기).
  • inet_interfaces : Postfix가 메일을 받을 인터페이스. localhost로 두면 외부 메일을 못 받는다.
  • mynetworks : 릴레이를 허용할 신뢰 네트워크. 너무 넓으면 오픈 릴레이가 된다.
  • 오픈 릴레이 : 아무나 이 서버로 메일을 중계할 수 있는 상태. 스팸 발송지로 악용된다.
  • relayhost : 외부 발신을 직접 하지 않고 거쳐 가는 중계 서버 지정.
  • mbox vs Maildir : 모든 메일을 한 파일에 이어 붙이는 방식 / 메일 한 통을 파일 하나로 저장하는 방식(동시 접근에 안전).
  • /etc/aliases : 수신 주소를 다른 주소로 넘기는 별칭 파일. 고친 뒤 newaliases로 DB를 다시 만들어야 한다.
  • 메일 큐 : 즉시 못 보낸 메일이 쌓여 재시도를 기다리는 곳. mailq로 보고 postqueue -f로 밀어낸다.

📝 연습 문제

선택지를 클릭하면 정답·해설이 펼쳐집니다.

문제 1

메일 시스템에서 서버와 서버 사이로 메일을 전송(라우팅)하는 역할을 담당하는 구성요소는?

문제 2

SMTP, POP3, IMAP의 기본(평문) 포트 번호를 순서대로 바르게 짝지은 것은?

문제 3

POP3와 IMAP의 차이에 대한 설명으로 옳은 것은?

문제 4

Postfix의 핵심 설정 파일 경로로 옳은 것은?

문제 5

메일을 SSL/TLS로 암호화하여 발송할 때 사용하는 포트(SMTPS)와 IMAP 암호화 포트(IMAPS)를 바르게 짝지은 것은?

문제 6

Sendmail과 비교한 Postfix의 특징으로 옳은 것은?

문제 7

Postfix에서 mynetworks를 0.0.0.0/0처럼 지나치게 넓게 설정했을 때 발생하는 보안 문제는?

이전데이터베이스 서비스: MySQL/MariaDB 설치부터 백업·복구까지Week 9 · Day 6다음 파일 전송 서비스: FTP의 능동·수동 모드와 vsftpdWeek 10 · Day 2

참고 공식 자료

  • 리눅스마스터 1급 공식 출제 기준(새 탭에서 열림)

이 페이지

  • 메일 시스템의 3대 구성요소 — MTA·MDA·MUA
  • 메일 프로토콜과 포트 — 발송과 수신의 비대칭
  • 직접 쳐보기 — 포트와 서비스 확인
  • Sendmail vs Postfix — 두 MTA의 대결
  • Postfix main.cf 주요 지시어
  • 메일 별칭과 큐 관리
  • 시험 직전 체크리스트
  • 용어
  • 연습 문제