Ver 1.2 2024/12/17 - Exchange Server 2019. 구성 (CU14, Nov24SUv2 / Windows Server 2022)으로 새로 포스팅
Ver 1.1 2023/02/09 - Exchange Server 2019. Deployment (2) 구성 (CU12, Jan23SU 기준) - CU12, Jan23SU 기준으로 수정, 인증서 설정, 가상디렉터리 설정등 대폭 수정
2020.12.11 - [Exchange] - Exchange Server 2019. Deployment (2) 구성 (CU12, Jan23SU 기준)
Ver 1.0 2020/12/09 - Exchange Server 2019. 설치 (1) -초판
지난 포스팅
Step 1. 송신커넥터 설정 (Must)
수신은 별도의 설정 없이도 가능하지만, 송신은 반드시 커넥터 설정을 진행해야 합니다.
Mail flow -> send connectors -> New (+)
Connector 이름 지정 -> Type: Internet -> Next
Next
Add
FQDN 지정 -> Save
Next
Add -> Source Server 지정 -> Finish
송신 커넥터 생성 확인
https://localhost/owa 에 접속 및 로그인 후 테스트 메일 발송 (Outlook.com은 작성한 날짜를 기준으로 SPF레코드를 등록하지 않아도 발송되는 것으로 확인됩니다.) -> 수신 확인
Step 2. 가상 디렉터리 설정 (Recommend)
Outlook 등 여러 Client 연결을 위해서 가상 디렉터리 설정을 진행합니다.
Exchange Management Shell을 실행합니다.
아래의 Script를 실행합니다.
#공통으로 지정할 URL 입력
$url = "https://mail.wingtiptoys.kr"
$autodiscover = "https://autodiscover.wingtiptoys.kr"
#Virtual Directory 내외부 동일하게 변경
#ECP
Get-EcpVirtualDirectory | Set-EcpVirtualDirectory -InternalUrl "$url/ecp" -ExternalUrl "$url/ecp"
#EWS
Get-WebservicesVirtualDirectory | Set-WebservicesVirtualDirectory -InternalUrl "$url/ews/Exchange.asmx" -ExternalUrl "$url/ews/Exchange.asmx"
#MAPI
Get-MapiVirtualDirectory | Set-MapiVirtualDirectory -InternalUrl "$url/mapi" -ExternalUrl "$url/mapi"
#EAS
Get-ActiveSyncVirtualDirectory | Set-ActiveSyncVirtualDirectory -InternalUrl "$url/Microsoft-Server-ActiveSync" -ExternalUrl "$url/Microsoft-Server-ActiveSync"
#OAB
Get-OabVirtualDirectory | Set-OabVirtualDirectory -InternalUrl "$url/oab" -ExternalUrl "$url/oab"
#OWA
Get-OwaVirtualDirectory | Set-OwaVirtualDirectory -InternalUrl "$url/owa" -ExternalUrl "$url/owa"
#Autodiscover
Get-ClientAccessService | Set-ClientAccessService -AutodiscoverServiceInternalUri "$autodiscover/autodiscover/autodiscover.xml"
#각각의 서버에서 아래의 명령어 진행
IISReset
Step 3. Accepted Domain
테스트 환경처럼 Corp. 로 도메인을 생성하거나 .local로 생성할 경우에는 실제 수신할 수 있는 주소를 accepted domain을 추가해야 합니다.
Mail flow -> accepted domains -> + (추가)
도메인을 추가합니다.
Step 4. Email Address Policies 수정
새로 생성되는 사서함이 자동으로 추가한 도메인으로 지정하려면 Email address policies를 수정해야 합니다.
Mail flow -> email address policies -> Default Policy
Email address format -> 수정
Email address parameters 를 수정합니다.
Save
Step 5. DNS 설정 (Must)
내부 DNS 서버, 외부 DNS 서버에 Autodiscover, OWA, SPF, MX 레코드에 대한 값을 입력합니다. (영상 참고)
예시) 내부 DNS
예시) 외부 DNS
Step 6. 인증서 설치 (Must)
처음에는 Exchange Server UI에서 인증서 요청을 작성하였으나, 최근에는 Digicert에서 제공하는 Tool이 간편해서 해당 Tool을 이용해서 생성하고 있습니다.
실무에서는 대부분 인증서 판매업체에서 대부분의 과정을 진행해줍니다.
Create CSR
저는 Multi SAN을 구매하여, 그 기준으로 작성하였습니다.
CSR 복사
구매한 인증서 사이트에서 발급 과정 진행
도메인 인증과정은 DNS 인증과정을 진행하거나
Email로 수신하여 인증할 수 있습니다.
발급 받은 인증서를 Import
파일을 지정
이름 지정 -> Finish
인증서 설치됨 확인
아래의 명령어를 진행하여 설치한 인증서를 바인딩합니다.
#설치된 인증서 조회
Get-ExchangeCertificate
#인증서 바인딩
Enable-ExchangeCertificate -Thumbprint <지문값> -Services IIS,SMTP -DoNotRequireSsl
#IIS 서비스 재시작 (Exchange Management Shell을 관리자 권한으로 실행 필요)
IISReset
내부, 외부에서 Exchange Server에 접속하여 인증서가 올바르게 적용되었는지를 확인합니다.
Step 7. DB 관리 (Optional)
실제 환경에서 DB 위치와 설치경로를 동일하게 하는 경우는 거의 없습니다.
D 드라이브로 이동해 보도록 하겠습니다.
우선 Servers -> Databases 메뉴로 이동하면 기본 DB 이름을 확인할 수 있습니다.
아래의 명령어를 진행합니다.
#각 서버에서 진행
#DB 이름 변경
Get-MailboxDatabase -Identity "DB명"|Set-Mailboxdatabase -Name "새DB명"
#DB 경로 이동
Move-DatabasePath "새DB명" -EdbFilePath "D:\EDB01\EDB01.edb" -LogFolderPath "D:\EDB01\"
지정된 경로로 edb와 로그 파일들이 이동된 것을 확인할 수 있습니다.
Admin Center에서 변경된 정보를 확인합니다.
그리고 DB 의 로그의 용량은 상당하기 때문에, 백업 솔루션을 사용하지 않는 다면, 순환 로깅 사용을 설정합니다.
Servers -> databases -> maintenance -> Enable circular logging
Step 8. 메일 송수신 로그 활성화 및 경로 변경 (Optional)
SMTP와 관련된 로그가 일부 영역만 활성화 되어 있습니다.
Mail Flow 분석이 필요한 경우를 대비하여 관련 로그를 활성화하고, 경로 또한 별도로 관리하는 것을 권장합니다.
다음 명령어로 변경합니다.
#Exchange 메일 송수신 Log 위치 변경
$path= "D:\ExchangeLogs"
#Frontend Transport Service
Get-FrontendTransportService | Set-FrontendTransportService -ConnectivityLogPath "$path\Frontend\Connectivity" -ReceiveProtocolLogPath "$path\Frontend\ProtocolLog\SmtpReceive" -SendProtocolLogPath "$path\Frontend\ProtocolLog\SmtpSend" -AgentLogPath "$path\Frontend\AgentLog" -DnsLogPath "$path\Frontend\DNSLog" -DnsLogEnabled $true
Get-FrontendTransportService | Set-FrontendTransportService -IntraOrgConnectorProtocolLoggingLevel Verbose
#Transport Service
Get-Transportservice | Set-TransportService -ConnectivityLogPath "$path\Hub\Connectivity" -MessageTrackingLogPath "$path\MessageTracking" -IrmLogPath "$path\IRMLogs" -ActiveUserStatisticsLogPath "$path\Hub\ActiveUsersStats" -ServerStatisticsLogPath "$path\Hub\ServerStats" -ReceiveProtocolLogPath "$path\Hub\ProtocolLog\SmtpReceive" -SendProtocolLogPath "$path\Hub\ProtocolLog\SmtpSend" -QueueLogPath "$path\Hub\QueueViewer" -WlmLogPath "$path\Hub\WLM" -PipelineTracingPath "$path\Hub\PipelineTracing" -AgentLogPath "$path\Hub\AgentLog" -DNSLogEnabled $true -DnsLogPath "$path\Hub\DNSLog"
Get-TransportService | Set-TransportService -IntraOrgConnectorProtocolLoggingLevel Verbose
#Mailbox Transport Service
Get-MailboxTransportService | Set-MailboxTransportService -ConnectivityLogPath "$path\Mailbox\Connectivity" -ReceiveProtocolLogPath "$path\Mailbox\ProtocolLog\SmtpReceive" -SendProtocolLogPath "$path\Mailbox\ProtocolLog\SmtpSend" -MailboxDeliveryThrottlingLogPath "$path\Mailbox\ProtocolLog\Delivery" -MailboxDeliveryAgentLogPath "$path\Mailbox\AgentLog\Delivery" -MailboxSubmissionAgentLogPath "$path\Mailbox\AgentLog\Submission"
Get-MailboxTransportService | Set-MailboxTransportService -MailboxDeliveryConnectorProtocolLoggingLevel Verbose
#Enable Logging about Send & ReceiveConnector
Get-SendConnector | Set-SendConnector -Protocollog Verbose
Get-ReceiveConnector | Set-ReceiveConnector -Protocollog Verbose
결과 확인
Step 9. 사용하지 않는 수신 커넥터 비활성화
POP3, IMAP, Outbound Proxy를 사용하지 않는다면, 아래의 표시된 커넥터들을 비활성화 합니다.
Step 10. IIS 로그 경로 변경 (Optional)
Exchange 에서 가장 리소스를 많이 차지하는 영역 중 하나는 IIS 입니다.
IIS Log는 별도로 관리하지 않으면, C 드라이브 용량이 부족해 질 수 있으므로 별도의 경로로 관리하는 것을 권장합니다.
IIS Manager - [서버] - Logging
아래와 같이 변경 후 적용
IISReset을 진행한 뒤, 아래와 같이 로그가 저장되는 것을 확인합니다.
Step 11. http to https redirection 설정 (Optional)
실제 기업환경은 대부분 http(80) 입력을 하였을 때, https(443)로 리디렉션 하는 설정을 진행합니다.
MS 기술자료에서 진행하는 방법이 자세히 설명되어 있으며, 아래의 자료를 기준으로 진행합니다.
Exchange Server에서 웹용 Outlook에 대 한 http 리디렉션을 구성 합니다.
IIS 관리자를 사용하여 기본 웹 사이트에서 SSL 필요 설정을 제거
%windir%\system32\inetsrv\appcmd.exe set config "Default Web Site" -section:access -sslFlags:None -commit:APPHOST
IIS 관리자를 사용하여 기본 웹 사이트의 다른 가상 디렉터리에 SSL 필요 설정 복원
%windir%\system32\inetsrv\appcmd.exe set config "Default Web Site/api" -section:Access -sslFlags:Ssl,Ssl128 -commit:APPHOST
%windir%\system32\inetsrv\appcmd.exe set config "Default Web Site/aspnet_client" -section:Access -sslFlags:Ssl,Ssl128 -commit:APPHOST
%windir%\system32\inetsrv\appcmd.exe set config "Default Web Site/Autodiscover" -section:Access -sslFlags:Ssl,Ssl128 -commit:APPHOST
%windir%\system32\inetsrv\appcmd.exe set config "Default Web Site/ecp" -section:Access -sslFlags:Ssl,Ssl128 -commit:APPHOST
%windir%\system32\inetsrv\appcmd.exe set config "Default Web Site/EWS" -section:Access -sslFlags:Ssl,Ssl128 -commit:APPHOST
%windir%\system32\inetsrv\appcmd.exe set config "Default Web Site/mapi" -section:Access -sslFlags:Ssl,Ssl128 -commit:APPHOST
%windir%\system32\inetsrv\appcmd.exe set config "Default Web Site/OAB" -section:Access -sslFlags:Ssl,Ssl128 -commit:APPHOST
%windir%\system32\inetsrv\appcmd.exe set config "Default Web Site/owa" -section:Access -sslFlags:Ssl,Ssl128 -commit:APPHOST
하위 가상 디렉터리에 대한 http 리디렉션 제거
%windir%\system32\inetsrv\appcmd.exe set config "Default Web Site/API" -section:httpredirect -enabled:false -destination:"" -childOnly:false
%windir%\system32\inetsrv\appcmd.exe set config "Default Web Site/aspnet_client" -section:httpredirect -enabled:false -destination:"" -childOnly:false
%windir%\system32\inetsrv\appcmd.exe set config "Default Web Site/ecp" -section:httpredirect -enabled:false -destination:"" -childOnly:false
%windir%\system32\inetsrv\appcmd.exe set config "Default Web Site/ews" -section:httpredirect -enabled:false -destination:"" -childOnly:false
%windir%\system32\inetsrv\appcmd.exe set config "Default Web Site/mapi" -section:httpredirect -enabled:false -destination:"" -childOnly:false
%windir%\system32\inetsrv\appcmd.exe set config "Default Web Site/owa" -section:httpredirect -enabled:false -destination:"" -childOnly:false
%windir%\system32\inetsrv\appcmd.exe set config "Default Web Site/powershell" -section:httpredirect -enabled:false -destination:"" -childOnly:false
%windir%\system32\inetsrv\appcmd.exe set config "Default Web Site/rpc" -section:httpredirect -enabled:false -destination:"" -childOnly:false
#IIS 다시시작
IISRESET
#만약 운영서버가 여러대라면, 모든서버에서 동일하게 진행합니다.
작동 여부는 어떻게 확인하나요?
- 클라이언트 컴퓨터에서 웹 브라우저를 열고 URL http://를 입력 합니다 <ServerName> . 로컬 서버에서 값 또는를 사용할 수 있습니다 http://127.0.0.1 http://localhost .
- Https에서 웹의 Outlook으로 리디렉션되어 있는지 확인 하 고 로그인 할 수 있는지 확인 합니다.
- URL http:// <ServerName> /owa 또는 또는를 엽니다 http://127.0.0.1/owa http://localhost/owa) .
- Https에서 웹의 Outlook으로 리디렉션되어 있는지 확인 하 고 로그인 할 수 있는지 확인 합니다.
#그리고 당연한 얘기이지만, 80 포트에 대한 포워딩 설정이 Exchange를 가리켜야 합니다.
아래와 같이 입력후 엔터 입력시
아래와 같이 리디렉션 됩니다.
Step 12. 큐 DB 위치 변경 (Optional)
기술자료: Change the location of the queue database | Microsoft Learn
일반적으로는 아래의 경로에 큐DB가 존재합니다.
C:\Program Files\Microsoft\Exchange Server\V15\TransportRoles\data\Queue
큐에 메일이 쌓이면, Mail.que 파일이 커지게 됩니다. 디스크 용량이 부족해지는 수준에 도달하면 Transport 서비스가 중지됩니다. 이러한 서비스 장애를 사전에 예방하기 위해서 큐DB의 위치를 변경하여 관리하는 경우가 많습니다.
새로 지정할 큐DB 폴더를 생성합니다. (테스트 환경에서는 D드라이브에 설정했지만, 실제 환경에서는 DB와 다른 위치 사용을 권장합니다.
명령 프롬프트를 관리자 권한으로 실행합니다.
다음 명령어를 실행합니다.
Notepad %ExchangeInstallPath%Bin\EdgeTransport.exe.config
다음 위치를 찾습니다.
<add key="QueueDatabasePath" value="<LocalPath>" />
<add key="QueueDatabaseLoggingPath" value="<LocalPath>" />
아래와 같이 변경 -> 저장
<add key="QueueDatabasePath" value="D:\Queue" />
<add key="QueueDatabaseLoggingPath" value="D:\Queue" />
Microsoft Exchange Transport 서비스를 재시작 합니다.
아래와 같이 변경되는 것을 확인할 수 있습니다.
Step 13. OAB 지정 (Optional)
각 DB에 대해서 OAB를 지정합니다.
이번 포스팅은 여기서 마치겠습니다. 세부적으로 들어가면 각각의 항목에는 전제가 있습니다.
기회가 되면 각 항목에 대해서 자세히 다뤄보겠습니다.