public void CreateDomain(MailDomain domain) { try { svcDomainAdmin domains = new svcDomainAdmin(); PrepareProxy(domains); DomainSettingsResult defaultDomainSettings = domains.GetDomainDefaults(AdminUsername, AdminPassword); SettingsRequestResult defaultRequestedSettings = domains.GetRequestedDomainDefaults(AdminUsername, AdminPassword, new string[] { "defaultaltsmtpport", "defaultaltsmtpportenabled", "defaultautoresponderrestriction", "defaultbypassgreylisting", "defaultenablecatchalls", "defaultenabledomainkeys", "defaultenableemailreports", "defaultenablepopretrieval", "defaultmaxmessagesperhour", "defaultmaxmessagesperhourenabled", "defaultmaxsmtpoutbandwidthperhour", "defaultmaxsmtpoutbandwidthperhourenabled", "defaultmaxbouncesreceivedperhour", "defaultmaxbouncesreceivedperhourenabled", "defaultmaxpopretrievalaccounts", "defaultsharedcalendar", "defaultsharedcontact", "defaultsharedfolder", "defaultsharedgal", "defaultsharednotes", "defaultsharedtasks", "defaultshowcalendar", "defaultshowcontacts", "defaultshowcontentfilteringmenu", "defaultshowdomainaliasmenu", "defaultshowdomainreports", "defaultshowlistmenu", "defaultshownotes", "defaultshowspammenu", "defaultshowtasks", "defaultshowuserreports", "defaultskin", "defaultspamresponderoption", "defaultspamforwardoption" }); string[] requestedDomainDefaults = defaultRequestedSettings.settingValues; //domain Path is taken from WebsitePanel Service settings GenericResult result = null; if (!InheritDomainDefaultLimits) { result = domains.AddDomain(AdminUsername, AdminPassword, domain.Name, Path.Combine(DomainsPath, domain.Name), SYSTEM_DOMAIN_ADMIN, // admin username Guid.NewGuid().ToString("P"), // admin password "Domain", // admin first name "Administrator", // admin last name ServerIP, defaultDomainSettings.ImapPort, defaultDomainSettings.PopPort, defaultDomainSettings.SmtpPort, domain.MaxAliases, domain.MaxDomainSizeInMB, domain.MaxDomainUsers, domain.MaxMailboxSizeInMB, domain.MaxMessageSize, domain.MaxRecipients, domain.MaxDomainAliases, domain.MaxLists, defaultDomainSettings.ShowDomainAliasMenu, // ShowDomainAliasMenu defaultDomainSettings.ShowContentFilteringMenu, // ShowContentFilteringMenu defaultDomainSettings.ShowSpamMenu, // ShowSpamMenu defaultDomainSettings.ShowStatsMenu, // ShowStatsMenu defaultDomainSettings.RequireSmtpAuthentication, defaultDomainSettings.ShowListMenu, // ShowListMenu defaultDomainSettings.ListCommandAddress); } else { result = domains.AddDomain(AdminUsername, AdminPassword, domain.Name, Path.Combine(DomainsPath, domain.Name), SYSTEM_DOMAIN_ADMIN, // admin username Guid.NewGuid().ToString("P"), // admin password "Domain", // admin first name "Administrator", // admin last name ServerIP, defaultDomainSettings.ImapPort, defaultDomainSettings.PopPort, defaultDomainSettings.SmtpPort, defaultDomainSettings.MaxAliases, defaultDomainSettings.MaxDomainSizeInMB, defaultDomainSettings.MaxDomainUsers, defaultDomainSettings.MaxMailboxSizeInMB, defaultDomainSettings.MaxMessageSize, defaultDomainSettings.MaxRecipients, defaultDomainSettings.MaxDomainAliases, defaultDomainSettings.MaxLists, defaultDomainSettings.ShowDomainAliasMenu, // ShowDomainAliasMenu defaultDomainSettings.ShowContentFilteringMenu, // ShowContentFilteringMenu defaultDomainSettings.ShowSpamMenu, // ShowSpamMenu defaultDomainSettings.ShowStatsMenu, // ShowStatsMenu defaultDomainSettings.RequireSmtpAuthentication, defaultDomainSettings.ShowListMenu, // ShowListMenu defaultDomainSettings.ListCommandAddress); } if (!result.Result) throw new Exception(result.Message); // update additional settings result = domains.SetRequestedDomainSettings(AdminUsername, AdminPassword, domain.Name, SetMailDomainDefaultSettings(requestedDomainDefaults)); if (!result.Result) throw new Exception(result.Message); } catch (Exception ex) { if (DomainExists(domain.Name)) { DeleteDomain(domain.Name); } Log.WriteError(ex); throw new Exception("Could not create mail domain", ex); } }