Outlook PST Dosyasını Python'da Parse Edip E-posta Zaman Çizelgesi Oluşturma
Outlook PST dosyalarını incelemek adli bilişim ve e-posta analizi için sık ihtiyaç duyulan bir görev. Python'da bunu yapmanın en pratik yolu libpst kütüphanesini kullanmaktır. Bu kütüphane PST dosyasının içini okuyup klasörler ve mesajlara erişim sağlar.
PST dosyası Microsoft Outlook'un yerel posta depo formatıdır ve içinde e-postalar, takvim girişleri, kişiler gibi veriler bulunur. Zaman çizelgesi oluşturmak için tüm e-postaları çıkarıp gönderme tarihi ile sıralamak gerekir.
Önce gerekli kütüphaneleri kur:
1pip install libpstAşağıdaki kod PST dosyasını açıp tüm e-postaları tarihe göre sıralar ve CSV dosyasına kaydeder:
1import pst2import csv3from datetime import datetime45def extract_emails_from_pst(pst_file_path, output_csv):6try:7# PST dosyasını aç8pstfile = pst.PSTFile(pst_file_path)9root = pstfile.root_folder1011emails = []1213def traverse_folders(folder):14# Klasördeki tüm e-postaları oku15for item in folder.sub_folders:16if item.entries:17for message in item.entries:18try:19subject = message.subject or "(Konu Yok)"20sender = message.sender or "(Gönderici Bilinmiyor)"21sent_time = message.sent_time or datetime.now()2223emails.append({24'tarih': sent_time,25'gonderen': sender,26'konu': subject27})28except:29pass30traverse_folders(item)3132traverse_folders(root)3334# Tarihe göre sırala35emails.sort(key=lambda x: x['tarih'])3637# CSV'ye yaz38with open(output_csv, 'w', newline='', encoding='utf-8') as f:39writer = csv.DictWriter(f, fieldnames=['tarih', 'gonderen', 'konu'])40writer.writeheader()41writer.writerows(emails)4243print(f"Toplam {len(emails)} e-posta çıkarıldı.")44print(f"Sonuçlar '{output_csv}' dosyasına kaydedildi.")4546except Exception as e:47print(f"Hata: {e}")4849# Kullanım50extract_emails_from_pst('dosya.pst', 'eposta_zaman_cizelgesi.csv')Beklenen çıktı: CSV dosyasında 2024-01-15 10:30:45 gibi tarihler ve gönderenler sırasıyla listelenir.
Sık yapılan hatalardan biri: libpst Windows'ta doğrudan kurulmuyor. Linux veya WSL ortamında kurulum daha sorunsuz çalışır. Ayrıca çok büyük PST dosyalarında bellek tükenebilir; bu durumda dosyayı parçalara ayırıp işlemek gerekir. Gönderici bilgisi bazen boş gelirse, mesaj başlığı veya alıcı adresi alternatif olarak kullanılabilir.
0 yorum