Exchange Server 전송 에이전트

전송 에이전트를 사용하면 Microsoft, 타사 공급업체 또는 조직에서 만든 사용자 지정 소프트웨어를 Exchange 서버에 설치할 수 있습니다. 이 소프트웨어는 전송 파이프라인을 통과하는 전자 메일 메시지를 처리할 수 있습니다. 2016년 또는 2019년 Microsoft Exchange Server 전송 파이프라인은 다음 프로세스로 이루어집니다.

  • 사서함 서버의 프런트 엔드 전송 서비스
  • 사서함 서버의 전송 서비스
  • 사서함 서버의 사서함 전송 서비스
  • Edge 전송 서버의 전송 서비스

전송 파이프라인에 대한 자세한 내용은 메일 흐름 및 전송 파이프라인을 참조하세요.

Exchange 전송은 Microsoft Exchange Server 전송 에이전트 SDK를 통해 확장성을 제공합니다. SDK의 Exchange 버전을 사용하면 타사에서 다음과 같은 미리 정의된 클래스를 구현할 수 있습니다.

  • SmtpReceiveAgent
  • RoutingAgent
  • DeliveryAgent

SDK의 라이브러리를 준수하면 결과 어셈블리가 Exchange에 등록됩니다. 이 어셈블리는 SMTP 세션 또는 메시지 처리의 특정 단계에서 에이전트를 로드하고 이벤트 처리기를 호출합니다. 이러한 단계 또는 이벤트는 에이전트 정의의 일부입니다. 에이전트 등록 정보는 XML 구성 파일에 저장됩니다.

다음 목록에서는 Exchange에서 전송 에이전트를 사용하기 위한 요구 사항을 설명합니다.

  • 사서함 서버 및 Edge 전송 서버의 전송 서비스는 SDK의 모든 미리 정의된 클래스를 완벽하게 지원합니다.
  • 프런트 엔드 전송 서비스는 SDK의 SmtpReceiveAgent 클래스만 지원하며 타사 에이전트는 OnEndOfData SMTP 이벤트에서 작동할 수 없습니다.
  • 사서함 전송 서비스는 SDK를 전혀 지원하지 않으므로 사서함 전송 서비스에서 타사 에이전트를 사용할 수 없습니다.

전송 에이전트 관리

전송 에이전트 cmdlet은 전송 서비스와 프런트 엔드 전송 서비스를 구분해야 합니다. 전송 에이전트 관리 cmdlet은 에 %ExchangeInstallPath%TransportRoles\Shared있는 구성 파일을 agents.config 조작합니다.

자세한 내용은 Exchange Server 전송 에이전트 관리를 참조하세요.

전송 에이전트 및 SMTP 이벤트

전송 에이전트는 SMTP 이벤트를 사용합니다. 이러한 이벤트는 메시지가 전송 파이프라인을 통해 이동할 때 트리거됩니다. SMTP 이벤트는 SMTP 변환 도중 및 조직 전체에서의 메시지 라우팅 도중 특정 시점에 메시지에 대한 액세스를 전송 에이전트에 제공합니다.

SMTP 수신은 사서함 서버의 프런트 엔드 전송 서비스, 사서함 서버 및 Edge 전송 서버의 전송 서비스 및 사서함 서버의 사서함 전송 배달 서비스에 있습니다. 범주는 사서함 서버 및 Edge 전송 서버의 전송 서비스에만 존재합니다. 전송 서비스 및 분류자에 대한 자세한 내용은 Exchange Server 메일 라우팅을 참조하세요.

다음 표에는 전송 파이프라인의 메시지에 대한 액세스를 제공하는 SMTP 이벤트가 나열되어 있습니다.

SMTP 수신 이벤트

순서 SMTP 이벤트 설명
1 OnConnectEvent 이 이벤트는 원격 SMTP 호스트의 초기 연결에 의해 트리거됩니다.
2 OnHeloCommand 이 이벤트는 원격 SMTP 호스트에서 HELO 명령을 실행할 때 트리거됩니다.
3 OnEhloCommand 이 이벤트는 원격 SMTP 호스트에서 EHLO 명령을 실행할 때 트리거됩니다.
4 OnStartTlsCommand 이 이벤트는 원격 SMTP 호스트에서 STARTTLS 명령을 실행할 때 트리거됩니다.
5 OnAuthCommand 이 이벤트는 원격 SMTP 호스트에서 AUTH 명령을 실행할 때 트리거됩니다.
6 OnProcessAuthentication 이 이벤트는 원격 SMTP 호스트에 대한 인증이 처리될 때 트리거됩니다.
7 OnEndOfAuthentication 이 이벤트는 원격 SMTP 호스트가 인증을 완료할 때 트리거됩니다.
8 OnXSessionParamsCommand 이 이벤트는 원격 SMTP 호스트에서 XSESSIONPARAMS 명령을 실행할 때 트리거됩니다.
9 OnMailCommand 이 이벤트는 원격 SMTP 호스트에서 MAIL FROM 명령을 실행할 때 트리거됩니다.
10 OnRcptToCommand 이 이벤트는 원격 SMTP 호스트에서 RCPT TO 명령을 실행할 때 트리거됩니다.
11 OnDataCommand 이 이벤트는 원격 SMTP 호스트에서 DATA (텍스트) 또는 BDAT (이진 데이터) 명령을 실행할 때 트리거됩니다.
12 OnEndOfHeaders 이 이벤트는 원격 SMTP 호스트가 전자 메일 메시지 헤더 제출을 완료했을 때 트리거됩니다. 메시지 머리글과 메시지 본문을 구분하는 빈 줄(<CRLF>)로 표시됩니다.
13 OnProxyInboundMessage 이 이벤트는 프런트 엔드 전송 서비스에서 사서함 서버의 전송 서비스로 인바운드 SMTP 세션을 릴레이하거나 프록시 할 때 트리거됩니다.
14 Onendofdata 이 이벤트는 원격 SMTP 호스트가 데이터 종료 명령을 실행하면 트리거됩니다.
  • 명령으로 시작하는 텍스트 세션의 DATA 경우 데이터 표시기의 끝은 입니다 <CRLF>.<CRLF>.
  • 명령으로 시작된 이진 세션의 BDAT 경우 데이터 표시기의 끝은 입니다 BDAT LAST.
** OnHelpCommand 이 이벤트는 원격 SMTP 호스트에서 HELP 명령을 실행하면 트리거됩니다.
** OnNoopCommand 이 이벤트는 원격 SMTP 호스트에서 NOOP 명령을 실행하면 트리거됩니다.
** OnReject 이 이벤트는 수신 SMTP 호스트가 전송 SMTP 호스트에 임시 또는 영구 배달 상태 알림(DSN, 배달 외 보고서, NDR 또는 반송 메시지라고도 함) 코드를 발급하는 경우 트리거됩니다.
** OnRsetCommand 이 이벤트는 보내는 SMTP 호스트에서 RSET 명령을 실행하면 트리거됩니다.
15 OnDisconnectEvent 이 이벤트는 SMTP 호스트를 받거나 보내는 SMTP 대화의 연결 끊김에 의해 트리거됩니다. 일반적으로 이 문제는 원격 SMTP 호스트에서 QUIT 명령을 실행할 때 발생합니다.

** 이러한 이벤트는 OnConnectEvent 이후와 OnDisconnectEvent 이전에 언제든지 발생할 수 있습니다.

범주 이벤트

순서 범주 이벤트 설명
1 OnSubmittedMessage 이 이벤트는 메시지가 받는 Exchange 서버의 전송 서비스에 있는 제출 큐에 도착하면 트리거됩니다.
2 OnResolvedMessage 이 이벤트는 모든 받는 사람이 확인되었지만 각 수신자에 대해 다음 홉이 결정되기 전에 트리거됩니다. OnResolvedMessage 라우팅 이벤트를 사용하면 후속 이벤트가 수신자별 SetRoutingOverride 메서드를 사용하여 기본 라우팅 동작을 재정의할 수 있습니다.
3 OnRoutedMessage 이 이벤트는 메시지가 분류되고, 메일 목록이 확장되고, 받는 사람이 확인된 후에 트리거됩니다.
4 OnCategorizedMessage 이 이벤트는 범주가 메시지 처리를 완료할 때 트리거됩니다.

전송 에이전트 우선 순위

두 가지 요인은 전송 에이전트가 전송 파이프라인의 메시지에 대해 작동하는 순서를 결정합니다.

  1. 전송 에이전트가 등록된 SMTP 이벤트와 해당 SMTP 이벤트가 메시지를 발견할 때입니다.
  2. 동일한 SMTP 이벤트에 여러 에이전트가 등록된 경우 전송 에이전트에 할당되는 우선 순위 값입니다. 가장 높은 우선 순위는 1입니다. 정수 값이 높을수록 에이전트 우선 순위가 낮습니다.

예를 들어 다음 전송 에이전트를 구성한다고 가정해 보겠습니다.

  • 우선 순위가 1인 전송 에이전트 A와 우선 순위가 2인 전송 에이전트 C가 OnEndOfHeaders SMTP 이벤트에 등록되어 있습니다.
  • 우선 순위가 4인 전송 에이전트 B가 OnMailCommand SMTP 이벤트에 등록되어 있습니다.

OnMailCommand 이벤트가 OnEndOfHeaders 이벤트 전에 메시지를 발견하기 때문에 전송 에이전트 B가 메시지에 먼저 적용됩니다. 메시지가 OnEndOfHeaders 이벤트에 도달하면 전송 에이전트 A의 우선 순위가 전송 에이전트 C보다 높기 때문에(낮은 정수 값) 전송 에이전트 C 전에 전송 에이전트 A가 적용됩니다.

기본 제공 전송 에이전트

Exchange Server 스팸 방지, 전송 규칙 및 저널링과 같은 기능을 제공하는 많은 기본 제공 전송 에이전트가 포함되어 있습니다. Exchange 사서함 서버의 기본 제공 전송 에이전트는 대부분 보이지 않으며 전송 에이전트 관리 cmdlet에서 관리할 수 없습니다. 표시되고 관리하기 쉬운 거의 모든 기본 제공 전송 에이전트는 사서함 서버 및 Edge 전송 서버의 전송 서비스에 있습니다.

사서함 서버에서 더 흥미로운 기본 제공 전송 에이전트는 다음 표에 설명되어 있습니다. 이 테이블에는 보이지 않고 관리하기 쉬운 전송 에이전트가 많이 포함되어 있지 않습니다.

사서함 서버의 흥미로운 기본 제공 전송 에이전트

에이전트 이름 관리? 우선 순위 SMTP 또는 범주 이벤트
전송 규칙 에이전트 1 OnResolvedMessage
DLP 정책 에이전트 2 OnResolvedMessage
보존 정책 에이전트 3 OnResolvedMessage
감독 검토 에이전트 4 OnResolvedMessage
맬웨어 에이전트 5 OnSubmittedMessage
문자 메시지 라우팅 에이전트 6 OnSubmittedMessage
문자 메시지 배달 에이전트 7 해당 없음
시스템 프로브 드롭 Smtp 에이전트 8 OnEndOfHeaders
시스템 프로브 드롭 라우팅 에이전트 9 OnCategorizedMessage
저널 에이전트 아니요 구성할 수 없음 OnRoutedMessage
저널 보고서 암호 해독 에이전트 아니오 구성할 수 없음 OnCategorizedMessage
RMS 암호 해독 에이전트 아니오 구성할 수 없음 OnSubmittedMessage
RMS 암호화 에이전트 아니오 구성할 수 없음 OnSubmittedMessage

OnRoutedMessage

RMS 프로토콜 암호 해독 에이전트 아니오 구성할 수 없음 Onendofdata

Edge 전송 서버의 흥미로운 기본 제공 전송 에이전트

Edge 전송 서버에서 대부분의 기본 제공 전송 에이전트는 전송 에이전트 관리 cmdlet 또는 다른 기능별 cmdlet을 통해 표시되고 관리할 수 있습니다.

Edge 전송 서버에서 더 흥미로운 기본 제공 전송 에이전트는 다음 표에 설명되어 있습니다. 이 테이블에는 보이지 않거나 관리하기 쉬운 전송 에이전트가 포함되지 않습니다.

에이전트 이름 관리? 우선 순위 SMTP 또는 범주 이벤트
연결 필터링 에이전트 1 OnConnectEvent

OnMailCommand

OnRcptCommand

OnEndOfHeaders

주소 다시 쓰기 인바운드 에이전트 2 OnRcptCommand

OnEndOfHeaders

Edge 규칙 에이전트 3 Onendofdata
콘텐츠 필터 에이전트* 4 Onendofdata
보낸 사람 ID 에이전트* 5 OnEndOfHeaders
보낸 사람 필터 에이전트* 6 OnMailCommand

OnEndOfHeaders

받는 사람 필터 에이전트 7 OnRcptCommand
프로토콜 분석 에이전트* 8 OnConnectEvent

OnEndOfHeaders

Onendofdata

OnReject

OnRsetCommand

OnDisconnectEvent

첨부 파일 필터링 에이전트 9 Onendofdata
주소 다시 쓰기 아웃바운드 에이전트 10 OnSubmittedMessage

OnRoutedMessage

* 사서함 서버에 이러한 스팸 방지 에이전트를 설치하고 구성할 수도 있습니다. 자세한 내용은 사서함 서버에 대 한 스팸 방지 기능을 사용 하도록 설정을 참조하세요.

전송 에이전트 문제 해결

전송 에이전트 문제를 해결하는 데 도움이 되도록 다음 기능을 사용할 수 있습니다.