Office 365'te Tam SMTP Günlüğü Nasıl Verilir


10

Office 365'te, SMTP günlüğünü vermek mümkün müdür? Belki powershell'de veya başka bir şekilde.

Amacım, belirli bir alan adından ve belirli bir alan adına gönderilen tüm mesajlara tam bir genel bakış sağlamak.


a complete overview of all messages send from and to a specific domain Bilirsiniz, böyle şeyler genellikle "bulut" a gittiğinizde vazgeçtiğiniz şeydir. Bu tür bir tam izleme ve günlüğe ihtiyacınız varsa / istiyorsanız, bulut hizmetleri gerçekten istediğiniz şey olmayabilir.
HopelessN00b

3
Office365'te HopelessN00b olduğunu düşündüğünüz daha fazlası var. :-)
ZEDA-NL

Yanıtlar:


12

Çevrimiçi bir yerde bulunan 2 komut dosyasını birleştirerek anlayabildim.

Bu işi yapan senaryo.

#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 

Harika senaryo! URL'yi Office 365 örneğime bağlanmak için değiştirmek zorunda kaldım. Connect to Exchange Online'daki bilgileri bağlantıyı ve dosyaları almak için komut dosyanızın geri kalanını işlemek için uzak PowerShell kullanarak kullandım .
Jason Massey

-1

Tüm günlükleri toplamak için birkaç satırda küçük bir değişiklik yaptım

$OutputFile = "c:\temp\SMTPlog"

$CurrMessages | Export-Csv "$($OutputFile)$($Page).csv" -NoTypeInformation

3
Merhaba, Bu ayrıntıyı eklemek veya diğer cevaba yorum yapmak için cevabı düzenlemek istediğinizden şüpheliyim, eğer cevap olarak bırakmak isterseniz tüm betiği değişikliğinize yapıştırmanızı ve temelde bir not bırakmanızı öneririm diğer cevapta, bu tam bir cevap olurdu.
yagmoth555
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.