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); } } }
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; } } }
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)); }