<?xml version="1.0" encoding="utf-8" standalone="yes"?><?xml-stylesheet href="/feed_style.xsl" type="text/xsl"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="https://www.rssboard.org/media-rss">
  <channel>
    <title>Exchange Server on El blog de Ignacio</title>
    <link>https://www.igalvan.es/tags/exchange-server/</link>
    <description>Recent content in Exchange Server on El blog de Ignacio</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>es</language>
    <copyright>Ignacio Galván Vitas</copyright>
    <lastBuildDate>Fri, 25 Mar 2022 17:20:00 +0100</lastBuildDate><atom:link href="https://www.igalvan.es/tags/exchange-server/index.xml" rel="self" type="application/rss+xml" /><icon>https://www.igalvan.es/logo.svg</icon>
    
    
    <item>
      <title>Integrar Exchange 2019 con Apereo CAS mediante ADFS (Parte 5)</title>
      <link>https://www.igalvan.es/posts/exchange-adfs-apereo-cas-parte-5/</link>
      <pubDate>Fri, 25 Mar 2022 17:20:00 +0100</pubDate>
      
      <guid>https://www.igalvan.es/posts/exchange-adfs-apereo-cas-parte-5/</guid>
      <description><![CDATA[<p>Hoy llegamos a la parte 5 donde veremos alguna prueba del resultado final y algunos cambios interesantes que pueden mejorar la experiencia de usuario.</p>
<h2 id="acceso-al-owa">Acceso al OWA</h2>
<p>El acceso al OWA lo haremos como siempre, accediendo por la URL que hayamos definido para este servicio que en nuestro caso es <a href="https://exlab.olimpo.lab/owa">https://exlab.olimpo.lab/owa</a>.</p>
<p>Cuando accedamos en vez de mostrarnos el formulario clásico del OWA veremos una página llamada Home Realm Discovery donde deberemos seleccionar el proveedor que vamos a usar para autenticarnos, que en nuestro caso será apereolab.olimpo.lab.</p>
<p><img src="/images/2022/20220325-exchange-adfs-apereo-cas-parte-5-img_2.png" alt="image-20220325-exchange-adfs-apereo-cas-parte-5-img_2"></p>
<p>Al hacer eso accederemos al formulario del CAS donde introducieremos las credenciales de acceso. Bastante sencillo, ¿no?</p>
<p><img src="/images/2022/20220325-exchange-adfs-apereo-cas-parte-5-img_3.png" alt="image-20220325-exchange-adfs-apereo-cas-parte-5-img_3"></p>
<p>Pues vamos a introducir una mejora, en realidad a nosotros ya no nos interesa que el usuario se valide mediante Directorio Activo o que tenga que seleccionar un proveedor de identididades por que con estos dos comandos de PowerShell vamos a forzar que el proveedor sea el CAS.</p>
<p>{% highlight posh %}
Set-AdfsRelyingPartyTrust -TargetName &ldquo;Outlook on the web&rdquo; -ClaimsProviderName &ldquo;apereolab.olimpo.lab&rdquo;
Set-AdfsRelyingPartyTrust -TargetName &ldquo;Exchange Control Panel&rdquo; -ClaimsProviderName &ldquo;apereolab.olimpo.lab&rdquo;
{% endhighlight %}</p>
<h2 id="una-mejora-de-última-hora">Una mejora de última hora</h2>
<p>Ya había terminado de redactar este tutorial cuando realizando un par de pruebas encontré la forma de evitar que al cerrar sesión se muestre este mensaje tan feo.</p>
<p><img src="/images/2022/20220325-exchange-adfs-apereo-cas-parte-5-img_1.png" alt="image-20220325-exchange-adfs-apereo-cas-parte-5-img_1"></p>
<p>Todo lo que hay que hacer es editar el fichero <code>cas.properties</code> de nuestro CAS y añadir la siguiente línea:</p>
<p>{% highlight conf %}
cas.authn.saml-idp.logout.sign-logout-response=true
{% endhighlight %}</p>
<p>Reiniciamos el CAS y listo, problema solucionado.</p>
<p><img src="/images/2022/20220325-exchange-adfs-apereo-cas-parte-5-img_4.png" alt="image-20220325-exchange-adfs-apereo-cas-parte-5-img_4"></p>
<p>Y con esto damos por terminado este tutorial. Cualquier comentario, ya sabéis, a través de mis redes sociales.</p>
]]></description>
      
    </item>
    
    
    
    <item>
      <title>Integrar Exchange 2019 con Apereo CAS mediante ADFS (Parte 4)</title>
      <link>https://www.igalvan.es/posts/exchange-adfs-apereo-cas-parte-4/</link>
      <pubDate>Tue, 22 Mar 2022 16:19:00 +0100</pubDate>
      
      <guid>https://www.igalvan.es/posts/exchange-adfs-apereo-cas-parte-4/</guid>
      <description><![CDATA[<p>Hoy llegamos a la parte 4 donde explicaremos la configuración de la parte de Apereo CAS. En nuestro caso hemos utilizado, como habíamos comentando anteriormente, el CAS Overlay porque simplica el trabajo de configuración y despliegue del Apereo CAS. Suponiendo que hayas descargado la última versión desde GitHub, vamos a tocar los siguientes ficheros:</p>
<ul>
<li>/etc/cas/config/cas.properties.</li>
<li>/etc/cas/services/cas_saml-100.json.</li>
<li>/etc/cas/services/adfs-101.json.</li>
<li>/etc/cas/metadata/adfs-metadata.xml.</li>
</ul>
<h2 id="antes-de-comenzar">Antes de comenzar</h2>
<p>En el fichero build.gradle del CAS Overlay se han añadido las implementaciones de IDP, JSON Service Registry y LDAP. Posteriormente hemos ejecutado el comando <code>./gradlew clean build</code> para crear el fichero WAR que usaremos. Para ejecutar el CAS hemos usado el comando <code>java -jar build/lib/cas.war</code></p>
<p>También tendremos que crear un usuario que nos permita autenticar contra Directorio Activo para poder obtener la información de los usuarios. En el caso de este laboratorio el usuario creado es &ldquo;APEREO USER&rdquo;.</p>
<h2 id="fichero-etccasconfigcasproperties">Fichero /etc/cas/config/cas.properties</h2>
<p>{% highlight conf %}
as.server.name=https://apereolab.olimpo.lab:8443
cas.server.prefix=${cas.server.name}/cas
logging.config=file:/etc/cas/config/log4j2.xml
cas.authn.saml-idp.core.entity-id=https://apereolab.olimpo.lab/idp
cas.service-registry.json.location: file:/etc/cas/services
cas.authn.ldap[0].order=1
cas.authn.ldap[0].name=AD-OLIMPO
cas.authn.ldap[0].ldap-url=ldap://exlab.olimpo.lab:389
cas.authn.ldap[0].base-dn=dc=olimpo,dc=lab
cas.authn.ldap[0].bind-dn=CN=APEREO USER,OU=Administrators,DC=olimpo,DC=lab
cas.authn.ldap[0].bind-credential=&lt;TU_PASSWORD&gt;
cas.authn.ldap[0].type=AUTHENTICATED
cas.authn.ldap[0].subtreeSearch=true
cas.authn.ldap[0].searchFilter=(&amp;(objectClass=person)(sAMAccountName={user}))
cas.authn.ldap[0].principalAttributeList=sAMAccountName,mail,userPrincipalName
{% endhighlight %}</p>
<h2 id="fichero-etccasservicescas_saml-100json">Fichero /etc/cas/services/cas_saml-100.json</h2>
<p>Aquí nuevamente hemos hecho un poco de trampas para que capture cualquier URL.</p>
<p>{% highlight conf %}
{
&ldquo;@class&rdquo;: &ldquo;org.apereo.cas.services.RegexRegisteredService&rdquo;,
&ldquo;serviceId&rdquo;: &ldquo;http://.+&rdquo;,
&ldquo;name&rdquo; : &ldquo;cas_saml&rdquo;,
&ldquo;id&rdquo; : 100,
&ldquo;evaluationOrder&rdquo; : 100
}
{% endhighlight %}</p>
<h2 id="fichero-etccasservicesadfs-101json">Fichero /etc/cas/services/adfs-101.json</h2>
<p>{% highlight conf %}
{
&ldquo;@class&rdquo;: &ldquo;org.apereo.cas.support.saml.services.SamlRegisteredService&rdquo;,
&ldquo;serviceId&rdquo;: &ldquo;<a href="http://fs.olimpo.lab/adfs/services/trust%22">http://fs.olimpo.lab/adfs/services/trust&quot;</a>,
&ldquo;name&rdquo;: &ldquo;adfs&rdquo;,
&ldquo;id&rdquo;: 101,
&ldquo;evaluationOrder&rdquo;: 101,
&ldquo;description&rdquo;: &ldquo;adfs lab service&rdquo;,
&ldquo;logoutType&rdquo;: &ldquo;NONE&rdquo;,
&ldquo;attributeReleasePolicy&rdquo;: {
&ldquo;@class&rdquo;: &ldquo;org.apereo.cas.services.ReturnAllAttributeReleasePolicy&rdquo;,
},
&ldquo;usernameAttributeProvider&rdquo; : {
&ldquo;@class&rdquo; : &ldquo;org.apereo.cas.services.PrincipalAttributeRegisteredServiceUsernameProvider&rdquo;,
&ldquo;usernameAttribute&rdquo; : &ldquo;mail&rdquo;,
},
&ldquo;requiredNameIdFormat&rdquo;: &ldquo;urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress&rdquo;,
&ldquo;metadataLocation&rdquo;: &ldquo;/etc/cas/metadata/adfs-metadata.xml&rdquo;,
&ldquo;signAssertions&rdquo;: true,
&ldquo;signResponses&rdquo;: false
}
{% endhighlight %}</p>
<h2 id="fichero-etccasmetadataadfs-metadataxml">Fichero /etc/cas/metadata/adfs-metadata.xml</h2>
<p>Este fichero se obtiene desde ADFS. Concretamente se debe acceder a la ruta <a href="https://fs.olimpo.lab/FederationMetadata/2007-06/FederationMetadata.xml">https://fs.olimpo.lab/FederationMetadata/2007-06/FederationMetadata.xml</a> y descargar el fichero XML para luego copiarlo en esta ruta.</p>
<h2 id="directorio-etccassaml">Directorio /etc/cas/saml</h2>
<p>Contiene la definición del IDP, certificado de firma, encriptación, etc.</p>
<p>{% highlight shell %}
ls
idp-encryption.crt  idp-encryption.key  idp-metadata.xml  idp-signing.crt  idp-signing.key  metadata-backups
{% endhighlight %}</p>
<p>Ya en la parte siguiente veremos algunas pruebas de funcionamiento y algunas mejoras que se pueden hacer para que todo vaya más fluido. Hasta el próximo episodio.</p>
]]></description>
      
    </item>
    
    
    
    <item>
      <title>Integrar Exchange 2019 con Apereo CAS mediante ADFS (Parte 3)</title>
      <link>https://www.igalvan.es/posts/exchange-adfs-apereo-cas-parte-3/</link>
      <pubDate>Fri, 18 Mar 2022 16:19:00 +0100</pubDate>
      
      <guid>https://www.igalvan.es/posts/exchange-adfs-apereo-cas-parte-3/</guid>
      <description><![CDATA[<p>Hoy llegamos a la parte 3 donde completaremos la configuración de la parte de ADFS realizado la parte correspondiente a los proveedores de confianza de notificaciones o Claims Providers Trusts.</p>
<h2 id="claims-providers-trusts">Claims Providers Trusts</h2>
<p>Hemos llamado &ldquo;apereolab.olimpo.lab&rdquo; a la relación de confianza y para su generación hemos utilizado los metadatos públicados en la siguiente URL del CAS <a href="https://apereolab.olimpo.lab:8443/cas/idp/metadata">https://apereolab.olimpo.lab:8443/cas/idp/metadata</a>. Esto nos facilita mucho el trabajo porque ya se encarga de realizar el resto de la configuración de esta relación de confianza.</p>
<p>A continuación mostramos dos capturas de pantalla de las dos pestañas más importantes. Recuerda que esta configuración puede variar en función de la configuración que tengas en el Apereo CAS.</p>
<p>La primera captura es de la pestaña Monitoring donde figura la URL de los metadatos junto con la configuración para que se actualice automáticamente la información.</p>
<p><img src="/images/2022/20220318-exchange-adfs-apereo-cas-parte-3-img_3.png" alt="image-20220318-exchange-adfs-apereo-cas-parte-3-img_3"></p>
<p>La segunda captura muestra la configuración de la pestaña que contiene los puntos finales o Endpoints.</p>
<p><img src="/images/2022/20220318-exchange-adfs-apereo-cas-parte-3-img_4.png" alt="image-20220318-exchange-adfs-apereo-cas-parte-3-img_4"></p>
<h2 id="acceptance-transform-rules">Acceptance Transform Rules</h2>
<p>Solo vamos a tener un regla de transformación de notificación entrante para NameID que va a ser de tipo Email e indicaremos que pase a través todos los valores de las notificaciones. Recuerda que anteriormente ya hemos comentado que nos vamos a fiar que desde Apereo nos van a enviar una dirección de correo electrónico que existe en el Exchange Server y que además va a coincidir con el UPN de un usuario. Sí, es un poco de trampa, lo sé. 😋</p>
<p><img src="/images/2022/20220318-exchange-adfs-apereo-cas-parte-3-img_2.png" alt="image-20220318-exchange-adfs-apereo-cas-parte-3-img_2"></p>
<p>Por si quereis echarle un vistazo a la consulta que se genera, es la siguiente:</p>
<p>{% highlight query %}
c:[Type == &ldquo;http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier&rdquo;, Properties[&ldquo;http://schemas.xmlsoap.org/ws/2005/05/identity/claimproperties/format&rdquo;] == &ldquo;urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress&rdquo;]
=&gt; issue(claim = c);
{% endhighlight %}</p>
<p>Y ya con esto nos vemos en el próximo capítulo donde hablaremos de la parte del Apereo CAS.</p>
]]></description>
      
    </item>
    
    
    
    <item>
      <title>Integrar Exchange 2019 con Apereo CAS mediante ADFS (Parte 2)</title>
      <link>https://www.igalvan.es/posts/exchange-adfs-apereo-cas-parte-2/</link>
      <pubDate>Thu, 17 Mar 2022 17:43:00 +0100</pubDate>
      
      <guid>https://www.igalvan.es/posts/exchange-adfs-apereo-cas-parte-2/</guid>
      <description><![CDATA[<p>Bueno ya vimos en la parte 1 la descripción del laboratorio donde vamos a implementar nuestro nuevo Exchange Server autenticado contra el CAS de Apereo a través de ADFS.</p>
<p>Vamos a suponer que ya tienes un controlador de dominio operativo, en nuestro caso sobre el dominio OLIMPO y que además ya cuentas con al menos un Exchange Server 2019 en marcha, recuerda que en este laboratorio está integrado en el mismo servidor que el controlador de dominio, es decir, en exlab.olimpo.lab.</p>
<h2 id="configuración-de-la-federación-adfs">Configuración de la federación ADFS</h2>
<p>La federación de mi laboratorio está desplegada sobre el servidor adfslab.olimpo.lab y tiene la configuración que se muestra en la siguiente captura. Realmente se trata de la configuración por defecto donde el único cambio reseñable es que la federación tiene como nombre <a href="http://fs.olimpo.lab">http://fs.olimpo.lab</a> simplemente para diferenciarla del nombre del servidor que la alberga.</p>
<p><img src="/images/2022/20220317-exchange-adfs-apereo-cas-parte-2-img_1.png" alt="image-20220317-exchange-adfs-apereo-cas-parte-2-img_1"></p>
<h2 id="relaying-trust-parties">Relaying Trust Parties</h2>
<p>En nuestro caso se van a generar dos relaciones de relaciones de confianza, una para Outlook Web App (OWA) y la otra para Exchange Control Panel (ECP). A la primera le hemos puesto el nombre de &ldquo;Outlook on the web&rdquo; y a la segunda &ldquo;Exchange Control Panel&rdquo;.</p>
<p>Recuerda que estos son los únicos servicios de Exchange que se pueden federar ya que tanto EAS como Outlook deben autenticarse mediante Directorio Activo.</p>
<h3 id="outlook-on-the-web">Outlook on the web</h3>
<p>Como se puede observa la segunda relación de confianza es casi igual que la primera solo que para el ECP. En la siguiente captura se puede observar la configuración de los identificadores que solo es uno hacia la URL del OWA.</p>
<p><img src="/images/2022/20220317-exchange-adfs-apereo-cas-parte-2-img_3.png" alt="image-20220317-exchange-adfs-apereo-cas-parte-2-img_3"></p>
<p>En esta captura se puede observar la configuración de los puntos finales. En realidad solo tenemos uno de tipo POST hacia la URL de OWA.</p>
<p><img src="/images/2022/20220317-exchange-adfs-apereo-cas-parte-2-img_4.png" alt="image-20220317-exchange-adfs-apereo-cas-parte-2-img_4"></p>
<h3 id="exchange-control-panel">Exchange Control Panel</h3>
<p>Como se puede observa la segunda relación de confianza es casi igual que la primera solo que para el ECP. En la siguiente captura se puede observar la configuración de los identificadores que en este caso también es solo uno hacia la URL del ECP.</p>
<p><img src="/images/2022/20220317-exchange-adfs-apereo-cas-parte-2-img_5.png" alt="image-20220317-exchange-adfs-apereo-cas-parte-2-img_5"></p>
<p>En esta captura se puede observar la configuración de los puntos finales. Como en el primer caso solo tenemos uno de tipo POST hacia la URL del ECP.</p>
<p><img src="/images/2022/20220317-exchange-adfs-apereo-cas-parte-2-img_6.png" alt="image-20220317-exchange-adfs-apereo-cas-parte-2-img_6"></p>
<h2 id="issuance-transform-rules">Issuance Transform Rules</h2>
<p>En las reglas de transformación de notificaciones tenemos dos reglas, una para el UPN y otra para obtener el PrimarySID mediante uan búsqueda en el repositorio de Directorio Activo. Ambas reglas son exactamente iguales en ambas relaciones de confianza por lo que solo las describiremos una vez.</p>
<p><img src="/images/2022/20220317-exchange-adfs-apereo-cas-parte-2-img_2.png" alt="image-20220317-exchange-adfs-apereo-cas-parte-2-img_2"></p>
<h3 id="regla-upn">Regla UPN</h3>
<p>En esta primera regla simplemente obtenemos la notificación entrante NameIdentifier que es de tipo email (esto lo veremos cuando configuremos el CAS) y emito una nueva notificación de tipo UPN con el valor que me llega.</p>
<p>{% highlight query %}
c:[Type == &ldquo;http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier&rdquo;]
=&gt; issue(Type = &ldquo;<a href="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn%22">http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn&quot;</a>, Value = c.Value);
{% endhighlight %}</p>
<p>Es verdad que esto es bastante deficiente y estoy confiando en que me llegue la notificación con una dirección de correo valida y que coincida con el UPN del usuario en Directorio Activo pero recuerda que esto se trata de un laboratorio para aprender.</p>
<h3 id="regla-primarysid">Regla PrimarySID</h3>
<p>En esta segunda regla aprovechamos la notificació de tipo UPN recien creada para localizar el objectSID del usuario buscandolo por el UPN y por la dirección de correo electrónico por si no somos capaces de localizarlo por el UPN.</p>
<p>{% highlight query %}
c1:[Type == &ldquo;http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier&rdquo;]
&amp;&amp; c2:[Type == &ldquo;http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn&rdquo;]
=&gt; issue(store = &ldquo;Active Directory&rdquo;, types = (&ldquo;<a href="http://schemas.microsoft.com/ws/2008/06/identity/claims/primarysid%22)">http://schemas.microsoft.com/ws/2008/06/identity/claims/primarysid&quot;)</a>, query = &ldquo;(&amp;(objectCategory=person)(objectClass=user)(|(userPrincipalName={0})(&amp;(mail={0})(!(userPrincipalName={0})))));objectSid;OLIMPO\random&rdquo;, param = c2.Value);
{% endhighlight %}</p>
<p>Aquí nuevamente hacemos un poco de truco porque estamos forzando el dominio del usuario al del laboratorio pero no he sido capaz de hacerlo funcionar de otra manera.</p>
<p>Bueno y con esto nos despedimos hasta el siguiente episodio donde veremos la parte de los proveedores de confianza de notificaciones o Claims Providers Trusts.</p>
]]></description>
      
    </item>
    
    
    
    <item>
      <title>Integrar Exchange 2019 con Apereo CAS mediante ADFS (Parte 1)</title>
      <link>https://www.igalvan.es/posts/exchange-adfs-apereo-cas-parte-1/</link>
      <pubDate>Wed, 16 Mar 2022 18:15:00 +0100</pubDate>
      
      <guid>https://www.igalvan.es/posts/exchange-adfs-apereo-cas-parte-1/</guid>
      <description><![CDATA[<p>Comenzamos una nueva serie de artículos dedicados a integrar Exchange Server 2019 con el Apereo CAS mediante ADFS. Si la pregunta es por qué, pues la respuesta es sencilla, porque se puede.</p>
<h2 id="listado-de-episodios">Listado de episodios</h2>
<p>Comencemos con el listado de todos los artículos relacionados con este tutorial.</p>
<ul>
<li><a href="/2022/03/16/exchange-adfs-apereo-cas-parte-1.html">Parte 1</a>.</li>
<li><a href="/2022/03/17/exchange-adfs-apereo-cas-parte-2.html">Parte 2</a>.</li>
<li><a href="/2022/03/18/exchange-adfs-apereo-cas-parte-3.html">Parte 3</a>.</li>
<li><a href="/2022/03/22/exchange-adfs-apereo-cas-parte-4.html">Parte 4</a>.</li>
<li><a href="/2022/03/25/exchange-adfs-apereo-cas-parte-5.html">Parte 5</a>.</li>
</ul>
<h2 id="esquema-del-laboratorio">Esquema del laboratorio</h2>
<p>Vamos a usar cuatro máquinas virtuales en este laboratorio aunque en un entorno real deberían ser al menos seis ya que he integrado el controlador de dominio con el servidor Exchange y, como no nos hacía falta para un laboratorio, no he publicado ADFS mediante un Web Application Proxy.</p>
<p>Como plataforma de virtualización se ha utilizado WMWare Workstation 16 pero se puede hacer con cualquier otra como VirtualBox, KVM o Hyper-V.</p>
<p><img src="/images/2022/20220316-exchange-adfs-apereo-cas-parte-1-img_1.png" alt="image-20220316-exchange-adfs-apereo-cas-parte-1-img_1"></p>
<p>Los servidores Windows se han montado en Windows Server 2022 Standard, la estación de trabajo en Windows 10 Pro y el servidor de Apereo en CentOS 7.9 de 64 bits.</p>
<p>Se ha utilizado Exchange Server 2019 CU11 y para la implementación del CAS de Apereo se ha utilizado la 6.0.0 obtenida del overlay descargado desde su repositorio en GitHub en la URL <a href="https://github.com/apereo/cas-overlay-template">https://github.com/apereo/cas-overlay-template</a>.</p>
<p>Para el direccionamiento de red se ha usado un segmento de red de clase C en el segmente 172.16.53.0/24 con direccionamiento estático asignado a las máquinas.</p>
<p>La distribución final de los equipos en el laboratorio será la siguiente:</p>
<ul>
<li>Controlador de dominio y Exchange Server. 6 GB de RAM, 4 vCPU y dos discos de 100 GB. Dirección IP: 172.16.53.10.</li>
<li>Servidor ADFS. 4 GB de RAM, 2 vCPU y 60 GB de disco. Dirección IP: 172.16.53.11.</li>
<li>Servidor Apereo CAS. 2 GB de RAM, 2vCPU y 40 GB de disco. Dirección IP: 172.16.53.13.</li>
<li>Estación de trabajo. 4 GB de RAM, 2vCPU y 60 GB de disco. Dirección IP: 172.16.53.20.</li>
</ul>
<p>Voy a dar por supuesto que todos sabemos instalar el sistema operativo tanto de los servidores como de la estación de trabajo y también obtener las ISO de Windows y Exchange Server por lo que no voy a explicar esta parte. Tampoco voy a detallar cómo se instala el controlador de dominio o Exchange Server porque entiendo que si estás leyendo este artículo es porque ya sabes todo esto.</p>
<p>Hasta el siguiente episodio.</p>
]]></description>
      
    </item>
    
    
  </channel>
</rss>
