Exchange Server 2007용 SMTP 프로토콜 확장

 

적용 대상: Exchange Server 2007 SP3, Exchange Server 2007 SP2, Exchange Server 2007 SP1, Exchange Server 2007

마지막으로 수정된 항목: 2009-09-17

SMTP(Simple Mail Transfer Protocol) 엔진은 COM 이벤트의 기본 디스패처입니다. 핵심 SMTP 프로토콜 엔진은 모든 표준 SMTP 통신을 담당하며 대부분의 표준 SMTP 서비스 확장을 처리합니다. 구체적으로, 핵심 SMTP 엔진은 RFC(Request for Comment) 821 및 RFC 1869에 정의되어 있는 ESMTP(Extended Simple Mail Transfer Protocol) 표준을 처리합니다. 프로토콜 이벤트를 사용하면 SMTP 프로토콜을 수정하여 새 ESMTP 명령을 추가할 수 있으며, 기존 명령의 작업을 변경할 수도 있습니다. Exchange Server 2007은 이러한 프로토콜 이벤트를 사용하여 Exchange 관련 확장 SMTP 명령을 구현함으로써 표준 SMTP보다 조직의 다른 Exchange 서버와 보다 효율적으로 통신합니다.

텔넷을 사용하여 SMTP 가상 서버의 TCP 포트에 연결하면 Exchange Server 2007용 확장 SMTP 명령이 로드되어 있는지 확인할 수 있습니다. EHLO 명령을 전송하여 ESMTP 연결을 시작하면 서버 응답에 SMTP 가상 서버에서 지원하는 기능이 표시됩니다. HELP 명령을 전송하면 표준 명령이 나열됩니다.

다음 표에서는 Exchange 확장 SMTP 서비스에서 지원하는 SMTP 기능에 대해 설명합니다.

Exchange Server 2007에서 지원되는 SMTP 기능

SMTP 서버 응답 설명

8BITMIME

로컬 SMTP 가상 서버가 8비트 MIME(Multipurpose Internet Mail Extension) 메시지를 지원함을 나타냅니다.

AUTH, AUTH GSSAPI NTLM LOGIN 및 AUTH=LOGIN

로컬 SMTP 가상 서버가 SMTP 인증 서비스 확장을 지원함을 나타냅니다. AUTH 키워드 다음의 추가 정보는 지원되는 인증 메커니즘을 나타냅니다.

BDAT, CHUNKING

DATA 명령의 대체 항목으로, 두 개의 인수를 사용합니다. SMTP 가상 서버가 CHUNKING 응답으로 EHLO 명령에 응답하면 BDAT 명령을 지원하고 있으며 청크 메시지를 허용할 것임을 나타냅니다.

첫 번째 인수는 이진 데이터 패킷의 길이를 나타내기 때문에, SMTP 호스트가 데이터 끝을 계속 검색하지 않아도 됩니다. 받는 서버는 메시지의 바이트를 계산하며, 메시지 크기가 BDAT 명령에서 보낸 값과 같아지면 모든 메시지 데이터를 받은 것으로 간주합니다. 두 번째 인수는 데이터 패킷이 현재 전송의 마지막 패킷인지를 나타냅니다. 이 인수는 선택 사항입니다.

BINARYMIME

SMTP 가상 서버에서 전송 인코딩이 적용되지 않은 이진 내용이 포함된 메시지를 허용함을 나타냅니다. 이러한 메시지에서는 BINARYMIME 값이 있는 BODY 매개 변수를 MAIL 명령과 함께 사용해야 합니다. SMTP 서버가 BINARYMIME의 BODY 매개 변수가 있는 MAIL 명령을 허용하면 BDAT 명령을 통해 전달되는 각 8진수의 모든 비트를 유지하겠다고 동의하는 것입니다. BINARYMIME SMTP 확장은 오직 CHUNKING과 함께 사용해야 합니다.

DATA

원격 호스트가 메시지 콘텐츠 전송을 시작하기 위해 보내는 명령입니다.

DSN

RFC(Request for Comment) 1891에 정의된 대로, 배달 상태 알림을 사용할 수 있도록 하는 ESMTP 명령입니다.

EHLO

클라이언트가 ESMTP 세션 시작을 알리기 위해 보내는 명령입니다. 서버는 EHLO에 대한 응답으로 ESMTP 명령을 지원함을 나타낼 수 있습니다.

HELO

클라이언트가 대개 도메인 이름으로 자신을 식별하고 표준 SMTP 세션 시작을 알리기 위해 보내는 명령입니다.

HELP

ESMTP 세션이 아닌 표준 SMTP 세션에서 SMTP 가상 서버가 지원하는 SMTP 명령 목록을 반환합니다.

MAIL

메시지 보낸 사람을 식별하여 메시지 전송 시작을 나타냅니다. MAIL FROM 형식으로 사용됩니다.

PIPELINING

각 명령 후에 응답을 기다리지 않고도 명령 스트림을 보낼 수 있도록 합니다.

QUIT

표준 또는 확장 SMTP 세션 끝을 알립니다.

RCPT

메시지 받는 사람을 나타냅니다. RCPT TO 형식으로 사용됩니다.

RSET

전체 메시지 트랜잭션을 무효화하고 버퍼를 다시 설정합니다.

SIZE

SMTP 가상 서버에서 지원되는 최대 메시지 크기를 나타낼 수 있는 메커니즘을 제공합니다. 호환 서버는 허용되는 최대 메시지 크기를 나타내도록 크기 확장을 제공해야 합니다. 원격 호스트는 서버에서 지정하는 크기보다 큰 메시지를 보내서는 안 됩니다.

STARTTLS

SMTP 서버가 TLS(전송 계층 보안)를 통한 보안 SMTP를 지원함을 나타냅니다. TLS를 통한 보안 SMTP용 SMTP 서비스 확장은 RFC 2487에 정의되어 있습니다.

VRFY

사서함을 메시지 배달에 사용할 수 있는지 확인합니다. 예를 들어 VRFY TED는 Ted의 사서함이 로컬 서버에 있는지 확인합니다. 기본적으로 이 명령은 Exchange 2007에서 사용할 수 있지만, 사용자를 확인하지는 않습니다. 서버는 사용자를 확인할 수 없어도 메시지는 허용한다고 원격 호스트에 알립니다. 서버 응답의 형식은 252 2.1.5 Cannot VRFY user, but will take message for Ted@wingtiptoys.com과 같습니다.

XEXCH50

Exchange 2007 서버 간 통신 중에 MDBEF(Message Database Encoding Format) 형식으로 확장 메시지 전송 봉투 속성을 보낼 수 있도록 합니다.

X-EXPS GSSAPI NTLM LOGIN, X-EXPS=LOGIN

X-EXPS는 Exchange 전용 명령으로, Exchange 2007, Exchange 2003 및 Exchange 2000을 실행하는 서버에서 인증에 사용할 수 있는 다음과 같은 메서드를 나타내므로 AUTH와 비슷합니다.

GSSAPI   Generic Security Services Application Programming Interface를 의미하며, Kerberos를 통한 인증을 가능하게 하는 메서드입니다.

NTLM   Windows NT and LAN Manager를 의미하며, Windows NT Challenge/Response 프로토콜을 통한 인증을 가능하게 하는 메서드입니다.

LOGIN   AUTH LOGIN을 의미하며, Base 64로 인코딩된 사용자 이름 및 암호를 사용하는 암호화되지 않은 텍스트 인증 메서드입니다.

X-LINK2STATE

SMTP 서비스에 연결 상태 전파 지원을 추가합니다. 라우팅 그룹 내에서와 라우팅 그룹 간에 연결 상태 정보를 전파하는 데 사용되는 연결 상태 알고리즘에 대한 자세한 내용은 메시지 라우팅 아키텍처를 참조하십시오.

참고

모든 Exchange 관련 SMTP 명령은 "X-"(따옴표는 제외)로 시작합니다. SMTP 가상 서버의 EHLO 응답에 이러한 명령이 없으면 서버에서 Windows Server 기반 버전의 SMTP 서비스를 실행 중인 것입니다. 이러한 경우에는 Exchange Server 2007 및 모든 서비스 팩을 다시 설치해야 합니다.

프로토콜 이벤트 범주

SMTP 프로토콜 엔진은 프로토콜 이벤트를 트리거하여 호스트 간 통신을 제어합니다. SMTP를 통한 이와 같은 통신에서는 다음과 같은 세 가지 기본 유형의 이벤트가 발생할 수 있습니다.

  • SMTP 서비스가 SMTP 명령을 받음

    이러한 이벤트는 원격 SMTP 호스트 또는 클라이언트가 HELO 또는 EHLO 명령을 보내 로컬 SMTP 서비스에 연결한 다음 세션을 설정하면 발생합니다. 들어오는 연결에 대한 SMTP 프로토콜 OnInboundCommand 이벤트가 이 범주에 해당합니다.

  • SMTP 서비스가 SMTP 응답을 받음

    이러한 이벤트는 로컬 SMTP 서비스가 원격 SMTP 호스트 또는 클라이언트로부터 아웃바운드 SMTP 명령에 대한 응답을 받으면 발생합니다. 아웃바운드 연결에 대한 SMTP 프로토콜 OnServerResponse 이벤트가 이 범주에 해당합니다.

  • SMTP 서비스가 SMTP 명령을 보냄

    이러한 이벤트는 로컬 SMTP 서비스가 원격 SMTP 호스트에 연결한 다음 메시지 전송을 위한 세션을 설정하면 발생합니다. 아웃바운드 연결에 대한 SMTP 프로토콜 OnSessionBegin, OnMessageStart, OnPerRecipient, OnBeforeData 및 OnSessionEnd 이벤트가 이 범주에 해당합니다.

다음 표에는 각 SMTP 프로토콜 이벤트의 용도에 대해 간략하게 설명되어 있습니다.

SMTP 서비스의 프로토콜 이벤트

이벤트 설명

OnInboundCommand

SMTP 프로토콜 서비스에서 SMTP 명령을 받으면 발생합니다. 이 경우 이벤트 싱크에서 응답할 수 있습니다.

OnServerResponse

SMTP 서비스에서 이전에 보낸 SMTP 명령에 대한 SMTP 응답을 받으면 발생합니다.

OnSessionBegin

EHLO 명령이 전송되기 전에 발생합니다.

OnMessageStart

MAIL FROM 명령이 전송되기 전에 발생합니다.

OnPerRecipient

RCPT TO 명령이 전송되기 전에 발생합니다.

OnBeforeData

DATA 프로토콜 명령이 전송되기 전에 발생합니다.

OnSessionEnd

QUIT 명령이 전송되기 전에 발생합니다.

Exchange 관련 SMTP 프로토콜 확장

Exchange Server 2007 설치 프로그램은 다음 SMTP 프로토콜 기능을 위한 Exchange 관련 SMTP 프로토콜 확장을 등록합니다.

XEXCH50

XEXCH50은 봉투 메시지, 받는 사람 속성 등의 특정 메시지 속성을 릴레이하는 데 사용되는 Exchange ESMTP 확장입니다. XEXCH50 명령은 간단한 명령입니다. 성공 유형 응답을 받은 XEXCH50 명령 뒤에는 가변 크기의 BLOB(Binary Large Object)가 붙습니다. 크기는 XEXCH50 명령의 첫 인수와 일치합니다.

이 기능은 Exchange를 실행하는 두 서버 간에 완전한 통신을 지원하기 위해 9개의 이벤트 싱크로 구현됩니다. 다음 표에는 프로토콜 이벤트와 해당 XEXCH50 이벤트 싱크가 나와 있습니다. 모든 XEXCH50 싱크는 Program Files\Exchsrvr\bin 디렉터리에 있는 Peexch50.dll에서 구현됩니다.

XEXCH50 명령을 위한 프로토콜 확장

이벤트 싱크 프로토콜 이벤트 설명

Exchange SMTP Protocol XEXCH50 Before Data Sink

OnBeforeData

DATA 프로토콜 명령이 곧 전송된다고 XEXCH50 싱크에 알립니다. 이제 XEXCH50 싱크는 SMTP 서비스에 XEXCH50 통신을 시작하기 위한 XEXCH50 명령을 대신 보내도록 요청할 수 있습니다.

Exchange SMTP Protocol XEXCH50 Inbound EHLO Sink

OnInboundCommand

EHLO 명령을 받았음을 XEXCH50 싱크에 알립니다.

Exchange SMTP Protocol XEXCH50 Inbound XEXCH50 Sink

OnInboundCommand

XEXCH50 대화를 시작하기 위한 XEXCH50 명령을 구현합니다.

Exchange SMTP Protocol XEXCH50 Inbound MAIL Sink

OnInboundCommand

XEXCH50 대화에서 MAIL 명령을 구현합니다.

Exchange SMTP Protocol XEXCH50 Inbound MAIL Sink

OnInboundCommand

로컬 SMTP 가상 서버가 들어오는 XEXCH50 통신에서 받는 사람 정보를 받을 수 있도록 합니다.

Exchange SMTP Protocol XEXCH50 Per Recipient Event Sink

OnPerRecipient

로컬 SMTP 가상 서버가 나가는 XEXCH50 통신에서 받는 사람 정보를 보낼 수 있도록 합니다.

Exchange SMTP Protocol XEXCH50 Ehlo Response Sink

OnServerResponse

EHLO 명령을 원격 호스트로 보낸 후에 로컬 SMTP 가상 서버가 응답을 받을 수 있도록 합니다. 원격 호스트로부터의 응답은 XEXCH50 통신이 지원된다는 것을 나타낼 수 있습니다. 연결 호스트로 반환되는 지원 명령 목록에는 XEXCH50이 포함되어 있습니다.

Exchange SMTP Protocol XEXCH50 Response Sink

OnServerResponse

로컬 SMTP 가상 서버가 이전에 실행한 아웃바운드 XEXCH50 명령에 대한 응답을 받을 수 있도록 합니다. 예를 들어 로컬 SMTP 서비스가 사전 인증을 거치지 않고 XEXCH50 명령을 실행한 경우 원격 서버는 '504 Need to authenticate first'로 응답합니다.

Exchange SMTP Protocol XEXCH50 RCPT Response Sink

OnServerResponse

로컬 SMTP 가상 서버가 아웃바운드 RCPT 명령에 표시되는 각 받는 사람의 상태 정보를 원격 Exchange 서버로부터 받을 수 있도록 합니다. 받는 사람 주소 형식이 잘못되거나 서버에서 릴레이하지 못할 수 있습니다. 받는 사람 정보가 올바르면 원격 SMTP 가상 서버는 250 2.1.5 administrator@tailspintoys.com과 같은 상태 정보가 포함된 주소를 다시 로컬 SMTP 서비스에 반영합니다.

X-LINK2STATE

X-LINK2STATE 명령 및 응답은 SMTP 관련 확장입니다. 이 명령은 Exchange 전용이며, Exchange SMTP 서버 간에 라우팅 토폴로지 정보를 교환하기 위한 것입니다. X-LINK2STATE 명령 및 응답의 최대 가능 크기는 1,024바이트이며, 이 크기는 X-LINK2STATE 명령 및 응답의 실제 크기인 경우가 많습니다.

이 기능은 5개의 이벤트 싱크로 구현됩니다. 그러나 다음 표에 나와 있는 것처럼 하나의 이벤트 싱크가 두 개의 별도 이벤트에 사용됩니다. 모든 X-LINK2STATE 이벤트 싱크는 \Program Files\Exchsrvr\bin 디렉터리에 있는 Xlsasink.dll에서 구현됩니다.

X-LINK2STATE 명령을 위한 프로토콜 확장

이벤트 싱크 프로토콜 이벤트 설명

EHLO Inbound Command Handler Sink for XLSA

OnInboundCommand

들어오는 EHLO 명령을 받았음을 X-LINK2STATE 이벤트 싱크에 알립니다.

X-LSA Inbound Command Handler Sink

OnInboundCommand

들어오는 X-LINK2STATE 명령을 받았음을 X-LINK2STATE 이벤트 싱크에 알립니다.

X-LSA Sink

OnMessageStart, OnSessionEnd

아웃바운드 X-LINK2STATE 통신 시작(MAIL 명령) 및 끝(QUIT 명령)을 알립니다. 전송 중인 Orginfo 패킷을 원격 SMTP 가상 서버에서 최종적으로 받으므로, 아웃바운드 RCPT 명령에서 받는 사람을 지정할 필요가 없습니다. 이 이벤트 싱크는 연결 상태 정보를 전송합니다.

X-LSA Response Handler Sink

OnServerResponse

들어오는 X-LINK2STATE 명령에 대해 연결 상태 정보를 전송하는 방법에 대한 정보로 응답합니다. 응답의 예로는 200 LAST CHUNK={00000029} MULTI (5) ({00000010} DONE_RESPONSE)가 있으며, 이는 SMTP 가상 서버에서 보낸 마지막 데이터 청크를 나타냅니다.

EHLO Response Handler Sink for X-LSA

OnServerResponse

X-LINK2STATE 명령을 서버 응답에 나열하여, 들어오는 EHLO 명령에 응답합니다.

X-EXPS

X-EXPS는 AUTH와 비슷하지만 Exchange 전용 동사입니다. 데이터 청크의 최대 크기나 교환되는 데이터 청크 수에는 제한이 없습니다. 데이터 명령 및 응답 구문은 LOGIN, NTLM, GSSAPI 등 선택하는 AUTH 패키지에 따라 달라집니다. 자세한 내용은 AUTH RFC를 참조하십시오.

EXPS는 Exchange Protocol Security를 의미하지만, SMTP 프로토콜만 참조합니다. Exchange 2000 Server 및 Exchange Server 2003에서 사용되는 일부 동사는 이들 제품 전용이며, ESMTP 동사와 함께 제공됩니다. 이러한 동사를 ESMTP X 동사라고 합니다.

이러한 기능은 다음 표에 나와 있는 5개의 이벤트 싱크로 구현됩니다. 모든 프로토콜 보안 확장은 Program Files\Exchsrvr\bin 디렉터리에 있는 Exps.dll에서 구현됩니다.

X-EXPS 프로토콜 보안 확장

이벤트 싱크 프로토콜 이벤트 설명

Exchange SMTP Protocol Security EXPS-EOD Sink

OnInboundCommand

데이터 전송 끝( _EOD)을 알립니다.

Exchange SMTP Protocol Security EXPS-Aux Sink

OnInboundCommand

들어오는 AUTH 명령을 알립니다.

Exchange SMTP Protocol Security EHLO Sink

OnInboundCommand, OnServerResponse

들어오는 EHLO 명령을 알리고 X-EXPS 명령을 서버 응답에 나열하여 EHLO에 응답합니다.

Exchange SMTP Protocol Security Mail Sink

OnInboundCommand, OnServerResponse, OnMessageStart

데이터 전송 시작을 나타냅니다. 이 이벤트 싱크는 모든 관련 MAIL 명령 시나리오에 대해 구현되며, 들어오는 MAIL 명령을 알리고 들어오는 MAIL 명령에 응답하며 아웃바운드 MAIL 명령을 실행하는 이벤트를 처리합니다.

Exchange SMTP Protocol Security EXPS Sink

OnInboundCommand, OnServerResponse, OnSessionStart

X-EXPS 세션 시작을 나타냅니다. 이 이벤트 싱크는 모든 관련 X-EXPS 명령 시나리오에 대해 구현되며, 들어오는 X-EXPS 명령을 알리고 들어오는 X-EXPS 명령에 응답하며, 아웃바운드 X-EXPS 명령을 실행할 수 있는 이벤트를 처리합니다.

스팸 제어

이 기능은 들어오는 SMTP 연결에서 보낸 사람 및 받는 사람 정보를 처리하는 3개의 이벤트 싱크로 구현됩니다. 다음 표에 이러한 이벤트 싱크가 나와 있습니다. 스팸 제어 이벤트 싱크는 Program Files\Exchsrvr\bin 디렉터리에 있는 Turflist.dll에서 구현됩니다.

스팸 제어 SMTP 확장

이벤트 싱크 프로토콜 이벤트 설명

RCPT Inbound Command Handler Sink

OnInboundCommand

확인해야 하는 받는 사람 주소가 있는 인바운드 RCPT 명령을 알립니다.

MAIL Inbound Command Handler Sink for TURF

OnInboundCommand

확인해야 하는 보낸 사람 주소가 있는 인바운드 MAIL 명령을 알립니다.

EOD Inbound Command Handler Sink

OnInboundCommand

인바운드 _EOD 명령을 알립니다.

X-ANONYMOUSTLS

Exchange 2007에서 새롭게 제공되는 매개 변수로, 이 매개 변수를 사용하면 인바운드 익명 TLS(전송 계층 보안) 인증서나 아웃바운드 익명 TLS(전송 계층 보안) 인증서를 선택할 수 있습니다. Exchange는 Active Directory 디렉터리 서비스를 쿼리하여 서버에서 인증서 지문을 검색합니다. 서버 개체의 msExchServerInternalTLSCert 특성은 인증서 지문을 저장합니다. msExchServerInternalTLSCert 특성을 읽을 수 없거나 값이 Null일 경우 Exchange는 SMTP 세션에서 X-ANONYMOUSTLS를 보급하지 않고 인증서가 로드되지 않습니다.

XLONGADDR

Exchange 2007에서 새롭게 제공되는 매개 변수로, 이 매개 변수를 사용하면 수신 커넥터에서 긴 X.400 전자 메일 주소를 허용할 수 있습니다. X.400 전자 메일 주소는 IMCEA(Internet Mail Connector Encapsulated Address) 캡슐화 방법을 사용하여 SMTP 전자 메일 주소로 캡슐화됩니다.

이 매개 변수의 값이 $False이면 전체 SMTP 전자 메일 주소의 최대 길이는 571자입니다.

이 매개 변수의 값이 $True이면 다음과 같이 변경됩니다.

  • XLONGADDR 키워드가 수신 커넥터의 EHLO 응답으로 보급됩니다.

  • SMTP 세션에 허용된 줄 길이가 8,000자로 늘어납니다.

  • 유효한 긴 주소가 MAIL FROM: 및 RCPT TO: SMTP 명령에 의해 허용됩니다.

그러므로 IMCEA 캡슐화 후에는 X.400 전자 메일 주소가 최대 1,860자까지 가능해집니다.

이 매개 변수에 대한 유효한 입력 범위는 $True 또는 $False입니다. 기본값은 $False입니다. 허브 전송 서버에 구성되어 있는 수신 커넥터에서만 이 매개 변수를 수정할 수 있습니다.

XRDST

Exchange 2007에서 새롭게 제공되는 매개 변수로, 이 프로토콜 확장은 메시지에 연결된 라우팅 대상을 원격 서버에 전달하는 데 사용됩니다. 원격 서버에서 XRDST를 보급하지 않는데 보내려는 메시지에 XRDST 지원이 필요한 경우에는 MSExchangeTransport 이벤트 ID 2021이 이벤트 로그에 기록됩니다. 이 이벤트의 심볼 이름은 tuple_SmtpSendUnableToTransmitRDst입니다. 이 이벤트는 메시지를 보낼 수 없음을 나타냅니다.

EXPS EXCHANGEAUTH GSSAPI NTLM

Exchange 2007에서 새롭게 제공되는 매개 변수로, X-ANONYMOUSTLS 후에 보급되는 기본 수신 커넥터 서비스 확장입니다.

X-EXCHANGEAUTH SHA256

Exchange 2007에서 새롭게 제공되는 매개 변수로, X-ANONYMOUSTLS 후에 보급되는 기본 수신 커넥터 서비스 확장입니다.