Exemplo n.º 1
0
        protected override void InternalProcessRecord()
        {
            if (!this.isContainerExisted)
            {
                base.InternalProcessRecord();
            }
            IConfigurationSession configurationSession = (IConfigurationSession)base.DataSession;

            DomainContentConfig[] array = configurationSession.Find <DomainContentConfig>(this.DataObject.Id, QueryScope.OneLevel, null, null, 1);
            if (array == null || array.Length == 0)
            {
                DomainContentConfig domainContentConfig = new DomainContentConfig();
                domainContentConfig.SetId(this.DataObject.Id.GetChildId("Default"));
                domainContentConfig.DomainName        = new SmtpDomainWithSubdomains("*");
                domainContentConfig.ContentType       = ContentType.MimeHtmlText;
                domainContentConfig.DisplaySenderName = true;
                Culture culture = Culture.GetCulture(Thread.CurrentThread.CurrentCulture.LCID);
                domainContentConfig.CharacterSet             = culture.MimeCharset.Name;
                domainContentConfig.NonMimeCharacterSet      = culture.MimeCharset.Name;
                domainContentConfig.AllowedOOFType           = AllowedOOFType.External;
                domainContentConfig.AutoForwardEnabled       = false;
                domainContentConfig.AutoReplyEnabled         = false;
                domainContentConfig.DeliveryReportEnabled    = true;
                domainContentConfig.NDREnabled               = true;
                domainContentConfig.OrganizationId           = this.DataObject.OrganizationId;
                domainContentConfig.NDRDiagnosticInfoEnabled = true;
                configurationSession.Save(domainContentConfig);
            }
        }
Exemplo n.º 2
0
 private void ConfigureOnPremisesRemoteDomains()
 {
     foreach (KeyValuePair <string, Tuple <MailFlowTask.RemoteDomainType, MailFlowTask.Operation, DomainContentConfig> > keyValuePair in this.onpremisesRemoteDomains)
     {
         string key = keyValuePair.Key;
         MailFlowTask.RemoteDomainType item  = keyValuePair.Value.Item1;
         MailFlowTask.Operation        item2 = keyValuePair.Value.Item2;
         DomainContentConfig           domainContentConfig = keyValuePair.Value.Item3;
         if (item2 == MailFlowTask.Operation.New)
         {
             string name = string.Format("Hybrid Domain - {0}", key);
             domainContentConfig = base.OnPremisesSession.NewRemoteDomain(key, name);
         }
         if (item2 == MailFlowTask.Operation.New || item2 == MailFlowTask.Operation.Update)
         {
             SessionParameters sessionParameters = new SessionParameters();
             if (item == MailFlowTask.RemoteDomainType.HybridDomain)
             {
                 sessionParameters.Set("TrustedMailInbound", true);
             }
             else if (item == MailFlowTask.RemoteDomainType.Coexistence)
             {
                 sessionParameters.Set("AllowedOOFType", AllowedOOFType.InternalLegacy);
                 sessionParameters.Set("TrustedMailOutbound", true);
                 sessionParameters.Set("AutoReplyEnabled", true);
                 sessionParameters.Set("AutoForwardEnabled", true);
                 sessionParameters.Set("DeliveryReportEnabled", true);
                 sessionParameters.Set("NDREnabled", true);
                 sessionParameters.Set("DisplaySenderName", true);
                 sessionParameters.Set("TNEFEnabled", true);
             }
             base.OnPremisesSession.SetRemoteDomain(domainContentConfig.Identity.ToString(), sessionParameters);
         }
     }
 }
Exemplo n.º 3
0
        private bool DoOnPremisesRemoteDomainsNeedConfiguration()
        {
            if (this.EdgeTransportServers.Count == 0)
            {
                return(false);
            }
            IEnumerable <DomainContentConfig> remoteDomain = base.OnPremisesSession.GetRemoteDomain();
            string domainName = this.TenantCoexistenceDomain;
            DomainContentConfig domainContentConfig = (from d in remoteDomain
                                                       where string.Equals(d.DomainName.Domain, domainName, StringComparison.InvariantCultureIgnoreCase)
                                                       select d).FirstOrDefault <DomainContentConfig>();

            MailFlowTask.Operation item;
            if (domainContentConfig == null)
            {
                item = MailFlowTask.Operation.New;
            }
            else if (domainContentConfig.AllowedOOFType == AllowedOOFType.InternalLegacy && domainContentConfig.TrustedMailOutboundEnabled && domainContentConfig.AutoReplyEnabled && domainContentConfig.AutoForwardEnabled && domainContentConfig.DeliveryReportEnabled && domainContentConfig.NDREnabled && domainContentConfig.DisplaySenderName && domainContentConfig.TNEFEnabled != null && domainContentConfig.TNEFEnabled.Value)
            {
                item = MailFlowTask.Operation.NOP;
            }
            else
            {
                item = MailFlowTask.Operation.Update;
            }
            this.onpremisesRemoteDomains[domainName] = new Tuple <MailFlowTask.RemoteDomainType, MailFlowTask.Operation, DomainContentConfig>(MailFlowTask.RemoteDomainType.Coexistence, item, domainContentConfig);
            foreach (SmtpDomain smtpDomain in this.HybridDomains)
            {
                string domainName = smtpDomain.Domain;
                DomainContentConfig domainContentConfig2 = (from d in remoteDomain
                                                            where string.Equals(d.DomainName.Domain, domainName, StringComparison.InvariantCultureIgnoreCase)
                                                            select d).FirstOrDefault <DomainContentConfig>();
                MailFlowTask.Operation item2 = MailFlowTask.Operation.NOP;
                if (domainContentConfig2 == null)
                {
                    item2 = MailFlowTask.Operation.New;
                }
                else if (!domainContentConfig2.TrustedMailInboundEnabled)
                {
                    item2 = MailFlowTask.Operation.Update;
                }
                this.onpremisesRemoteDomains[domainName] = new Tuple <MailFlowTask.RemoteDomainType, MailFlowTask.Operation, DomainContentConfig>(MailFlowTask.RemoteDomainType.HybridDomain, item2, domainContentConfig2);
            }
            return(this.onpremisesRemoteDomains.Values.Any((Tuple <MailFlowTask.RemoteDomainType, MailFlowTask.Operation, DomainContentConfig> t) => t.Item2 != MailFlowTask.Operation.NOP));
        }
        private void ValidateUnnecessaryRemoteDomainsAreRemoved(ITaskContext taskContext)
        {
            taskContext.Logger.LogInformation(HybridStrings.HybridInfoValidatingUnnecessaryRemoteDomainsAreRemoved);
            DomainContentConfig domainContentConfig = (from x in taskContext.OnPremisesSession.GetRemoteDomain()
                                                       where (x.Name ?? string.Empty).StartsWith("Hybrid Domain -")
                                                       select x).FirstOrDefault <DomainContentConfig>();

            if (domainContentConfig != null)
            {
                throw new LocalizedException(HybridStrings.ErrorHybridOnPremRemoteDomainNotRemoved(domainContentConfig.Name));
            }
            DomainContentConfig domainContentConfig2 = (from x in taskContext.TenantSession.GetRemoteDomain()
                                                        where (x.Name ?? string.Empty).StartsWith("Hybrid Domain -")
                                                        select x).FirstOrDefault <DomainContentConfig>();

            if (domainContentConfig2 != null)
            {
                throw new LocalizedException(HybridStrings.ErrorHybridTenantRemoteDomainNotRemoved(domainContentConfig2.Name));
            }
        }