Showing posts with label email. Show all posts
Showing posts with label email. Show all posts

Outlook 'contacting the server information' message


After implementing pacfile solution for proxy, the encounter 'contacting the server information' message keep appearing when opening HTML in Outlook.
Internet browsing using Internet Explorer is very slow in loading too.

Manage to isolate it that it is due to constant DNS reverse lookup for each access and the root cause is a certain parameter in the pacfile.

Issue caused by: isInNet(host, "a.b.c.d") parameters.
article link
"

The danger of IsInNet, isResolveable and dnsResolve forcing client DNS Lookups for every Query

 
Using isInNet(host, "a.b.c.d") can cause major chaos with your DNS infrastructure. This relatively innocuous looking function will force EVERY browser to perform a reverse DNS lookup on every unique hostname that it tries to contact that’s not already a simple IP address. This can rapidly have significant consequences, depending on how many workstations you have and how robust your DNS infrastructure is. This doesn’t necessary mean that you can’t use this function, but that you must do it carefully and understand the implications. See the "PAC File Tricks" section for one way that it can be used safely.
 
The function isResolvable and dnsResolve have very similar issues as the described above They forces a DNS query every time the PAC is parsed for every request. Be careful using this for the same reasons. If you have a problem that only one of these functions can solve, use it carefully. Ensure that you don’t do unrestricted lookups for all hosts. Use logic like "if the domain name is company.com and IsResolvable"
 
If you use these functions, unexpected behavior might result. For example, if you try to look up an invalid domain name it’s possible that there might be a 30+ second delay for the request as the client tries to resolve the name. It can also place a tremendous load on your company’s DNS infrastructure, so be careful of its capacity.
"

Tools used for the troubleshooting: DNSQuerySniffer

After removing the IsInNet proxy pac parameters, you will realise that the number of DNS query is reduced on the DNSQuerySniffer tool.
And the message has stop and Internet Explorer browsing is loading faster too.

MS Exchange powershell handy commands

Source Link

Get mailboxes that have a space in the displayName
get-mailbox -filter "(displayname -like '* *')" | ft identity,database -wrap -auto

Find Exchange transport rules
Get-TransportRule | ft Name,Priority,{$_.Conditions | select Name,{$_.Words}},{$_.Actions | select Name,Rank,SclValue},Comments -wrap -auto 

Find Exchange 2007 mailbox servers in the local organisation
get-mailboxserver

Get mailbox statistics for mailbox servers with the specified name
get-mailboxserver | where {$_.Name -like 'server*'} | Get-MailboxStatistics | Sort-Object TotalItemSize -Descending | select-object -prop DisplayName,LastLogonTime,StorageLimitStatus,TotalItemSize,TotalDeletedItemSize,@{N="Size (MB)";E={$_.TotalItemSize.Value.ToMB()}},@{N="Deleted Item Size (MB)";E={$_.TotalDeletedItemSize.Value.ToMB()}},ItemCount,ServerName,StorageGroupName,DatabaseName.LegacyDN | export-csv -path c:\temp\MailboxStatistics.csv

Get mailbox database size limit/quota settings on malibox stores
get-mailboxdatabase | select-object -prop Name,ServerName,StorageGroup,ProhibitSendReceiveQuota,ProhibitSendQuota,IssueWarningQuota | ft -wrap -autosize

Find the number of mail-enabled contacts in the organisation
get-mailcontact -ResultSize 'unlimited' | measure

Export the IP addressed allowed to relay through the specified connector
$rc = Get-ReceiveConnector -id 'server01\connector01'; $rc.RemoteIPRanges | export-csv -path c:\temp\rc1.csv

Exchange 2007 global transport size limits
get-transportconfig | ft -prop MaxReceiveSize,MaxSendSize -wrap -autosize   

Exchange 2007 transport server sizelimits
get-transportserver | ft -prop Name,OriginatingServer,InternalDsnMaxMessageAttachSize,ExternalDsnMaxMessageAttachSize -wrap -autosize

Exchange 2007 send connector size limits
get-sendconnector | ft -prop Identity,AddressSpaces,MaxMessageSize -wrap -autosize

Exchange 2007 receive connector size limits
get-receiveconnector | ft -prop Identity,AddressSpaces,MaxMessageSize -wrap -autosize

Exchange 2007 mailbox limits other than unlimited
get-mailbox |where {$_.MaxSendSize -ne 'unlimited' -or $_.MaxReceiveSize -ne 'unlimited'} | ft -prop Identity,MaxSendSize,MaxReceiveSize -wrap -autosize

Get the storage group copy status (CCR/LCR/SCR) for mailbox stores 
get-mailboxserver | where {$_.Name -like 'server*'} | Get-StorageGroupCopyStatus  | ft -wrap -autosize

Get storage groups and their SCR stand-by machine
Get-StorageGroup  | ft -prop Name,Server,StandbyMachines -wrap -autosize

Get the storage group copy status (SCR) for the first target on all SGs
Get-StorageGroup | %{Get-StorageGroupCopyStatus -id $_.Identity -StandbyMachine $_.StandbyMachines[0].NodeName} | sort -prop LastReplayedLogTime | select -prop Identity,SummaryCopyStatus,ServiceDown,CopyQueueLength,ReplayQueueLength,LatestAvailableLogTime,LastCopyNotificationedLogTime,LastCopiedLogTime,LastInspectedLogTime,LastReplayedLogTime,LatestFullBackupTime | export-csv -path c:\temp\SCR_Status.csv

Get the storage group copy status (SCR) for the specified server/target
Get-StorageGroupCopyStatus -Server server01 -standbymachine server01 | ft -wrap -autosize

Find the backup status and whether VSS was used for the backup
Get-StorageGroup | %{Get-StorageGroupCopyStatus -id $_.Identity -StandbyMachine $_.StandbyMachines[0].NodeName} | sort -prop LatestFullBackupTime | select -prop Identity,SummaryCopyStatus,ServiceDown,LatestFullBackupTime,SnapshotBackup  | export-csv -path c:\temp\MailboxBackup_Status.csv

Change an Exchange 2007 mailbox type to equipment (or room)
Set-Mailbox MailboxName -Type Equipment

Add full access mailbox permissoins for an Exchange 2007 mailbox
Add-MailboxPermission -Id MailboxName -User:'DOMAIN\group' -AccessRights:FullAccess

Add send as rights to the AD security of a mail-enabled user
Add-ADPermission -Id MailboxName -User:'DOMAIN\group' -ExtendedRights:Send-As

Find mailboxes that are not standard user mailboxes (Room, Equipment)
get-mailbox | where {$_.RecipientTypeDetails -ne 'UserMailbox'} | fl -prop Name,RecipientTypeDetails

Remove mailbox permissions for the specified user
Remove-MailboxPermission MailboxUser -User DOMAIN\User -AccessRight FullAccess    

Find exchange mailbox statistics including per-user mailbox and DB limits 
. C:\data\scripts\PowerShell\Exchange\FindMailboxSizes.ps1 | out-file -file c:\temp\MailboxStats.txt -encoding ascii

Find the AutomateProcessing setting for a resource mailbox
Get-MailboxCalendarSettings  -id mailboxID

Modify a resource mailbox to automatically accept in-policy requests
Set-MailboxCalendarSettings -id mailboxID -AllBookInPolicy:$true 

Find the mailbox type of one or more mailboxes
get-mailbox -id mailboxes* | fl -prop IsResource,RecipientType,RecipientTypeDetails,ResourceType

Find the debug event logging levels set on an Exchange 2007 server
Get-EventLoglevel -server ExchangeServer01

Set the equipment mailbox to auto-accept and allow anyone to automatically book
Set-MailboxCalendarSettings -Identity "mailbox01" -AutomateProcessing AutoAccept -AllBookInPolicy $true

Turn on high logging for the booking attendant
Set-EventLogLevel "server01\MSExchangeMailboxAssistants\Resource Booking Attendant" -Level High

Find all resource mailboxes of type equipment
get-mailbox |where {$_.resourcetype -eq 'Equipment'}

Read Exchange 2007 event logs for the MSExchangeMailboxAssistants (resources)
get-eventlog -logname application -computer server01 -source msexchangemailboxassistants

Check Exchange Message Tracking Logs based on message ID
Get-MessageTrackingLog -MessageId 'FBE264977E286848971C4C15BDD7F5FE439245C5EF@mx.company.com.au' -Start "05/07/2011 00:00:00" -End "07/07/2011 06:00:00" -server server01

Check Exchange Message Tracking Logs based on mail subject
Get-MessageTrackingLog -MessageSubject "RE: Subject" -Start "06/07/2011 00:00:00" -End "07/07/2011 00:00:00" -server server01

Find Exchange server version, edition and roles
Get-ExchangeServer | sort | select-object -prop Name,Role,Edition,ServerRole,Site,ExchangeVersion,AdminDisplayVersion | export-csv -path c:\temp\ExchangeServers.csv

Find the mailbox sizes in Exchange 2007 looking at the filesystem
Get-MailboxDatabase | foreach-object {add-member -inputobject $_ -membertype noteproperty -name mailboxdbsizeinGB -value ([math]::Round(([int64](get-wmiobject cim_datafile -computername $_.server -filter ('name=''' + $_.edbfilepath.pathname.replace("\","\\") + '''')).filesize / 1GB),2)) -passthru} | Sort-Object mailboxdbsizeinGB -Descending | format-table identity,mailboxdbsizeinGB 

Update the allowed IP addresses for an Exchange 2007 receive connector
$connector = Get-ReceiveConnector -id 'server01\connector01'; $connector.RemoteIPRanges += "192.168.20.10-196.168.20.20"; Set-ReceiveConnector 'server01\connector01' -RemoteIPRanges $connector.RemoteIPRanges

Move a mailbox to a new database
Move-Mailbox -id user01 -targetdatabase 'server01\sg01\db01' 

View the original warning quota message
Get-SystemMessage -original | where {$_.Identity -like 'en\warn*'}

Add a new warning quota message
New-SystemMessage -QuotaMessageType WarningMailbox -Language EN -Text "Please reduce your mailbox size! Delete any items you don't need from your mailbox and empty your Deleted Items folder."

Hide a mailbox from the GAL
get-mailbox -id user01 | set-mailbox -HiddenFromAddressListsEnabled:$true

Remove SID History from a user
get-aduser -id 'user01' -prop sIDHistory | foreach {set-aduser $_ -remove @{sIDHistory=$_.sIDHistory.value}}

Remove SID history from one or more groups
Import-Module ActiveDirectory; $groups = get-content -path groups_sAMAccountName.txt; foreach ($group in $groups) {get-adgroup -id $group -prop sIDHistory | foreach {set-adgroup $_ -remove @{sIDHistory=$_.sIDHistory.value}}}

Remove multiple attributes from an AD account
$user = get-aduser -id 'user01' -prop HomeDrive,HomeDirectory,ProfilePath; set-aduser $user -HomeDrive $null -HomeDirectory $null -ProfilePath $null

Enumerate public folders
Get-PublicFolder -server server01 -Recurse | ft -wrap -autosize

Restore a deleted user account using AD recycle bin
$deletedaccount = get-adobject -filter 'samaccountname -eq "user01"' -IncludeDeletedObjects -properties *; $deletedaccount | restore-adobject

Reconnect a mailbox to an AD user account 
$user = Get-MailboxStatistics -server server01 | where {$_.displayName -eq 'User01, Test' -and $_.DisconnectDate -ne $null}; Connect-Mailbox -Identity $user.Identity -Database $user.database -User DOMAIN\user01

Group and list the mailboxes on each mailbox store 
get-mailboxdatabase -server server01 | get-mailbox | Group-Object -prop database | ft -wrap -autosize

Create new mail contacts from CSV input in Exchange 2007
$dataSet = Import-Csv -path contacts.csv; foreach ($contact in $dataset)  {  New-MailContact -ExternalEmailAddress $contact.targetaddress -Name $contact.cn -DisplayName $contact.displayName -FirstName $contact.givenName -LastName $contact.sn -OrganizationalUnit domain.local/Contacts -PrimarySmtpAddress $contact.mail}

Set the primary mail AD attribute of a newly created Exchange 2007 contact
$contacts = get-mailcontact -OrganizationalUnit 'domain.local/Contacts' | where {$_.Name -like 'test*'} ; foreach ($contact in $contacts) {  set-mailcontact -id $contact.identity -WindowsEmailAddress $contact.PrimarySmtpAddress;  $contact.HiddenFromAddressListsEnabled = $true; }

Create a new basic authenticated send connector in Exchange 2007
$pass = Read-Host "Password?" -assecurestring; $credential = new-object System.Management.Automation.PSCredential("domain\username",$pass); $cred = get-credential -Credential $credential; New-SendConnector -Name "send01" -AddressSpaces * -AuthenticationCredential $cred -SmartHostAuthMechanism BasicAuth -DNSRoutingEnabled:$false -SmartHosts smtp.local

Find users who have been delegated send on behalf of rights to a mailbox
$delegates = Get-Mailbox 'room01' | select-object GrantSendOnBehalfTo; $delegates.GrantSendOnBehalfTo.toarray()

Find NDR 5.1.4 duplicate mail addresses from Exchange application event logs 
get-eventlog -logname 'Application' -computer server01 -after "28/10/2011 8:00:00" | where {$_.eventID -eq 3029}

Replace the primary SMTP email address 
Get-Mailbox -id 'user01' | Set-mailbox -EmailAddressPolicyEnabled $false; Get-Mailbox -id 'user01' | Update-List -Property EmailAddresses -Add "SMTP:user01@domain.local" | Set-Mailbox; Get-Mailbox -id 'user01' | Set-mailbox -EmailAddressPolicyEnabled $true

Add a new secondary SMTP address 
Get-Mailbox -id 'user01' | Update-List -Property EmailAddresses -Add "smtp:user01@domain.local" | Set-Mailbox

Check Exchange 2007 queues
Get-Queue -server server01 | ft -wrap -autosize

Find the public delegates for a mailbox and then reset to a new list
Get-Mailbox -id user01 | select -expand GrantSendOnBehalfTo; Get-Mailbox -id user01 | Set-Mailbox -grantSendOnBehalfto User02,User03,User04

Export Exchange client connection statistics (online/cached mode, client ver) 
$dateshort = [DateTime]::Now.ToString("yyyyMMddhhmmss"); get-mailboxserver | get-logonstatistics | select * | export-csv -path ("c:\temp\ExchangeLogonStats_" + $dateshort  + ".csv"); write-host ("c:\temp\ExchangeLogonStats_" + $dateshort  + ".csv")

Get a mailbox from the domain sAMAccountName 
get-mailbox -id 'domain\username' | fl *

Change the sAMAccountName of a mailbox-enabled user account
get-mailbox -id 'domain\user001' | set-mailbox -samaccountname user01

Change the Name/CN/DN of a mailbox-enabled user account
get-mailbox -id 'domain\user' | set-mailbox -DisplayName "User, Test" -Name "User, Test"

Change the alias of a mailbox object
get-mailbox -id 'domain\user' | set-mailbox -alias user01

Check if a mailbox exists
if (get-mailbox -id user01 -ErrorAction SilentlyContinue) {write-host "test"}

Find the oldest and newest dates of mailbox folders
get-mailboxfolderstatistics -id user01 -FolderScope Inbox -IncludeOldestAndNewestItems

Find Exchange logs for messages that failed to deliver
Get-MessageTrackingLog  -Start "21/12/2011 6:00:00" -server server01 | where {$_.eventId -eq 'Fail'} | ft * -wrap -autosize

Find messages where delivery failed 
Get-MessageTrackingLog -EventId FAIL -Start "20/12/2011 6:00:00" -server server01 | ft TimeStamp,Source,EventID,Recipients,Sender,RecipientStatus -wrap -autosize 

See which mailboxes a user has direct permissions to access
get-mailbox -OrganizationalUnit 'domain.local/Mailboxes/Shared' | get-mailboxpermission | where {$_.user -like 'domain\user01'}

Find mailboxes that have a specified ACE set
get-mailbox -OrganizationalUnit 'domain.local/Mailboxes/Shared' | get-adpermission | where {$_.AccessRights -contains 'WriteProperty' -and $_.Properties -like 'Personal-Information'} | ft -wrap -autosize

Find active sync utilisation for mailboxes
Get-Mailbox -ResultSize:Unlimited |ForEach {Get-ActiveSyncDeviceStatistics -Mailbox:$_.Identity} |ft identity,devicemodel,LastSuccessSync,LastPolicyUpdateTime,DeviceType,DeviceID,DeviceUserAgent,LastPingHeartbeat,DeviceFriendlyName,DeviceOS,DeviceIMEI,DevicePhoneNumber

Find SMTP mail delivery failures
foreach ($server in Get-TransportServer) {Get-MessageTrackingLog -EventId FAIL -Start "01/01/2012 6:00:00" -server $server.name | where {$_.recipients -like '*@*' -and $_.recipients -notlike '*@local.com' -and $_.recipients -notlike 'IMCEAEX*'} | ft EventId,Source,Sender,Recipients -wrap -autosize}

Find the owner of one or more mailboxes
get-mailbox -id user01 | get-adpermission -owner | ft -wrap -autosize

Get the Exchange 2007 organisation config
Get-OrganizationConfig

Find the Exchange 2007 accepted domains (authoritative and relay)
Get-AcceptedDomain

Find logs for distribution list expansion
foreach ($server in Get-TransportServer) {Get-MessageTrackingLog  -EventId EXPAND -Start "29/02/2012 17:28:00" -server $server.name | ft Timestamp,Sender,RelatedRecipientAddress,Recipients,RecipientStatus -wrap -autosize}

Find logs for e-mail from a specific address
foreach ($server in Get-TransportServer) {Get-MessageTrackingLog  -Sender "user01@external.com"  -Start "29/02/2012 17:28:00" -server $server.name | ft Timestamp,Recipients,RecipientStatus,Sender -wrap -autosize}

Find logs for failed messages
foreach ($server in Get-TransportServer) {Get-MessageTrackingLog  -EventId FAIL -Start "29/02/2012 17:28:00" -server $server.name | ft Timestamp,Recipients,RecipientStatus,Sender -wrap -autosize}

Find logs for messages from the last minute
foreach ($server in Get-TransportServer) {Get-MessageTrackingLog -start (Get-Date).AddMinutes(-1)  -server $server.name | ft Timestamp,Sender,RelatedRecipientAddress,Recipients,RecipientStatus -wrap -autosize}

Find mail attributes for a public folder
get-mailpublicfolder -id "\Folder01\SubFolder01" | fl *

Find Exchange 2007 Web Services
Get-WebServicesVirtualDirectory | fl *

Find Exchange Message Tracking messages from a particular client IP
foreach ($server in Get-TransportServer) {Get-MessageTrackingLog -resultsize unlimited -start (Get-Date).AddMinutes(-15) -server $server.name | where {$_.ClientIp -eq '192.168.1.10'} | ft * -wrap -autosize}   

Report explicit OU security for OUs in the domain
$ous = dsquery ou "dc=domain,dc=local" -limit 0; $permissions = foreach ($ou in $ous) {Get-ADPermission -id $ou.replace('"','') | where {$_.IsInherited -eq $False -and $_.User -like 'DOMAIN\*'}}; $permissions | select Identity,User,Deny,{$_.ChildObjectTypes},{$_.AccessRights},{$_.Properties},{$_.InheritedObjectType} | export-csv -path c:\temp\OU_Permission_20120309.csv

Find OWA Internal/External URL configuration
Get-OwaVirtualDirectory | where {$_.name -eq 'owa (Default Web Site)'} | ft Server,Name,InternalUrl,ExternalUrl -wrap -autosize 

Find transport server message tracking configuraiton 
Get-TransportServer | fl Name,messagetra*

List the available event logs from a remote server
Get-EventLog -computer server01 -list

List the Exchange 2007 diagnostic logging configuration
Get-EventLogLevel -server server01 | ft -wrap -autosize

Enable connectivity logging for Exchange 2007 Edge/Hub transport servers
get-TransportServer -id server01 | set-transportserver -ConnectivityLogEnabled:$true

View messages in the queue
get-queue -server server01 | get-message -IncludeRecipientInfo | fl *

Find recipients with a filter based on department
get-recipient -filter '((Department -eq "DEPT") -and (Alias -ne $null))'

Find users that do not have the specified primary SMTP address domain
get-recipient -filter '(ObjectClass -eq "User")' -resultsize:unlimited | where {$_.PrimarySmtpAddress -notlike "*@domain.local"} | ft Identity,PrimarySmtpAddress -wrap -autosize

Export to CSV users that don't have the specified primary SMTP domain
get-recipient -filter '(ObjectClass -eq "User")' -resultsize:unlimited | where {$_.PrimarySmtpAddress -notlike "*@domain.local"} | select Identity,PrimarySmtpAddress,Department | export-csv -path c:\temp\PrimarySMTP.csv

Expand a nested distribution group, counting all mail recipients
. C:\data\scripts\PowerShell\Exchange\ExpandDL.ps1 "CN=DL01,OU=Groups,dc=domain,dc=local"       

Find the user and SID on mailbox permissions (useful when sidhistory is used)
get-mailboxpermission -id user01 | ft User,{$_.user.securityidentifier} -wrap -auto

Find mailbox enabled users with a first/last name using ActiveDirectory
$users = get-aduser -filter {givenName -like '*' -and sn -like '*' -and mailnickname -like '*'}

Find user mailbox recipients that have a first and last name set
$mailboxes = get-recipient -resultsize unlimited -filter "(firstName -like '*' -and lastname -like '*' -and Alias -like '*' -and RecipientType -eq 'UserMailbox')"; foreach ($mailbox in $mailboxes) {  $firstName = $mailbox.firstname.replace(" ", "");   $lastName = $mailbox.lastname.replace(" ", "");   $primary = $mailbox.EmailAddresses | where {$_.IsPrimaryAddress -eq $true -and $_.PrefixString -eq "SMTP"} ;   $mailSplit =  $primary.SmtpAddress.split(".@");   if ($firstName -ne $mailSplit[0] -or $lastName -ne $mailSplit[1]) {    Write-Host $primary.SmtpAddress;   }}

Find mail recipients that don't have a first or last name (shared mailboxes)
$mailboxes = get-recipient -resultsize unlimited -filter {firstName -eq $null -and lastname -eq $null -and Alias -like '*' -and RecipientType -eq 'UserMailbox'}

Find mailboxes with the specified domain name
get-mailbox -filter {emailaddresses -like '*@domain.local'}

Find mailboxes with the specified domain name as their primary address
get-mailbox -filter {emailaddresses -like '*@domain.local'} | get-mailbox | where {$_.primarysmtpaddress -like '*@domain.local'}

Find distribution lists that can be emailed externally
$dls = get-distributiongroup -resultsize unlimited -filter {Alias -ne $null -and RequireAllSendersAreAuthenticated -eq $true}

Update the accept from for a DL with a list of users
$users = "User01, Test", "User02, Test"; foreach ($user in $users) {$user = get-mailbox -id $user; if ($user) {Get-DistributionGroup -id "DL01" | Update-List -Property AcceptMessagesOnlyFrom -Add $user.distinguishedName | Set-DistributionGroup }}

Update a distribution list to allow sending only from another DL
set-distributiongroup -id dl01 -AcceptMessagesOnlyFromDLMembers dl02

Find the user accounts for mailbox recipients with first and last name 
$mail = get-user -filter {(FirstName -ne $null -and LastName -ne $null)} -RecipientTypeDetails UserMailbox,LinkedMailbox -resultsize unlimited -OrganizationalUnit "OU=Mailboxes,dc=domain,dc=local" | select FirstName,LastName,windowsemailaddress

Find users that don't conform to first.last@ email addresses
$mail = get-user -filter {(FirstName -ne $null -and LastName -ne $null)} -RecipientTypeDetails UserMailbox,LinkedMailbox -resultsize unlimited -OrganizationalUnit "OU=Mailboxes,dc=domain,dc=local" | select FirstName,LastName,windowsemailaddress

Create a new transport rule setting SCL based on subject or body text
$condition = Get-TransportRulePredicate SubjectOrBodyContains; $condition.words = "SCL=9"; $action = Get-TransportRuleAction SetSCL; $action.sclvalue = 9; New-TransportRule -name "Filter01" -Condition $condition  -Action $action

Find mailboxes configured to forward and report details
$outputFile = "c:\temp\EmailForward_" + ([DateTime]::Now.ToString("yyyyMMddhhmmss")) + ".csv"; get-mailbox -filter {forwardingaddress -ne $null} | sort -prop whenChanged -descending | select whenChanged,SamAccountName,Identity,DeliverToMailboxAndForward,ForwardingAddress, @{N='ForwarderPrimarySMTPAddress';E={$recipient = get-recipient -id $_.ForwardingAddress; if ($recipient.recipienttype -eq 'MailContact') {write-output $recipient.externalemailaddress.tostring().replace("SMTP:","")} else {write-output $recipient.primarysmtpaddress}}},@{N='RecipientType';E={$recipient = get-recipient -id $_.ForwardingAddress; write-output $recipient.recipienttype.tostring()}} | export-csv -path $outputFile; write-host $outputFile

Turn on send connector verbose logging
get-sendconnector -id 'SendConnect01' | set-sendconnector -ProtocolLogginglevel verbose

Find NDR 5.4.6 routing loops in the last day from all transport servers
foreach ($server in Get-TransportServer) {Get-MessageTrackingLog -resultsize unlimited -EventId FAIL -Start (Get-Date).AddDays(-1) -server $server.name | where {$_.RecipientStatus -like '*5.4.6*'} | ft Timestamp,Recipients,RecipientStatus,Sender -wrap -autosize}

Find email addresses that aren't using first.last
foreach ($user in $mail) { if (!($user.windowsemailaddress.tostring().tolower().contains($user.firstname.tolower().replace(' ', '') + '.' + $user.lastName.tolower().replace(' ', '') + '@'))) { write-host $user.windowsemailaddress} }

Export a mailbox to PST
export-mailbox -id user01 -PSTFolderPath c:\temp\user01.pst

Find the Exchange 2003 global restrictions in AD for envelope recipients
Get-ADObject -id "CN=Message Delivery,CN=Global Settings,CN=ORG,CN=Microsoft Exchange,CN=Services,CN=Configuration,dc=domain,dc=local" -prop msExchRecipLimit

Find the Exchange 2007/2010 global restrictions in AD for envelope recipients
Get-ADObject -id "CN=Transport Settings,CN=ORG,CN=Microsoft Exchange,CN=Services,CN=Configuration,dc=domain,dc=local" -prop msExchRecipLimit

Find the Exchange 2007 transport settings for max enveople recipients
Get-TransportConfig | fl MaxRecipientEnvelopeLimit

Update managedBy for a distribution group
get-distributiongroup -id DL01 | Set-DistributionGroup -ManagedBy "CN=user01,OU=Mailboxes,dc=domain,dc=local"

Get the offline address book update schedule 
$oab = Get-OfflineAddressBook; $oab.schedule | ft -wrap -auto

Find the offline address book server, PF database and web distribution point
Get-OfflineAddressBook | fl Server,PublicFolderDatabase,VirtualDirectories

Find the Offline Address Book virtual directory
Get-OabVirtualDirectory | ft -wrap -auto

Find the custom resource schema configuration for custom resource properties
Get-ResourceConfig

Gather public folder statistics
$pfstats = Get-PublicFolderStatistics -server server01

Start the Exchange Management Shell from a standard powershell instance
add-pssnapin  Microsoft.Exchange.Management.PowerShell.Admin; . "C:\Program Files\Microsoft\Exchange Server\bin\Exchange.ps1"

Send an SMTP e-mail with PowerShell 2.0 or later
send-mailmessage -from $sendfrom -to $sendto -subject $subject -body $body -BodyAsHtml -smtpServer $smtpserver

Add an availability address space to access local public folder schedule+ FB
Add-AvailabilityAddressSpace -ForestName remote.address.space -AccessMethod PublicFolder

Query free/busy schedule+ public folder replica information
get-publicfolder -Identity "\NON_IPM_SUBTREE\SCHEDULE+ FREE BUSY"  -Recurse | ft Name,OriginatingServer,Replicas -wrap -auto

Query free/busy schedule+ public folder information on Exchange 2007/2010
get-publicfolder -Identity "\NON_IPM_SUBTREE\SCHEDULE+ FREE BUSY"  -Recurse | Get-PublicFolderItemStatistics | ft PublicFolderName,Subject -wrap -auto

Show the e-mail addresses for the specified user in list format
((Get-Mailbox user01).EmailAddresses)

Add a secondary e-mail address in Exchange 2010 to a mailbox user
Set-Mailbox user01 -EmailAddresses (((Get-Mailbox user01).EmailAddresses)+="smtp:user01@test.com")

Add a secondary e-mail address in Exchange 2010 to a MEU
Set-MailUser testuser01 -EmailAddresses (((Get-MaiLUser testuser01).EmailAddresses)+="smtp:testuser01@new.domain.com") -whatif

Update the targetAddress attribute for an ADSI object
$user = [adsi]"LDAP://CN=testuser01,OU=Migrated,DC=domain,DC=local"; $user.put("targetAddress","smtp:testuser01.User@new.domain.com")

List the client-side public folder permissions for all public folders
$pfperms = Get-PublicFolder -recurse | Get-PublicFolderClientPermission

Get the report from a Exchange 2010 new-moverequest operation
$MoveReport = (Get-MailboxStatistics -Identity user01 -IncludeMoveReport).MoveHistory

Add to the managedBy property of a distribution list
set-distributiongroup -id $group -managedby (((get-distributiongroup -id $group).managedby) += $user.identity.distinguishedName)

Find the current management roles that have distribution in the name
Get-ManagementRoleAssignment | where {$_.name -like '*recipient*'} -warningaction silentlycontinue | ft -wrap -auto

Find CAS array information for an Exchange 2010 installation
get-clientaccessarray

Find delegate access to a mailbox with Exchange 2010 SP1
adfind -b "DC=domain,DC=local" -f "(&(objectClass=User)(objectCategory=Person)(msExchDelegateListLink=*))" -h dc01.domain.local samaccountname msExchDelegateListLink

Find delegate access to a mailbox with Exchange 2010 SP1 through backlink
adfind -b "DC=domain,DC=local" -f "(&(objectClass=User)(objectCategory=Person)(MsExchDelegateListBL=*))" -h dc01.domain.local samaccountname MsExchDelegateListBL

Convert legacy global distribution groups to universal
Get-Group -ResultSize Unlimited -RecipientTypeDetails NonUniversalGroup -OrganizationalUnit "OU=Distribution Lists,OU=Resources,DC=domain,DC=local" | Where-Object {$_.GroupType -match 'global'} | Set-Group -Universal

Mail-enable legacy global DLs that have been converted to universal
Get-Group -ResultSize Unlimited -RecipientTypeDetails UniversalDistributionGroup -OrganizationalUnit "OU=Distribution Lists,OU=Resources,DC=domain,DC=local"  | enable-distributiongroup

Change group scope for non-universal groups to universal
Get-DistributionGroup -ResultSize Unlimited -RecipientTypeDetails MailNonUniversalGroup | Set-Group -Universal

Upgrade Exchange 2010 legacy groups
Get-DistributionGroup -ResultSize Unlimited | Set-DistributionGroup -ForceUpgrade

Extract all properties of one or more users and save to CSV
get-aduser -ldapfilter "(&(objectClass=User)(objectCategory=Person)(samaccountname=*.exchtest*))" -prop * | export-csv -path c:\temp\TestUsers.csv

Create a new display name with surname in UPPER and first in Title case
$newName = $user.LastName.toUpper() + ' ' + (Get-Culture).textinfo.totitlecase($user.FirstName)

Start a remote powershell session to an exchange 2010 namespace
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://cas01.domain.local/PowerShell/ -Authentication Kerberos;   Import-PSSession $Session

Start a remote powershell session to an exchange 2010 namespace using prefix
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://cas01.domain.local/PowerShell/ -Authentication Kerberos;   Import-PSSession $Session -prefix ResForest

Bitwise OR to whether whether grouptype is distribution or security
if (14 -bor 2147483648 -eq 14) {write-output "Distribution} else {write-output "Security"}

Find mailbox folder permissions in Exchange 2010
$mailbox = get-mailbox -id user01; get-mailboxfolderpermission -id ($mailbox.primarysmtpaddress.tostring() + ":\Calendar")

Find the Exchange 2010 autodiscover URL (then stored in SCP)
Get-ClientAccessServer | fl *autodisc*      

Find Exchange 2010 RBAC management roles
Get-ManagementRole -id 'Distribution Groups' | fl *

Find Exchange 2010 RBAC management role assignments
Get-ManagementRoleAssignment |where {$_.role -eq 'Distribution Groups'} | ft -wrap -auto

Select the value of a property as an array of strings rather noteproperty
$members = get-adgroup "CN=group,DC=domain,DC=local" -server $dc | get-adgroupmember -server $dc | %{write-output $_.SamAccountName.ToString()}

Convert a group from security to distribution
get-adgroup -id migtestdl3 | set-adgroup -GroupCategory 0

Find recipient info from multiple forests and group by primary SMTP domain
$recipients = get-recipient -domaincontroller dc01.domain.local -OrganizationalUnit "OU=People,DC=domain,DC=local" -filter {(firstName -ne $null -and LastName -ne $null) -and (RecipientType -eq 'UserMailbox')} -resultsize unlimited ; $recipients += get-recipient  -domaincontroller targetdc.target.domain -OrganizationalUnit "OU=People,DC=target,DC=domain" -filter {(firstName -ne $null -and LastName -ne $null) -and (RecipientType -eq 'UserMailbox')} -resultsize unlimited ; $recipients | select @{N='EmailDomain';e={$_.primarysmtpAddress.tostring().split("@")[1]}} | group-object -prop EmailDomain | sort -prop Count | ft -wrap -auto

Find mailboxes from multiple forest and info on e-mail domain and islinked
$mailboxes = get-recipient -domaincontroller dc01.domain.local -OrganizationalUnit "OU=People,DC=domain,DC=local" -filter {(firstName -ne $null -and LastName -ne $null) -and (RecipientType -eq 'UserMailbox')} -resultsize unlimited  | get-mailbox -domaincontroller dc01.domain.local; $mailboxes += get-recipient  -domaincontroller dc01.taret.domain -OrganizationalUnit "OU=People,DC=target,DC=domain" -filter {(firstName -ne $null -and LastName -ne $null) -and (RecipientType -eq 'UserMailbox')} -resultsize unlimited | get-mailbox -domaincontroller dc01.target.domain; $mailboxes | select OriginatingServer,@{N='EmailDomain';e={$_.primarysmtpAddress.tostring().split("@")[1]}},IsLinked | group-object -prop OriginatingServer,EmailDomain,IsLinked | sort -prop Count | ft Count,Name -wrap -auto  

Find mailboxes with an ActiveSync device partnership
get-casmailbox -resultsize unlimited  | where {$_.HasActiveSyncDevicePartnership -eq 'true'}

Find the preferred domain controllers for the current Exchange 2010 session
Get-ADServerSettings | fl *

Set domain controller configuration for an exchange server
Set-ExchangeServer -StaticConfigDomainController dc01 StaticDomainControllers dc01,dc02 -StaticExcludedDomainControllers dc03 -StaticGlobalCatalogs gc01

Link an Exchange 2010 mailbox to a cross-forest security principal
get-mailbox user01 | set-mailbox -LinkedMasterAccount domain\user01 -linkeddomaincontroller dc01.domain.local

Get Exchange 2010 IMAP settings
Get-IMAPSettings -Server cas01

Disable policy and update the primary SMTP address of a 2010 mailbox 
get-mailbox -id "CN=user01,OU=People,DC=domain,DC=local" | set-mailbox -EmailAddressPolicyEnabled $false -PrimarySmtpAddress user01@domain.local

Find the server generating the Offline Address Book
Get-OfflineAddressBook | ft server,guid,AddressLists -wrap -auto (files stored in C:\Program Files\Microsoft\Exchange Server\V14\ExchangeOAB\)

Prepare an Exchange 2010 cross-forest move (create MEU and merge contact)
.\Prepare-MoveRequest.ps1 -Identity $username -RemoteForestCredential $cred -RemoteForestDomainController dc01.domain.local -LinkedMailUser -MailboxDeliveryDomain domain.local -TargetMailUserOU "OU=Resource Forest Accounts,DC=domain,DC=local" -UseLocalObject

Initiate an Exchange  2010 cross-forest move request
New-MoveRequest -Identity $username -RemoteLegacy -RemoteGlobalCatalog dc01.domain.local -TargetDatabase 'DB01' -RemoteCredential $cred -TargetDeliveryDomain 'domain.local' ?Verbose

Get an Exchange 2010 move request report
$moverequest = Get-MoveRequestStatistics -id user01 -IncludeReport; $moverequest.report

Get all the mailbox users in an OU and set a user property
get-mailbox -org "OU=Resource Forest Accounts,DC=domain,DC=local" | set-user -company 'Company01'

Check Exchange 2010 CAS RPC Client Access stats for online mode
$matches = select-string -pattern "2013-03" -simple -path "\\cas01\c$\Program Files\Microsoft\Exchange Server\V14\Logging\RPC Client Access\RCA_201303*"; $results = foreach ($match in $matches) {$line = $match.line;   write-output $line }; $results | out-file -file c:\temp\rpcusage.txt -encoding ascii; $rpc = import-csv -path c:\temp\rpcusage.txt -header date-time,session-id,seq-number,client-name,organization-info,client-software,client-software-version,client-mode,client-ip,server-ip,protocol,application-id,operation,rpc-status,processing-time,operation-specific,failures; $classic = $rpc | where {$_.'client-mode' -eq 'Classic' -and $_.'client-software' -eq 'outlook.exe'}; $classic | select client-name | group-object -prop client-name | ft -wrap -auto Count,Name

IMCEAEX non-delivery report

Source Link

How to interpret X500 address

Symptoms

When you send email messages to an internal user in Microsoft Office 365 dedicated, you receive an IMCEAEX non-delivery report (NDR) because of a bad LegacyExchangeDN reference. The IMCEAEX NDR indicates that the user no longer exists in the environment.

Cause

This issue occurs because the value for the LegacyExchangeDN attribute changed. The auto-complete cache in Microsoft Outlook and in Microsoft Outlook Web App (OWA) uses the value of the LegacyExchangeDN attribute to route email messages internally. If the value changes, the delivery of email messages may fail with a 5.1.1 NDR. For example, the recipient address in the NDR resembles the following:

IMCEAEX-_O=MMS_OU=EXCHANGE+20ADMINISTRATIVE+20GROUP+20+28FYDIBOHF23SPDLT+29_CN=RECIPIENTS_CN=User6ed4e168-addd-4b03-95f5-b9c9a421957358d@mgd.domain.com

Resolution

To resolve this issue, use one of the following methods, as appropriate for your situation.

Method 1: Clear the auto-complete cache file

For more information about how to clear the auto-complete cache file, click the following article number to view the article in the Microsoft Knowledge Base:

2005644 The Outlook auto-complete file contains obsolete or invalid entries
Note The procedure that's described here has to be performed by each user individually.

Method 2: Create an X500 proxy address for the old LegacyExchangeDN attribute for the user

To create an X500 proxy address for the old LegacyExchangeDN attribute for the user, make the following changes based on the recipient address in the NDR:
  • Replace any underscore character (_) with a slash character (/).
  • Replace "+20" with a blank space.
  • Replace "+28" with an opening parenthesis character.
  • Replace "+29" with a closing parenthesis character.
  • Delete the "IMCEAEX-" string.
  • Delete the "@mgd.domain.com" string.
  • Add "X500:" at the beginning.
After you make these changes, the proxy address for the example in the "Symptoms" section resembles the following:

X500:/O=MMS/OU=EXCHANGE ADMINISTRATIVE GROUP (FYDIBOHF23SPDLT)/CN=RECIPIENTS/CN=User-addd-4b03-95f5-b9c9a421957358d
Note The most common items will be replaced. However, there may be other symbols in the LegacyExchangeDN attribute that will also be changed from the way that they appear in the NDR. Generally, any character pattern of "+##" must be replaced with the corresponding ASCII symbol.

How to tell if you have Exchange 2003 Enterprise or Standard

source link
source link

1) Application Log - Use the event viewer on the Exchange server and analyze the Application Log.  If event id 1216 is reported when the Information Store comes online then you have Standard.  If 1217 is reported then you have enterprise.

2) System Manager - In Exchange System Manager, tree down to the “Servers” folder  and click the folder itself so your servers appear in the right pane.  This view should show 2 columns including an “Edition” column

Server Types & Versions

It has always been easy to indentify the service pack and build numbers of Exchange servers by examining the 'Servers' view in Exchange System Manager.
The Exchange System Manager supplied with Exchange 2003 now includes two more useful columns in this view:
Type - this column will show Basic, Front-end or Clustered.
Edition - this column will show Standard, Standard/Evaluation, Enterprise or Enterprise/Evaluation.
A sample screen shot is shown below. Here you'll see an Exchange 2003 server running the evaluation edition of Exchange 2003 Enterprise coexisting with an Exchange 5.5 server. It's worthwhile to note that Exchange 5.5 servers will always show as Standard even if they are running the Enterprise version of Exchange 5.5. The good news is that the columns are correctly filled in for Exchange 2000 servers.

How to find all users with Forwarding Address is set

Source Link

Exchange 2003:
In native Exchange 2003 you can do a custom search in Active Directory Users & Computers to find all users with forwarding address is set with some internal or external address.
(objectClass=*)(altrecipient=*)
Example: I have set a forwarding address for User 32 to forward all mails to User 31.

Now find it with Custom Search.
Active Directory Users & Computers -> Find -> Select Custom Search -> Enter (objectClass=*)(altrecipient=*) in LDAP Query Text Box -> Click Find Now.



Exchange 2007:
If Exchange 2007 is in native mode or co-existence with Exchange 2003 then you can use PowerShell to find the same thing.
Get-Mailbox | Where {$_.ForwardingAddress -ne $null} | Select Name, ForwardingAddress, DeliverToMailboxAndForward
Example: I have set a forwarding address for User 22 to forward all mails to User 21.



Now find it with PowerShell.

Note: PowerShell gives all users who are on Exchange 2007 as well as Exchange 2003. You can see the Exchange Version in below screen.



When the Mailbox Merge Program Tries to Open the Message Store, the Operation Is Unsuccessful

source link

Symptoms

If you use the Microsoft Exchange Mailbox Merge Program (Exmerge.exe) to export mailboxes to a personal folder (.pst) file or import mailboxes from a .pst file, the operation is unsuccessful, and the following error message appears in the Exmerge.log file:
Error opening message store (MSEMS). Verify that the Microsoft Exchange Information Store service is running and that you have the correct permissions to log on. (0x8004011d)

Resolution

To troubleshoot this issue, follow these steps:
  1. Verify that the user account under which you run the Exchange Mailbox Merge program has the Receive As and Send As security permissions set to Allow for the Mailbox Store. To do this, follow these steps:
    1. Start Exchange System Manager. To do this, click Start, point to Programs, point to Microsoft Exchange, and then click System Manager.
    2. Expand Servers, expand the server that you want, expand the storage group that you want (for example, expand First Storage Group), and then expand Mailbox Store.
    3. Right-click Mailbox Store, and then click Properties.
    4. Click the Security tab, and then click the user account whose permissions you want to verify.
    5. In the Permissions list, click to select the Receive As check box in the Allow column, click to select the Send As check box in the Allow column, and then click OK.
    6. If the user account is a member of a group (domain administrators or enterprise administrators), this group must also have send as and receive as rights to the mailbox store.
  2. Verify that the user account under which you run the Exchange Mailbox Merge program has delegation authority at the Organization level in Exchange System Manager. To do this, follow these steps:
    1. In Exchange System Manager, right-click the organization (for example, right-click First Organization (Exchange)), and then click Delegate control. The Exchange Administration Delegation Wizard starts.
    2. Click Next.
    3. If the user account under which you run the Exchange Mailbox Merge program is not listed in the Users and groups box, and if it does not have the role of Exchange Full Administrator, click Next, add this user account with the role of Exchange Full Administrator, and then click OK.
    4. Click Next, and then click Finish.
  3. Quit Exchange System Manager.
  4. Restart the Microsoft Internet Information Service (IIS) Admin Service. To do this, follow these steps.

    NOTE: This restarts the Exchange Information Store service.
    1. Click Start, click Run, type services.msc in the Open box, and then click OK.
    2. In the Name list, right-click IIS Admin Service, and then click Restart.
    3. Click Yes to confirm the restarting of the services.
    4. Quit the Services snap-in.

How Do I Install the Exchange 2010 Management Tools?

Question: How do I install the Exchange Server 2010 management tools on my workstation?
The Exchange Server 2010 management tools can be installed on a computer running one of the following operating systems:
  • Windows Vista 64-bit with Service Pack 2
  • Windows 7 64-bit
  • Windows Server 2008 64-bit with Service Pack 2
  • Windows Server 2008 R2
To install the Exchange 2010 management tools on your Windows 7 computer you first need to configure the pre-requisite components.
Open the Control Panel, click on Programs and then click on Turn Windows Features On or Off.  Enable the features shown here.


Enable Windows 7 features required for Exchange Server 2010 management tools
Download the Exchange Server 2010 SP1 installation files and extract them to a temporary folder on your computer.  From that folder launch Setup.exe.  If your computer is missing either the .NET Framework or Windows PowerShell pre-requisites there will be links for Step 1 and 2 to download and install them.

Install pre-requisites for Exchange Server 2010 SP1 on Windows 7
Otherwise click on Step 3 and choose Install only languages from the DVD.

Choose language options for installing Exchange Server 2010 SP1 on Windows 7
Next, click on Step 4 to begin the installation.

Begin installation of Exchange Server 2010 SP1 on Windows 7
Click Next at the introduction page, then accept the license agreement and click Next, then choose your preference for Error Reporting and click Next again.
At the Installation Type page choose Custom Exchange Server Installation, and also tick the box to Automatically install Windows Server roles and features required for Exchange Server and click Next.

Custom Exchange Server installation for installing management tools on Windows 7
Select the Management Tools role and click Next.

Installing the Management Tools role for Exchange 2010 on Windows 7
When the Readiness Checks have completed successfully click Install.

Begin installation of Exchange 2010 management tools on Windows 7
After the install has completed you can launch the Exchange Management Console from the Start -> All Programs -> Microsoft Exchange Server 2010 menu.

Source Link

View Mailbox Sizes for Exchange 2003 and Exchange 2010 through Powershell

If you need to view mailbox sizes for users in your Exchange organisation, you can do this from an Exchange Management Shell (EMS) for both Exchange 2003 and Exchange 2007/2010.


For your Exchange 2007/2010 users use the following command from EMS:

get-mailboxstatistics | fl displayname,totalitemsize

For your Exchange 2003 users use the following command from EMS:

Get-Wmiobject -namespace root\MicrosoftExchangeV2 -class exchange_mailbox -computer Ex2003ServerName | sort -desc size | select storageGroupName,StoreName,MailboxDisplayName,Size,TotalItems



Backing up local Microsoft Outlook files

Reference number: CH000457
Backing up local Microsoft Outlook files.
Issue:

Backing up local Microsoft Outlook files.
Additional information:

This document helps explain how to backup local Microsoft outlook and outlook express files. It is important to note that some companies may store your e-mail or outlook files on a network server, therefore the below information will not apply.
Cause:

Users who have large amounts of e-mail or information in outlook that they wish to backup may find it necessary to backup the mail in case that information is erased.

Solutions:

Microsoft Outlook Express users
Microsoft Outlook users

Microsoft Outlook Express users

Microsoft Outlook Express stores the files in the below types of files.

*.wab files are Microsoft Outlook Express address book files.
*.mbx files are Microsoft Outlook Express mail folders.

The Microsoft Outlook Express 5x Block Sender List and Other Mail Rules are stored in the computer's registry.

Backing up the Outlook Express address book.

1. Locate the file by using the Windows find tool. Click Start / Find / Files or Folders.
2. In the Named box type *.wab - ensure the Look in box is looking on the drive that Microsoft Outlook is located (usually the C: drive).
3. Click Find Now
4. This should locate the Microsoft Outlook Express address book, if present. Generally, this file will be the Outlook Express user's name.
5. Once this file is located, copy the file to an alternate drive or backup media such as a Zip disk.

Backing up the Outlook Express mail

1. Locate the file by using the Windows find tool. Click Start / Find / Files or Folders.
2. In the Named box type *.mbx - ensure the Look in box is looking on the drive that Microsoft Outlook is located (usually the C: drive).
3. Click Find Now
4. This should locate the Microsoft Outlook Express address book, if present. If more than one .mbx file is located, it is likely that you have more than one mail folder and it is recommended that you copy all the files you wish to backup.
5. Once this file is located, copy the file to an alternate drive or backup media such as a Zip disk.

Backing up the Outlook Express 5x Block Sender List

Note: The below steps take the user through the system registry. If you are unfamiliar with the system registry and the potential risks you take by editing the registry, please see our registry page first.

1. Open the Registry by clicking Start / Run and typing regedit and clicking ok.
2. Locate the below registry key.

HKEY/CURRENT/USER\Identities\{Identity Number}\Software\
Microsoft\Outlook Express\5.0\Block Senders

3. Once in the above registry key, click Registry in the Regedit menu and click "Export Registry File..."
4. Save the Block Senders.reg file to desktop or your backup location.

Backing up the Microsoft Outlook 5x Other Mail Rules

Note: The below steps take the user through the system registry. If you are unfamiliar with the system registry and the potential risks you take by editing the registry, please see our registry page first.

1. Open the Registry by clicking Start / Run and typing regedit and clicking ok.
2. Locate the below registry key.

HKEY/CURRENT/USER\Identities\{Identity Number}\Software\
Microsoft\Outlook Express\5.0\Rules\Mail

3. Once in the above registry key, click Registry in the Regedit menu and click "Export Registry File..."
4. Save the Block Senders.reg file to desktop or your backup location.
5.

Microsoft Outlook users

Microsoft Outlook stores the files in the below types of files.

*.pab files are Microsoft Outlook address book files.
*.pst files are Microsoft Outlook mail files book files.
*.rwz files are the Microsoft Outlook rules wizard files.

Backing up the Microsoft Outlook address book

1. Locate the file by using the Windows find tool. Click Start / Find / Files or Folders.
2. In the Named box type *.pab - ensure the Look in box is looking on the drive that Microsoft Outlook is located (usually the C: drive).
3. Click Find Now
4. This should locate the Microsoft Outlook address book, if present.
5. Once this file is located, copy the file to an alternate drive or backup media such as a Zip disk.

Backing up the Microsoft Outlook mail

1. Locate the file by using the Windows find tool. Click Start / Find / Files or Folders.
2. In the Named box type *.pst - ensure the Look in box is looking on the drive that Microsoft Outlook is located (usually the C: drive).
3. Click Find Now
4. This should locate the Microsoft Outlook mail file, if present. Generally, this file is mailbox.pst.
5. Once this file is located, copy the file to an alternate drive or backup media such as a Zip disk.

Backing up the Microsoft Outlook rules wizard files

1. Locate the file by using the Windows find tool. Click Start / Find / Files or Folders.
2. In the Named box type *.rwz - ensure the Look in box is looking on the drive that Microsoft Outlook is located (usually the C: drive).
3. Click Find Now
4. This should locate the Microsoft Outlook rules file, if present. Generally, this file is rules.rwz.
5. Once this file is located, copy the file to an alternate drive or backup media such as a Zip disk.

Backing up the Microsoft Outlook signatures

Each of the Microsoft Outlook signatures you have are backed up as signature.txt, signature.rtf, and signature.htm, where 'signature' is the name of each of the signatures you have.

1. Locate the signature file by using the Windows find tool. For the name of the file type signature*.* where 'signature' is the name of one of your signatures. Usually these files are stored in C:\Documents and Settings\User\Application Data\Microsoft\Signatures or similar directory.
2. Once you have located them, select each of the signatures you wish to backup and copy to your backup destination.

Using Google Calendar, Thunderbird and Lighting to full effect

Using Google Calendar, Thunderbird and Lighting to full effect

One of the best apps available on Windows is MS Outlook, as a complete suite of apps to organize your life, with Mail, to do lists and a calendar application, which allows for scheduling of meetings, and your time, which will communicate happily with your Windows Mobile or Smartphone Device. Allowing you to know what you are doing while both at your PC or away from it. However, being a commercial application, this can be quite a pricey solution, especially, if your are looking for these features to manage yourself, or maybe just a few others.
However it is possible to archive similar results using Windows, or Linux for free.
Being the owner of an Orange M600 Smartphone, and a Linux user, I spent a long time looking over the Internet, as the best way to get the information shared between my Desktop and my PDA phone. and although there are projects out there , SynCE springs to mind, they are not easy to setup.
So I thought i would look at a different way of resolving the issue.. As always, this is not the only way, its just my way.
Issue
  • Cross Platform Calendar Connectivity Windows, Linux, Windows Mobile
  • Easy to use
How I managed it.
The key to my resolution is Google Calendar, which can be accessed easily enough, especially if you already have a gMail account. If however you don’t have a gMail account, you can create your self a Google Account here, which will give you access to the Calendar functionality. Its pretty self explanatory. Once this is setup, its time to look at your mail client, obviously you could just use google calendar, via the web browser in Windows or Linux, but it doesn’t display to well on a PDA.. Also the aim here, is to emulate some of the functionality of Outlook, which allows you to have access to multiple mail accounts in one location.
The Email Client
The software I use is Thunderbird, Its my preferred Mail client, as i use both POP and IMAP based mail accounts, this mail client doesn’t however come with any built in calendar function, which is a reason, so many people berate it, and state that “calendar functionality is required before this app can move forward”. One of Thunderbirds strengths however, is, like its cousin Firefox, it works on a plugin system. That is, people have written third party modules, which can be used to enhance the functionality of Thunderbird. And I use 2 of these pluginfrom has an old version, Try downloading Lightening from

Lightning Plugin for Thunderbird: http://www.mozilla.org/projects/calendar/lightning/
Google Calendar Provider: https://addons.mozilla.org/en-US/thunderbird/addon/4631

Quote:
Note: The version of the google provider at this time, requires Lightning version 0.7 or higher, and may not work with the one in the Gutsy repository under add/remove, so use the link above to download the latest version.
Quite simply, Lightning provides a calendar interface for Thunderbird, its part of the Mozilla Sunbird project, and helps provide the Schedule interface which standalone Thunderbird is missing.
Setup The Plugins
The magic here, however is the Provider for Google Calendar plugin, which, unlike just adding the necessary links to Thunderbird, to access Google Calendard, not only provides read access, it provides write access as well..
Install both plugins, and restart Thunderbird, you will then be shown, a Calendar in the left pane, this calendar has 3 tabs Agenda, Todo and Calendars. To setup Google Calendar, click on the Calendar tab.
Click on the New Button, in the Calendar Tab, and you will be given a choice, you need to select, On the Network. Click on Next, there is an option for Google Calendar, select this.
In the Text bar under the Google Calendar you will need to enter the Link URL which allows you to write to your Account, you can find this, buy logging into the Google Calendar account you created earlier.

Create a new Calendar, or if you already have a celedar created, click on the down arrow next to the calendar. And click on Share this Calendar.
You will be taken to a new page, where you will need to click on Calendar Details on the top of this page.

Then Select the XML button, next to the Private Address, this will allow you the read/write access to the calendar, if you need read only access, or wish to share calendards with read only access, use the XML button next to the Public Tab.

When you click on the XML button a URL will be displayed (i’ve edited the whole strin below for security reasons) Copy this URL , and paste it into the Thunderbird Text box, then click on Next.

Give the Calendar a name which you will use in Thunderbird to identify this calendar, and choose a colour, this is the colour which will identify your Google Calendar, if you are using multiple calendars. Then CLick on Next and then Finish.
You will then see your calendar listed as available. you should now be able to add an event in either Thunderbird, or the wEb Interface, and both will update to show the events. You can set reminders, repeat events, and all the usual type of Schedule details.
Sync the PDA

The next step is to sync the Calendar with the PDA, this is done using the GMobileSync app for Windows Mobile or Smartphones. it requires .NET CF 2.0 which is available for download from the site, and provides not only read access to they Google Calendar, it also provides write access. This means as well as having PDA based access to your existing schedule, you can provide updates from your PDA to your calendar too. The application requires your login ID and password for the Google Calendar site. and works as far as i’m aware over both Wifi and GPRS networks, however i will confess, with UK prices as they are for Data over GPRS i’ve only tried Wifi. The Sync is a manual operation, and not automatic (yet)

How to find any email with Gmail search

3rd follow up on gmail search.

Article Source Link
"
The sight of someone scrolling through hundreds of email messages trying to find a specific one is like fingers on a chalkboard for me. With a few tricks, you can use Gmail to find the exact message you're looking for, without all the scrolling.

If you don't get a ton of mail, just typing in the words you're looking for usually does the trick. I can just type lisa in the search box and get all of the messages from my friend Lisa, southwest to bring up my ticket confirmations, or "bank statement" to help get my finances in order.

But the real power of Gmail search lies in search operators -- words that help modify your queries. Search operators work pretty much the same way within Gmail as they do for Google. So, if I want the email Lisa sent me with her flight information so I know when to pick her up at the airport, I type from:lisa SFO. Likewise:
  • A link from my co-worker Michael: from:michael http
  • A photo from my mom: from:mom has:attachment
  • That last chat I had with one of the Gmail product managers: keith is:chat
  • All messages from ebay that aren't outbid notices: ebay -outbid (the hyphen tells Gmail to return all of the messages that don't contain the word that follows it)
  • The messages in my inbox sent directly to me that I haven't read yet: to:me is:unread in:inbox
You can limit the scope of your search to a particular subject (subject:) or label (label:) as well. And you can get pretty fancy. Recently, I was trying to remember the date of my friend's April birthday. I always send her a birthday email, so I searched to:maya (birthday OR bday) after:2007/4/1 before:2007/5/1. It's the 19th.

gmail search operators

If remembering operators isn't really your thing, that's ok. There's a "Show search options" link to the right of the search bar at the top of your inbox.

gmail search options

Clicking that provides you with text fields you can fill in to get the precision of advanced search. Start there, but after a while you'll probably find that using operators is a lot faster.
"

Set Gmail as your default email client in Firefox 3

Time to fully integrate Gmail with Firefox 3. :)

Article Source Link

"
For those of you using newly released Firefox 3, or willing to give it a try, you can take advantage of a new feature that lets you set Gmail as the default for all email links -- those that contain "mailto:" in them. If you're like me and don't have a default email client set up, then clicking these links typically launches an installation wizard for a destkop mail client, or opens some email software that you don't actually use.

Now you can configure Firefox to launch Gmail when you click on email address links and avoid the hassle. The folks over at Lifehacker published these tips on how to set it up:

1) Go to Gmail and sign in.

2) While in Gmail, copy and paste the following into your browser's address bar and hit enter.

javascript:window.navigator.registerProtocolHandler("mailto","https://
mail.google.com/mail/?extsrc=mailto&url=%s","Gmail")


Google Apps users can use this code (but be sure to replace yourdomain.com with your Google Apps domain name):

javascript:window.navigator.registerProtocolHandler("mailto","https://
mail.google.com/a/yourdomain.com/mail/?extsrc=mailto&url=%s","Gmail")


3) Click "Add Application" when you are prompted1. Congrats, you just added Gmail to your browser's list of mail clients.

gmail picture 1 final

4) To set Gmail as your default, click on this link and you will be prompted with a dialog box listing available email applications. By selecting Gmail and checking "Remember my choice for mailto links" you won't have to tell your browser again. (You don't actually need to send an email after you click that link.)

gmail picture 2 final

You can always change this setting by going into "Tools" > "Options" (or "Firefox" > "Preferences," for Mac users) selecting "Applications" and going to the "mailto" option. There's a drop down next to the option that lets you change your default. Clicking "Application details" will take you to a settings page where you can completely remove Gmail or other mail apps.

gmail picture 3

1If nothing happens when you type in the code, double check that you copied the entire snippet correctly, and if nothing happens, you probably changed an advanced setting (maybe without even knowing) and need to set it back to default. To do it, type about:config into your browser and make sure that network.protocol-handler.external.mailto is on the default setting: true.
"

Gmail Contact Manager

Finally Gmail has update its Contact management manner. Often i'm stuck with numerous contact which i have just email once but do not wish to include them in to my contact list.

Article Source Link

Here's a brief on newly updated Gmail Contact Manager:
"
We've heard from some of you that Gmail's auto-added contacts can lead to too much address book clutter. One of the advantages of automatically creating contacts is that all of the addresses you email subsequently show up in auto-complete. We wanted to preserve this benefit while giving you the ability to have a clean, uncluttered contact list, and we've come up with a solution that's rolling out this week. It separates your contacts into two groups: "My Contacts" and "Suggested Contacts."

gmail contacts
My Contacts contains the contacts you explicitly put in your address book (via manual entry, import or sync) as well as any address you've emailed a lot (we're using five or more times as the threshold for now).

Suggested Contacts is where Gmail puts its auto-created contacts. By default, Suggested Contacts you email frequently are automatically added to My Contacts, but for those of you who prefer tighter control of your address books, you can choose to disable usage-based addition of contacts to My Contacts (see the checkbox in the screenshot above). Once you do this, no matter how many times you email an auto-added email address it won't move to My Contacts.
"

Check MS Outlook Empty Subject

Do you constantly send email without a subject using Outlook?

Here's the solution.

Article Source Link
"

To create the macro in Outlook 2003, go to Tools -> Macro -> Visual Basic Editor (this feature has to be installed). In Microsoft Office Outlook Objects -> ThisOutlookSession, paste the following code:


Private Sub Application_ItemSend _
(ByVal Item As Object, Cancel As Boolean)
Dim strMessage As String
Dim lngRes As Long
If Item.Subject = "" Then
Cancel = True
strMessage = "Please fill in the subject before sending."
MsgBox strMessage, _
vbExclamation + vbSystemModal, "Missing Subject"
Item.Display
End If
End Sub


Go to Tools -> Trust Center -> Macro Security
and select "No security check for macros."
Note you know what types of macro are running.

"

Turn Thunderbird into the Ultimate Gmail IMAP Client

Article Source

"


Gmail's IMAP support roll-out this week had nerds all atwitter about the possibility of synchronized email access across devices, computers, and clients. IMAP is far superior to regular old POP for fetching your messages and maintaining your folder list whether you're on your iPhone, office or home computer. If IMAP's got you curious but you're not sure what desktop application to use with Gmail, consider the extensible, fast, cross-platform and free Mozilla Thunderbird, our beloved Firefox's little sibling. Here's how to get the full Gmail experience in Thunderbird with IMAP.

What's IMAP?

Internet Message Access Protocol (Wikipedia page) enables email programs to read messages stored on the server. Unlike POP, with IMAP it's as if you're browsing a network drive of files on a remote server with an open, live connection to that server; whenever you open a folder or view a message, it's displayed from that server live. IMAP maintains a constant connection with your server and updates real-time.

Why is IMAP better than POP?

POP downloads and copies new messages to your local inbox. With POP you can download once and disconnect from the server, which is its one advantage. But you cannot download messages that have already been archived and labeled in Gmail via POP, and your client has to poll the server to get new messages. With POP access, if you move a message to a folder or star it in your desktop client, that change is not reflected in Gmail and your messages get out of sync. Any rules or mail filters you set up on one machine with a POP client have to be set up and reprocessed with a fresh download on all your other machines.

Think of POP as copying files from a server to your computer and working with them on your hard drive. Think of IMAP as connecting to a remote server and working with the files saved there.

Why Thunderbird (and not Mail or Outlook)?

We're naturally biased towards open source software here at Lifehacker, but there are good reasons why Thunderbird is the best desktop client choice out there for Gmail IMAP access:

Set up Thunderbird correctly for Gmail IMAP

First things first. Once you're fetching your email via IMAP with Thunderbird (here's Google's tutorial on how to do that), there are two settings you'll want to set manually: specifically, where Thunderbird should store sent messages and drafts. In your IMAP account settings, the Copies & Folders area, be sure to change the default location for Sent and Drafts to [Gmail]/Sent Mail and [Gmail]/Drafts respectively, as shown.

tbird%5BImap%5Dfolders.pngEven after you do this, you'll notice a few strange labels in your Gmail account: [Imap]/Sent, [Imap]/Drafts and [Imap]/Trash. These are Thunderbird's default Sent, Drafts, and Trash folders. Once you make the change to your account settings, you can delete those labels in Gmail and they won't get regenerated. (Note: except for [Imap]/Trash, which I can't rid myself of entirely, since T-bird seems married to it. Bueller? Update: see the next section for the solution to the [Imap]/Trash label.)

Set Thunderbird to use Gmail's Trash folder (UPDATE)

Reader Vanl explains how to set T-bird's trash folder correctly, which involves some Thunderbird configuration editing. Here's how:

  1. From the Tools menu, choose Options.
  2. Go to the "Advanced" Option menu and the "General" tab. Hit the "Config Editor" button next to the "Advanced Configuration" label.
  3. Now you need to look around in there a bit to find which server you need to modify. Using the filter entry box at the top, type in mail.server.server and you will see a list of keys and values. One of those keys will be mail.server.serverX.name, where X is a number and the value is the name of your Gmail IMAP account. Remember X.
  4. Right-click somewhere in the box and select New->String.
  5. A dialog box will pop up asking for the name of your new key. Put in mail.server.serverX.trash_folder_name, where X is the number you remember from above. (For example, mine is mail.server.server2.trash_folder_name.)
  6. A new box will come up asking for the value of your new key. Put in [Gmail]/Trash.tbirdconfig.png
  7. Go to Gmail's web interface and delete the label [Imap]/Trash.
  8. Restart Thunderbird.
Thanks Vanl!

UPDATE 2, Nov 8th: A Gmail IMAP engineer writes in with more information about the implications of the Trash tweak:

Using the [Gmail]/Trash as your Trash folder can lead to some unexpected issues, and the Gmail team doesn't recommend it.

Our recommended client settings page doesn't go far enough to explain why this can be an issue. The problem is that gmail only keeps a single copy of a message with multiple labels. If you apply the Trash label by placing the message in the [Gmail]/Trash folder, you are telling GMail to remove the message from all labels, and GMail will also delete the message in 30 days.

If for some reason you actually expect the message to be in multiple folders, and you delete it from one thinking that only removes it from that folder, if you set your Trash to [Gmail]/Trash, you will mistakenly remove the message from both folders.

So, suppose you have a filter set up to keep a copy of every message in another label/folder, and you normally just go through your inbox in Thunderbird deleting every message, knowing you have a copy saved in another folder, you will be actually deleting both copies. Or maybe you think you are relying on the automatic "second copy" that Gmail has in the "[Gmail]/All Mail" folder: again, moving a message to the Trash will remove it from there as well.

Or, perhaps you mistakenly "copied" a message to another folder, instead of "moving" it, so you then "delete" the copy that was left behind: this will actually delete the message from both places.

In short: If you're using Gmail's Trash folder, expect that all copies of any message you put there will be deleted, not just the one you move there.

How Thunderbird actions map to Gmail

Before we move into Thunderbird tweaks and add-ons, check out this chart of what actions in your client will do in web-based Gmail, courtesy of Google.

Note that Gmail labels do NOT map to Thunderbird's tags. Each label is represented by an old school folder in Thunderbird. If a message has more than one label, it will appear in multiple folders, which is very cool. To label a message in Thunderbird, move it to the appropriate folder. To create a new label in Gmail, create a new folder in Thunderbird, and so forth.

Subfolders and Slash Labels

If you move a message into a subfolder of a folder in Thunderbird, over in web-based Gmail you'll see a label named parent folder/child folder. Conversely, any labels with forward slashes in them will create subfolders in T-bird. You Folders4Gmail users in Better Gmail may absolutely love this. (Note: the Folders4Gmail script has been updated to support the IMAP forward slash as well as a backslash; Better Gmail to follow very soon. Thanks, Sean!)

Combine Gmail's Spam-killer with Thunderbird's Adaptive Junk Filter

Along the same lines as setting the Sent and Drafts folders to align above, if you enable Thunderbird's Junk filter, make sure it moves junk mail to Gmail's Spam folder so that Gmail marks it as spam as well. That way the bird's adaptive filter can teach Gmail as it learns. Here's that setting:

Get Gmail Goodness in Thunderbird

Thunderbird has a few features built-in or easily added that are similar or match Gmail web-based functionality in a rich desktop app. Like:

  • thunderbirdthreads.pngThreaded conversation view. Ok, so it's not quite as nice as Gmail's web-based implementation, but you can view messages by thread. Click on the tiny "display message threads" button to see replies in a hierarchical order in Thunderbird. Image by Digg user D14BL0. Here are the results:

    Collapse the thread by hitting the - sign, and new replies to a message won't create a whole new line in the list.

  • Gmail search operators and keyboard shortcuts. The GMailUI Thunderbird extension adds Gmail keyboard shortcuts (like y to archive, j/k to move up and down the message list), and Gmail advanced search operators to Thunderbird's search box (like subject:hi from:gidget.)

    Set the y key to move messages to your [Gmail]/All Mail folder, which will archive messages in Gmail.

    There are other Thunderbird keyboard shortcut extensions (I'm also partial to TB Quick Move) but nothing as elegant as Gmail Macros on the web side for you Greasemonkey or Better Gmail users. Let us know if you've got a better alternative.

Enjoy Thunderbird-Specific Features

Getting your Gmail in Thunderbird via IMAP means you get T-bird-specific happiness too, like:

  • Sorting messages by size. Anyone who's had a nearly-full Gmail account knows the tedious, manual process that is freeing up space. In Thunderbird, you can do the one thing Google wouldn't let you do in Gmail: Sort your messages by size, so you can target the space hogs. To do so, hit the small button on the right-most side of the column header list, and select Size to show message sizes. Then click the Size header to sort ascending or descending, and delete the hefty messages directly from Thunderbird. Thanks, Vsack!
  • Drag and drop message import. Want to bring old email from other accounts into Gmail? While connected via IMAP, drag other messages stored in Thunderbird to your Gmail folders, for instant import with all the old message headers intact. Much better than the other convoluted methods we've recommended in the past. Thanks, Irian!
  • Reply before or after the quote. You need a Firefox extension like Better Gmail to do this in web-based Gmail, but in Thunderbird you can easily set whether you want your replies to appear above or below quoted text, as shown in your account preferences:

    You can also automatically select the entire quote for easy chopping up in your reply, and set whether your signature appears above or below your quote.

  • Better multiple identity and signature management. Set up multiple "identities" in Thunderbird with email address-specific signatures, which you can't do in web-based Gmail. Hit the "Manage Identities" button in your Account Preferences dialog. The various identities you choose will be available as a dropdown in the From: field in new messages, just like in web-based Gmail. You can also create and automatically attach a vCard to your outgoing messages on a per-identity basis with T-bird, and choose to compose your messages as HTML or plain text per identity, too. (Click to enlarge screenshots of the identity manager.)

    http://lifehacker.com/assets/resources/2007/10/tbirdidmgt-thumb.png

  • Better filters. Gmail's filtering mechanism and interface is OK, but Thunderbird's is better. Case in point: you can specify in what order filters should be applied to incoming messages. Check out our essential email filters for ideas.
  • Manage form letters with the QuickText extension. Easily send canned responses that contain message-specific variables like sender name with the excellent QuickText Thunderbird extension. Here's how to knock down repetitive email with Thunderbird and QuickText.

I've only had limited time with the amazing combination of IMAP, Gmail, and Thunderbird, so I'm sure I missed some things here. How are you using T-bird/Gmail/IMAP? Let us know in the comments.

And for more ways to enhance Thunderbird, check out our previously posted eight killer Thunderbird extensions.

Update: Wired News reports that Gmail's IMAP support isn't full to spec; Google says Gmail's IMAP implementation is "fairly complete" and lists what IMAP features aren't supported.

"