Example: Mailbox with Limits

This example shows how to provision an Exchange 2000 or Exchange 2003 mailbox object with limits on the amount of disk space the user is allocated to store their messages.

Attribute Inclusion List

You must select the following attributes from the Select Attributes property page for your Active Directory management agent to provision an Exchange mailbox:

  • mailNickname
  • homeMDB
  • mDBStorageQuota
  • mDBOverQuotaLimit
  • mDBOverHardQuotaLimit
  • mDBUseDefaults
  • msExchMailboxSecurityDescriptor

You can provision an Exchange mailbox with a mailbox store quota that limits the amount of disk space that the user is allowed to use to store their mail messages. Once the user exceeds their mailbox store quota, they receive an error message warning them about their excessive space usage, but they can still send and receive messages. You can also provision the mailbox with an overflow quota that adds an additional amount of disk space to store their mail messages. Once the user exceeds the overflow quota, the Exchange server refuses to allow the user to send mail. Finally, you can provision the mailbox with a hard limit on the amount of disk space to store their mail messages. If the user exceeds this hard limit, the Exchange server refuses to allow the user to send or receive mail.

The following example shows how to provision an Exchange mailbox. The mailbox is given a quota of disk space based upon the values of the mDBStorageQuota, mDBOverQuotaLimit, and mDBOverHardQuotaLimit attributes. Be sure to add a reference to logging.dll to use the LogException method.

    Public Sub Provision(ByVal mventry As MVEntry) _
        Implements IMVSynchronization.Provision
    
        Dim adMA As ConnectedMA
        Dim csentry As CSEntry
        Dim nickName, mailboxMDB As String
        Dim dn as ReferenceValue
    
        ' Mailbox limits, in kilobytes
        Dim storeQuota     As Long  ' When reached, Exchange Server issues a warning about the mailbox size
        Dim overQuotaLimit As Long  ' When reached, Exchange Server prohibits sending e-mail from this mailbox
        Dim hardLimit      As Long  ' When reached, Exchange Server prohibits sending and receiving e-mail
    
        try
            adMA = mventry.ConnectedMAs("Fabrikam AD MA")
    
            nickName   = mventry("mailNickname").Value
            mailboxMDB = mventry("homeMDB").Value
    
            storeQuota     = mventry("mDBStorageQuota").IntegerValue
            overQuotaLimit = mventry("mDBOverQuotaLimit").IntegerValue
            hardLimit      = mventry("mDBOverHardQuotaLimit").IntegerValue
    
            ' Construct the distinguished name
            dn = adMA.EscapeDNComponent("CN=" + mventry("cn").Value).Concat("ou=mailboxes,dc=fabrikam,dc=com")
    
            If 0 = adMA.Connectors.Count then
                csentry = ExchangeUtils.CreateMailbox(adMA, dn, nickName, mailboxMDB, storeQuota, overQuotaLimit, hardLimit)
            End If
    
            ' Log and rethrow any exception
            Catch ex As Exception
                Logging.Logging.LogException(ex, "Provision", "Caught exception", False)
                Throw
        End Try
    End Sub
    void IMVSynchronization.Provision (MVEntry mventry)
    {
        ConnectedMA adMA;
        CSEntry csentry;
        String nickName, mailboxMDB;
        ReferenceValue dn;
    
        // Mailbox limits, in kilobytes
        long storeQuota;      // When reached, Exchange Server issues a warning about the mailbox size
        long overQuotaLimit;  // When reached, Exchange Server prohibits sending e-mail from this mailbox
        long hardLimit;       // When reached, Exchange Server prohibits sending and receiving e-mail
    
        try
        {
            adMA = mventry.ConnectedMAs["Fabrikam AD MA"];
    
            nickName   = mventry["mailNickname"].Value;
            mailboxMDB = mventry["homeMDB"].Value;
    
            storeQuota     = mventry["mDBStorageQuota"].IntegerValue;
            overQuotaLimit = mventry["mDBOverQuotaLimit"].IntegerValue;
            hardLimit      = mventry["mDBOverHardQuotaLimit"].IntegerValue;
    
            // Construct the distinguished name
            dn = adMA.EscapeDNComponent("CN=" + mventry["cn"].Value).Concat("ou=mailboxes,dc=fabrikam,dc=com");
    
            if(0 == adMA.Connectors.Count)
            {
                csentry = ExchangeUtils.CreateMailbox(adMA, dn, nickName, mailboxMDB, storeQuota, overQuotaLimit, hardLimit);
            }
        }
    
        // Log and rethrow any exception
        catch(Exception ex)
        {
            Logging.Logging.LogException(ex, "Provision", "Caught exception", false);
            throw;
        }
    }

See Also

CreateMailbox(ConnectedMA,ReferenceValue,String,String,long,long,long)

Send comments about this topic to Microsoft

Build date: 2/16/2009