コード例 #1
0
            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;
                }
            }
コード例 #2
0
            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));
                    }
                }
            }
コード例 #3
0
        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);
        }
コード例 #4
0
 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;
 }
コード例 #5
0
        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);
            }
        }
コード例 #6
0
            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);
            }
コード例 #7
0
            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);
            }
コード例 #8
0
 public EmailAddressPolicyIdParameter(EmailAddressPolicy policy) : base(policy.Id)
 {
 }
コード例 #9
0
 protected abstract void HandleNonAuthoritativeDomains(EmailAddressPolicy policy, HashSet <SmtpDomain> domains);