/// <summary> /// Deletes the specified domain /// </summary> /// <param name="domainName"></param> public virtual void DeleteDomain(string domainName) { try { svcDomainAdmin domains = new svcDomainAdmin(); PrepareProxy(domains); GenericResult1 result = domains.DeleteDomain(AdminUsername, AdminPassword, domainName, true // delete files ); if (!result.Result) throw new Exception(result.Message); } catch (Exception ex) { throw new Exception("Could not delete mail domain", ex); } }
/// <summary> /// Creates a new domain in the specified folder /// </summary> /// <param name="domain">Domain info</param> public virtual 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", "defaultimapport", "defaultmaxaliases", "defaultmaxdomainaliases", "defaultmaxdomainsize", "defaultmaxdomainusers", "defaultmaxlists", "defaultmaxmailboxsize", "defaultmaxmessagesize", "defaultmaxrecipients", "defaultpopport", "defaultshowcontentfilteringmenu", "defaultshowdomainaliasmenu", "defaultshowlistmenu", "defaultshowspammenu", "defaultshowstatmenu", "defaultsmtpauthenticationrequired", "defaultsmtpport", "defaultbypassforwardblacklist", "defaultldapport", "defaultldapdisallowoptout", "defaultsharedcalendar", "defaultsharedcontact", "defaultsharedfolder", "defaultsharedtasks", "defaultsharedgal" }); string[] requestedDomainDefaults = defaultRequestedSettings.settingValues; //domain Path is taken from WebsitePanel Service settings GenericResult1 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, requestedDomainDefaults); if (!result.Result) throw new Exception(result.Message); } catch (Exception ex) { throw new Exception("Could not create mail domain", ex); } }
/// <summary> /// Updates the settings for the specified domain /// </summary> /// <param name="domain">Domain info</param> public virtual void UpdateDomain(MailDomain domain) { try { // load original domain MailDomain origDomain = GetDomain(domain.Name); svcDomainAdmin domains = new svcDomainAdmin(); PrepareProxy(domains); GenericResult1 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, // ShowStatsMenu 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, "bypassforwardblacklist=" + domain.BypassForwardBlackList, }); if (!result.Result) throw new Exception(result.Message); } catch (Exception ex) { throw new Exception("Could not update mail domain", ex); } }
/// <summary> /// Returns a list of all domain names /// </summary> /// <returns>Array with domain names</returns> public virtual string[] GetDomains() { try { svcDomainAdmin domains = new svcDomainAdmin(); PrepareProxy(domains); DomainListResult result = domains.GetAllDomains(AdminUsername, AdminPassword); if (!result.Result) throw new Exception(result.Message); return result.DomainNames; } catch (Exception ex) { throw new Exception("Could not get the list of mail domains", ex); } }
/// <summary> /// Checks whether the specified domain exists /// </summary> /// <param name="domainName">Domain name</param> /// <returns>true if the specified domain exists, otherwise false</returns> public virtual bool DomainExists(string domainName) { try { svcDomainAdmin domains = new svcDomainAdmin(); PrepareProxy(domains); DomainSettingsResult result = domains.GetDomainSettings(AdminUsername, AdminPassword, domainName); return result.Result; } catch (Exception ex) { throw new Exception("Could not check whether mail domain exists", ex); } }
public DailyStatistics[] GetDailyStatistics(DateTime since, string maildomainName) { ArrayList days = new ArrayList(); // read statistics DateTime now = DateTime.Now; DateTime date = since; try { while (date < now) { svcDomainAdmin domains = new svcDomainAdmin(); PrepareProxy(domains); StatInfoResult result = domains.GetDomainStatistics(AdminUsername, AdminPassword, maildomainName, date, date); if (!result.Result) throw new Exception(result.Message); if (result.BytesReceived != 0 | result.BytesSent != 0) { DailyStatistics dailyStats = new DailyStatistics(); dailyStats.Year = date.Year; dailyStats.Month = date.Month; dailyStats.Day = date.Day; dailyStats.BytesSent = result.BytesSent; dailyStats.BytesReceived = result.BytesReceived; days.Add(dailyStats); } // advance day date = date.AddDays(1); } } catch(Exception ex) { Log.WriteError("Could not get SmarterMail domain statistics", ex); } return (DailyStatistics[])days.ToArray(typeof(DailyStatistics)); }
/// <summary> /// Returns domain info /// </summary> /// <param name="domainName">Domain name</param> /// <returns>Domain info</returns> public virtual MailDomain GetDomain(string domainName) { try { svcDomainAdmin domains = new svcDomainAdmin(); PrepareProxy(domains); DomainSettingsResult result = domains.GetDomainSettings(AdminUsername, AdminPassword, domainName); if (!result.Result) throw new Exception(result.Message); // fill domain properties MailDomain domain = new MailDomain(); domain.Name = domainName; domain.Path = result.Path; domain.ServerIP = result.ServerIP; domain.ImapPort = result.ImapPort; domain.SmtpPort = result.SmtpPort; domain.PopPort = result.PopPort; domain.MaxAliases = result.MaxAliases; domain.MaxDomainAliases = result.MaxDomainAliases; domain.MaxLists = result.MaxLists; domain.MaxDomainSizeInMB = result.MaxDomainSizeInMB; domain.MaxDomainUsers = result.MaxDomainUsers; domain.MaxMailboxSizeInMB = result.MaxMailboxSizeInMB; domain.MaxMessageSize = result.MaxMessageSize; domain.MaxRecipients = result.MaxRecipients; domain.RequireSmtpAuthentication = result.RequireSmtpAuthentication; domain.ListCommandAddress = result.ListCommandAddress; domain.ShowContentFilteringMenu = result.ShowContentFilteringMenu; domain.ShowDomainAliasMenu = result.ShowDomainAliasMenu; domain.ShowListMenu = result.ShowListMenu; domain.ShowSpamMenu = result.ShowSpamMenu; domain.ShowsStatsMenu = result.ShowStatsMenu; // get additional domain settings string[] requestedSettings = new string[] { "catchall", "isenabled", "ldapport", "altsmtpport", "sharedcalendar", "sharedcontact", "sharedfolder", "sharednotes", "sharedtasks", "sharedgal", "bypassforwardblacklist", }; SettingsRequestResult addResult = domains.GetRequestedDomainSettings(AdminUsername, AdminPassword, domainName, requestedSettings); if (!addResult.Result) throw new Exception(addResult.Message); FillMailDomainFields(domain, addResult); // get catch-all address if (!String.IsNullOrEmpty(domain.CatchAllAccount)) { // get catch-all group string groupName = SYSTEM_CATCH_ALL + "@" + domain.Name; if (GroupExists(groupName)) { // get the first member of this group MailGroup group = GetGroup(groupName); domain.CatchAllAccount = GetAccountName(group.Members[0]); } } /* //get license information if (GetProductLicenseInfo() == "PRO") { domain[MailDomain.SMARTERMAIL_LICENSE_TYPE] = "PRO"; } if (GetProductLicenseInfo() == "ENT") { domain[MailDomain.SMARTERMAIL_LICENSE_TYPE] = "ENT"; } if (GetProductLicenseInfo() == "FREE") { domain[MailDomain.SMARTERMAIL_LICENSE_TYPE] = "FREE"; } */ return domain; } catch (Exception ex) { throw new Exception("Could not get mail domain", ex); } }
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); } }
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); } }
public MailDomain GetDomain(string domainName) { try { svcDomainAdmin domains = new svcDomainAdmin(); PrepareProxy(domains); DomainSettingsResult result = domains.GetDomainSettings(AdminUsername, AdminPassword, domainName); if (!result.Result) throw new Exception(result.Message); // fill domain properties MailDomain domain = new MailDomain(); domain.Name = domainName; domain.Path = result.Path; domain.ServerIP = result.ServerIP; domain.ImapPort = result.ImapPort; domain.SmtpPort = result.SmtpPort; domain.PopPort = result.PopPort; domain.MaxAliases = result.MaxAliases; domain.MaxDomainAliases = result.MaxDomainAliases; domain.MaxLists = result.MaxLists; domain.MaxDomainSizeInMB = result.MaxDomainSizeInMB; domain.MaxDomainUsers = result.MaxDomainUsers; domain.MaxMailboxSizeInMB = result.MaxMailboxSizeInMB; domain.MaxMessageSize = result.MaxMessageSize; domain.MaxRecipients = result.MaxRecipients; domain.RequireSmtpAuthentication = result.RequireSmtpAuthentication; domain.ListCommandAddress = result.ListCommandAddress; domain.ShowContentFilteringMenu = result.ShowContentFilteringMenu; domain.ShowDomainAliasMenu = result.ShowDomainAliasMenu; domain.ShowListMenu = result.ShowListMenu; domain.ShowSpamMenu = result.ShowSpamMenu; // get additional domain settings string[] requestedSettings = new string[] { "catchall", "enablepopretrieval", "enablecatchalls", "isenabled", "ldapport", "altsmtpport", "sharedcalendar", "sharedcontact", "sharedfolder", "sharednotes", "sharedtasks", "sharedgal", "bypassforwardblacklist", "showdomainreports", "spamresponderoption", "spamforwardoption", "maxmessagesperhour", "maxmessagesperhourenabled", "maxsmtpoutbandwidthperhour", "maxsmtpoutbandwidthperhourenabled", "maxpopretrievalaccounts", "maxbouncesreceivedperhour", "maxbouncesreceivedperhourenabled", "enableimapretrieval", "enablemailsigning", "enableemailreports", "syncml" }; SettingsRequestResult addResult = domains.GetRequestedDomainSettings(AdminUsername, AdminPassword, domainName, requestedSettings); if (!addResult.Result) throw new Exception(addResult.Message); FillMailDomainFields(domain, addResult); // get catch-all address if (!String.IsNullOrEmpty(domain.CatchAllAccount)) { // get catch-all group string groupName = SYSTEM_CATCH_ALL + "@" + domain.Name; if (GroupExists(groupName)) { // get the first member of this group MailGroup group = GetGroup(groupName); if (group.Members.Length > 0) { domain.CatchAllAccount = GetAccountName(group.Members[0]); } } } svcServerAdmin serverAdmin = new svcServerAdmin(); PrepareProxy(serverAdmin); EditionResult licenseType = serverAdmin.GetEdition(AdminUsername, AdminPassword); if (licenseType.Edition == "PRO") { domain[MailDomain.SMARTERMAIL_LICENSE_TYPE] = "PRO"; } if (licenseType.Edition == "ENT") { domain[MailDomain.SMARTERMAIL_LICENSE_TYPE] = "ENT"; } if (licenseType.Edition == "FREE") { domain[MailDomain.SMARTERMAIL_LICENSE_TYPE] = "FREE"; } return domain; } catch (Exception ex) { throw new Exception("Could not get mail domain", ex); } }