After reviewing that video, viewers requested a guide on how to configure alerts via Email. In this session, I will demonstrate how to create that flow. Recently, chatbots generated in Copilot Studio have been referred to as Agents. Unless there are changes, I will continue to define them as Agents. The environment is set to USA (Early), the browser language is set to English, and the work is being done using the Preview URL.
To enable connections from various clients like Outlook, proceed with configuring the virtual directories.
Run the Exchange Management Shell.
#Enter the URL to be used commonly across the virtual directories.
$url = "https://mail.wingtiptoys.kr"
$autodiscover = "https://autodiscover.wingtiptoys.kr"
#Set the Virtual Directory internal and external URLs to be identical.
#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"
#Run the following commands on each server.
IISReset
Step 3. Accepted Domain
If you create a domain like Corp. or .local in a test environment, you must add an accepted domain for the actual receiving address.
Go to Mail flow -> Accepted domains -> Click + (Add).
Add the domain.
Step 4. Modify Email Address Policies
To ensure that newly created mailboxes are automatically assigned to the added domain, you need to modify the Email Address Policies.
Mail flow -> email address policies -> Default Policy
Go to Email address format -> Make the necessary modifications.
Modify the Email Address Parameters.
Save
Step 5: DNS Configuration (Must)
Add the values for Autodiscover, OWA, SPF, and MX records to both the internal and external DNS servers. (Refer to the video for detailed instructions.)
Example: Internal DNS
Example: External DNS
Step 6: Install Certificates (Must)
Initially, certificate requests were created through the Exchange Server UI, but recently, I’ve been using the Tool provided by Digicert for its simplicity.
In practice, most of the process is typically handled by the certificate provider.
Create CSR
I purchased a Multi SAN (Subject Alternative Name) certificate and have written this guide based on that.
Copy the CSR
Proceed with the issuance process on the certificate provider’s website where you purchased the certificate.
For domain verification, you can either proceed with the DNS verification process or:
Verify the domain by receiving an email and completing the authentication process.
Import the issued certificate into the server.
Specify the certificate file.
Specify a name -> Click Finish.
Verify that the certificate has been successfully installed.
#View the installed certificate.
Get-ExchangeCertificate
#Certificate Binding
Enable-ExchangeCertificate -Thumbprint <Thumbprint> -Services IIS,SMTP -DoNotRequireSsl
#Restart the IIS service (requires running Exchange Management Shell with administrative privileges).
IISReset
Verify that the certificate has been correctly applied by accessing the Exchange Server from both internal and external networks.
Step 7. Manage Database (Optional)
In a company environment, it is uncommon to keep the database location and the installation path the same. Let's move it to the D drive.
First, navigate to Servers -> Databases to check the default database name.
Perform this process on each server.
#Change Database Name
Get-MailboxDatabase -Identity "old DB name"|Set-Mailboxdatabase -Name "New DB name"
#Change the database path
Move-DatabasePath "New DB name" -EdbFilePath "D:\EDB01\EDB01.edb" -LogFolderPath "D:\EDB01\"
You can verify that the .edb and log files have been moved to the specified path.
Check the updated information in the Admin Center.
Since the log files of the database can grow significantly, it is recommended to enable circular logging if you are not using a backup solution.
Use IIS Manager to remove the Require SSL setting from the Default Web Site.
%windir%\system32\inetsrv\appcmd.exe set config "Default Web Site" -section:access -sslFlags:None -commit:APPHOST
Use IIS Manager to restore the Require SSL setting for other virtual directories under the Default Web Site.
%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
Use IIS Manager to configure the Default Web Site to redirect to the /owa virtual directory. (Enter the actual URL you configured in this command)
%windir%\system32\inetsrv\appcmd.exe set config "Default Web Site" -section:httpredirect -enabled:true -destination:"https://mail.wingtiptoys.kr/owa" -childOnly:true
Remove HTTP redirection for the sub-virtual directories.
%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
Restart IIS
IISRESET
If there are multiple production servers, repeat the same process on all servers.
How to Verify Functionality:
On a client computer, open a web browser and enter the URL: http://<ServerName>
Verify that the request is redirected to Outlook on the Web (HTTPS) and confirm that you can log in.
When emails accumulate in the queue, the Mail.que file increases in size. If it reaches a level where disk space becomes insufficient, the Transport Service will stop. To prevent such service disruptions in advance, the location of the Queue DB is often changed and managed.
Create a new folder for the Queue DB. (In the test environment, it was set to the D drive, but in a production environment, it is recommended to use a location separate from the database.)
Step 13. Specify the Offline Address Book (OAB) (Optional)
Assign the Offline Address Book (OAB) to each database.
This concludes this post. When delving into details, each item has its own prerequisites. If the opportunity arises, I will cover each topic in greater detail.
Following the Domain Controller configuration, this time I will cover configuring Exchange Server 2019 on Windows Server 2022. It appears that Windows Server 2025 will be supported starting with CU15.
The VM environment is as follows:
DC: Windows Server 2025, 4 Core, RAM: 4GB
EX: Windows Server 2022, 8 Core, RAM: 10GB, Exchange Server 2019 CU12
This was written based on the following resources.
Create a service account to be used for Exchange Server.
Assign the Enterprise Admins and Schema Admins permissions to the service account.
Join the server to the Active Directory (AD) using the service account.
Run Netplwiz.
Grant Administrator permissions to the service account.
[Step 2] Virtual Memory Configuration
Since virtual memory can impact performance, it is highly recommended to set it to a fixed size.
System -> Advanced system settings -> Advanced -> Settings
Advanced -> Change
Specify the virtual memory size -> Click Set -> Click OK.
According to the 2019 technical documentation, virtual memory is recommended to be set to 25% of the configured RAM, likely because the minimum recommended RAM is 128GB.
(However, in a test environment, it is recommended to set it to RAM + 10MB.)
OK
Restart Now
[Step 3] Install Required Features and Roles
Install the following prerequisite components.
Visual C++ Redistributable Package for Visual Studio 2012
Taking advantage of the release of Windows Server 2025, I’m planning to rewrite my previously posted test environment configuration. This time, I’ll pay more attention to creating a YouTube video as well.
Since Windows Server 2016, the methods and UI for configuring a Domain Controller (DC) have remained almost the same. However, engineers who are just starting out often prefer to work with the latest version, and there’s a tendency to assume that if the version numbers differ, the configuration steps might differ too. To address this, I’ve written a configuration guide for Windows Server 2025, even though the content is essentially the same.
This time, I’ll focus on Domain Controller (DC) configuration, and if time permits, I’ll proceed with an Exchange setup as well.
For the virtual machine (VM) specifications, I’ve allocated 4 cores for the CPU and 4GB of RAM. In the past, 2GB used to suffice, but it seems insufficient for recent demands.
Please refer to my previous posts or videos for instructions on installing Windows Server 2025 and performing Sysprep.
Navigate to Server Manager -> Local Server -> Click on Computer Name.
Change
Change the computer name to something that clearly identifies it as a Domain Controller. -> The system will reboot.
Local Server -> Ethernet
Right-click on Network Adapter -> Select Properties.
Select IPv4.
Enter the IP address according to your environment. Set the DNS to point to the IP address of the Domain Controller itself.
Server Manager -> Dashboard -> Add roles and features
Next
Next
Next
Check Active Directory Domain Services.
Add Features
Next
Next
Next
Install
Promote Domain Controller
Add a new forest -> Root domain name 입력 -> Next
For reference, the reason for adding "Corp" before the domain name is based on Microsoft's Best Practices. From a personal perspective, adding "corp" has the following advantages:
1. It allows for separation of internal and external DNS, as the root domain might serve as the homepage in browsers.
2. Using ".local" in domains like "contoso.local" prevents the use of public certificates.
After creating the DSRM Password, proceed to Next. Until Windows Server 2022, the functional level was set to 2016, but it has now been upgraded to 2025 in Windows Server 2025.
Next
Next
Next
Next
Install
DC configuration is complete.
Click Close, and the system will reboot shortly after.
Log in using the Domain account as shown below.
Active Directory Domains and Trusts
Right-click on Active Directory Domains and Trusts -> Select Properties.
Enter the domain to be used for user accounts -> Click Add -> Click OK.
Run Active Directory Users and Computers (ADUC).
Right-click on the Domain -> Select New -> Choose Organizational Unit (OU).
Create an Organizational Unit (OU) for service accounts.
Right-click on the newly created OU -> Select New -> Choose User.
Create an Admin account to be used on the DC as shown below. (It is recommended not to use the default Administrator account for security purposes.)
Enter the password -> Click Next.
Finish
Right-click on the newly created account -> Select Properties.
Go to the Member Of tab -> Click Add -> Search for and add the following groups:
Sign out and verify if you can log in using the newly created account.
Proceed with setting up a Secondary DC. While not mandatory in a test environment, having at least two Domain Controllers is essential in a production environment for redundancy and reliability.
As before, change the Computer Name.
Set the DNS of the Network Adapter to point to the Main DC.
Server Manager -> Local Server -> WORKGROUP
Change
Enter the Domain -> Click OK.
Enter the DC Service Account that was previously created.
Sign in
Add roles and features
Proceed with the installation of Active Directory Domain Services Roles in the same manner as on the Main DC.
Unlike before, select Add a domain controller to an existing domain and proceed with the configuration.
Enter the DSRM Password -> Click Next.
Next
Next
Next
Next
Click Install -> Once the installation is complete, the system will reboot.
For the Secondary DC, update the DNS settings so that the Primary DNS points to itself.
In Active Directory Users and Computers (ADUC), you can verify that both Domain Controllers are listed.
To take advantage of the new OS, I'll upgrade the AD Domain Controllers DC01 and DC02 to Windows Server 2025.
In a real-world environment, many factors would need to be considered, but since this is a test environment, I will only cover the basic upgrade process.
The Windows Server 2025 installation image created earlier using Sysprep was utilized.
When troubleshooting in M365, it's common for administrators to use PowerShell for the process.
However, it raises the question of whether this really needs to be done within Copilot Studio. Nonetheless, I decided to write about it since there are tasks that occasionally require PowerShell.
This was carried out with reference to the technical documentation below.
Since Power Apps and Power Automate are different areas, each requires a separate login.
Unlike Exchange Online, there is no need to enter separate connection commands. Simply enter the command you wish to use, and it will prompt you to provide your credentials.
Enter the following command to connect to Power Apps:
Get-AdminPowerAppEnvironment
Enter the following command to connect to Power Automate:
Get-AdminFlow
In the future, if a PowerShell connection is needed for Copilot Studio, you can access and utilize it as required.