예제 #1
0
		public void UpdateDomain(MailDomain domain)
		{
			try
			{
				// load original domain
				MailDomain origDomain = GetDomain(domain.Name);

				svcDomainAdmin domains = new svcDomainAdmin();
				PrepareProxy(domains);

				GenericResult result = domains.UpdateDomain(AdminUsername, AdminPassword,
					domain.Name,
					origDomain.ServerIP,
					domain.ImapPort,
					domain.PopPort,
					domain.SmtpPort,
					domain.MaxAliases,
					domain.MaxDomainSizeInMB,
					domain.MaxDomainUsers,
					domain.MaxMailboxSizeInMB,
					domain.MaxMessageSize,
					domain.MaxRecipients,
					domain.MaxDomainAliases,
					domain.MaxLists,
					domain.ShowDomainAliasMenu, // ShowDomainAliasMenu
					domain.ShowContentFilteringMenu, // ShowContentFilteringMenu
					domain.ShowSpamMenu, // ShowSpamMenu
					domain.ShowsStatsMenu, // this parameter is no longer used in SM5
					origDomain.RequireSmtpAuthentication,
					domain.ShowListMenu, // Showlistmenu
					origDomain.ListCommandAddress);

				if (!result.Result)
					throw new Exception(result.Message);

				// update catch-all group
				UpdateDomainCatchAllGroup(domain.Name, domain.CatchAllAccount);


				// update additional settings
				result = domains.SetRequestedDomainSettings(AdminUsername, AdminPassword, domain.Name,
					new string[] {
                        "isenabled=" + domain.Enabled,
                        "catchall=" + (!String.IsNullOrEmpty(domain.CatchAllAccount) ? SYSTEM_CATCH_ALL : ""),
                        "altsmtpport=" + domain.SmtpPortAlt,
                        "ldapport=" + domain.LdapPort,
                        "sharedcalendar=" + domain.SharedCalendars,
                        "sharedcontact=" + domain.SharedContacts,
                        "sharedfolder=" + domain.SharedFolders,
                        "sharednotes=" + domain.SharedNotes,
                        "sharedtasks=" + domain.SharedTasks,
                        "sharedgal=" + domain.IsGlobalAddressList,
                        "enablecatchalls=" + domain[MailDomain.SMARTERMAIL5_CATCHALLS_ENABLED],
                        "bypassforwardblacklist=" + domain.BypassForwardBlackList,
						"showdomainreports=" + domain[MailDomain.SMARTERMAIL5_SHOW_DOMAIN_REPORTS],
						"maxmessagesperhour=" + domain[MailDomain.SMARTERMAIL5_MESSAGES_PER_HOUR],
					    "maxmessagesperhourenabled=" + domain[MailDomain.SMARTERMAIL5_MESSAGES_PER_HOUR_ENABLED],
					    "maxsmtpoutbandwidthperhour=" + domain[MailDomain.SMARTERMAIL5_BANDWIDTH_PER_HOUR],
					    "maxsmtpoutbandwidthperhourenabled=" + domain[MailDomain.SMARTERMAIL5_BANDWIDTH_PER_HOUR_ENABLED],
                        "enablepopretrieval=" + domain[MailDomain.SMARTERMAIL5_POP_RETREIVAL_ENABLED],
						"maxpopretrievalaccounts=" + domain[MailDomain.SMARTERMAIL5_POP_RETREIVAL_ACCOUNTS],
						"maxbouncesreceivedperhour=" + domain[MailDomain.SMARTERMAIL5_BOUNCES_PER_HOUR],
						"maxbouncesreceivedperhourenabled=" + domain[MailDomain.SMARTERMAIL5_BOUNCES_PER_HOUR_ENABLED],
                        "enableimapretrieval=" + domain[MailDomain.SMARTERMAIL6_IMAP_RETREIVAL_ENABLED],
                        "enablemailsigning=" + domain[MailDomain.SMARTERMAIL6_MAIL_SIGNING_ENABLED],
                        "enableemailreports=" + domain[MailDomain.SMARTERMAIL6_EMAIL_REPORTS_ENABLED],
                        "syncml=" + domain[MailDomain.SMARTERMAIL6_SYNCML_ENABLED]
				});

				/*
                                          
				string[] requestedSettings = new string[]
					{
						"maxmessagesperhour",
						"maxmessagesperhourenabled",
						"maxsmtpoutbandwidthperhour",
						"maxsmtpoutbandwidthperhourenabled"
					};

				SettingsRequestResult addResult =
					domains.GetRequestedDomainSettings(AdminUsername, AdminPassword, domain.Name, requestedSettings);
				*/

				if (!result.Result)
					throw new Exception(result.Message);
			}
			catch (Exception ex)
			{
				throw new Exception("Could not update mail domain", ex);
			}
		}