Exchange 2010 Mailqueue Treshold Alert
by admin 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
Folgende Aktion muss im Scheduled Task konfiguriert werden:
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!