Cara mengekspor Log SMTP Lengkap di Office 365

10

Di Office 365, apakah mungkin untuk mengekspor log SMTP? Mungkin dengan PowerShell atau cara lain.

Tujuan saya adalah memiliki tinjauan lengkap dari semua pesan yang dikirim dari dan ke domain tertentu.

ZEDA-NL
sumber
a complete overview of all messages send from and to a specific domain Anda tahu, hal-hal seperti itu umumnya adalah apa yang Anda menyerah ketika Anda pergi ke "cloud." Jika Anda membutuhkan / menginginkan pemantauan dan pencatatan penuh semacam itu, mungkin layanan cloud bukan yang benar-benar Anda inginkan.
HopelessN00b
3
Masih ada lagi untuk Office365 yang menurut Anda HopelessN00b. :-)
ZEDA-NL

Jawaban:

12

Dengan menggabungkan 2 skrip yang ditemukan di suatu tempat online, saya berhasil mengetahuinya.

Ini adalah skrip yang melakukan pekerjaan.

#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
sumber
Naskah yang bagus! Saya harus memodifikasi URL untuk menyambungkan ke instance Office 365 saya. Saya menggunakan informasi di Connect to Exchange Online menggunakan PowerShell jarak jauh untuk menangani koneksi dan skrip Anda yang lain untuk mendapatkan file.
Jason Massey
-1

Saya membuat sedikit perubahan pada beberapa baris untuk mengumpulkan semua log

$OutputFile = "c:\temp\SMTPlog"

$CurrMessages | Export-Csv "$($OutputFile)$($Page).csv" -NoTypeInformation
Fred B
sumber
3
Hai, saya curiga Anda ingin mengedit jawaban untuk menambahkan detail itu atau meninggalkan komentar pada jawaban yang lain, jika Anda bermaksud membiarkannya sebagai jawaban, saya sarankan untuk menempelkan seluruh skrip dengan perubahan Anda dan meninggalkan catatan yang didasarkan pada jawaban yang lain, jadi itu akan menjadi jawaban yang lengkap.
yagmoth555