5ain7 ga11 . CH || i7-l3ak5. CH || g07r007.CH

Exchange 2010 Mailqueue Treshold Alert

by on Nov.21, 2011, under Exchange 2010, Knowledgebase, Server-Plattformen, Windows 2008 Server, Windows Betriebssysteme

Das folgende Script checkt in einem gewünschten Intervall, ob die Mailqueue einen bestimmten Wert überschreitet und schickt dann ein Mail an die definierte Adresse.

In der Variante: „EmailQueueAlerter als TXT File“ wird das Script direkt auf einem Exchange 2010 Server ausgeführt.

Das Script

<Script Start>

# Script:  EmailQueueAlerter.ps1
# Zweck:    Das Script checkt, ob die lokale Mailqueue grösser als der definierte Wert ist und schickt beim Übertreten des Wertes ein Email mit einem Attachment
# Date:     November 2011

Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010
$env:ExchangeInstallPath\bin\RemoteExchange.ps1
Connect-ExchangeServer -auto

$filename = “D:\Exchange\ScheduledScript\Mailqueue.txt”  #Pfad für Output definieren#
Start-Sleep -s 10

if (Get-queue | Where-Object { $_.MessageCount -gt 10 }) #Schwellwert der Queue definieren, in diesem Fall =grösser als 10#
{

Get-queue | Where-Object { $_.MessageCount -gt 10 } | Format-Table -Wrap -AutoSize | out-file -filepath D:\Exchange\ScheduledScript\Mailqueue.txt
Start-Sleep -s 10
$smtpServer = “127.0.0.1” #localhost#

$att = new-object Net.Mail.Attachment($filename)
$msg = new-object Net.Mail.MailMessage

$smtp = new-object Net.Mail.SmtpClient($smtpServer)

$msg.From = absender@mail.ch
$msg.To.Add(“empfaenger@mail.ch”)
$msg.Subject = “EXCH2010 hat die Limit von 10 Mails in der Mailqueue erreicht”
$msg.Body = “Bitte angehängtes Attachment beachten.”
$msg.Attachments.Add($att)
$smtp.Send($msg)
$att.Dispose()
}

</Script Stop>

Neuer Empfangsconnector für Exchange 2010 – Mail Relay from localhost

Damit vom lokalen Host aus Emails verschickt werden können, muss noch ein zusätzlicher Empfangsconnector erstellt werden:

new-receiveconnector -name “LOCALHOST Relay” -Usage Custom -authmechanism externalauthoritative -enabled $true -fqdn EXCHANGE.domain.local
-remoteipranges 127.0.0.1 -permissiongroups anonymoususers,ExchangeServers -bindings 127.0.0.1:25

 

Einbindung in Scheduled Tasks von Windows 2008 R2 Server

Anschliessend kann das Script auf dem Windows 2008 R2 Server in die Scheduled Tasks eingebunden werden.

Dazu müssen ein paar Sachen beachtet werden. In diesem Beispiel sind das PS1 Script und das Logile im gleichen Ordner platziert:

D:\Exchange\ScheduledScript

Scheduled Task - Konfiguration

 

Folgende Aktion muss im Scheduled Task konfiguriert werden:

Scheduled Task - Konfiguration 2

Scheduled Task - Konfiguration 2

 

Programm/Skript:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe  (==> Pfad zu MS PowerShell)

Argumente:

-noninteractive –command “&{D:\Exchange\ScheduledScript\EmailQueueAlerter.ps1}”

Starten in (optional):

D:\Exchange\ScheduledScript

 

Have Fun!


Leave a Reply

 

Blogroll

A few highly recommended websites...