Sunday, 29 April 2007

Archive Exchange Email by Using GFI MailArchiver

Archiving email can be a challenge many companies and organisations face as email volumes increase everyday. Treating the email system as a storage repository (sending each other large attachments and keep them in the email system) by many end users certainly does not help the situation. You keep educating your staff members to delete the old old old emails they never bother to read again or simply empty the Deleted Items on some occasions, and everyone is still requesting to increase his/her email quota. Instructions have been given out to users, and the Desktop Support team have been trained to help users to archive old emails to PST files, but the store databases size still keeps growing. Also, there could be a policy in place to keep everybody’s email for five years. It is time for you to find a solution to archive the email from your end. One option is to archive the email to PST files, but managing the PST files can be another challenging task to do.

GFI MailArchiver can be a corporate email archiving solution enabling the email to be archived to a MS SQL database or an NTFS drive (with GFI MailArchiver version 4). It also provides users a web interface to check the archived email.

End users can log on to the web page by their AD accounts. They can browse and search the archived email (Now sitting in a different database).

Figure 1


Figure2

GFI MailArchiver also comes handy when you need to recover a single email. No matter it is out of the deletion retention period or deleted while holding the shift key. As long as the email is archived, you can recover it to the current email box or any email box like a charm.


Figure3

You also manage and configure GFI MailArchiver through the web interface, but it provides you more options than a normal user after you log in.

Figure 4

You can decide what to archive, set up archive store databases and archived email retention period, assign different access level to different groups and etc.

I will talk about how to set up the Mailbox Manager Recipient Policy to work with the GFI MailArchiver in my next post.

Wednesday, 4 April 2007

Distribution List Migration Tool – A Simple VB Program

In article Export Members of a Distribution List (10 March, 2007), I talked about two ways to export a Distribution List members to a file. However, both ways do not export people’s email addresses. I have written a VB program in MS Access which is used in conjunction with the tools such as DSGET, LDIFDE to actually migrate the members’ email addresses to a Distribution List to a TXT or a CSV file.

First, I use DSGET or LDIFDE export the members of the Distribution List to a TXT file and then import it to a Table in Access. It should look like this. (Figure 1)


Figure 1

Then I have included this piece of program in a module.(Sorry about the indenting. It does not work very well here.)


Sub dlmigration()
Dim fs
Dim fsOut
Dim i
Dim strFile
Dim oAccount
Dim arrFields
Dim strFull
Dim strLocation
Dim strUserName
Dim intLocationLength
Dim dbs As Database
Dim strLDAP
Dim intNameLength
Dim strOutputName
Dim Output

Dim rsQuerySQL As Recordset
Dim adQuerySQL
Set dbs = CurrentDb

adQuerySQL = "Select * From WildlifeDL"
Set rsQuerySQL = CurrentDb.OpenRecordset(adQuerySQL, dbOpenDynaset)

strFile = "c:\temp\outdata.txt"
Set fs = CreateObject("Scripting.FileSystemObject")
Set fsOut = fs.OpenTextFile(strFile, ForWriting, True)

Do Until rsQuerySQL.EOF Or rsQuerySQL.BOF

strFull = rsQuerySQL("Name")
arrFields = Split(strFull, ",")
strUserName = arrFields(0)

intNameLength = Len(strUserName)
intNameLength = intNameLength - 4
strOutputName = Right(strUserName, intNameLength)

For i = 1 To UBound(arrFields)
strLocation = strLocation & arrFields(i) & ","
Next

intLocationLength = Len(strLocation)
intLocationLength = intLocationLength - 1
strLocation = Left(strLocation, intLocationLength)

strLDAP = strUserName & "," & strLocation

Set oAccount = GetObject("LDAP://" & strLDAP & "")


Output = strOutputName & ": " & oAccount.EmailAddress
fsOut.WriteLine (Output)
strUserName = ""
strLocation = ""

rsQuerySQL.MoveNext
Loop
On Error Resume Next

fsOut.Close
Err.Clear

rsQuerySQL.Close
Set rsQuerySQL = Nothing
End Sub


Then I get this output TXT file. (Figure 2)


Figure 2

It has saved me a lot of hair tearing time.