• Bewerte uns auf OMR Reviews: Klick

  • NSP Forum als App inkl. Push Nachrichten (iOS): Klick

  • Wichtige Information für alle, die noch nicht auf v14.0.5.39 sind:

    Cyren Antimalware kann nicht mehr verwendet werden. Unsere Lizenz ist endgültig deaktiviert, so dass der Dienst nicht mehr nutzbar ist.
    Bitte stellt sicher, dass ihr schnellstmöglich auf die aktuelle Version aktualisiert. Bis es so weit ist, empfehlen wir die Cyren Antimalware Aktion zu deaktivieren und mindestens den lokalen Virenscanner zu aktivieren. Sollte kein anderer Scanner als Cyren aktiv sein, kommt es unweigerlich zur Abweisung von E-Mails.

    Zusätzlich raten wir dazu, die Cyren Filter zu deaktivieren, hier ist der Einfluss zwar geringer, solange alle anderen Filter korrekt durchlaufen, aber im Problemfall kommt es ebenfalls zur Abweisung.

     

    Unser Blogbeitrag wird in Kürze ebenfalls aktualisiert.

    Beste Grüße
    Euer NoSpamProxy Team

  • Achtet bitte in den Beiträgen darauf, dass ihr keine Informationen teilt, die der DSGVO unterliegen können. Verpixelt bitte die entsprechenden Stellen in Screenshots, postet hier auf keinen Fall Messagatracks ohne Rücksprache und auch in den Log Files können persönliche oder sensible Daten enthalten sein.

    Macht uns auch bitte per PN darauf aufmerksam wenn ihr etwas seht. Schreibt mich (@sören) einfach direkt an. 

NSP in Verbindung mit PRTG

JanJäschke

NoSpamProxy

Teammitglied
Ich habe gestern erst das Thema zu unserem GitHub aufgemacht und wurde gleich von meinem Kollegen Stefan Cink auf einen interessanten Blog Beitrag aufmerksam gemacht.

Daniel Wydler hat in seinem Blog "Aus der IT – Praxis… im Schwabenland" festgehalten wie er mittels PowerShell und PRTG den NSP an seine Bedürfnisse angepasst überwacht.
Hier geht es zu seinem Beitrag: NoSpamProxy mit Paessler PRTG überwachen

Wir freuen uns immer wieder zu sehen was Kunden alles aus dem NSP herausholen und dies dann auch wieder öffentlich mit allen teilen.

Danke dafür  :)
 
wir haben die Überwachung bei uns in Zabbix eingebunden inkl. der Überwachung der Replikations Artefakte.

k.A. ob ausser uns noch jemand Zabbix nutzt, aber vlt kann man da auch was zusammenschreiben....


 

Anhänge

  • Bildschirmfoto 2020-11-16 um 16.19.38.png
    Bildschirmfoto 2020-11-16 um 16.19.38.png
    230.6 KB · Aufrufe: 20
cpohle schrieb:
wir haben die Überwachung bei uns in Zabbix eingebunden inkl. der Überwachung der Replikations Artefakte.

k.A. ob ausser uns noch jemand Zabbix nutzt, aber vlt kann man da auch was zusammenschreiben....

Gibts da ein Template? 
Ich wäre sehr interessiert.

Danke vorab
 
Moin,

sorry for late reply. Also nein, nen Template gibts da nicht und ich bin auch ehrlich gesagt nicht so fit in Zabbix dass ich daraus eins erstellen könnte.
Aber vom Prinzip her habe ich ein Userscript im Installationsverzeichnis des Zabbix Agents erstellt und abgelegt welches Zyklisch die Statistikdaten via NSP PowerShell Modul abfragt. Der Inhalt der Variablen wird dann einfach nur an Zabbix übergeben.

Anhang anzeigen 6

Die PS Scripte hänge ich mal an. Im Internet gibts auch genug HowTos wie man ein PS Script via Zabbix Agent ausführt und Daten übergibt.

Bei den Replikationsartefakten ist es im Prinzip ähnlich gelöst, nur dass ich hier via PowerShell ne SQL Verbindung aufrufe pro Rolle. Heisst dass dieses PS Script zyklisch auf allen GW Rollen und der Intranetrolle läuft und die Daten an Zabbix übergibt. Möglicherweise geht das auch von der GW Rolle aus und von dort dann nen Connect zu allen Rollen, aber Firewalltechnisch war das bei uns nicht gewollt!

Die Parameter am Anfang kann man ebenfalls via Zabbix an das PS Script übergeben!

Anhang anzeigen 7

Code:
Param 
(
    [Parameter(Mandatory = $true,Position=0)][string]$userName,
    [Parameter(Mandatory = $true,Position=1)][string]$password
)

$ErrorActionPreference = 'Stop'
$1hour = New-TimeSpan -Minutes 1

$password = [System.Text.Encoding]::ASCII.GetString([System.Convert]::FromBase64String($password))
$userName = [System.Text.Encoding]::ASCII.GetString([System.Convert]::FromBase64String($userName))

$securePassword = ConvertTo-SecureString $password -AsPlainText -Force
$Credentials = New-Object System.Management.Automation.PSCredential($userName, $securePassword)
$session = New-PSSession -ComputerName localhost -Credential $Credentials

$incoming = [int](Invoke-Command -Session $session -ScriptBlock {Get-NspMessageTrack -Age $USING:1hour -Directions FromExternal -CountOnly})
$outgoing = [int](Invoke-Command -Session $session -ScriptBlock {Get-NspMessageTrack -Age $USING:1hour -Directions FromLocal -CountOnly})
$DeliveryPending = [int](Invoke-Command -Session $session -ScriptBlock {Get-NspMessageTrack -Age $USING:1hour -Status DeliveryPending -CountOnly})
$inboundRejects = [int](Invoke-Command -Session $session -ScriptBlock {Get-NspMessageTrack -Age $USING:1hour -Directions FromExternal -Status PermanentlyBlocked, TemporarilyBlocked -CountOnly})
$localRejects = [int](Invoke-Command -Session $session -ScriptBlock {Get-NspMessageTrack -Age $USING:1hour -Directions FromLocal -Status PermanentlyBlocked, TemporarilyBlocked -CountOnly})
$inboundDeliveryFailure = [int](Invoke-Command -Session $session -ScriptBlock {Get-NspMessageTrack -Age $USING:1hour -Directions FromExternal -Status DispatcherError -CountOnly})
$outboundDeliveryFailure = [int](Invoke-Command -Session $session -ScriptBlock {Get-NspMessageTrack -Age $USING:1hour -Directions FromLocal -Status DispatcherError -CountOnly})
$NDRsSendTotalDE = [int](Invoke-Command -Session $session -ScriptBlock {Get-NspMessageTrack -Subject "unzustellbar:*" -CountOnly})
$NDRsSendTotalEN = [int](Invoke-Command -Session $session -ScriptBlock {Get-NspMessageTrack -Subject "undeliverable:*" -CountOnly})

Remove-PSSession -Session $session

$totalTraffic = $incoming + $outgoing
$totalRejects = $inboundRejects + $localRejects
$NDRsSendReceived = $NDRsSendTotalDE + $NDRsSendTotalEN
$totalDeliveryFailed = $inboundDeliveryFailure + $outboundDeliveryFailure
#$totalDeliveryFailed = 307

$totalRejectRate = 0
$inboundRejectRate = 0
$localRejectRate = 0
if($totalTraffic -ne 0) {
    $totalRejectRate = [Math]::Round($totalRejects / $totalTraffic * 100,0)
    
    if($incoming -ne 0) {
        $inboundRejectRate = [Math]::Round($inboundRejects / $incoming * 100,0)
    }
    if($outgoing -ne 0) {
        $localRejectRate = [Math]::Round($localRejects / $outgoing * 100,0)
    }
}

$Data = @{
#	TotalMailTraffic = $totalTraffic
	IncomingMailTraffic = $incoming
	OutgoingMailTraffic = $outgoing
	DeliveryPendingTotal = $DeliveryPending
#	TotalRejectedMails = $totalRejects
	IncomingRejectedMails = $inboundRejects
	InboundDeliveryFailed = $inboundDeliveryFailure
#	TotalDeliveryFailed = $totalDeliveryFailed
	OutboundDeliveryFailed = $outboundDeliveryFailure
	NDRsSendReceivedTotal = $NDRsSendReceived
	OutgoingRejectedMails = $localRejects
#	TotalRejectRate = $totalRejectRate
#	IncomingRejectRate = $inboundRejectRate
#	OutgoingRejectRate = $localRejectRate
	}

$Data | ConvertTo-Json -Compress
$Data | ConvertTo-Json | out-file C:\temp\test.json


Code:
function Invoke-SQL {
    Param(
        [string]$DataSource,
        [string]$Database,
        [string]$SqlCommand,
        [string]$User,
        [string]$Password
    )
    if (($User) -and ($Password)) {
        $connectionString = "Data Source=$dataSource;User ID=$User;Password=$Password;Initial Catalog=$Database"
    } else { 
        $connectionString = "Data Source=$dataSource; " + "Integrated Security=SSPI; " + "Initial Catalog=$database"
     }
    $connection = new-object system.data.SqlClient.SQLConnection($connectionString)
    $command = new-object system.data.sqlclient.sqlcommand($sqlCommand,$connection)
    $connection.Open()
    $adapter = New-Object System.Data.sqlclient.sqlDataAdapter $command
    $dataset = New-Object System.Data.DataSet
    $adapter.Fill($dataSet) | Out-Null
    $connection.Close()
    $dataSet.Tables
}
# Example usage (sql auth):
$Artefacts = Invoke-SQL -dataSource SQLServer -database NoSpamProxyAddressSynchronization -user sqlreadinguser -password 12345 -sqlCommand 'SELECT count (*) FROM [DataReplication].[Artefact]' 
$Artefacts | select -ExpandProperty Column1
 

Anhänge

  • nspItems.PNG
    nspItems.PNG
    42.8 KB · Aufrufe: 15
  • nspIma.PNG
    nspIma.PNG
    39.4 KB · Aufrufe: 12
JanJäschke schrieb:
Daniel Wydler hat in seinem Blog "Aus der IT – Praxis… im Schwabenland" festgehalten wie er mittels PowerShell und PRTG den NSP an seine Bedürfnisse angepasst überwacht.
Hier geht es zu seinem Beitrag: NoSpamProxy mit Paessler PRTG überwachen
Eine neue Version des Skripts steht zur Verfügung. Neben der Überarbeitung der Abfragen werden nun auch u.a. die Laufzeit der SSL-Zertifikate auf den Connectoren, Laufzeit der NSP Lizenz und evtl. Vorfälle im NSP überwacht.
 
Zurück
Oben