Microsoft 365 Exchange Online altyapısınd zaman zaman kurum genelini etkileyen istenmeyen e-postalar ile karşılaşılabilir. Bunlar genellikle:

  • Phishing (oltalama) saldırıları
  • Zararlı ek veya link içeren spam e-postalar
  • Yanlışlıkla tüm kullanıcılara gönderilmiş hassas içerikler şeklinde karşımıza çıkar.

Bu gibi durumlarda tek tek kullanıcı müdahalesi yerine merkezi bir yöntemle tüm posta kutularındaki ilgili e-postayı tespit edip silmek hem zaman kazandırır hem de güvenlik risklerini minimize eder.

Microsoft 365 bu ihtiyacı Microsoft Purview (Compliance) altyapısı üzerinden sunulan Compliance Search ve Purge yetenekleriyle karşılar.

Bu makalemde PowerShell kullanarak Exchange Online üzerindeki tüm kullanıcıların posta kutularında bulunan belirli bir e-postanın nasıl bulunup silineceğini uçtan uca ele alacağız.

Genel Mimari ve Mantık

İşlem temel olarak 3 ana adımdan oluşur:

  1. Compliance PowerShell oturumuna bağlanmak,
  2. Belirli kriterlere göre e-posta araması oluşturma ve çalıştırmak,
  3. Bulunan e-postalar için silme (Purge) işlemi başlatmak,

Önemli bir nokta:
Bu işlemler klasik Exchange Online PowerShell komutlarından farklıdır ve Security & Compliance altyapısını kullanır.

Compliance PowerShell Oturumuna Bağlanma

Compliance Search komutlarını çalıştırabilmek için öncelikle IPPSSession olarak adlandırılan Security & Compliance PowerShell oturumuna bağlanmamız gerekir. Aşağıdaki komut ile yalnızca arama yetkilerine sahip bir oturum açıyoruz:

Connect-IPPSSession -EnableSearchOnlySession

Yetkilendirme Notu

Bu işlemi gerçekleştiren kullanıcının aşağıdaki yetkilere sahip olması gerekir:

  • Compliance Search
  • Purge

Aksi durumda komutlar hata verecek veya çalışmayacaktır.

Compliance Search (İçerik Araması) Oluşturma

Bağlantı sağlandıktan sonra ilk adım, hangi e-postaların hedefleneceğini tanımlayan bir arama sorgusu oluşturmaktır.

Aşağıdaki örnekte:

  • Tüm Exchange Online posta kutuları hedeflenir
  • Belirli bir gönderen adresinden gelen
  • Belirli bir konu (Subject) içeren e-postalar aranır
New-ComplianceSearch `
-Name "Spam" `
-ExchangeLocation All `
-ContentMatchQuery '(senderauthor=emailaddress) AND (subject="Subject")'

Parametre Açıklamaları

  • Name
    Arama tanımına verilen isimdir. Daha sonra referans olarak kullanılır.
  • ExchangeLocation All
    Tüm kullanıcı posta kutularını kapsar.
  • ContentMatchQuery
    Arama kriterlerinin tanımlandığı en kritik parametredir.

ContentMatchQuery Gücü

Bu parametre sayesinde:

  • Gönderen / alıcı adresi
  • Subject
  • Anahtar kelime
  • Tarih aralığı
  • Ek dosya türleri

gibi birçok kriter birleştirilerek oldukça hassas aramalar yapılabilir.

Arama İşlemini Başlatma

Arama tanımı oluşturulduktan sonra, bu aramanın manuel olarak başlatılması gerekir:

Start-ComplianceSearch -Identity "Spam"

Bu işlem arka planda çalışır. Kurumunuzdaki:

  • Kullanıcı sayısı
  • Posta kutusu büyüklükleri

gibi faktörlere bağlı olarak birkaç saniye ile birkaç dakika arasında sürebilir.

Arama Durumunu ve Sonuçlarını Kontrol Etme

Aramanın tamamlanıp tamamlanmadığını ve kaç adet e-posta bulunduğunu görmek için:

Get-ComplianceSearch -Identity "Spam" | fl Name,Status,Items

Çıktının Yorumlanması

  • Status = InProgress → Arama devam ediyor
  • Status = Completed → Arama tamamlandı
  • Items = 0 → Aranan kriterlere uyan e-posta bulunamadı

Eğer Items = 0 ise:

  • Silinecek bir içerik olmadığı için
  • Purge komutu çalıştırıldığında hata alınır

“Ne Bulduğunu Görmek İstiyorum” Diyenler İçin

PowerShell çıktısında e-postalar liste halinde gösterilmez. Eğer silinecek e-postalardan emin olmak istiyorsanız:

  • Purview Portal
  • Content Search
  • Search

yolunu izleyerek oluşturduğunuz aramayı bulabilir,

  • İstatistiklerini görüntüleyebilir
  • İçeriği Export ederek detaylı inceleyebilirsiniz

Bulunan E-postalar İçin Silme (Purge) İşlemi

Arama sonucunda Items > 0 ise artık silme işlemi başlatılabilir.

Silme Türleri

Compliance Search iki farklı silme seçeneği sunar:

SoftDelete

  • E-posta kullanıcıdan silinir
  • Geri Dönüştürülebilir Öğeler alanına taşınır
  • Gerekirse geri yüklenebilir

HardDelete

  • E-posta kalıcı olarak silinir
  • Geri dönüşü yoktur

Güvenli yaklaşım olarak önce SoftDelete tercih edilmelidir.

Örnek SoftDelete komutu:

New-ComplianceSearchAction `
-SearchName "Spam" `
-Purge `
-PurgeType SoftDelete

Silme İşleminin Durumunu Kontrol Etmek

Silme işlemi de asenkron çalışır. Durum kontrolü için:

Get-ComplianceSearchAction | Select SearchName,Status
  • Status = Completed → Silme işlemi başarıyla tamamlanmıştır.

Silme Sonrası Doğrulamak

İşlemin gerçekten tamamlandığından emin olmak için:

  • Aynı arama sorgusu tekrar çalıştırılabilir
  • Get-ComplianceSearch çıktısında Items = 0 olduğu doğrulanabilir

Bu yöntemle:

  • Farklı konu başlıkları
  • Farklı gönderen adresleri
  • Yeni tehditler için aynı adımlar tekrar uygulanabilir.