Monday, March 31, 2008

Moving My Blog to Wordpress

I am moving my blog to Wordpress and the address is below.

Amit Tank

Sunday, January 6, 2008

Fair Overview of Exchange 2007 Server Roles

Exchange 2007 has been splited based on Server Roles so if you require any specific function on a server then it can be placed on indivudial server based on your requirement, Exchange architecture, performance, management or your organization's policies.

We used to set Front-End and Back-End server roles in Exchange 2003 but Exchange 2007 introduces five roles for an Exchange organization.

  • Mailbox
  • Hub Transport
  • Edge Transport
  • Client Access
  • Unified Messaging

Brief overview of each roles are below.

1. Mailbox Server

  • Use for holding all Exchange Database - Mailbox & Public Folder (optional).
  • It should be part of Domain & AD.
  • 50 Storage Groups & 50 Mailbox Stores in each Storage Groups.
  • STM File architecture has been removed.
  • Proper backup recovery plans should be in place for High Availability.

2. Hub Transport Server

  • Responsible for internal mail flow. (Same like Bridgehead in Exchange 2003).
  • It should be part of Domain & AD.
  • Incoming Mail Flow : Mailbox <- Hub Transport <- Edge Transport <- Internet.
  • Outgoing Mail Flow : Mailbox -> Hub Transport -> Edge Transport -> Internet.
  • Hub Transport can be placed instead of Edge Transport and can act for the similar function.
  • Transport Agents, AntiSpam, AntiVirus can be enabled.
  • Disclaimer can be set on.
  • One Hub Transport role should be placed at a AD Site for good architecture.

3. Edge Transport Server

  • Should be placed in Edge of your organization ( in workgroup / DMZ / perimeter ).
  • Should NOT be a member of Domain & AD.
  • ADAM ( Active Directory Application Mode ) provides AD information to Edge Transport server with help of Exchange component "EdgeSynch" by creating one way synchronization (from Domain to Edge Server).
  • ADAM & EdgeSynch provides AD recipient information & SPAM filtering efficiency.
  • Provides better Anti-spam and Anti-virus protection with help of connection filtering, content filtering, recipient filtering, SenderID, sender and IP reputation.
  • Edge Transport Rules to protect Exchange environment, based on SMTP and MIME addresses, words in the subject and message body, and SCL rating.
  • Address rewriting feature allows to modify the SMTP address on in/out-bound mail.

4. Client Access Server

  • Client Access Server was known as a Front End in Exchange 2003.
  • It should be part of Domain & AD.
  • Handles all the milbox access request comes from
  1. Outlook Anywhere - Application (like Outlook 2003 or 2007).
  2. MAPI, POP3 or IMAP4 client - like Outlook Express and Eudora
  3. Exchange ActiveSync - Mobile devices ( like Windows Mobile 5 Smartphone, pocket PC or any other device).
  4. Outlook Web Access (OWA) including Sharepoint & UNC access.
  • Clietn Access provides Autodiscover mailbox location for Microsoft Outlook 2007.

5. Unified Messaging

  • Merge VoIP environment with Exchange.
  • Requires VoIP Gateways or PBXes to connect with Exchange.
  • Access Voice Mails by using OWA.
  • Outlook Voice Access provides below things.
  1. Listen voicemails.
  2. Forward or reply to messages.
  3. Get emails automatically & read via text-to-speech interface.
  4. Get calendar information.
  5. Accept or reply to meetings.
  6. Set voicemail Out-of-Office messages.
  7. Access or dial contact.
  8. Reconfigure the lite settings on the mailbox.

Thursday, January 3, 2008

VBScript: Search Files Older than 30 Days (including sub folder) and Move to Another Location

Sometime we need an automated task to move some of the files from one location to another, examples are bleow.
· SMTP Logs
· SPAM Product Logs
· Some Application Logs
· Temporary Files

So I have created a script that allows you to search all files in a location (including sub folders) which are older than 30 days, move it to specified location and record it into a log file “Move-Result.txt”.

Give the input path where you want to search the files at below line in the script.
SPath = "c:\temp\"

Give the path of destination location at below line in the script.
objFSO.MoveFile FileName, "d:\test\"

====== Script Code ======
Dim objFSO, ofolder, objStream

Set objShell = CreateObject("WScript.Shell")
Set objFSO = CreateObject("scripting.filesystemobject")
Set objNet = CreateObject("WScript.NetWork")
Set FSO = CreateObject("Scripting.FileSystemObject")
set outfile = fso.createtextfile("Move-Result.txt",true)
SPath = "c:\temp\"

ShowSubfolders FSO.GetFolder(spath)

Sub ShowSubFolders(Folder)
For Each Subfolder in Folder.SubFolders
ShowSubFolders Subfolder
End Sub


Sub CheckFolder(objCurrentFolder)
Dim strTempL, strTempR, strSearchL, strSearchR, objNewFolder, objFile
Const OverwriteExisting = TRUE
currDate = Date
dtmDate = Date - 30
strTargetDate = ConvDate(dtmDate)
For Each objFile In objCurrentFolder.Files
FileName = objFile
'WScript.Echo FileName
strDate = ConvDate(objFile.DateCreated)
'strDate = ConvDate(objFile.DateLastModified)
If strDate < strTargetDate Then
objFSO.MoveFile FileName, "d:\test\"
outfile.writeline filename
End If
End Sub

Function ConvDate (sDate) 'Converts MM/DD/YYYY HH:MM:SS to string YYYYMMDD
strModifyDay = day(sDate)
If len(strModifyDay) < 2 Then
strModifyDay = "0" & strModifyDay
End If
strModifyMonth = Month(sDate)
If len(strModifyMonth) < 2 Then
strModifyMonth = "0" & strModifyMonth
End If
strModifyYear = Year(sDate)
ConvDate = strModifyYear & strModifyMonth & strModifyDay
End Function
====== Script Code ======

Thursday, December 27, 2007

Mailbox is empty - but ESM still shows size & count…

In last couple of months I have encountered couple of problem with same symptoms and heard a lot problem in newsgroups also.

Let’s consider the symptoms first:

• In the Exchange System Manager you have a Mailbox that says that it has 33 items and is a total size of 42,008 KB

• User has cleared down all their e-mail in the Inbox, Sent Items, Deleted items so they have a almost empty mailbox, but the Exchange System manager still claims that the mailbox contains items and those items amount to several Megabytes in size.

Some of the guys assume that mailbox is corrupted so delete it and re-create the exchange attributes with fresh mailbox to solve this issue, but we can go through below solution.

Solution Steps:

• Try to move mailbox from one Mailbox Store to another and check if you can see the location of any hidden item. Location might be Root, Inbox, Calendar etc…

• From the Microsoft Exchange web-site you will need to download the “Microsoft Exchange Server MAPI Editor” – to a machine where Outlook installed.

Note: Before we begin I have to tell you the fact that MAPI Editor is a pretty dangerous tool, it should be used with care and any small misuse could result in the loss of data or a mailbox being completely unreadable – take care and as always ensure that you have a working backup.

Configure outlook profile with the affected user’s mailbox.

Double click on the MFCMAPI.exe file and you will be having following screen:

Click on the OK button then go to the “SESSION” menu and select “Logon and Display Store Table”;

This will bring a pop-up for MAPI profile selection box (only if you have multiple MAPI profiles configured in machine);

Choose the correct profile from the list – or if you do not get the profile selection tab then proceed to the next stage

The MAPI Editor screen will change to look like the following;

You will need to double click on the item entitled “Mailbox – <<>>" and a new Window will open which looks like the following (you will have to expand the item called the “Root Container”):

Double click on the option in the left hand tree entitled “Top of Information Store” – following Window will be opened:

As you can see, in the top plane you can see all of the items that appear to be missing:

You can select all the messages above and export them to EML files, go to the “ACTIONS” menu and choosing the “SAVE TO FILE

Then you can go to the “Actions” menu and choose the “DELETE MESSAGES” option – this will prompt you with the following question:

Choose the “Permanent delete passing DELETE_HARD_DELETE (unrecoverable)” option – this will ensure that the items have been fully removed from the Information Store.

When you have deleted all hidden mails, close down the MAPI editor.

Final View in ESM:

Refresh the view and you will have below view in ESM

Mystery solved!

Tuesday, November 20, 2007

VBScript: Copy Group Membership From One Group to Anothe

Copies the group membership from one group to another (which is not possible by any GUI Tool)
Article is also available at:

=========Script Code===========

strSGroupDN = InputBox ("Enter the DN of Source Group" & VBCRLF &_
vbcrlf& _
vbcrlf& _
"e.g. CN=Source Group,OU=Users,DC=NWTraders,DC=com")
strDGroupDN = InputBox ("Enter the DN of Destination Group" & VBCRLF &_
vbcrlf& _
vbcrlf& _
"e.g. CN=Destination Group,OU=Users,DC=NWTraders,DC=com")

set dicSeenGroupMember = CreateObject("Scripting.Dictionary")
set objDGroup = GetObject("LDAP://" & strDGroupDN)
DisplayMembers "LDAP://" & strSGroupDN, dicSeenGroupMember
Function DisplayMembers (strGroupADsPath, dicSeenGroupMember)
set objGroup = GetObject(strGroupADsPath)
for each objMember In objGroup.Members
objDGroup.Add("LDAP://" & objMember.distinguishedName)
End Function
MsgBox "Group Members have been copied to Destination Group"

=========Script Code===========
Google Groups
Subscribe to IT_Discussions
Visit this group