Mailbox Audit Log Nedir, Neden Önemli?
Mailbox Audit Log, bir posta kutusunda yapılan her eylemi (mail okuma, silme, taşıma, gönderme, "Send-As", admin erişimi) kayıt altına alır. Kullanım alanları:
- Eski çalışan ayrıldığında "ne yaptı" tespiti
- Hassas mail silinme şüphesi
- KVKK / GDPR uyum denetimi
- Phishing sonrası "hangi maile erişildi" forensik
- Admin yetkilendirme audit'i
2026 İtibarıyla — Default Açık mı?
Evet — Microsoft Ocak 2019'dan beri tüm tenant'larda varsayılan olarak açık ("On by default"). Eski tenant'larda kapalı kalmış olabilir, kontrol edin:
Connect-ExchangeOnline
Get-OrganizationConfig | Format-List AuditDisabled
# AuditDisabled : False → audit aktif
# AuditDisabled : True → audit kapalı, açın
Kapalıysa açma
Set-OrganizationConfig -AuditDisabled $false
Tek Mailbox İçin Audit Durumunu Kontrol
Get-Mailbox ahmet@firmaniz.com |
Select Identity, AuditEnabled, AuditLogAgeLimit,
@{n="Owner";e={$_.AuditOwner -join ","}},
@{n="Delegate";e={$_.AuditDelegate -join ","}},
@{n="Admin";e={$_.AuditAdmin -join ","}}
Default action sets
| Tip | Loglanır |
| AuditOwner | Mailbox sahibi: HardDelete, MoveToDeletedItems, SoftDelete, Update, UpdateFolderPermissions |
| AuditDelegate | Delegasyon: Create, FolderBind, Move, MoveToDeletedItems, SendAs, SendOnBehalf, Update |
| AuditAdmin | Admin: Copy, Create, FolderBind, HardDelete, Move, SendAs, Update |
Audit Log Süresini Uzat (Default 90 gün → 1 yıl / 7 yıl)
Default 90 gün. KVKK için 7 yıl önerilir. Office 365 E5 / Microsoft 365 E5 Compliance lisansı varsa:
Set-Mailbox ahmet@firmaniz.com -AuditLogAgeLimit 2555 # gün cinsinden = 7 yıl
Set-Mailbox -Identity ahmet@firmaniz.com -AuditLogAgeLimit 365 # 1 yıl
Tüm mailbox'lar için toplu
Get-Mailbox -ResultSize Unlimited |
Set-Mailbox -AuditLogAgeLimit 365
Kullanılan Action'ları Genişlet (MailItemsAccessed)
"MailItemsAccessed" — hangi mail okundu — ayrı, daha ayrıntılı log. E5 / Microsoft 365 E5 Compliance lisansı şart. Açma:
Set-Mailbox ahmet@firmaniz.com `
-AuditOwner @{Add="MailItemsAccessed","Send"} `
-AuditDelegate @{Add="MailItemsAccessed"} `
-AuditAdmin @{Add="MailItemsAccessed"}
Bu açıldığında her mail okumasından kayıt çıkar — phishing forensik'i için kritik.
Sorgulama 1 — Get-MailboxAuditLog (Eski, Mailbox-Specific)
Tek mailbox için son 30 günde silinen öğeler:
Search-MailboxAuditLog -Identity ahmet@firmaniz.com `
-StartDate (Get-Date).AddDays(-30) -EndDate (Get-Date) `
-Operations HardDelete, SoftDelete, MoveToDeletedItems `
-ShowDetails |
Select Operation, OperationResult, LastAccessed, ItemSubject, FolderPathName, LogonUserDisplayName |
Export-Csv .\delete_audit.csv -NoTypeInformation -Encoding UTF8
Sorgulama 2 — Search-UnifiedAuditLog (Modern, Tenant-Wide)
Tüm tenant'ta her servis için audit (Exchange + SharePoint + Teams + Entra). Lisans olarak Microsoft 365 E3+ önerilir.
Belirli kullanıcının son 7 gün tüm aktivitesi
Connect-ExchangeOnline
Connect-IPPSSession # Compliance Center
Search-UnifiedAuditLog `
-StartDate (Get-Date).AddDays(-7) -EndDate (Get-Date) `
-UserIds ahmet@firmaniz.com `
-ResultSize 5000 |
Select CreationDate, UserIds, Operations, AuditData |
Export-Csv .\user_audit.csv -NoTypeInformation
Belirli mailbox'a kim "FolderBind" yapmış (kim mail okumuş)
Search-UnifiedAuditLog `
-StartDate (Get-Date).AddDays(-30) -EndDate (Get-Date) `
-Operations FolderBind, MailItemsAccessed `
-ObjectIds ahmet@firmaniz.com -ResultSize 1000 |
Select CreationDate, UserIds, Operations
Tüm "SendAs" kullanımları
Search-UnifiedAuditLog `
-StartDate (Get-Date).AddDays(-90) -EndDate (Get-Date) `
-Operations SendAs -ResultSize 5000 |
Select CreationDate, UserIds,
@{n="SentAs";e={($_.AuditData | ConvertFrom-Json).MailboxOwnerUPN}}
Compliance Search ile İçerik Arama
"Audit log'da görüldü ama içeriği görmek istiyorum" senaryosu:
New-ComplianceSearch -Name "AhmetMailQ1" `
-ExchangeLocation ahmet@firmaniz.com `
-ContentMatchQuery \u0027from:cikti@example.com AND received:01/01/2026..03/31/2026\u0027
Start-ComplianceSearch -Identity "AhmetMailQ1"
# Sonra
Get-ComplianceSearch -Identity "AhmetMailQ1" |
Select Items, Size, Status
Audit Log Retention (Lisans Bazlı)
| Lisans | Default Retention | Max |
| Business Basic / Standard / Premium | 90 gün | 180 gün |
| Office 365 E3 | 90 gün | 1 yıl (settings) |
| Microsoft 365 E5 | 1 yıl | 10 yıl (Audit Premium add-on) |
Powershell Audit Log Custom Retention Policy (E5)
New-UnifiedAuditLogRetentionPolicy `
-Name "Audit-7-yil" `
-Description "KVKK uyumu — 7 yıl" `
-RecordTypes ExchangeItem, ExchangeItemAggregated `
-RetentionDuration TenYears `
-Priority 1
Yaygın Sorunlar
"Search-UnifiedAuditLog returns 0 results"
Audit log Compliance Portal'da etkin mi kontrol et: Get-AdminAuditLogConfig | Select UnifiedAuditLogIngestionEnabled. False ise:
Set-AdminAuditLogConfig -UnifiedAuditLogIngestionEnabled $true
Audit log'a 24-48 saat gecikmeli düşüyor
Microsoft'un ingestion latency'si normaldir. Real-time için Activity Alerts kurulur.
Get-MailboxAuditLog çok yavaş
Search-UnifiedAuditLog'a geç. Sonraki sorgular hızlı.
SSS
Default 90 gün retention için ek lisans gerekir mi?
Hayır — temel audit ücretsiz. 1 yıl ve üzeri için E5 / Microsoft 365 E5 Compliance lisansı.
MailItemsAccessed her okumayı logluyor mu?
Evet — her bireysel mail okumasını. Yoğun kullanıcılarda günde 10K+ kayıt çıkar. E5 retention ile birlikte planlanmalı.
Eski kullanıcı silindi — audit log'u nasıl tutarım?
Mailbox silmeden önce Litigation Hold aç. Audit log mailbox'la birlikte indefinite tutulur.
Audit log dışarıya export edilebilir mi (SIEM)?
Evet — Office 365 Management API ile SIEM'e (Splunk, Sentinel) gerçek-zamanlı stream.
Admin "audit'i kapatabilir" — bu loglanıyor mu?
Evet — Set-OrganizationConfig -AuditDisabled $true komutu Unified Audit Log'a düşer (Operations: "Set-OrganizationConfig"). Admin temizleyemez.
Audit + KVKK uyum paketi için bize ulaşın → Microsoft 365 E5 Compliance + retention danışmanlığı.