{"id":1414,"date":"2022-01-01T12:56:00","date_gmt":"2022-01-01T12:56:00","guid":{"rendered":"https:\/\/www.mainmind.com\/blog\/?p=1414"},"modified":"2025-12-11T12:31:32","modified_gmt":"2025-12-11T12:31:32","slug":"dkim-en-microsoft-365-desde-powershell","status":"publish","type":"post","link":"https:\/\/www.mainmind.com\/blog\/dkim-en-microsoft-365-desde-powershell\/","title":{"rendered":"DKIM en Microsoft 365 desde PowerShell"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">No hay sistema 100% seguro pero las medidas a aplicar para la mejora de la seguridad son continuas, para incrementar la de los correos salientes en dominios personalizados con planes Microsoft 365, debemos a\u00f1adir 2 registros CNAME a nuestro DNS, sustituyendo \u00abMiDominio\u00bb y \u00abMiTenant\u00bb por el correspondiente:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nselector1._domainkey CNAME 3600 selector1-MiDominio-com._domainkey.MiTenant.onmicrosoft.com\nselector2._domainkey CNAME 3600 selector2-MiDominio-com._domainkey.MiTenant.onmicrosoft.com\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Para conectar desde PowerShell aprovecharemos para actualizar los modulos <a href=\"https:\/\/docs.microsoft.com\/es-es\/powershell\/exchange\/exchange-online-powershell-v2?view=exchange-ps\" data-type=\"URL\" data-id=\"https:\/\/docs.microsoft.com\/es-es\/powershell\/exchange\/exchange-online-powershell-v2?view=exchange-ps\" target=\"_blank\" rel=\"noreferrer noopener\">EXO V2<\/a> (de paso los de Azure) y establecer la pol\u00edtica de ejecuci\u00f3n&#8230;<\/p>\n\n\n\n<!--more-->\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: powershell; title: ; notranslate\" title=\"\">\nInstall-Module PowershellGet -Force\nUpdate-Module PowershellGet\nSet-ExecutionPolicy -scope CurrentUser -executionPolicy RemoteSigned\nInstall-Module -Name ExchangeOnlineManagement\nInstall-Module AzureAD\nInstall-Module AzureRM\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Si solo tenemos un tenant asociado:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: powershell; title: ; notranslate\" title=\"\">\nConnect-ExchangeOnline\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Si tenemos permisos para acceder a varios tenants:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: powershell; title: ; notranslate\" title=\"\">\nInstall-Module MSOnline\nConnect-MsolService\nGet-MsolPartnerContract -All | Select-Object TenantId, Name\n\n$Tenants = Get-MsolPartnerContract -All; $Tenants | foreach {$Domains = $_.TenantId; Get-MsolDomain -TenantId $Domains | fl @{Label=&quot;TenantId&quot;;Expression={$Domains}},name}\n\nConnect-ExchangeOnline -UserPrincipalName nombre@MiEmail.com -DelegatedOrganization TenantAsociado.onmicrosoft.com\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\"><strong><em>Actualizado<\/em><\/strong>: es posible conectar directamente con un comando desde PowerShell y nos pedir\u00e1 autenticar en un popup, aseg\u00farate de tener actualizado PowerShell y de lanzarlo en modo NoProfile si tienes problemas con la selecci\u00f3n de cuenta en el navegador:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: powershell; title: ; notranslate\" title=\"\">\nConnect-ExchangeOnline -DelegatedOrganization TenantAsociado.onmicrosoft.com\nConnect-ExchangeOnline -DelegatedOrganization DominioPersonalizado.com\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Ahora estaremos conectados a la consola de administraci\u00f3n desde PowerShell y podremos (entre otras muchas funciones) activar la configuraci\u00f3n DKIM:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: powershell; title: ; notranslate\" title=\"\">\nSet-DkimSigningConfig -Identity MiDominio.com -Enabled $true\nGet-DkimSigningConfig\nGet-DkimSigningConfig -Identity MiDominio.com | Format-List\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">En el caso de no estar creadas o querer actualizar de 1024 a 2048 las claves:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: powershell; title: ; notranslate\" title=\"\">\nNew-DkimSigningConfig -DomainName MiDominio.com -KeySize 2048 -Enabled $true\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">En el caso de no configurar correctamente las DNS o todav\u00eda no se han propagado los cambios, el comando muestra el correspondiente error en pantalla:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"829\" height=\"179\" src=\"https:\/\/www.mainmind.com\/blog\/wp-content\/uploads\/2021\/dkim_powershell_error_enable.jpg\" alt=\"\" class=\"wp-image-1415\" srcset=\"https:\/\/www.mainmind.com\/blog\/wp-content\/uploads\/2021\/dkim_powershell_error_enable.jpg 829w, https:\/\/www.mainmind.com\/blog\/wp-content\/uploads\/2021\/dkim_powershell_error_enable-300x65.jpg 300w, https:\/\/www.mainmind.com\/blog\/wp-content\/uploads\/2021\/dkim_powershell_error_enable-768x166.jpg 768w\" sizes=\"auto, (max-width: 829px) 100vw, 829px\" \/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Con DKIM activado conforme los usuarios envien nuevos emails se ir\u00e1n a\u00f1adiendo en las cabeceras las firmas <a rel=\"noreferrer noopener\" href=\"https:\/\/docs.microsoft.com\/es-es\/microsoft-365\/security\/office-365-security\/use-dkim-to-validate-outbound-email?view=o365-worldwide\" data-type=\"URL\" data-id=\"https:\/\/docs.microsoft.com\/es-es\/microsoft-365\/security\/office-365-security\/use-dkim-to-validate-outbound-email?view=o365-worldwide\" target=\"_blank\">DKIM<\/a> (DomainKeys Identified Mail), no se firma el contenido por defecto.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si ya ten\u00edamos configurada la<a rel=\"noreferrer noopener\" href=\"https:\/\/docs.microsoft.com\/es-es\/microsoft-365\/security\/office-365-security\/set-up-spf-in-office-365-to-help-prevent-spoofing?view=o365-worldwide\" data-type=\"URL\" data-id=\"https:\/\/docs.microsoft.com\/es-es\/microsoft-365\/security\/office-365-security\/set-up-spf-in-office-365-to-help-prevent-spoofing?view=o365-worldwide\" target=\"_blank\"> entrada SPF por defecto de Microsoft<\/a> con un registro TXT en el DNS:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nv=spf1 include:spf.protection.outlook.com -all\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">En el caso de obtener errores de comprobaci\u00f3n de DKIM en el selector2 pero funcionar en el selector1, podemos forzar rotar las claves del dominio:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: powershell; title: ; notranslate\" title=\"\">\nRotate-DkimSigningConfig -KeySize 2048 -Identity MiDominio.com\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Dependiendo del n\u00famero de usuarios del dominio, podemos a\u00f1adir los registros <a rel=\"noreferrer noopener\" href=\"https:\/\/docs.microsoft.com\/es-es\/microsoft-365\/security\/office-365-security\/use-dmarc-to-validate-email?view=o365-worldwide\" data-type=\"URL\" data-id=\"https:\/\/docs.microsoft.com\/es-es\/microsoft-365\/security\/office-365-security\/use-dmarc-to-validate-email?view=o365-worldwide\" target=\"_blank\">DMARC<\/a> (Domain-based Message Authentication, Reporting, and Conformance):<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n_dmarc 600\tTXT v=DMARC1; p=quarantine; pct=100; ruf=mailto:ruf@MiDominio.com; rua=mailto:rua@MiDominio.com\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">NOTA: acceso alternativo v\u00eda web desde el panel <a href=\"https:\/\/security.microsoft.com\/dkimv2\" data-type=\"URL\" data-id=\"https:\/\/security.microsoft.com\/dkimv2\" target=\"_blank\" rel=\"noreferrer noopener\">aqu\u00ed<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">ACTUALIZADO: Microsoft en sus integraciones de DKIM ha cambiado los nombres de los puntos de destino, comprueba desde powershell:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: powershell; title: ; notranslate\" title=\"\">\nGet-DkimSigningConfig -Identity contoso.com | Format-List Name,Enabled,Status,Selector1CNAME,Selector2CNAME\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Los nuevos tienen este formato para dominios personalizados:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nselector2-MiDominio-com._domainkey.MiTenant.y-v1.dkim.mail.microsoft\n<\/pre><\/div>","protected":false},"excerpt":{"rendered":"<p>No hay sistema 100% seguro pero las medidas a aplicar para la mejora de la seguridad son continuas, para incrementar la de los correos salientes en dominios personalizados con planes Microsoft 365, debemos a\u00f1adir 2 registros CNAME a nuestro DNS, sustituyendo \u00abMiDominio\u00bb y \u00abMiTenant\u00bb por el correspondiente: Para conectar desde PowerShell aprovecharemos para actualizar los [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1417,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[19],"tags":[844,763,384,381,847,123,848],"class_list":["post-1414","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-seguridad","tag-dkim","tag-dns","tag-email","tag-microsoft-365","tag-multitenant","tag-powershell","tag-tenant"],"_links":{"self":[{"href":"https:\/\/www.mainmind.com\/blog\/wp-json\/wp\/v2\/posts\/1414","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mainmind.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mainmind.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mainmind.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mainmind.com\/blog\/wp-json\/wp\/v2\/comments?post=1414"}],"version-history":[{"count":2,"href":"https:\/\/www.mainmind.com\/blog\/wp-json\/wp\/v2\/posts\/1414\/revisions"}],"predecessor-version":[{"id":2486,"href":"https:\/\/www.mainmind.com\/blog\/wp-json\/wp\/v2\/posts\/1414\/revisions\/2486"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mainmind.com\/blog\/wp-json\/wp\/v2\/media\/1417"}],"wp:attachment":[{"href":"https:\/\/www.mainmind.com\/blog\/wp-json\/wp\/v2\/media?parent=1414"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mainmind.com\/blog\/wp-json\/wp\/v2\/categories?post=1414"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mainmind.com\/blog\/wp-json\/wp\/v2\/tags?post=1414"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}