Esempio n. 1
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);
         }
     }
 }
Esempio n. 2
0
        private void ConfigureOnPremisesConnectors()
        {
            switch (this.sendConnectorOperation)
            {
            case MailFlowTask.Operation.New:
                this.sendConnector = base.OnPremisesSession.NewSendConnector(this.BuildExpectedSendConnector());
                break;

            case MailFlowTask.Operation.Update:
                this.sendConnector.UpdateFrom(this.BuildExpectedSendConnector());
                base.OnPremisesSession.SetSendConnector(this.sendConnector);
                break;
            }
            if (this.receiveConnectorOperation == MailFlowTask.Operation.Update)
            {
                foreach (ADObjectId adobjectId in this.ReceivingTransportServers)
                {
                    Tuple <MailFlowTask.Operation, IReceiveConnector> tuple = this.receiveConnectorsByTransportServer[adobjectId.Name];
                    MailFlowTask.Operation item = tuple.Item1;
                    if (item == MailFlowTask.Operation.Update)
                    {
                        IReceiveConnector item2 = tuple.Item2;
                        item2.UpdateFrom(this.BuildExpectedReceiveConnector(adobjectId));
                        base.OnPremisesSession.SetReceiveConnector(item2);
                    }
                }
                foreach (ADObjectId adobjectId2 in this.EdgeTransportServers)
                {
                    string identity = string.Format("Default Frontend {0}", adobjectId2.ToString());
                    base.TaskContext.Warnings.Add(HybridStrings.WarningEdgeReceiveConnector(adobjectId2.ToString(), identity, this.TlsCertificateSubjectDomainName.Replace("*", "mail")));
                    this.edgeReceiveConnectorsWarningDisplayed = true;
                }
            }
        }
Esempio 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));
        }