Guide
EWS에서 Microsoft Graph로 마이그레이션
Microsoft는 2026년 10월 1일에 Exchange Online에서 EWS를 차단하고, 2027년 4월 1일에 완전히 제거합니다. 이 가이드는 전체 일정, 인증 모델 변경(NTLM에서 OAuth 2.0으로), 기능 호환성 격차, 세 가지 마이그레이션 경로를 다룹니다. Graph API 코드 예제와 프로바이더 비의존적 대안을 포함합니다. Gmail, Outlook, Exchange, Yahoo, iCloud, IMAP과 함께 사용할 수 있습니다.
Written by Caleb Geene Director, Site Reliability Engineering
Reviewed by Nick Barraclough
지원 중단 일정
Microsoft는 2026년 10월 1일에 Exchange Online에 대한 Exchange Web Services (EWS)를 영구적으로 차단하고, 2027년 4월 1일에 완전히 제거합니다. 이 지원 중단은 전 세계 4억 개 이상의 Microsoft 365 상용 시트에 영향을 미칩니다. Microsoft는 2023년 9월에 처음 폐지를 발표했으며 이후 세 차례 일정을 앞당겼습니다.
Microsoft의 공식 지원 중단 페이지에 따르면 주요 날짜는 다음과 같습니다:
| 날짜 | 적용 사항 |
|---|---|
| July 1, 2026 | F1, F3, Kiosk 라이선스에서 EWS 요청 시 HTTP 403 반환 시작 |
| August 2026 | 임시 면제를 위한 AppID AllowList 구성 마감 |
| October 1, 2026 | AllowList에 없는 모든 비 Microsoft 앱에 대해 EWS 차단 |
| April 1, 2027 | EWS 영구 제거. 재활성화 없음, 예외 없음 |
아무 조치도 취하지 않으면 EWS 기반 코드는 2026년 10월부터 오류를 반환합니다. TechCommunity 공지에서 Microsoft가 옵트인하지 않은 테넌트에 EWSEnabled=False를 설정할 것임을 확인했습니다.
온프레미스 Exchange: 영향 없음
EWS 지원 중단은 Exchange Online(Microsoft 365)에만 적용됩니다. 온프레미스에서 운영되는 Exchange Server 2016 및 2019는 완전한 EWS 지원을 유지하며 수명 종료 날짜가 발표되지 않았습니다. 하이브리드 Exchange를 운영하는 조직(Microsoft 추정에 따르면 기업 Exchange 배포의 약 40%)은 분할 상황에 직면합니다: 클라우드 사서함은 Graph API로 마이그레이션해야 하고 온프레미스 사서함은 계속 EWS를 사용합니다.
이러한 이중 프로토콜 현실은 하이브리드 환경에서 두 가지 인증 흐름과 두 가지 API 표면이 필요하거나, 사서함 위치에 따라 올바른 프로토콜로 요청을 라우팅하는 추상화 계층이 필요함을 의미합니다.
인증 모델: NTLM/Basic에서 OAuth 2.0으로
EWS에서 Microsoft Graph로 마이그레이션하려면 NTLM, Kerberos 또는 Basic Auth를 Azure AD(현재 Entra ID) 앱 등록을 통한 OAuth 2.0으로 교체해야 합니다. Microsoft는 2022년 10월에 Exchange Online에 대한 Basic Auth를 중단했으며, Graph API는 출시 이후 OAuth 2.0을 필수로 요구해 왔습니다. 액세스 토큰은 60-90분마다 만료되고, 갱신 토큰은 90일 후 재인증이 필요합니다.
- Azure AD 앱 등록: Mail.Read, Mail.Send, Calendars.ReadWrite 등의 스코프 설정
- 흐름 선택: 사용자 컨텍스트용 인증 코드(위임), 데몬/서비스 앱용 클라이언트 자격 증명(애플리케이션)
- 토큰 수명 주기 관리: 액세스 토큰 60-90분 만료, 갱신 토큰 90일
- 관리자 동의: 애플리케이션 수준 권한은 테넌트 관리자 승인 필요
아래 코드는 EWS Basic Auth와 Graph OAuth 2.0 인증의 차이를 보여줍니다. EWS는 연결에 최소 3줄이면 충분했지만, Graph는 API 호출 전에 올바른 스코프가 구성된 Azure AD 앱 등록이 필요합니다.
# EWS (이전) - Basic Auth 또는 NTLM
$cred = Get-Credential
$service = New-Object Microsoft.Exchange.WebServices.Data.ExchangeService
$service.Credentials = $cred
$service.Url = "https://outlook.office365.com/EWS/Exchange.asmx"
# Graph API (새로운 방식) - MSAL을 통한 OAuth 2.0
Connect-MgGraph -Scopes "Mail.Read","Mail.Send"
$messages = Get-MgUserMessage -UserId "me" -Top 10기능 호환성 격차 (2026년 4월 기준)
Microsoft Graph API는 핵심 메일, 캘린더, 연락처 작업을 지원하지만 EWS와의 완전한 호환성이 최소 4개 영역에서 아직 부족합니다: 아카이브 사서함 접근, 공용 폴더 CRUD, 사서함 가져오기/내보내기, 반복 이벤트 델타 쿼리. Microsoft는 2024년부터 분기별 릴리스 주기로 격차를 줄여왔지만, 완전한 기능 호환 날짜를 확정하지 않았습니다.
아래 표는 각 EWS 기능을 Graph API 상태에 매핑합니다. 데이터는 Microsoft의 TechCommunity 업데이트에서 가져왔으며 가장 많이 참조되는 10개의 EWS 기능을 다룹니다:
| EWS 기능 | Graph API 상태 |
|---|---|
| 아카이브 사서함 접근 | 사용 불가 |
| 공용 폴더 CRUD | 계획 없음 -- Outlook 클라이언트에서만 사용 가능 |
| 사서함 가져오기/내보내기 | 사용 불가 |
| 반복 이벤트 델타 쿼리 | 부분 지원 |
| 사용자 구성 (딕셔너리 항목) | Exchange Admin API (미리보기)로 지원 |
| 확장 속성 (커스텀 MAPI 속성) | singleValueExtendedProperties를 통해 지원 |
| Autodiscover | 불필요 -- Graph는 단일 엔드포인트 사용 |
| 메일 읽기/보내기/검색 | 완전 호환 |
| 캘린더 이벤트 CRUD | 완전 호환 |
| 연락처 CRUD | 완전 호환 |
Microsoft는 일부 격차에 대한 임시 브릿지로 Exchange Admin API를 출시했습니다. 하지만 모든 호환성 격차가 해소되는 확정 날짜는 없습니다.
세 가지 마이그레이션 경로
EWS에서 이전하는 조직에는 세 가지 옵션이 있습니다: Microsoft Graph API로 직접 마이그레이션, 임시 AppID AllowList 연장 등록, 또는 프로바이더 비의존적 추상화 계층 채택. 올바른 선택은 일정, 하이브리드 Exchange 요구 사항, 애플리케이션이 지원하는 프로바이더 수에 따라 달라집니다. Microsoft의 자체 계획 가이드에 따르면 대부분의 팀은 직접 Graph 마이그레이션에 2-6개월이 필요합니다.
경로 1: Microsoft Graph API로 마이그레이션
공식 경로는 모든 EWS 호출을 동등한 Graph 호출로 교체합니다. Microsoft는 코드베이스를 스캔하고 EWS 작업을 Graph API 동등 기능에 매핑하는 EWS 코드 분석기를 제공합니다. 분석기는 각 EWS 메서드, 호출 횟수, 해당 Graph 엔드포인트를 나열하는 CSV 보고서를 출력합니다.
# EWS: 제목으로 이메일 검색
$view = New-Object Microsoft.Exchange.WebServices.Data.ItemView(50)
$filter = New-Object Microsoft.Exchange.WebServices.Data.SearchFilter+ContainsSubstring(
[Microsoft.Exchange.WebServices.Data.ItemSchema]::Subject, "invoice")
$results = $service.FindItems(
[Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::Inbox, $filter, $view)
# Graph: 동일한 작업
$messages = Get-MgUserMessage -UserId "me" -Filter "contains(subject, 'invoice')" -Top 50장점: Microsoft 에코시스템 내에서 유지, 최신 기능 접근 가능. 단점: Azure AD 앱 등록 필요, OAuth 토큰 관리, 비 Microsoft 프로바이더 미지원, 기능 호환성 격차.
경로 2: 임시 AppID AllowList
AllowList는 EWS 접근을 2026년 10월부터 2027년 4월 1일까지 6개월 연장합니다. 테넌트 관리자는 2026년 8월 전에 애플리케이션의 클라이언트 ID를 등록해야 하며, 그렇지 않으면 면제가 적용되지 않습니다. Microsoft의 문서에 따르면 이것은 2027년 4월 이후 갱신 옵션이 없는 일회성 연장입니다.
# 현재 EWS 설정 확인
Get-OrganizationConfig | Select-Object EwsEnabled, EwsAllowList
# AllowList에 앱 추가
Set-OrganizationConfig -EwsAllowList @{Add="your-app-client-id"}
Set-OrganizationConfig -EwsEnabled $true장점: 즉시 코드 변경 불필요. 단점: 문제를 6개월만 지연. EWS는 2027년 4월 1일에 영구 제거.
경로 3: 통합 추상화 사용
프로바이더 비의존적 추상화는 EWS와 Graph 라우팅을 내부적으로 처리하므로 Microsoft가 프로토콜을 폐지해도 코드 변경이 필요하지 않습니다. Nylas CLI는 Exchange Online, 온프레미스 Exchange, Gmail, Outlook, Yahoo, iCloud, IMAP을 하나의 인터페이스로 연결합니다. 동일한 명령어가 프로토콜별 로직 없이 모든 6개 프로바이더에서 작동합니다.
# 설치
brew install nylas/nylas-cli/nylas
# 인증 (OAuth, EWS, Graph를 내부적으로 처리)
nylas auth config
# 이메일 읽기 -- 사서함이 Exchange Online (Graph),
# Exchange 온프레미스 (EWS), Gmail 중 어디든 동작
nylas email list --limit 10
# 검색
nylas email search "invoice" --limit 50
# 보내기
nylas email send \
--to "colleague@company.com" \
--subject "Report" \
--body "The report is ready: <report-download-link>"장점: 프로토콜별 코드 불필요, Azure AD 앱 등록 불필요, 모든 프로바이더에서 작동, 온프레미스와 클라우드를 하나의 인터페이스로 지원. 단점: 외부 의존성. Nylas API 키 필요.
나란히 비교
세 가지 접근 방식은 인증 복잡도, 프로바이더 범위, 마이그레이션 노력 면에서 다릅니다. EWS는 3가지 인증 방법(NTLM, Kerberos, Basic)을 지원했고, Graph API는 OAuth 2.0만 요구하며, Nylas CLI는 단일 구성 명령어로 인증을 처리합니다. 아래 표는 마이그레이션 계획에 영향을 미치는 7가지 운영 관심사에 대해 세 가지를 비교합니다.
| 관심사 | EWS (폐지 예정) | Graph API | Nylas CLI |
|---|---|---|---|
| 인증 | NTLM / Basic / OAuth | OAuth 2.0만 | 일회성 nylas auth config |
| Azure AD 앱 필요 | 아니오 (Basic) / 예 (OAuth) | 예 | 아니오 |
| 온프레미스 Exchange | 지원 | 미지원 | 지원 (내부적으로 EWS 사용) |
| Exchange Online | 2026년 10월 차단 | 지원 | 지원 (내부적으로 Graph 사용) |
| Gmail, Yahoo, iCloud | 미지원 | 미지원 | 지원 |
| 토큰 관리 | 수동 | 수동 (MSAL) | 자동 |
| 필요한 코드 변경 | 해당 없음 (폐지 예정) | EWS에서 전면 재작성 | 일회성 마이그레이션 |
하이브리드 Exchange: 이중 코드베이스 문제
하이브리드 Exchange 환경은 2026년 10월 이후 두 개의 별도 코드 경로를 유지해야 합니다: 클라우드 사서함용 Microsoft Graph와 온프레미스 Exchange Server용 EWS. Microsoft Graph는 온프레미스 Exchange Server를 지원하지 않으므로, 분할 배포를 가진 조직은 단일 Microsoft API로 통합할 수 없습니다. Microsoft의 하이브리드 문서에 따르면, 하이브리드 구성은 기업 Exchange 배포의 상당 부분을 차지합니다.
이 이중 프로토콜 분할은 동일한 애플리케이션에서 두 가지 인증 흐름(Graph용 Azure AD OAuth, 온프레미스 EWS용 NTLM 또는 Kerberos), 두 가지 API 표면, 두 가지 오류 처리 세트를 강제합니다. Nylas 플랫폼은 이 라우팅을 내부적으로 처리합니다 -- 사서함이 클라우드인지 온프레미스인지 감지하고 코드 변경 없이 적절한 프로토콜을 사용합니다.
마이그레이션 체크리스트
완전한 EWS 마이그레이션은 영향을 받는 모든 라이선스 유형에 걸쳐 인증, API 표면, 오류 처리, 테스트를 다룹니다. Microsoft는 Azure AD 앱 등록, 관리자 동의, 테스트 주기를 고려하여 2026년 10월 마감일 최소 3개월 전에 마이그레이션을 시작할 것을 권장합니다. 아래 6단계는 감사부터 프로덕션 전환까지 전체 프로세스를 다룹니다.
- EWS 사용 현황 감사 -- Microsoft의 EWS 코드 분석기를 실행하여 모든 EWS 호출 목록 작성
- 호환성 격차 확인 -- EWS 작업을 위의 기능 격차 표와 비교
- 2026년 8월 전에 앱 등록 -- 시간이 더 필요하면 AllowList에 앱 추가
- F1/F3 라이선스로 먼저 테스트 -- 2026년 3월에 이미 차단되었으므로 새로운 동작을 확인할 수 있음
- 하이브리드 계획 -- 온프레미스 Exchange가 있다면 이중 프로토콜 분할 처리 방법 결정
- Microsoft 업데이트 모니터링 -- 기능 호환성 격차가 분기별로 해소 중
자주 묻는 질문
EWS 지원 중단은 일정, 온프레미스 영향, 기능 격차, 마이그레이션 대안에 대한 질문을 제기합니다. 다음은 마이그레이션을 계획하는 개발자들이 가장 많이 묻는 4가지 질문으로, Microsoft의 TechCommunity 포럼과 공식 지원 중단 문서에서 다루는 주제를 기반으로 합니다.
Exchange Online에서 EWS는 언제 폐지되나요?
Microsoft는 2026년 10월 1일부터 비 Microsoft 앱의 EWS 요청을 차단합니다. 2026년 8월 전에 AppID AllowList를 구성한 테넌트는 임시 면제를 받습니다. 모든 EWS 접근은 2027년 4월 1일에 영구 제거됩니다.
온프레미스 Exchange Server에서도 EWS가 지원 중단되나요?
아니요. EWS는 Exchange Server 2016 및 2019에서 완전히 지원됩니다. 지원 중단은 Exchange Online(Microsoft 365)에만 영향을 미칩니다.
Graph API에 없는 EWS 기능은 무엇인가요?
2026년 4월 기준, Graph API는 아카이브 사서함 접근, 공용 폴더 CRUD, 사서함 가져오기/내보내기, 완전한 반복 이벤트 델타 지원이 부족합니다. Microsoft는 분기별로 격차를 해소하고 있지만 완전한 호환 날짜를 확정하지 않았습니다.
마이그레이션을 완전히 건너뛸 수 있나요?
예, 추상화 계층을 사용하면 가능합니다. Nylas 플랫폼은 Exchange Online, 온프레미스 Exchange 및 4개의 다른 프로바이더를 단일 인터페이스로 연결합니다. 프로바이더 측 지원 중단이 있어도 코드 변경이 필요하지 않습니다.
다음 단계
EWS 마이그레이션 경로를 계획한 후, 아래 가이드에서 Nylas CLI를 통한 특정 Exchange 작업을 다룹니다. 각 가이드에는 테스트된 명령어, 프로바이더별 문제 해결, 6개 지원 프로바이더에 대한 코드 예제가 포함되어 있습니다.
- EWS 폐지 체크리스트 -- 위험한 스크립트를 목록화하고 2단계 Exchange 동작 테스트 실행
- CLI에서 Exchange 이메일 조회 -- EWS나 Graph 없이 Exchange 사서함 읽기 및 검색
- CLI에서 Exchange 캘린더 관리 -- 이벤트 생성, 수정, 삭제
- Send-MgUserMessage 대체 -- Graph PowerShell cmdlet에서 마이그레이션
- PowerShell에서 Office 365 이메일 관리 -- M365 받은편지함 읽기, 검색, 정리
- 터미널에서 이메일 보내기 -- 크로스 프로바이더 이메일 전송 가이드
- 전체 명령어 레퍼런스 -- 모든 플래그와 하위 명령어 문서화