Linux 로그 경로 정리 · 15/50 · Part 2. RHEL / Rocky Linux 로그 경로

선행 학습 → 14. /var/log/cron 분석
이번 글 → /var/log/maillog 분석
이어서 → 16. /var/log/boot.log 분석

1. 들어가며

메일 서버는 외부에 직접 노출되는 서비스입니다. 계정이 탈취되면 스팸·피싱 발송 경유지가 되고, 서버 IP가 블랙리스트에 올라 업무 메일 전체가 막힙니다. /var/log/maillog 는 이런 악용을 가장 먼저 보여주는 로그입니다.

핵심 요약

  • Postfix 로그는 Queue ID 하나로 수신 → 큐 → 발송 전 과정을 묶는다.
  • 보안 신호: SASL LOGIN authentication failed, Relay access denied, 급증하는 status=sent/deferred
  • 경로: Rocky /var/log/maillog · Ubuntu /var/log/mail.log (+ mail.err)

2. 핵심 개념

Postfix 구성요소로그 태그역할
smtpdpostfix/smtpd[PID]외부 연결 수신, 인증(SASL), 수신 거부
cleanuppostfix/cleanup메시지 헤더 정리, message-id 부여
qmgrpostfix/qmgr큐 관리 (from=<>, size, nrcpt)
smtppostfix/smtp외부로 발송, 결과 status=sent/deferred/bounced
localpostfix/local로컬 메일함 배달

3. 로그 생성 구조

maillog로 보는 메일 흐름

외부 클라이언트 ──▶ smtpd (connect, SASL 인증) ──Queue ID 발급: 3F2A1C0B7E
                        ↓
                     cleanup (message-id)
                        ↓
                     qmgr (from=, size=, nrcpt=)
                        ↓
                     smtp / local (to=, relay=, status=)
                        ↓
                syslog(mail) ──▶ journald ──▶ rsyslog mail.* ──▶ /var/log/maillog (sync)

4. 실제 로그 경로

항목Rocky / RHELUbuntu / Debian
메일 로그/var/log/maillog/var/log/mail.log
오류 전용—/var/log/mail.err (mail.err 규칙)
설정/etc/postfix/main.cf동일
journaldjournalctl -u postfix동일

Postfix가 설치되지 않은 서버에서는 maillog 가 비어 있거나 없습니다. Rocky 9 최소 설치에는 Postfix가 기본 포함되지 않을 수 있으므로 rpm -q postfix 로 먼저 확인합니다.

5. 명령어 실습

rpm -q postfix 2>/dev/null || dpkg -l postfix 2>/dev/null | tail -1
M=/var/log/maillog            # Ubuntu: /var/log/mail.log

# SASL 인증 실패 IP (SMTP 계정 무차별 대입)
grep 'SASL .* authentication failed' $M | grep -oE '\[[0-9.]+\]' | sort | uniq -c | sort -rn | head

# 릴레이 거부 (오픈 릴레이 시도)
grep 'Relay access denied' $M | grep -oE 'from [^ ]+\[[0-9.]+\]' | sort | uniq -c | sort -rn | head

# 인증 성공 계정별 발송량 (탈취 계정 대량 발송 탐지)
grep 'sasl_username=' $M | grep -oE 'sasl_username=[^ ,]+' | sort | uniq -c | sort -rn | head

# Queue ID 로 한 통의 메일 전체 추적
QID=$(grep -m1 -oE ': [0-9A-F]{10,}:' $M | tr -d ': ')
grep "$QID" $M

6. 로그 예시

실제 실행 결과 — Rocky Linux 9.8 · root@rocky9-lab — maillog 존재/구조

위 이미지는 Rocky Linux 9.8 실습 환경의 실제 실행 결과로, maillog의 존재 여부와 구조를 확인한 화면입니다.

아래는 Postfix 형식을 설명하기 위한 예시 로그입니다(실제 시스템 출력 아님).

[예시 로그]
Sep 20 03:10:02 mail01 postfix/smtpd[5120]: warning: unknown[198.51.100.77]: SASL LOGIN authentication failed: UGFzc3dvcmQ6
Sep 20 03:12:40 mail01 postfix/smtpd[5188]: 3F2A1C0B7E: client=unknown[198.51.100.77], sasl_method=LOGIN, sasl_username=sales01
Sep 20 03:12:40 mail01 postfix/qmgr[1022]: 3F2A1C0B7E: from=<sales01@example.com>, size=4812, nrcpt=48 (queue active)
Sep 20 03:12:42 mail01 postfix/smtp[5190]: 3F2A1C0B7E: to=<a@example.net>, relay=mx.example.net[192.0.2.25]:25, status=sent (250 OK)
Sep 20 03:13:05 mail01 postfix/smtpd[5201]: NOQUEUE: reject: RCPT from unknown[203.0.113.9]: 554 5.7.1 <x@example.org>: Relay access denied

7. 로그 필드 분석

필드값해석
Queue ID3F2A1C0B7E한 메시지의 전 과정 연결 키
clientunknown[198.51.100.77]역방향 DNS 없는 외부 IP
sasl_usernamesales01인증 성공 계정 — 직전 실패 IP와 같다면 탈취 의심
nrcpt48수신자 수 — 평소 대비 급증 여부
statussent / deferred / bounced대량 deferred/bounced 는 스팸 발송 징후
NOQUEUE rejectRelay access denied서버가 올바르게 거부 (정상 방어 흔적)

8. 보안관점

정상의심
업무시간, 계정별 일정 발송량새벽 시간대 특정 계정 대량 발송
드문 SASL 실패한 IP의 반복 SASL 실패 → 성공
Relay access denied 소량릴레이 허용(status=sent)된 외부→외부 메일
bounced 소량대량 bounced (존재하지 않는 수신자에게 스팸)

9. SOC 관점

  • Detection: SASL 실패 반복(무차별 대입), 실패 IP의 인증 성공, 계정별 발송량 임계치 초과.
  • Triage: 발송량 급증 Alert → 해당 계정의 sasl_username 로그인 출발지 IP 확인.
  • IOC: 공격 IP, 탈취 계정, 발송 제목/URL(헤더는 별도 수집 필요).
  • Response: 계정 비밀번호 초기화, 큐 정리(postqueue -p 확인 후 postsuper), 블랙리스트 등재 여부 확인.

10. 실습 체크리스트

[ ] Postfix 설치 여부 확인
[ ] 배포판별 메일 로그 경로 확인
[ ] SASL 인증 실패 IP 집계
[ ] 계정별 발송량 집계
[ ] Queue ID 로 메시지 전 과정 추적
[ ] 정상 거부(NOQUEUE reject)와 침해 신호 구분

11. 핵심 정리

  • Postfix 로그는 Queue ID로 한 메일의 수신~발송을 연결한다.
  • SASL 인증 실패와 그 뒤의 성공은 계정 탈취 신호다.
  • 계정별 발송량 급증은 스팸 경유지 악용의 대표 징후다.
  • Relay access denied 는 방어가 동작한 정상 흔적이다.
  • Rocky는 maillog, Ubuntu는 mail.log + mail.err 를 본다.

12. 다음 편 연결

구분글
◀ 이전 글14. /var/log/cron 분석
▶ 다음 글16. /var/log/boot.log 분석
시리즈Linux 로그 경로 정리 전체 보기
선행 시리즈리눅스 시스템 기초 · 파일 · 권한 · 사용자 관리 · 서비스 · 프로세스 관리 · Linux 시스템 보안 기초
profile
코드에 숨겨진 위협을 읽고 AI로 보안의 미래를 설계합니다. 프론트엔드 개발 경험을 자산 삼아 더 견고하고 지능적인 보안 운영 시스템을 구축해 나가는 과정을 기록합니다

0개의 댓글