Exchange 2013 Mail 흐름의 이해
Exchange 2013에서 Mail의 흐름을 이해하기 위해서는 Transport Poline은 물론이고, Mailbox Server상의 Transport Service를 이해 해야 합니다. 오늘은 Exchange 2013에서의 Mail 흐름에 대해 알아보려고 합니다. 이전 글에서 언급 했던 것처럼 Exchange 2013은 Fronent Client Access Server와 Backend Mailbox Server로 구성됩니다. 따라서 Exchange 2007이나 Exchange 2010 서버 역할을 익히 알고 계신분들이라면, 기존 서버 역할을 구성하던 요소들이 어떻게 달라졌는지 비교하여 이해해야 하겠습니다.
Exchange 2013에서 메일 흐름은 Transport Pipeline을 통해 일어납니다. Transport Pipeline은 모든 메시지를 Exchange Organization내 Mailbox Server의 Transport Service의 일부인 Categorizer로 라우터 하기 위해 함께 동작하는 Connectors, Components, 그리고 Queue 들의 모음 입니다.
Transport Pipeline은 다음 구성요소들로 이루어져 있습니다.
Front End Transport Service : 이 서비스는 모든 Client Access Server에서 실행되며, Exchange 2013 조직으로 들어오거나 외부로 나가는 SMTP traffice에 대해 Stateless Proxy처럼 동작 합니다. Front End Transport Serverice는 Mailbox Server상에 있는 Transport Service와 커뮤니케이션만 수행하고, 어떤 메시지에 대해서도 메시지 콘텐트를 검사하거나 로컬에 Queue하지 않습니다.
Transport Service : Mailobx Server에서 실행되는 이 서비스는 실제로 이전 버전의 Hub Transport Server의 역할에 해당합니다. Transport Service는 조직 내 모든 SMTP 메일 흐름을 핸들하고, 메시지를 Categorization하며, 실제 메시지를 검사합니다. 이전 버전과의 차이점이 있다면 Transport Service는 Mailbox Database와는 결코 직접적으로 커뮤니케이션 하지 않는 다는 것입니다. Mailbox Database와 커뮤니케이션은 Mailbox Transport Service가 담당합니다. Transport Service는 CAS서버상의 Front End Transport Service와 MBX서버상의 Mailbox Transport Service간에 메시지를 라우터 합니다.
Mailbox Transprot Service: Mailbox Server에서 실행되는 이 서비스는 Mailbox Transport Submission Service와 Mailbox Delivery Service로 구성됩니다.
Mailbox Tranpsort Delivery Service 는 로컬 Mailbox Server나 다른 Mailbox Server의 Transport Service로 부터 SMTP 메시지를 수신한 다음 메시지를 전송하기 위해 RPC(Remote Procedure Call)을 이용하여 로컬 Mailbox Database에 연결 합니다. Mailbox Transport Submission Service는 메시지를 회수해오기 위해서 로컬 Mailbox Database에 RPC를 이용하여 연결하고, SMTP를 통해 로컬 또는 다른 Mailbox Server상의 Transport Service로 메시지를 제출합니다. Mailbox Transport Submission Service는 Transport Service와 동일한 라우팅 토폴로지에 접근합니다. Front End Transport Service처럼 Mailbox Transport Service 또는 어떤 메시지도 로컬에 Queue하지 않습니다.
Exchange 조직 외부로부터 오는 메시지는 CAS서버의 Front End Transport Service에 있는 Receive Connector를 통해 Transport Pipeline으로 들어온 다음 Mailbox Servcer에 있는 Transport Service로 라우트 됩니다.
Exchange 조직내 메시지는 다음 방법중 한가지로 Mailbox Server에 있는 Transport Service로 들어옵니다.
- Receive Connector를 통해서
- Pickup Directory또는 Relay Directory로 부터
- Mailbox Transport Service로 부터
- Agent Submission을 통해서
Exchange로 들어오거나 발송되는 각 메시지는 라우터되고 배달되기 전에 Mailbox Server의 Transport Service에서 Categorize 되어야 합니다. Categorizing 된 메시지는 목적지 Mailbox databae나 DAG(Database Availability Group), Active Directory Site 또는 Exchange 조직 외부 도메인으로 배달되기 위해 Delivery Queue에 들어가게 됩니다.
Mailbox Server상의 Transport Service는 다음 구성요소와 프로세스로 구성되어 있습니다.
SMTP Receive: Transport Service 에 의해 메시지가 수신되면 Message 콘텐트는 검사되고, 전송 규칙이 적용된 다음, Anit-spam이나 Anti-Malwar 검사가 Enable되어 있다면 수행됩니다. SMTP세션은 메시지를 수락하기 전 메시지 콘텐트의 유효성을 확인하기 위한 특정한 순서로 함께 동작하는 일련의 이벤트들 입니다.
메시지가 SMTP Receive를 통해 완전히 통과하고 Receive event나 Anti-Spam/Anti-malware 에이전트에 의해 거부되지 않았다면, 메시지는 Submission Queue에 들어갑니다.
Submission: Submission Queue로 메시지를 넣는 프로세스가 Submission입니다. Categorizer는 Categorization을 휘해 한번에 한개의 메시지를 가져옵니다.
- SMTP 수신 커넥터를 통해
- 픽업 디렉터리나 재생 디렉터리를 통해 이러한 디렉터리는 사서함 서버에 존재합니다. 픽업 디렉터리나 재생 디렉터리에 복사되는 올바른 형식의 메시지 파일은 직접 전송 큐에 추가됩니다.
- 전송 에이전트를 통해
Categorizser: Categorizer는 Submission Queue로 부터 한번에 하나의 메시지를 가져 옵니다. 그런 다음 Categorizer는 다음 작업을 완료 합니다.
- 받는 사람 확인(최상위 주소 지정, 확장 및 분기 포함)
- 라우팅 확인
- 콘텐츠 변환
또한 Exchange 조직에서 정의한 Mail 흐름 규칙이 적용됩니다. 분류된 메시지는 메시지의 대상을 기반으로 Delivery Queue에 추가됩니다. 메시지는 대상 사서함 데이터베이스, DAG, Active Directory 사이트, Active Directory 포리스트 또는 외부 도메인에 의해 Queue됩니다.
SMTP Send: 메시지가 Transport Service로부터 라우팅되는 방식은 분류가 발생한 Mailbox 서버를 기준으로 메시지 받는 사람의 위치에 따라 다릅니다. 메시지는 동일한 Mailbox 서버의 Mailbox Transport service로 라우팅되거나 동일한 DAG의 일부인 다른 Mailbox 서버의 Mailbox Transport Service로 라우팅되거나 다른 DAG, Active Directory 사이트 또는 Active Directory 포리스트에 있는 Mailbox 서버의 Transport service로 라우팅되거나 인터넷으로 배달하기 위해 Client Access Server의 Front End Transport Service로 라우팅될 수 있습니다.