[Nmailserver-commits] SF.net SVN: nmailserver: [30] NMail/trunk/doc
Brought to you by:
dframpton-oss,
tmyroadctfig
|
From: <tmy...@us...> - 2006-05-14 06:33:03
|
Revision: 30 Author: tmyroadctfig Date: 2006-05-13 23:32:21 -0700 (Sat, 13 May 2006) ViewCVS: http://svn.sourceforge.net/nmailserver/?rev=30&view=rev Log Message: ----------- Work on installer and local store. Modified Paths: -------------- NMail/trunk/Installer/NMail-Installer.wxs NMail/trunk/Installer/NMail-installer.build NMail/trunk/NMail/DataTypes/ACLs/MailDomainPrivilege.cs NMail/trunk/NMail/DataTypes/ACLs/StoreFolderPrivilege.cs NMail/trunk/NMail/DataTypes/EmailAddress.cs NMail/trunk/NMail/DataTypes/LocalStore/MailDomain.cs NMail/trunk/NMail/DataTypes/Mailbox.cs NMail/trunk/NMail/ILocalStore.cs NMail/trunk/NMail/ILocalStoreData.cs NMail/trunk/NMail.Administration.Console/Command/AddUserCommand.cs NMail/trunk/NMail.Administration.Console/Context/LocalStoreContext.cs NMail/trunk/NMail.Administration.Console/NMail.Administration.Console.csproj NMail/trunk/NMail.ImapService/State/ConnectedState.cs NMail/trunk/NMail.LocalStore/LocalStore.cs NMail/trunk/NMail.LocalStoreData.MySql/MySqlLocalStore.sql NMail/trunk/NMail.LocalStoreData.MySql/MySqlLocalStoreData.cs NMail/trunk/NMail.MessageRouter/Configuration/MessageRouterConfiguration.cs NMail/trunk/NMail.MessageRouter/MessageRouter.cs NMail/trunk/NMail.Server/RemoteAdministration.cs NMail/trunk/NMail.Server.Console/NMail.config NMail/trunk/NMail.Server.Console/NMailConsoleServer.cs Added Paths: ----------- NMail/trunk/NMail.Administration.Console/Command/ListMailDomainsCommand.cs NMail/trunk/doc/ntlm.html Removed Paths: ------------- NMail/trunk/NDns/NDns.xml Modified: NMail/trunk/Installer/NMail-Installer.wxs =================================================================== --- NMail/trunk/Installer/NMail-Installer.wxs 2006-05-06 15:33:43 UTC (rev 29) +++ NMail/trunk/Installer/NMail-Installer.wxs 2006-05-14 06:32:21 UTC (rev 30) @@ -1,6 +1,12 @@ <?xml version="1.0"?> <Wix xmlns="http://schemas.microsoft.com/wix/2003/01/wi"> - <Product Id="3EEDBE2D-3E7A-44b1-B4AA-1DDD2EB0068E" Name="NMail Server" Language="1033" Version="1.0.0.0" Manufacturer="NMailServer.SourceForge.net"> + + <Product Id="3EEDBE2D-3E7A-44b1-B4AA-1DDD2EB0068E" + UpgradeCode="01CC30D2-B022-4e6c-A63B-7DD7ACCCCCE2" + Name="NMail Server" + Language="1033" + Version="1.0.0.0" + Manufacturer="NMailServer.SourceForge.net"> <Package Id="????????-????-????-????-????????????" Description="NMail Server 1.0 Installer." @@ -9,6 +15,9 @@ <Media Id="1" Cabinet="Product.cab" EmbedCab="yes" /> + <!-- <Upgrade Id="01CC30D2-B022-4e6c-A63B-7DD7ACCCCCE2"> + <UpgradeVersion /> + </Upgrade> --> <!-- == @@ -60,6 +69,7 @@ <ServiceInstall Id="S_NMail.Server.Service.exe" DisplayName="NMail Server" Description="The NMail mail service." Name="NMail.Server.Service.exe" ErrorControl="normal" Start="demand" Type="ownProcess" Vital="yes" /> + <!-- Account="NetworkService" --> </Component> @@ -163,14 +173,10 @@ <File Id="NMail.config" Name="NMail.cfg" LongName="NMail.config" DiskId="1" Source="obj\NMail.config" Vital="yes" /> </Component> - <Component Id="C_NMail.cer" Guid="36D552F8-A50A-44e3-9669-83E34BF3A359"> - <File Id="NMail.cer" Name="NMail.cer" LongName="NMail.cer" DiskId="1" Source="obj\NMail.cer" Vital="yes" /> + <Component Id="C_NMail.pfx" Guid="93D43655-6B2D-4539-850E-9063F20B0E69"> + <File Id="NMail.pfx" Name="NMail.pfx" LongName="NMail.pfx" DiskId="1" Source="obj\NMail.pfx" Vital="yes" /> </Component> - <Component Id="C_NMail.pvk" Guid="9DE97934-C943-4e27-9C07-0EA12CAF01EB"> - <File Id="NMail.pvk" Name="NMail.pvk" LongName="NMail.pvk" DiskId="1" Source="obj\NMail.pvk" Vital="yes" /> - </Component> - <Component Id="C_MySqlLocalStore.sql" Guid="5CA6F74D-AC23-45f6-B2B6-93C85E5EC1A7"> <File Id="MySqlLocalStore.sql" Name="MySqlLS.sql" LongName="MySqlLocalStore.sql" DiskId="1" Source="obj\MySqlLocalStore.sql" Vital="yes" /> </Component> @@ -237,8 +243,7 @@ <ComponentRef Id="C_Warning.txt" /> <ComponentRef Id="C_Bounce.txt" /> <ComponentRef Id="C_NMail.config" /> - <ComponentRef Id="C_NMail.cer" /> - <ComponentRef Id="C_NMail.pvk" /> + <ComponentRef Id="C_NMail.pfx" /> <ComponentRef Id="C_MySqlLocalStore.sql" /> <ComponentRef Id="C_MySqlSpoolData.sql" /> Modified: NMail/trunk/Installer/NMail-installer.build =================================================================== --- NMail/trunk/Installer/NMail-installer.build 2006-05-06 15:33:43 UTC (rev 29) +++ NMail/trunk/Installer/NMail-installer.build 2006-05-14 06:32:21 UTC (rev 30) @@ -45,8 +45,7 @@ <include name="Warning.txt" /> <include name="Bounce.txt" /> <include name="NMail.config" /> - <include name="nmail.cer" /> - <include name="nmail.pvk" /> + <include name="NMail.pfx" /> </fileset> </copy> <copy todir="${build.dir}"> Deleted: NMail/trunk/NDns/NDns.xml =================================================================== --- NMail/trunk/NDns/NDns.xml 2006-05-06 15:33:43 UTC (rev 29) +++ NMail/trunk/NDns/NDns.xml 2006-05-14 06:32:21 UTC (rev 30) @@ -1,921 +0,0 @@ -<?xml version="1.0"?> -<doc> - <assembly> - <name>NDns</name> - </assembly> - <members> - <member name="T:NDns.Message.Header"> - <summary> - Represents the header component of a DNS message. - </summary> - </member> - <member name="F:NDns.Message.Header.id"> - <summary> - A 16 bit Id number to identify this message. - </summary> - </member> - <member name="F:NDns.Message.Header.response"> - <summary> - Was this message a query or a response? - </summary> - </member> - <member name="F:NDns.Message.Header.opcode"> - <summary> - A four bit field that specifies query type in the message. - </summary> - </member> - <member name="F:NDns.Message.Header.authoritative"> - <summary> - Is the answer authoritative? - </summary> - </member> - <member name="F:NDns.Message.Header.truncated"> - <summary> - Was the message truncated due to size constraints? - </summary> - </member> - <member name="F:NDns.Message.Header.recursionDesired"> - <summary> - Is recursion desired? - </summary> - </member> - <member name="F:NDns.Message.Header.recursionAvailable"> - <summary> - Is recursion available? - </summary> - </member> - <member name="F:NDns.Message.Header.rcode"> - <summary> - The response code for this message. - </summary> - </member> - <member name="F:NDns.Message.Header.questionEntries"> - <summary> - An unsigned 16 bit integer specifying the number of entries in the - question section. - </summary> - </member> - <member name="F:NDns.Message.Header.answerEntries"> - <summary> - An unsigned 16 bit integer specifying the number of resource - records in the answer section. - </summary> - </member> - <member name="F:NDns.Message.Header.nameServerEntries"> - <summary> - An unsigned 16 bit integer specifying the number of name server - resource records in the authority records section. - </summary> - </member> - <member name="F:NDns.Message.Header.additionalEntries"> - <summary> - An unsigned 16 bit integer specifying the number of resource records in - the additional records section. - </summary> - </member> - <member name="F:NDns.Message.Header.lastId"> - <summary> - The last Id number assigned to a DNS message. - </summary> - </member> - <member name="M:NDns.Message.Header.#ctor"> - <summary> - Creates a new DNS message header with a unique Id number. - </summary> - </member> - <member name="M:NDns.Message.Header.#ctor(System.Byte[],System.UInt16,System.UInt16@)"> - <summary> - Creates a new DNS message header using the given data. This data is - typically the response from a DNS server. - </summary> - <param name="data">The data to create the message header from.</param> - <param name="start">The position to start reading the byte array from.</param> - <param name="length">The number of bytes read from the byte array.</param> - </member> - <member name="M:NDns.Message.Header.GetId"> - <summary> - Gets the next available Id number. - </summary> - <returns>The Id number.</returns> - </member> - <member name="M:NDns.Message.Header.ToByteArray"> - <summary> - Converts the header to a byte array ready to send in a DNS message. - </summary> - <returns>The header as a byte array.</returns> - </member> - <member name="M:NDns.Message.Header.CreateOpCode(System.Byte)"> - <summary> - Creates the opcode that corresponds to the given byte. - </summary> - <param name="opcode">The data to create the opcode from.</param> - <returns>The opcode.</returns> - </member> - <member name="M:NDns.Message.Header.CreateResponseCode(System.Byte)"> - <summary> - Creates the response code that corresponds to the given byte. - </summary> - <param name="rcode">The data to create the response code from.</param> - <returns>The response code.</returns> - </member> - <member name="P:NDns.Message.Header.Id"> - <summary> - Gets the Id number for this header (and thus message). - </summary> - </member> - <member name="T:NDns.Message.AnswerSection"> - <summary> - A answer section entry in a DNS message. - </summary> - </member> - <member name="F:NDns.Message.AnswerSection.answerName"> - <summary> - The string name in this answer. - </summary> - </member> - <member name="F:NDns.Message.AnswerSection.answerType"> - <summary> - The type of record. - </summary> - </member> - <member name="F:NDns.Message.AnswerSection.answerClass"> - <summary> - The query class. - </summary> - </member> - <member name="F:NDns.Message.AnswerSection.answerTTL"> - <summary> - The time to live for the answer. - </summary> - </member> - <member name="F:NDns.Message.AnswerSection.answerRecord"> - <summary> - The record data associated with this record. - </summary> - </member> - <member name="M:NDns.Message.AnswerSection.#ctor(System.Byte[],System.UInt16,System.UInt16@,NDns.Message.DomainCoder)"> - <summary> - Creates a answer section from the given byte data. - </summary> - <param name="data">The data to create the answer section from.</param> - <param name="start">The position to start reading the byte array from.</param> - <param name="length">The number of bytes read from the byte array.</param> - <param name="coder">The coder to use when parsing the data.</param> - </member> - <member name="P:NDns.Message.AnswerSection.Record"> - <summary> - The answer record associated with this answer entry. - </summary> - </member> - <member name="T:NDns.Message.Records.Record"> - <summary> - A DNS record. - </summary> - </member> - <member name="F:NDns.Message.Records.Record.type"> - <summary> - The type of this record. - </summary> - </member> - <member name="F:NDns.Message.Records.Record.recordTTL"> - <summary> - The time to live for this record (in seconds). - </summary> - </member> - <member name="F:NDns.Message.Records.Record.creationTime"> - <summary> - The time this record was created. - </summary> - </member> - <member name="M:NDns.Message.Records.Record.#ctor"> - <summary> - Creates a new DNS record. - </summary> - </member> - <member name="P:NDns.Message.Records.Record.Type"> - <summary> - Returns the type for this record. - </summary> - </member> - <member name="P:NDns.Message.Records.Record.Data"> - <summary> - The data associated with this record as a user readable string. - </summary> - </member> - <member name="P:NDns.Message.Records.Record.TTL"> - <summary> - Gets and sets the time to live for this record (in seconds). - </summary> - </member> - <member name="T:NDns.Message.QuestionSection"> - <summary> - A question section entry in a DNS message. - </summary> - </member> - <member name="F:NDns.Message.QuestionSection.queryName"> - <summary> - The string name being looked up. - </summary> - </member> - <member name="F:NDns.Message.QuestionSection.queryType"> - <summary> - The type of query being performed. - </summary> - </member> - <member name="F:NDns.Message.QuestionSection.queryClass"> - <summary> - The class of query. - </summary> - </member> - <member name="M:NDns.Message.QuestionSection.#ctor(System.String,NDns.Message.QType)"> - <summary> - Creates a new question section with the given string and type. - </summary> - <param name="queryName">The string to query.</param> - <param name="queryType">The type of query to perform.</param> - </member> - <member name="M:NDns.Message.QuestionSection.#ctor(System.Byte[],System.UInt16,System.UInt16@,NDns.Message.DomainCoder)"> - <summary> - Creates a question section from the given byte data. - </summary> - <param name="data">The data to create the question section from.</param> - <param name="start">The position to start reading the byte array from.</param> - <param name="length">The number of bytes read from the byte array.</param> - <param name="coder">The coder to use when parsing the data.</param> - </member> - <member name="M:NDns.Message.QuestionSection.ToByteArray(NDns.Message.DomainCoder,System.UInt16)"> - <summary> - Converts the question section into a byte array. - </summary> - <param name="coder">The string coder used to compress queries with.</param> - <param name="reference">A reference to the location of this entry in the message.</param> - <returns>The question section as a byte array.</returns> - </member> - <member name="T:NDns.Configuration.NDnsConfiguration"> - <summary> - Provides configuration settings for this package. - </summary> - </member> - <member name="M:NDns.Configuration.NDnsConfiguration.#ctor(System.Net.IPAddress[],System.Int32,System.Int32,System.Int32)"> - <summary> - Creates a new NDns configuration from the arguments. - </summary> - <param name="dnsServers">The list of DNS servers to query (in order).</param> - <param name="maxMXCacheSize">The maximum number of MX records to the cache.</param> - <param name="maxDomainCacheSize">The maximum number of domain records to the cache.</param> - <param name="maxAddressCacheSize">The maximum number of address records to the cache.</param> - </member> - <member name="P:NDns.Configuration.NDnsConfiguration.DnsServers"> - <summary> - The list of DNS servers to query (in order of perference). - </summary> - </member> - <member name="P:NDns.Configuration.NDnsConfiguration.MaximumMXCacheSize"> - <summary> - Returns the maximum cache for MX records size in entries. - </summary> - </member> - <member name="P:NDns.Configuration.NDnsConfiguration.MaximumDomainCacheSize"> - <summary> - Returns the maximum cache for domain records size in entries. - </summary> - </member> - <member name="P:NDns.Configuration.NDnsConfiguration.MaximumAddressCacheSize"> - <summary> - Returns the maximum cache for address records size in entries. - </summary> - </member> - <member name="T:NDns.Message.Records.MXRecord"> - <summary> - A DNS Mail eXchanger record. - </summary> - </member> - <member name="F:NDns.Message.Records.MXRecord.preference"> - <summary> - The preference associated with this MX record. - </summary> - </member> - <member name="F:NDns.Message.Records.MXRecord.mxName"> - <summary> - The name of the MX server. - </summary> - </member> - <member name="M:NDns.Message.Records.MXRecord.#ctor(System.String,System.UInt16)"> - <summary> - Creates a MX record from the given string and preference. - </summary> - <param name="mxName">The string of the MX record.</param> - <param name="perference">The preference of the MX record.</param> - </member> - <member name="M:NDns.Message.Records.MXRecord.#ctor(System.Byte[],System.UInt16,System.UInt16@,NDns.Message.DomainCoder)"> - <summary> - Creates a MX record from the given byte data. - </summary> - <param name="data">The data to create the MX record from.</param> - <param name="start">The position to start reading the byte array from.</param> - <param name="length">The number of bytes read from the byte array.</param> - <param name="coder">The coder to use when parsing the data.</param> - </member> - <member name="M:NDns.Message.Records.MXRecord.CompareTo(System.Object)"> - <summary> - Compares this MX record to another MX record, sorting by perference. - </summary> - <param name="obj">The other MX to compare to.</param> - <returns>-1 if this MX is perferable, 1 otherwise.</returns> - </member> - <member name="P:NDns.Message.Records.MXRecord.MX"> - <summary> - Returns the MX string for this record. - </summary> - </member> - <member name="P:NDns.Message.Records.MXRecord.Preference"> - <summary> - Returns the preference for this record. - </summary> - </member> - <member name="P:NDns.Message.Records.MXRecord.Data"> - <summary> - The data associated with this record as a user readable string. - </summary> - </member> - <member name="T:NDns.Message.QType"> - <summary> - The DNS query type. - </summary> - </member> - <member name="F:NDns.Message.QType.A"> - <summary> - A host address. - </summary> - </member> - <member name="F:NDns.Message.QType.NS"> - <summary> - An authoritative name server. - </summary> - </member> - <member name="F:NDns.Message.QType.CNAME"> - <summary> - The canonical name for an alias. - </summary> - </member> - <member name="F:NDns.Message.QType.SOA"> - <summary> - Marks the start of a zone of authority. - </summary> - </member> - <member name="F:NDns.Message.QType.PTR"> - <summary> - A string name pointer. - </summary> - </member> - <member name="F:NDns.Message.QType.HINFO"> - <summary> - Host information. - </summary> - </member> - <member name="F:NDns.Message.QType.MINFO"> - <summary> - Mailbox or mail list information. - </summary> - </member> - <member name="F:NDns.Message.QType.MX"> - <summary> - Mail exchange. - </summary> - </member> - <member name="F:NDns.Message.QType.TXT"> - <summary> - Text strings. - </summary> - </member> - <member name="T:NDns.Message.DNSMessage"> - <summary> - A DNS message used in DNS communications. - </summary> - </member> - <member name="F:NDns.Message.DNSMessage.header"> - <summary> - The header for this DNS message. - </summary> - </member> - <member name="F:NDns.Message.DNSMessage.questionEntries"> - <summary> - The question sections associated with this DNS message. - </summary> - </member> - <member name="F:NDns.Message.DNSMessage.answerEntries"> - <summary> - The answer sections associated with the DNS message. - </summary> - </member> - <member name="M:NDns.Message.DNSMessage.#ctor"> - <summary> - Creates a new DNS message. - </summary> - </member> - <member name="M:NDns.Message.DNSMessage.#ctor(System.Byte[])"> - <summary> - Creates a new DNS message using the given data. This data is typically the - response from a DNS server. - </summary> - <param name="data">The data to create the message from.</param> - </member> - <member name="M:NDns.Message.DNSMessage.ToByteArray"> - <summary> - Converts the DNS message into a byte array. - </summary> - <returns>The DNS message as a byte array.</returns> - </member> - <member name="P:NDns.Message.DNSMessage.QuestionEntries"> - <summary> - Gets and sets the question section entries for this DNS message. - </summary> - </member> - <member name="P:NDns.Message.DNSMessage.AnswerEntries"> - <summary> - Gets and sets the answer section entries for this DNS message. - </summary> - </member> - <member name="P:NDns.Message.DNSMessage.Id"> - <summary> - Gets the Id for this DNS message. - </summary> - </member> - <member name="P:NDns.Message.DNSMessage.Response"> - <summary> - Was this message a response or a query? - </summary> - </member> - <member name="P:NDns.Message.DNSMessage.Authoritative"> - <summary> - Is the answer authoritative? - </summary> - </member> - <member name="P:NDns.Message.DNSMessage.Truncated"> - <summary> - Was the message truncated due to size constraints? - </summary> - </member> - <member name="P:NDns.Message.DNSMessage.Recursive"> - <summary> - Is recursion desired? - </summary> - </member> - <member name="P:NDns.Message.DNSMessage.RecursionAvailable"> - <summary> - Is recursion available? - </summary> - </member> - <member name="P:NDns.Message.DNSMessage.Opcode"> - <summary> - A four bit field that specifies query type in the message. - </summary> - </member> - <member name="P:NDns.Message.DNSMessage.Rcode"> - <summary> - The response code for this message. - </summary> - </member> - <member name="T:NDns.DnsCache"> - <summary> - Provides a cache for DNS information. - </summary> - </member> - <member name="F:NDns.DnsCache.DnsPort"> - <summary> - The port to query remote dns servers on. - </summary> - </member> - <member name="F:NDns.DnsCache.log"> - <summary> - Logging support for this class. - </summary> - </member> - <member name="F:NDns.DnsCache.mxServers"> - <summary> - A hash table of arrays of MX records indexed by string name - (e.g. an array of MX records for "anu.edu.au"). - </summary> - </member> - <member name="F:NDns.DnsCache.mxQueue"> - <summary> - A list of MX records ordered according to last use. - </summary> - </member> - <member name="F:NDns.DnsCache.domains"> - <summary> - A hash table of string records indexed by IP address - </summary> - </member> - <member name="F:NDns.DnsCache.domainQueue"> - <summary> - A list of string records ordered according to last use. - </summary> - </member> - <member name="F:NDns.DnsCache.addresses"> - <summary> - A hash table of ip address record arrays indexed by string name - (e.g. an array of A records for "www.anu.edu.au"). - </summary> - </member> - <member name="F:NDns.DnsCache.addressQueue"> - <summary> - A list of address records ordered according to last use. - </summary> - </member> - <member name="F:NDns.DnsCache.MXCacheSize"> - <summary> - The maximum number of MX record arrays to store. - </summary> - </member> - <member name="F:NDns.DnsCache.DomainCacheSize"> - <summary> - The maximum number of string names to store. - </summary> - </member> - <member name="F:NDns.DnsCache.AddressCacheSize"> - <summary> - The maximum number of A record arrays to store. - </summary> - </member> - <member name="F:NDns.DnsCache.config"> - <summary> - The configuration for this DNS cache. - </summary> - </member> - <member name="M:NDns.DnsCache.#ctor(NDns.Configuration.NDnsConfiguration)"> - <summary> - Creates a new instance of the DNS this. - </summary> - </member> - <member name="M:NDns.DnsCache.DomainMatchesAddress(System.Net.IPAddress,System.String)"> - <summary> - Checks if the given string and address match. - </summary> - <param name="address">The address to check.</param> - <param name="domain">The string to check.</param> - <returns>True if the string corresponds to the address.</returns> - </member> - <member name="M:NDns.DnsCache.GetHostName(System.Net.EndPoint)"> - <summary> - Gets a hostname for the specified end point. - </summary> - <param name="endPoint">The end point to lookup</param> - <returns>The hostname.</returns> - </member> - <member name="M:NDns.DnsCache.GetHostName(System.Net.IPAddress)"> - <summary> - Gets a hostname for the specified address. - </summary> - <param name="address">The address to lookup</param> - <returns>The hostname.</returns> - </member> - <member name="M:NDns.DnsCache.GetHostNames(System.Net.IPAddress)"> - <summary> - Gets a hostnames for the specified address. - </summary> - <param name="address">The address to lookup</param> - <returns>The address.</returns> - </member> - <member name="M:NDns.DnsCache.GetIPAddress(System.String)"> - <summary> - Gets the first IP address associated with the given domain name. - </summary> - <param name="domainName">The domain name to resolve.</param> - <returns>The IP address.</returns> - </member> - <member name="M:NDns.DnsCache.GetIPAddresses(System.String)"> - <summary> - Looks up IP addresses for the given string name. - </summary> - <param name="domainName">The string name to lookup the addresses for.</param> - <returns>The IP addresses for the string name.</returns> - </member> - <member name="M:NDns.DnsCache.LookupRecords(System.String,NDns.Message.QType)"> - <summary> - Looks up DNS records using the specified query string and query type. - </summary> - <param name="queryString">The query to send.</param> - <param name="queryType">The query type.</param> - <returns>The array of records from the DNS server.</returns> - </member> - <member name="M:NDns.DnsCache.GetPTRRecords(System.Net.IPAddress)"> - <summary> - Gets the PTR records for the specified IP address caching the results. - This method also respects TTL for the records. - </summary> - <param name="address">The address to lookup</param> - <returns>The PTR records.</returns> - </member> - <member name="M:NDns.DnsCache.GetARecords(System.String)"> - <summary> - Gets address records for the specified hostname caching the results. - This method also respects TTL for the records. - </summary> - <param name="domainName">The hostname to lookup</param> - <returns>The address records.</returns> - </member> - <member name="M:NDns.DnsCache.GetMXRecords(System.String)"> - <summary> - Looks up MX records for the given string name caching the results. - This method also respects TTL for the records. - </summary> - <param name="domainName">The string to get the MX records for.</param> - <returns>The MX records</returns> - </member> - <member name="M:NDns.DnsCache.LookupMXRecords(System.String)"> - <summary> - Looks up MX records from the DNS server handling empty answer - sections but not caching records. - </summary> - <param name="domainName">The string to look up the MX records for.</param> - <returns>The MX records for the given domain.</returns> - </member> - <member name="M:NDns.DnsCache.LookupPTRRecords(System.Net.IPAddress)"> - <summary> - Looks up PTR records from the DNS server but does not cache records. - </summary> - <param name="address">The string to look up the PTR records for.</param> - <returns>The PTR records for the given domain.</returns> - </member> - <member name="M:NDns.DnsCache.LookupARecords(System.String)"> - <summary> - Looks up address records from the DNS server but does not cache records. - </summary> - <param name="domainName">The string name to lookup the addresses for.</param> - <returns>The addresses records for the given domain.</returns> - </member> - <member name="M:NDns.DnsCache.ConvertToIPAddresses(NDns.Message.Records.ARecord[])"> - <summary> - Converts an array of address records into an array of IP addresses. - </summary> - <param name="records">The records to convert.</param> - <returns>The IP addresses.</returns> - </member> - <member name="M:NDns.DnsCache.ConvertToHostnames(NDns.Message.Records.PTRRecord[])"> - <summary> - Converts an array of PTR records into an array of hostnames. - </summary> - <param name="records">The records to convert.</param> - <returns>The hostnames.</returns> - </member> - <member name="M:NDns.DnsCache.PerformQuery(NDns.Message.DNSMessage)"> - <summary> - Queries a DNS server using the given DNS query. - </summary> - <param name="queryMessage">The query to send to the server.</param> - <returns>The response from the server.</returns> - </member> - <member name="T:NDns.Message.Records.NSRecord"> - <summary> - A DNS NS record. - </summary> - </member> - <member name="F:NDns.Message.Records.NSRecord.ns"> - <summary> - The name server name for this record. - </summary> - </member> - <member name="M:NDns.Message.Records.NSRecord.#ctor(System.String)"> - <summary> - Creates a NS record from the given domain. - </summary> - <param name="ns">The string of the name server name.</param> - </member> - <member name="M:NDns.Message.Records.NSRecord.#ctor(System.Byte[],System.UInt16,System.UInt16@,NDns.Message.DomainCoder)"> - <summary> - Creates a NS record from the given byte data. - </summary> - <param name="data">The data to create the CName record from.</param> - <param name="start">The position to start reading the byte array from.</param> - <param name="length">The number of bytes read from the byte array.</param> - <param name="coder">The coder to use when parsing the data.</param> - </member> - <member name="P:NDns.Message.Records.NSRecord.NS"> - <summary> - Returns the name server name for this record. - </summary> - </member> - <member name="P:NDns.Message.Records.NSRecord.Data"> - <summary> - The data associated with this record as a user readable string. - </summary> - </member> - <member name="T:NDns.QueryFactory"> - <summary> - A factory class for creating DNS query and response messages. - </summary> - </member> - <member name="M:NDns.QueryFactory.CreateQuery(System.String,NDns.Message.QType)"> - <summary> - Creates a new DNS query to look up the record for the query string and type. - </summary> - <param name="queryString">The query string to pack.</param> - <param name="queryType">The type of the query.</param> - <returns>The DNS message.</returns> - </member> - <member name="T:NDns.Message.Records.PTRRecord"> - <summary> - A DNS PTR record. - </summary> - </member> - <member name="F:NDns.Message.Records.PTRRecord.name"> - <summary> - The name for this record. - </summary> - </member> - <member name="M:NDns.Message.Records.PTRRecord.#ctor(System.String)"> - <summary> - Creates a PTR record from the given domain. - </summary> - <param name="name">The string of the name.</param> - </member> - <member name="M:NDns.Message.Records.PTRRecord.#ctor(System.Byte[],System.UInt16,System.UInt16@,NDns.Message.DomainCoder)"> - <summary> - Creates a PTR record from the given byte data. - </summary> - <param name="data">The data to create the CName record from.</param> - <param name="start">The position to start reading the byte array from.</param> - <param name="length">The number of bytes read from the byte array.</param> - <param name="coder">The coder to use when parsing the data.</param> - </member> - <member name="P:NDns.Message.Records.PTRRecord.Name"> - <summary> - Returns the name for this record. - </summary> - </member> - <member name="P:NDns.Message.Records.PTRRecord.Data"> - <summary> - The data associated with this record as a user readable string. - </summary> - </member> - <member name="T:NDns.Message.OpCode"> - <summary> - The opcode is a four bit field that specifies query type in the message. - This value is set by the originator of a query and copied into the response. - </summary> - </member> - <member name="F:NDns.Message.OpCode.StandardQuery"> - <summary> - A standard query (QUERY). - </summary> - </member> - <member name="F:NDns.Message.OpCode.InverseQuery"> - <summary> - An inverse query (IQUERY). - </summary> - </member> - <member name="F:NDns.Message.OpCode.StatusRequest"> - <summary> - A server status request (STATUS). - </summary> - </member> - <member name="T:NDns.Message.ResponseCode"> - <summary> - The response code is a 4 bit field is set as part of responses. - </summary> - </member> - <member name="F:NDns.Message.ResponseCode.NoError"> - <summary> - No error condition. - </summary> - </member> - <member name="F:NDns.Message.ResponseCode.FormatError"> - <summary> - The name server was unable to interpret the query. - </summary> - </member> - <member name="F:NDns.Message.ResponseCode.ServerFailure"> - <summary> - The name server was unable to process this query due to a problem - with the name server. - </summary> - </member> - <member name="F:NDns.Message.ResponseCode.NameError"> - <summary> - Meaningful only for responses from an authoritative name server, - this code signifies that the string name referenced in the query - does not exist. - </summary> - </member> - <member name="F:NDns.Message.ResponseCode.NotImplemented"> - <summary> - The name server does not support the requested kind of query. - </summary> - </member> - <member name="F:NDns.Message.ResponseCode.Refused"> - <summary> - The name server refuses to perform the specified operation for - policy reasons. - </summary> - </member> - <member name="T:NDns.Message.DomainCoder"> - <summary> - This class encodes and decodes DNS string names in or for DNS messages. - </summary> - </member> - <member name="F:NDns.Message.DomainCoder.references"> - <summary> - A hash table of references indexed by string names. - </summary> - </member> - <member name="M:NDns.Message.DomainCoder.EncodeDomain(System.String,System.UInt16)"> - <summary> - Encodes a string entry or a reference to the string entry for the given - domain. - </summary> - <param name="domainName">The string to create the entry for.</param> - <param name="start">The reference to the start of this entry in the message.</param> - <returns>The string name or a reference to the first occurence.</returns> - </member> - <member name="M:NDns.Message.DomainCoder.DecodeDomain(System.Byte[],System.UInt16,System.UInt16@)"> - <summary> - Decodes the data to retrieve a string name. - </summary> - <param name="data">The data to process.</param> - <param name="start">The position to start processing from.</param> - <param name="length">The length of data read.</param> - <returns>The string decoded.</returns> - </member> - <member name="T:NDns.Message.Records.CNameRecord"> - <summary> - A DNS Canonical NAME record. - </summary> - </member> - <member name="F:NDns.Message.Records.CNameRecord.cName"> - <summary> - The canonical name for this record. - </summary> - </member> - <member name="M:NDns.Message.Records.CNameRecord.#ctor(System.String)"> - <summary> - Creates a CName record from the given domain. - </summary> - <param name="cName">The string of the canonical name.</param> - </member> - <member name="M:NDns.Message.Records.CNameRecord.#ctor(System.Byte[],System.UInt16,System.UInt16@,NDns.Message.DomainCoder)"> - <summary> - Creates a CName record from the given byte data. - </summary> - <param name="data">The data to create the CName record from.</param> - <param name="start">The position to start reading the byte array from.</param> - <param name="length">The number of bytes read from the byte array.</param> - <param name="coder">The coder to use when parsing the data.</param> - </member> - <member name="P:NDns.Message.Records.CNameRecord.CName"> - <summary> - Returns the canonical name for this record. - </summary> - </member> - <member name="P:NDns.Message.Records.CNameRecord.Data"> - <summary> - The data associated with this record as a user readable string. - </summary> - </member> - <member name="T:NDns.Message.Records.ARecord"> - <summary> - A DNS Address record. - </summary> - </member> - <member name="F:NDns.Message.Records.ARecord.address"> - <summary> - The address for this record. - </summary> - </member> - <member name="M:NDns.Message.Records.ARecord.#ctor(System.Net.IPAddress)"> - <summary> - Creates an address record using the address record. - </summary> - <param name="address">The address to create the record from.</param> - </member> - <member name="M:NDns.Message.Records.ARecord.#ctor(System.Byte[],System.UInt16,System.UInt16@,NDns.Message.DomainCoder)"> - <summary> - Creates an Address record from the given byte data. - </summary> - <param name="data">The data to create the Address record from.</param> - <param name="start">The position to start reading the byte array from.</param> - <param name="length">The number of bytes read from the byte array.</param> - <param name="coder">The coder to use when parsing the data.</param> - </member> - <member name="P:NDns.Message.Records.ARecord.Address"> - <summary> - The address for this record. - </summary> - </member> - <member name="P:NDns.Message.Records.ARecord.Data"> - <summary> - The data associated with this record as a user readable string. - </summary> - </member> - <member name="T:NDns.Message.QClass"> - <summary> - The class of records. - </summary> - </member> - <member name="F:NDns.Message.QClass.IN"> - <summary> - The Internet. - </summary> - </member> - </members> -</doc> Modified: NMail/trunk/NMail/DataTypes/ACLs/MailDomainPrivilege.cs =================================================================== --- NMail/trunk/NMail/DataTypes/ACLs/MailDomainPrivilege.cs 2006-05-06 15:33:43 UTC (rev 29) +++ NMail/trunk/NMail/DataTypes/ACLs/MailDomainPrivilege.cs 2006-05-14 06:32:21 UTC (rev 30) @@ -3,16 +3,44 @@ using System.Text; namespace NMail.DataTypes.ACLs { + /// <summary> + /// The possible privileges that can be listed on a mail domain ACL entry. + /// </summary> [FlagsAttribute] - public enum MailDomainPrivilege { + public enum MailDomainPrivilege : uint { + /// <summary> + /// No rights are granted. + /// </summary> None = 0, + /// <summary> + /// The mail domain can be deleted. + /// </summary> Delete, + /// <summary> + /// The mail domain can be modified. + /// </summary> Modify, + /// <summary> + /// Existing user's can be added to the mail domain. + /// </summary> AddUser, - RemoveUser + /// <summary> + /// Existing user's can be removed from the mail domain. + /// </summary> + RemoveUser, + + /// <summary> + /// Existing groups can be added to the mail domain. + /// </summary> + AddGroup, + + /// <summary> + /// Existing groups can be removed from the mail domain. + /// </summary> + RemoveGroup } } Modified: NMail/trunk/NMail/DataTypes/ACLs/StoreFolderPrivilege.cs =================================================================== --- NMail/trunk/NMail/DataTypes/ACLs/StoreFolderPrivilege.cs 2006-05-06 15:33:43 UTC (rev 29) +++ NMail/trunk/NMail/DataTypes/ACLs/StoreFolderPrivilege.cs 2006-05-14 06:32:21 UTC (rev 30) @@ -24,7 +24,7 @@ /// The possible privileges that can be listed on a store folder ACL entry. /// </summary> [FlagsAttribute] - public enum StoreFolderPrivilege { + public enum StoreFolderPrivilege : uint { /// <summary> /// No rights are granted. /// </summary> Modified: NMail/trunk/NMail/DataTypes/EmailAddress.cs =================================================================== --- NMail/trunk/NMail/DataTypes/EmailAddress.cs 2006-05-06 15:33:43 UTC (rev 29) +++ NMail/trunk/NMail/DataTypes/EmailAddress.cs 2006-05-14 06:32:21 UTC (rev 30) @@ -113,7 +113,7 @@ } // create (and validate) the mailbox. - this.mailbox = new Mailbox(parts[0]); + this.mailbox = new Mailbox(parts[0], true); if (parts[1].StartsWith("[") && parts[1].EndsWith("]")) { // this IS an IP address Modified: NMail/trunk/NMail/DataTypes/LocalStore/MailDomain.cs =================================================================== --- NMail/trunk/NMail/DataTypes/LocalStore/MailDomain.cs 2006-05-06 15:33:43 UTC (rev 29) +++ NMail/trunk/NMail/DataTypes/LocalStore/MailDomain.cs 2006-05-14 06:32:21 UTC (rev 30) @@ -29,6 +29,8 @@ /// </summary> public class MailDomain { public MailDomain(int mailDomainId, Host primaryHost) { + this.mailDomainId = mailDomainId; + this.primaryHost = primaryHost; } int mailDomainId; @@ -50,7 +52,7 @@ /// <summary> /// The main host that this domain accepts mail for. /// </summary> - Host PrimaryHost { + public Host PrimaryHost { get { return this.primaryHost; } @@ -64,7 +66,7 @@ /// <summary> /// Other hosts that this domain accepts mail for. /// </summary> - WildcardHost[] AdditionalHosts { + public WildcardHost[] AdditionalHosts { get { return this.additionalHosts; } @@ -78,7 +80,7 @@ /// <summary> /// Gets the mailbox mappings for this domain. /// </summary> - ILocalStoreUserMap[] MailboxMappings { + public ILocalStoreUserMap[] MailboxMappings { get { return this.mailboxMappings; } @@ -92,7 +94,7 @@ /// <summary> /// The actions that user's of this domain are allowed to use. /// </summary> - ILocalStoreDeliveryAction[] AllowedActions { + public ILocalStoreDeliveryAction[] AllowedActions { get { return this.allowedActions; } @@ -106,7 +108,7 @@ /// <summary> /// The validators that user's of this domain are allowed to use. /// </summary> - ILocalStoreRecipientValidator[] AllowedValidators { + public ILocalStoreRecipientValidator[] AllowedValidators { get { return this.allowedValidators; } @@ -120,7 +122,7 @@ /// <summary> /// The default set of actions to apply to incoming messages. /// </summary> - ILocalStoreDeliveryAction[] DefaultActions { + public ILocalStoreDeliveryAction[] DefaultActions { get { return this.defaultActions; } Modified: NMail/trunk/NMail/DataTypes/Mailbox.cs =================================================================== --- NMail/trunk/NMail/DataTypes/Mailbox.cs 2006-05-06 15:33:43 UTC (rev 29) +++ NMail/trunk/NMail/DataTypes/Mailbox.cs 2006-05-14 06:32:21 UTC (rev 30) @@ -57,6 +57,8 @@ throw new FormatException("Empty Mailbox not allowed."); } this.rawMailbox = null; + return; + } else { this.rawMailbox = mailbox.Trim(); Modified: NMail/trunk/NMail/ILocalStore.cs =================================================================== --- NMail/trunk/NMail/ILocalStore.cs 2006-05-06 15:33:43 UTC (rev 29) +++ NMail/trunk/NMail/ILocalStore.cs 2006-05-14 06:32:21 UTC (rev 30) @@ -293,7 +293,34 @@ /// privileges or invalid folder. /// </returns> int[] PurgeDeletedMessages(IAuthenticationToken authToken, StoreFolder folder); + + #region Folder ACLs + /// <summary> + /// Sets the privileges on the folder. If no ACE exists for the associated + /// identifier one is added. + /// </summary> + /// <param name="authToken">The authentication credentials.</param> + /// <param name="folder">The folder to set the ACE on.</param> + /// <param name="ace">The privileges and the identifier to put.</param> + void SetStoreFolderAce(IAuthenticationToken authToken, StoreFolder folder, StoreFolderAce ace); + /// <summary> + /// Removes any ACE associated with the given user. + /// </summary> + /// <param name="authToken">The authentication credentials.</param> + /// <param name="folder">The folder to remove the ACE from.</param> + /// <param name="identifier">The identifier to remove from the ACL.</param> + void RemoveStoreFolderAce(IAuthenticationToken authToken, StoreFolder folder, string identifier); + + /// <summary> + /// Gets the ACL for the given folder. + /// </summary> + /// <param name="authToken">The authentication credentials.</param> + /// <param name="folder">The folder to get the ACL for.</param> + /// <returns>The folder ACL or null if insufficient privileges.</returns> + StoreFolderAcl GetStoreFolderAcl(IAuthenticationToken authToken, StoreFolder folder); + #endregion + #region Load and Save Object /// <summary> /// Gets a serialized object that can be used by either an validation or a delivery action. @@ -344,9 +371,8 @@ /// <param name="userName">The name of the new user.</param> /// <param name="warnQuota">The warning quota level.</param> /// <param name="hardQuota">The hard quota.</param> - /// <param name="mailDomain">The mail domain to add the user to.</param> /// <returns>The result of the attemp to create a new user.</returns> - LocalStoreUserResult CreateUser(IAuthenticationToken authToken, string userName, int? warnQuota, int? hardQuota, Host mailDomain); + LocalStoreUserResult CreateUser(IAuthenticationToken authToken, string userName, int? warnQuota, int? hardQuota); /// <summary> /// Removes a user from the local store. @@ -387,6 +413,22 @@ /// <param name="userId">The Id of the user to remove the address from.</param> /// <param name="address">The address to remove.</param> void RemoveUserAddress(IAuthenticationToken authToken, int userId, EmailAddress address); + + /// <summary> + /// Adds a user to the given mail domain. + /// </summary> + /// <param name="authToken">The authentication credentials.</param> + /// <param name="userId">The Id of the user to add.</param> + /// <param name="mailDomainId">The Id of the mail domain to add the user to.</param> + void AddUserToMailDomain(IAuthenticationToken authToken, int userId, int mailDomainId); + + /// <summary> + /// Removes user from the given mail domain. + /// </summary> + /// <param name="authToken">The authentication credentials.</param> + /// <param name="userId">The Id of the user to remove.</param> + /// <param name="mailDomainId">The Id of the mail domain to revome the user from.</param> + void RemoveUserFromMailDomain(IAuthenticationToken authToken, int userId, int mailDomainId); #endregion #region Group Management @@ -436,33 +478,22 @@ /// <param name="group">The group details to update.</param> /// <returns>The result of the attempt to update the group.</returns> LocalStoreGroupResult UpdateGroup(IAuthenticationToken authToken, LocalStoreGroup group); - #endregion - #region Folder ACLs /// <summary> - /// Sets the privileges on the folder. If no ACE exists for the associated - /// identifier one is added. + /// Adds a group to the given mail domain. /// </summary> /// <param name="authToken">The authentication credentials.</param> - /// <param name="folder">The folder to set the ACE on.</param> - /// <param name="ace">The privileges and the identifier to put.</param> - void SetStoreFolderAce(IAuthenticationToken authToken, StoreFolder folder, StoreFolderAce ace); + /// <param name="groupId">The Id of the group to add.</param> + /// <param name="mailDomainId">The Id of the mail domain to add the group to.</param> + void AddGroupToMailDomain(IAuthenticationToken authToken, int groupId, int mailDomainId); /// <summary> - /// Removes any ACE associated with the given user. + /// Removes group from the given mail domain. /// </summary> /// <param name="authToken">The authentication credentials.</param> - /// <param name="folder">The folder to remove the ACE from.</param> - /// <param name="identifier">The identifier to remove from the ACL.</param> - void RemoveStoreFolderAce(IAuthenticationToken authToken, StoreFolder folder, string identifier); - - /// <summary> - /// Gets the ACL for the given folder. - /// </summary> - /// <param name="authToken">The authentication credentials.</param> - /// <param name="folder">The folder to get the ACL for.</param> - /// <returns>The folder ACL or null if insufficient privileges.</returns> - StoreFolderAcl GetStoreFolderAcl(IAuthenticationToken authToken, StoreFolder folder); + /// <param name="groupId">The Id of the group to remove.</param> + /// <param name="mailDomainId">The Id of the mail domain to revome the group from.</param> + void RemoveGroupFromMailDomain(IAuthenticationToken authToken, int groupId, int mailDomainId); #endregion #region Mail Domain Management @@ -496,6 +527,24 @@ /// <param name="updatedMailDomain">The updated mail domain.</param> /// <returns>The result of the attempt to update the mail domain.</returns> LocalStoreMailDomainResult UpdateMailDomain(IAuthenticationToken authToken, MailDomain updatedMailDomain); + + /// <summary> + /// Gets a list of group Ids for groups that are associated with the given + /// mail domain Id. + /// </summary> + /// <param name="authToken">The authentication credentials.</param> + /// <param name="mailDomainId">The mail domain to look up the groups for.</param> + /// <returns>The list of group Ids.</returns> + int[] GetMailDomainGroups(IAuthenticationToken authToken, int mailDomainId); + + /// <summary> + /// Gets a list of user Ids for groups that are associated with the given + /// mail domain Id. + /// </summary> + /// <param name="authToken">The authentication credentials.</param> + /// <param name="mailDomainId">The mail domain to look up the users for.</param> + /// <returns>The list of user Ids.</returns> + int[] GetMailDomainUsers(IAuthenticationToken authToken, int mailDomainId); #endregion } Modified: NMail/trunk/NMail/ILocalStoreData.cs =================================================================== --- NMail/trunk/NMail/ILocalStoreData.cs 2006-05-06 15:33:43 UTC (rev 29) +++ NMail/trunk/NMail/ILocalStoreData.cs 2006-05-14 06:32:21 UTC (rev 30) @@ -260,6 +260,30 @@ void SaveObject(object o, string key); #endregion + #region Folder ACLs + /// <summary> + /// Sets the privileges on the folder. If no ACE exists for the associated + /// identifier one is added. + /// </summary> + /// <param name="folder">The folder to set the ACE on.</param> + /// <param name="ace">The privileges and the identifier to put.</param> + void SetStoreFolderAce(StoreFolder folder, StoreFolderAce ace); + + /// <summary> + /// Removes any ACE associated with the given user. + /// </summary> + /// <param name="folder">The folder to remove the ACE from.</param> + /// <param name="identifier">The identifier to remove from the ACL.</param> + void RemoveStoreFolderAce(StoreFolder folder, string identifier); + + /// <summary> + /// Gets the ACL for the given folder. + /// </summary> + /// <param name="folder">The folder to get the ACL for.</param> + /// <returns>The folder ACL.</returns> + StoreFolderAcl GetStoreFolderAcl(StoreFolder folder); + #endregion + #region User Management /// <summary> /// Gets the user for the given username. @@ -317,6 +341,20 @@ /// <param name="user">The user details to update.</param> /// <returns>The result of the attempt to update the user.</returns> LocalStoreUserResult UpdateUser(LocalStoreUser user); + + /// <summary> + /// Adds a user to the given mail domain. + /// </summary> + /// <param name="userId">The Id of the user to add.</param> + /// <param name="mailDomainId">The Id of the mail domain to add the user to.</param> + void AddUserToMailDomain(int userId, int mailDomainId); + + /// <summary> + /// Removes user from the given mail domain. + /// </summary> + /// <param name="userId">The Id of the user to remove.</param> + /// <param name="mailDomainId">The Id of the mail domain to revome the user from.</param> + void RemoveUserFromMailDomain(int userId, int mailDomainId); #endregion #region Group Management @@ -360,30 +398,20 @@ /// <param name="group">The group details to update.</param> /// <returns>The result of the attempt to update the group.</returns> LocalStoreGroupResult UpdateGroup(LocalStoreGroup group); - #endregion - - #region Folder ACLs + /// <summary> - /// Sets the privileges on the folder. If no ACE exists for the associated - /// identifier one is added. + /// Adds a group to the given mail domain. /// </summary> - /// <param name="folder">The folder to set the ACE on.</param> - /// <param name="ace">The privileges and the identifier to put.</param> - void SetStoreFolderAce(StoreFolder folder, StoreFolderAce ace); + /// <param name="groupId">The Id of the group to add.</param> + /// <param name="mailDomainId">The Id of the mail domain to add the group to.</param> + void AddGroupToMailDomain(int groupId, int mailDomainId); /// <summary> - /// Removes any ACE associated with the given user. + /// Removes group from the given mail domain. /// </summary> - /// <param name="folder">The folder to remove the ACE from.</param> - /// <param name="identifier">The identifier to remove from the ACL.</param> - void RemoveStoreFolderAce(StoreFolder folder, string identifier); - - /// <summary> - /// Gets the ACL for the given folder. - /// </summary> - /// <param name="folder">The folder to get the ACL for.</param> - /// <returns>The folder ACL.</returns> - StoreFolderAcl GetStoreFolderAcl(StoreFolder folder); + /// <param name="groupId">The Id of the group to remove.</param> + /// <param name="mailDomainId">The Id of the mail domain to revome the group from.</param> + void RemoveGroupFromMailDomain(int groupId, int mailDomainId); #endregion #region Mail Domain Management @@ -413,6 +441,22 @@ /// <param name="updatedMailDomain">The updated mail domain.</param> /// <returns>The result of the attempt to update the mail domain.</returns> LocalStoreMailDomainResult UpdateMailDomain(MailDomain updatedMailDomain); + + /// <summary> + /// Gets a list of group Ids... [truncated message content] |