promuxx.de ein Hösl bloggt. doch wohin?

16Sep/090

Message Size Limits Exchange 2007

Wer Exchange 2007 im Einsatz hat, weiß es ganz bestimmt: Die meisten Einstellungen sind einfacher über die Powershell zu implementieren als über die GUI – manche lassen sich sogar nur über die Powershell einstellen. Gerade um Limits abzufragen / zu setzen kann man wunderbar mit der Exchange Shell arbeiten.

Die wichtigsten Befehle sind:

get-transportconfig | select identity,maxreceivesize,maxsendsize
get-receiveconnector | select identity,maxmessagesize
get-sendconnector | select identity,maxmessagesize
get-mailbox | select name,maxreceivesize,maxsendsize
get-mailcontact | select name,maxreceivesize,maxsendsize
get-mailPublicFolder | select name,maxreceivesize,maxsendsize
get-distributiongroup | select name,maxreceivesize,maxsendsize

 

In der Shell wird das wunderbar angezeigt:

get-size

Damit sind die Abfragen durch ;-) Zu den SET-Befehlen:

Um das Sende-Limit für einen Connector zu setzen:

set-sendconnector –identity "Name des Send Connectors" -maxmessagesize 100MB

Natürlich kann man diese Einstellung gleich für alle übernehmen:

get-sendconnector | set-sendconnector -maxmessagesize 100MB

 

Dasselbe gilt für die Receive-Konnektoren:

set-receiveconnector –identity "Name des Receive Connectors" -maxmessagesize 100MB
get-receiveconnector | set-receiveconnector -maxmessagesize 100MB

 

Die Transport Konfiguration darf auch nicht fehlen:

get-transportconfig | set-transportconfig -maxreceivesize 50MB -maxsendsize 100MB

 

get-mailbox-size

Aber nicht nur an den Konnektoren können Limits gesetzt werden, auch die einzelne Mailbox kann man durch Limits begrenzen, aber auch Kontakte,Öffentliche Ordner und Verteilerlisten haben Limits:

get-mailbox | select name,maxreceivesize,maxsendsize
get-mailcontact | select name,maxreceivesize,maxsendsize
get-mailPublicFolder | select name,maxreceivesize,maxsendsize
get-distributiongroup | select name,maxreceivesize,maxsendsize

User-Mailboxen sind standardmäßig unbegrenzt, aber auch die kann man ändern:

get-mailbox -Identity PatrickHoesl | set-mailbox -maxreceivesize 20MB -maxsendsize 10MB

oder natürlich wieder für alle Mailboxen:

get-mailbox | set-mailbox -maxreceivesize 20MB -maxsendsize 10MB

Um das ganze wieder unlimited zu setzten einfach die MB Angabe durch ‘unlimited’ ersetzen.

7Jul/090

Exchange 2007 Tracking Script

In Exchange 2007 ein Mailtracking zu machen kann etwas daueren, da die MMCs nicht die schnellsten sind. Aus diesem Grund habe ich mir ein Powershell-Script gebastelt – welches erst meine Eingaben annimmt, dann das Tracking durchführt und mir das Ergebnis in einer Notepad Datei auswirft und direkt öffnet.

Simpel – aber zweckerfüllend.

CLS

### Title
Write-Host
Write-Host
Write-Host "Message Tracking Tool"  -foregroundcolor green
Write-Host
Write-Host

$strMailboxSrv        = ""
### please change like you want
$strFilename          = "D:\MessageTracking_Results.txt"

$arrHubs = $NULL
$objHub  = $NULL
$strHub  = $NULL

### Search for sender, recipient or both
$strDecisionQuery = read-host "Search for (s)ender (a)nd/or (r)ecipient ?"

if ($strDecisionQuery -match  "[as]")
    {
    Write-Host
    $strSenderAddr        = read-host "Sender-Mail Addr"
    Write-Host
    }    

if ($strDecisionQuery -match "[ar]")
    {
    Write-Host
    $strRecipientAddr     = read-host "Receiver-Mail Addr"
    Write-Host
    }

### Input of Date/Time   
Write-Host
$strStartDate        = read-host "Start-Date(e.g. 04.12.2009)"
Write-Host
$strStartTime        = read-host "Start-Time (e.g. 02:00:00)"
Write-Host
$strEndDate         = read-host "End-Date (e.g. 05.12.2009)"
Write-Host
$strEndTime            = read-host "End-Time (e.g. 23:00:00)"
Write-Host

### Input of Subject
$strMessageSubject    = read-host "Text in subject"

## Wait 2 seconds
ping localhost -n 2 > $NULL

CLS
Write-Host
Write-Host

### Header LOG
echo "###################################"                                                     >> $strFilename
echo "########## Tracking LOG ###########"                                                     >> $strFilename
echo "###################################"                                                     >> $strFilename
echo " " >> $strFilename                                                                               
echo "Sender: " $strSenderAddr                                                                >> $strFilename
echo " " >> $strFilename
echo "Recipient: " $strRecipientAddr                                                            >> $strFilename
echo " " >> $strFilename
echo "Timeframe from: " $strStartDate $strStartTime " to " $strEndDate $strEndTime    >> $strFilename
echo " " >> $strFilename
echo "Subject: " $strMessageSubject                                                            >> $strFilename
echo " " >> $strFilename
echo "###################################"                                                    >> $strFilename

### MessageTracking function
if ($strDecisionQuery -ceq "r")
    {
    function GetLogRec() 
        {
        get-messagetrackinglog -Recipients:"$strRecipientAddr" -Server $strHub -Start "$strStartDate $strStartTime" -End "$strEndDate $strEndTime" -MessageSubject "$strMessageSubject" -resultsize unlimited |
        fl -groupby Timestamp >> $strFilename
        }
    }
elseif ($strDecisionQuery -ceq "s")
    {
    function GetLogRec() 
        {
        get-messagetrackinglog -Sender:"$strSenderAddr" -Server $strHub -Start "$strStartDate $strStartTime" -End "$strEndDate $strEndTime" -MessageSubject "$strMessageSubject" -resultsize unlimited |
        fl -groupby Timestamp >> $strFilename
        }
    }
elseif ($strDecisionQuery -ceq "a")
    {
    function GetLogRec() 
        {
        get-messagetrackinglog

-Sender:"$strSenderAddr" -Recipients:"$strRecipientAddr" -Server $strHub -Start "$strStartDate $strStartTime" -End "$strEndDate $strEndTime" -MessageSubject "$strMessageSubject" -resultsize unlimited |
        fl -groupby Timestamp >> $strFilename
        }   
    }

Write-Host "MessageTracking starts ...`n"  -foregroundcolor green
### Remove-Item $strFilename -erroraction silentlycontinue

$arrHubs = get-transportserver

foreach ($objHub in $arrHubs)
{
    $strHub = $objHub.Name
    Write-Host "Tracking " $strHub " ..."  -foregroundcolor green
    GetLogRec
}

Write-Host "Tracking " $strMailboxSrv " ..."  -foregroundcolor green
GetLogRec
Write-Host "`n Results in" $strFilename " " -foregroundcolor green

### Open Notepad with results, wait 3 seconds and delete the outputfile
notepad $strFilename
ping localhost -n 3 > $NULL
del $strFilename