So exportieren Sie ein vollständiges SMTP-Protokoll in Office 365

10

Ist es in Office 365 möglich, das SMTP-Protokoll zu exportieren? Vielleicht in Powershell oder auf andere Weise.

Mein Ziel ist es, einen vollständigen Überblick über alle Nachrichten zu erhalten, die von und an eine bestimmte Domain gesendet werden.

ZEDA-NL
quelle
a complete overview of all messages send from and to a specific domain Wissen Sie, solche Dinge geben Sie im Allgemeinen auf, wenn Sie in die "Cloud" gehen. Wenn Sie diese Art der vollständigen Überwachung und Protokollierung benötigen / möchten, sind Cloud-Dienste möglicherweise nicht das, was Sie wirklich wollen.
HopelessN00b
3
Office365 bietet noch mehr als HopelessN00b. :-)
ZEDA-NL

Antworten:

12

Durch die Kombination von 2 Skripten, die irgendwo online gefunden wurden, konnte ich es herausfinden.

Dies ist das Skript, das die Arbeit erledigt hat.

#Accept input parameters 
Param( 
    [Parameter(Position=0, Mandatory=$true, ValueFromPipeline=$true)] 
    [string] $Office365Username, 
    [Parameter(Position=1, Mandatory=$true, ValueFromPipeline=$true)] 
    [string] $Office365Password 
) 

$OutputFile = "DetailedMessageStats.csv" 

Write-Host "Connecting to Office 365 as $Office365Username..." 

#Connect to Office 365 
$SecurePassword = $Office365Password | ConvertTo-SecureString -AsPlainText -Force 
$cred = New-Object System.Management.Automation.PSCredential -ArgumentList $Office365Username, $SecurePassword 
$session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri "https://ps.outlook.com/powershell/" -Credential $cred -Authentication Basic -AllowRedirection  
Import-PSSession $session -AllowClobber 

Write-Host "Collecting Recipients..." 

#Collect all recipients from Office 365 
$Recipients = Get-Recipient -ResultSize Unlimited | select PrimarySMTPAddress 
$MailTraffic = @{} 
foreach($Recipient in $Recipients) 
{ 
    $MailTraffic[$Recipient.PrimarySMTPAddress.ToLower()] = @{} 
} 
$Recipients = $null 

#Collect Message Tracking Logs (These are broken into "pages" in Office 365 so we need to collect them all with a loop) 
$Messages = $null 
$Page = 1 
do 
{ 

    Write-Host "Collecting Message Tracking - Page $Page..." 
    $CurrMessages = Get-MessageTrace -StartDate (Get-Date).AddDays(-7) -EndDate (Get-Date)  -PageSize 5000  -Page $Page| Select Received,*Address,*IP,Subject,Status,Size

    if ($CurrMessages -ne $null)
      {
      $CurrMessages | Export-Csv C:\FILE-$PAGE.csv -NoTypeInformation
      }
    $Page++ 
    $Messages += $CurrMessages 


} 
until ($CurrMessages -eq $null) 

Remove-PSSession $session 
ZEDA-NL
quelle
Tolles Drehbuch! Ich musste die URL ändern, um eine Verbindung zu meiner Instanz von Office 365 herzustellen. Ich habe die Informationen unter Mit Exchange Online verbinden mithilfe von Remote-PowerShell verwendet , um die Verbindung zu verwalten, und den Rest Ihres Skripts, um die Dateien abzurufen.
Jason Massey
-1

Ich habe ein paar Zeilen leicht geändert, um alle Protokolle zu sammeln

$OutputFile = "c:\temp\SMTPlog"

$CurrMessages | Export-Csv "$($OutputFile)$($Page).csv" -NoTypeInformation
Fred B.
quelle
3
Hallo, ich vermute, Sie wollten die Antwort bearbeiten, um dieses Detail hinzuzufügen oder einen Kommentar zu der anderen Antwort zu hinterlassen. Wenn Sie sie als Antwort hinterlassen möchten, schlage ich vor, das gesamte Skript mit Ihrer Änderung einzufügen und eine Notiz zu hinterlassen, die darauf basiert auf der anderen Antwort wäre es also eine vollständige Antwort.
Yagmoth555