Comment exporter un journal SMTP complet dans Office 365

10

Dans Office 365, est-il possible d'exporter le journal SMTP? Peut-être en PowerShell ou de toute autre manière.

Mon objectif est d'avoir un aperçu complet de tous les messages envoyés depuis et vers un domaine spécifique.

ZEDA-NL
la source
a complete overview of all messages send from and to a specific domain Vous savez, des trucs comme ça sont généralement ce que vous abandonnez lorsque vous allez sur le "cloud". Si vous avez besoin / souhaitez ce type de surveillance et de journalisation complètes, les services cloud ne sont peut-être pas ce que vous voulez vraiment.
HopelessN00b
3
Il y a plus à Office365 que vous pensez HopelessN00b. :-)
ZEDA-NL

Réponses:

12

En combinant 2 scripts trouvés quelque part en ligne, j'ai réussi à le comprendre.

C'est le script qui a fait le travail.

#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
la source
Grand script! J'ai dû modifier l'URL pour me connecter à mon instance d'Office 365. J'ai utilisé les informations de Connect to Exchange Online à l'aide de PowerShell distant pour gérer la connexion et le reste de votre script pour obtenir les fichiers.
Jason Massey
-1

J'ai légèrement modifié quelques lignes pour collecter tous les journaux

$OutputFile = "c:\temp\SMTPlog"

$CurrMessages | Export-Csv "$($OutputFile)$($Page).csv" -NoTypeInformation
Fred B
la source
3
Bonjour, je soupçonne que vous vouliez modifier la réponse pour ajouter ce détail ou laisser un commentaire sur l'autre réponse, si vous avez l'intention de le laisser comme réponse, je vous suggère de coller le script entier avec votre modification et de laisser une note qu'il est basé sur l'autre réponse, ce serait donc une réponse complète.
yagmoth555