protected override void HandleNonAuthoritativeDomains(EmailAddressPolicy policy, HashSet <SmtpDomain> domains) { ProxyAddressTemplateCollection proxyAddressTemplateCollection = new ProxyAddressTemplateCollection(); foreach (ProxyAddressTemplate proxyAddressTemplate in policy.NonAuthoritativeDomains) { SmtpDomain smtpDomain; if (!UpdateEmailAddressPolicy.DomainValidator.TryGetDomain(proxyAddressTemplate, out smtpDomain)) { proxyAddressTemplateCollection.Add(proxyAddressTemplate); } } bool flag = false; foreach (SmtpDomain smtpDomain2 in domains) { SmtpProxyAddressTemplate item = new SmtpProxyAddressTemplate("@" + smtpDomain2.Domain, false); proxyAddressTemplateCollection.Add(item); if (!flag && !policy.NonAuthoritativeDomains.Contains(item)) { flag = true; } } if (!flag) { flag = (proxyAddressTemplateCollection.Count != policy.NonAuthoritativeDomains.Count); } if (flag) { UpdateEmailAddressPolicy.CheckEapVersion(policy); policy.NonAuthoritativeDomains = proxyAddressTemplateCollection; } }
protected override void HandleNonAuthoritativeDomains(EmailAddressPolicy policy, HashSet <SmtpDomain> domains) { HashSet <SmtpDomain> hashSet = new HashSet <SmtpDomain>(policy.NonAuthoritativeDomains.Count); foreach (ProxyAddressTemplate template in policy.NonAuthoritativeDomains) { SmtpDomain item; if (UpdateEmailAddressPolicy.DomainValidator.TryGetDomain(template, out item)) { hashSet.TryAdd(item); } } foreach (SmtpDomain smtpDomain in hashSet) { if (!domains.Contains(smtpDomain)) { this.warningWriter(Strings.UnexpectedNonAuthoritativeDomain(smtpDomain)); } } foreach (SmtpDomain smtpDomain2 in domains) { if (!hashSet.Contains(smtpDomain2)) { this.warningWriter(Strings.MissingNonAuthoritativeDomain(smtpDomain2)); } } }
private void AddTenantRoutingAddressToPolicy(EmailAddressPolicy policy) { List <ProxyAddressTemplate> list = new List <ProxyAddressTemplate>(policy.EnabledEmailAddressTemplates); SmtpProxyAddressTemplate item = new SmtpProxyAddressTemplate("%m@" + this.tenantRoutingDomain, false); list.Add(item); ProxyAddressTemplateCollection enabledEmailAddressTemplates = new ProxyAddressTemplateCollection(list.ToArray()); base.OnPremisesSession.SetEmailAddressPolicy(policy.DistinguishedName, null, enabledEmailAddressTemplates); }
private static IEnumerable <ProxyAddressTemplate> EnumerateTemplates(EmailAddressPolicy policy) { foreach (ProxyAddressTemplate template in policy.EnabledEmailAddressTemplates) { yield return(template); } foreach (ProxyAddressTemplate template2 in policy.DisabledEmailAddressTemplates) { yield return(template2); } yield break; }
protected override void InternalProcessRecord() { if (!this.isContainerExisted) { base.InternalProcessRecord(); } QueryFilter filter = new ComparisonFilter(ComparisonOperator.Equal, ADObjectSchema.Name, EmailAddressPolicy.DefaultName); IConfigurationSession configurationSession = (IConfigurationSession)base.DataSession; ADObjectId currentOrgContainerId = base.CurrentOrgContainerId; EmailAddressPolicy[] array = configurationSession.Find <EmailAddressPolicy>(currentOrgContainerId, QueryScope.SubTree, filter, null, 0); if (array == null || array.Length == 0) { EmailAddressPolicy emailAddressPolicy = new EmailAddressPolicy(); emailAddressPolicy.SetId(this.DataObject.Id.GetChildId(EmailAddressPolicy.DefaultName)); emailAddressPolicy[EmailAddressPolicySchema.Enabled] = true; emailAddressPolicy.Priority = EmailAddressPolicyPriority.Lowest; if (Datacenter.GetExchangeSku() == Datacenter.ExchangeSku.Enterprise) { emailAddressPolicy.RecipientFilterApplied = true; } emailAddressPolicy.IncludedRecipients = new WellKnownRecipientType?(WellKnownRecipientType.AllRecipients); if (this.DomainName == null) { emailAddressPolicy.EnabledPrimarySMTPAddressTemplate = "@" + DNConvertor.FqdnFromDomainDistinguishedName(currentOrgContainerId.DomainId.DistinguishedName); } else { emailAddressPolicy.EnabledPrimarySMTPAddressTemplate = "@" + this.DomainName.ToString(); } RecipientFilterHelper.StampE2003FilterMetadata(emailAddressPolicy, emailAddressPolicy.LdapRecipientFilter, EmailAddressPolicySchema.PurportedSearchUI); if (base.CurrentOrganizationId != null) { emailAddressPolicy.OrganizationId = base.CurrentOrganizationId; } else { emailAddressPolicy.OrganizationId = base.ExecutingUserOrganizationId; } configurationSession.Save(emailAddressPolicy); } }
public void Validate(EmailAddressPolicy policy) { HashSet <SmtpDomain> hashSet = new HashSet <SmtpDomain>(); foreach (ProxyAddressTemplate proxyAddressTemplate in UpdateEmailAddressPolicy.DomainValidator.EnumerateTemplates(policy)) { SmtpDomain smtpDomain; if (UpdateEmailAddressPolicy.DomainValidator.TryGetDomain(proxyAddressTemplate, out smtpDomain)) { UpdateEmailAddressPolicy.DomainValidator.TemplateValidationEntry bestMatch = this.map.GetBestMatch(smtpDomain); if (bestMatch == null || !bestMatch.AllowsPolicies) { this.WriteInvalidTemplate(proxyAddressTemplate as SmtpProxyAddressTemplate); } else if (!bestMatch.IsAuthoritative) { hashSet.TryAdd(smtpDomain); } } } this.HandleNonAuthoritativeDomains(policy, hashSet); }
protected override void HandleNonAuthoritativeDomains(EmailAddressPolicy policy, HashSet <SmtpDomain> domains) { ProxyAddressTemplateCollection proxyAddressTemplateCollection = new ProxyAddressTemplateCollection(); foreach (ProxyAddressTemplate proxyAddressTemplate in policy.NonAuthoritativeDomains) { SmtpDomain template; if (!UpdateEmailAddressPolicy.DomainValidator.TryGetDomain(proxyAddressTemplate, out template) || (!SetAcceptedDomain.DomainEditValidator.Conflict(this.newDomain, template) && !SetAcceptedDomain.DomainEditValidator.Conflict(this.oldDomain, template))) { proxyAddressTemplateCollection.Add(proxyAddressTemplate); } } foreach (SmtpDomain smtpDomain in domains) { if (SetAcceptedDomain.DomainEditValidator.Conflict(this.newDomain, smtpDomain) || SetAcceptedDomain.DomainEditValidator.Conflict(this.oldDomain, smtpDomain)) { SmtpProxyAddressTemplate item = new SmtpProxyAddressTemplate("@" + smtpDomain.Domain, false); proxyAddressTemplateCollection.Add(item); } } UpdateEmailAddressPolicy.CheckEapVersion(policy); policy.NonAuthoritativeDomains = proxyAddressTemplateCollection; this.session.Save(policy); }
public EmailAddressPolicyIdParameter(EmailAddressPolicy policy) : base(policy.Id) { }
protected abstract void HandleNonAuthoritativeDomains(EmailAddressPolicy policy, HashSet <SmtpDomain> domains);