DA
Tüm yazılara dön
IMAP UTF-7 Kodlaması: E-posta Sunucularında Türkçe Karakter Desteği

IMAP UTF-7 Kodlaması: E-posta Sunucularında Türkçe Karakter Desteği

imap utf-7email encodingtürkçe karakterleremail serversimap protocolcharacter encodingmail clients

IMAP UTF-7 Kodlaması: E-posta Sunucularında Türkçe Karakter Desteği

E-posta sistemleri ile çalışırken, özellikle Türkçe karakterler içeren klasör isimleriyle karşılaştığımızda bazen garip karakterler görürüz. "Gönderilmiş Öğeler" klasörü "G&APY-nderilmi&AV8- &A5Y-&APC-eler" şeklinde görünebilir. Bu durum, IMAP UTF-7 kodlaması ile karşımıza çıkar. Bu yazıda, IMAP UTF-7'nin ne olduğunu, neden kullanıldığını ve nasıl çalıştığını detaylı olarak inceleyeceğiz.

IMAP UTF-7 Nedir?

IMAP UTF-7 (Internet Message Access Protocol UTF-7), e-posta sunucularında klasör isimlerinde ASCII olmayan karakterleri kodlamak için kullanılan özel bir kodlama formatıdır. RFC 3501 standardında tanımlanmış olan bu format, IMAP protokolünde uluslararası karakter desteği sağlar.

Tarihçe ve Gereklilik

IMAP protokolü başlangıçta ASCII karakter setini temel alıyordu. Ancak internetin global hale gelmesiyle birlikte, farklı dillerdeki karakterlere ihtiyaç duyuldu. IMAP UTF-7, bu sorunu çözmek için geliştirilmiş ve şu avantajları sağlamıştır:

  • ASCII Uyumluluğu: Mevcut sistemlerle geriye dönük uyumluluk
  • Güvenli Karakter Kullanımı: Özel karakterlerden kaçınma
  • Uluslararası Destek: Türkçe, Arapça, Çince gibi dillerin desteklenmesi

Kodlama Algoritması

Temel Prensip

IMAP UTF-7 kodlaması şu şekilde çalışır:

  1. ASCII karakterler (0x20-0x7E) olduğu gibi bırakılır
  2. ASCII olmayan karakterler özel kodlama ile dönüştürülür
  3. & karakteri özel anlam kazanır ve &- şeklinde kodlanır

Kodlama Süreci

Normal Metin: Gönderilmiş Öğeler
↓
UTF-16BE Dönüşümü: G ö n d e r i l m i ş   Ö ğ e l e r
↓
Kodlama: G&APY-nderilmi&AV8- &A5Y-&APC-eler

Detaylı Açıklama

1. ASCII Karakter Kontrolü

  • G, n, d, e, r, i, l, m, ş (ASCII değil), space, e, l, e, r

2. Türkçe Karakterlerin Kodlanması

  • ö → UTF-16BE: 0x00F6 → Base64-benzeri: APY
  • ş → UTF-16BE: 0x015F → Base64-benzeri: AV8
  • Ö → UTF-16BE: 0x00D6 → Base64-benzeri: A5Y
  • ğ → UTF-16BE: 0x011F → Base64-benzeri: APC

3. Sonuç

  • G&APY-nderilmi&AV8- &A5Y-&APC-eler

Yaygın Kullanım Örnekleri

Türkçe E-posta Klasör İsimleri

| Normal Metin | IMAP UTF-7 Kodlaması | | ------------------ | ---------------------------------- | | Gönderilmiş Öğeler | G&APY-nderilmi&AV8- &A5Y-&APC-eler | | Çöp Kutusu | &AMc-&APY-p Kutusu | | Müşteri İletişimi | M&APw-&AV8-teri &A0g-leti&AV8-imi | | Şirket & İş | &AWY-irket &- &A0g-&AV8- |

Özel Durumlar

& Karakteri:

  • Normal: Şirket & İş
  • Kodlanmış: &AWY-irket &- &A0g-&AV8-

Rakamlar ve Simgeler:

  • Normal: Proje 2024 ✓
  • Kodlanmış: Proje 2024 &Iws-

Teknik Detaylar

Base64 Karakter Seti

IMAP UTF-7, standart Base64'ten farklı bir karakter seti kullanır:

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+,

Standart Base64'te '+' ve '/' kullanılırken, IMAP UTF-7'de '+' ve ',' kullanılır.

Kodlama Kuralları

  1. ASCII Printable Karakterler: Doğrudan kullanılır
  2. & Karakteri: &- olarak kodlanır
  3. Diğer Karakterler: &- formatında kodlanır

Çözme Algoritması

function decodeImapUtf7(str) {
  return str.replace(/&([^-]*)-/g, (match, base64) => {
    if (base64 === "") return "&";

    // Base64 çözme ve UTF-16BE'den karakter çıkarma
    const bytes = decodeBase64Modified(base64);
    return utf16BEtoString(bytes);
  });
}

Pratik Kullanım Alanları

E-posta İstemcileri

Outlook, Thunderbird, Apple Mail gibi e-posta istemcileri:

  • Klasör isimlerini IMAP UTF-7 ile sunucuya gönderir
  • Sunucudan gelen kodlanmış isimleri çözer
  • Kullanıcıya normal formatta gösterir

E-posta Sunucuları

Microsoft Exchange, Postfix, Dovecot gibi sunucular:

  • Klasör isimlerini IMAP UTF-7 formatında saklar
  • Çoklu dil desteği sağlar
  • ASCII uyumluluğunu korur

Web Mail Uygulamaları

Gmail, Outlook.com, Yahoo Mail gibi web uygulamaları:

  • IMAP bağlantılarında UTF-7 kodlaması kullanır
  • Kullanıcı arayüzünde çözülmüş hali gösterir

Sorun Giderme

Yaygın Problemler

1. Bozuk Karakter Görünümü

Problem: G&APY-nderilmi&AV8- &A5Y-&APC-eler
Çözüm: IMAP UTF-7 çözücü kullanın

2. Klasör Oluşturma Hatası

Hata: "Invalid folder name"
Neden: Türkçe karakterler doğru kodlanmamış
Çözüm: IMAP UTF-7 kodlayıcı kullanın

3. Synchronizasyon Sorunları

Problem: Klasörler farklı isimlerle görünüyor
Neden: İstemci UTF-7 desteği eksik
Çözüm: İstemci güncelleme veya manuel kodlama

Debug Teknikleri

1. Raw IMAP Komutları

C: A001 LIST "" "*"
S: * LIST (\HasNoChildren) "/" "INBOX"
S: * LIST (\HasNoChildren) "/" "G&APY-nderilmi&AV8- &A5Y-&APC-eler"

2. Karakter Kontrolü

// Kodlanmış metni kontrol et
const encoded = "G&APY-nderilmi&AV8- &A5Y-&APC-eler";
console.log("Kodlanmış:", encoded);
console.log("Çözülmüş:", decodeImapUtf7(encoded));

Modern Alternatifler

UTF-8 Desteği

Yeni IMAP sunucuları UTF-8 desteği sunmaya başladı:

IMAP UTF8 Extension (RFC 6855):

  • Doğrudan UTF-8 kullanımı
  • Daha basit implementasyon
  • Gelecekteki standart

Avantajları:

  • Karmaşık kodlama gerektirmez
  • Daha okunabilir
  • Modern karakter desteği

Geçiş Stratejileri

1. Kademeli Geçiş

  • Yeni klasörler için UTF-8
  • Mevcut klasörler UTF-7
  • Geriye dönük uyumluluk

2. Full Migration

  • Tüm klasörleri UTF-8'e çevir
  • İstemci uyumluluğunu kontrol et
  • Backup alma

Araçlar ve Kaynaklar

Online Kodlayıcılar

IMAP UTF-7 Decoder/Encoder - Türkçe karakterli metinleri IMAP UTF-7 formatına dönüştürün veya tersine çevirin.

Programlama Kütüphaneleri

JavaScript:

// Node.js için imap-utf7 paketi
npm install imap-utf7

Python:

# imaplib modülü built-in UTF-7 desteği
import imaplib

PHP:

// imap_utf7_encode/decode fonksiyonları
$encoded = imap_utf7_encode("Türkçe Metin");

Gelecek ve Öneriler

Best Practices

1. Modern Sunucu Kullanımı

  • UTF-8 destekli IMAP sunucuları tercih edin
  • IMAP4rev2 (RFC 9051) standardını takip edin

2. İstemci Uyumluluğu

  • UTF-7 ve UTF-8 hibrit desteği
  • Fallback mekanizmaları

3. Güvenlik

  • Karakter encoding saldırılarına dikkat
  • Input validation yapın

Öneriler

Yeni Projeler İçin:

  • Doğrudan UTF-8 kullanın
  • IMAP UTF-7'yi sadece legacy destek için tutun

Mevcut Sistemler İçin:

  • UTF-7 çözücü araçlar kullanın
  • Kademeli olarak UTF-8'e geçin

Sonuç

IMAP UTF-7 kodlaması, e-posta sistemlerinde uluslararası karakter desteği sağlayan önemli bir standarttır. Türkçe karakterli e-posta klasör isimleriyle çalışırken bu kodlamayı anlamak ve doğru araçları kullanmak kritik öneme sahiptir.

Modern sistemlerde UTF-8 desteği artsa da, legacy sistemlerle uyumluluk için IMAP UTF-7 bilgisi hala gereklidir. Online IMAP UTF-7 araçları kullanarak bu dönüşümleri kolayca gerçekleştirebilir, e-posta sistemlerinizdeki karakter encoding sorunlarını çözebilirsiniz.

E-posta entegrasyonları geliştirirken veya sistem yönetimi yaparken bu rehberdeki bilgileri kullanarak sorunları hızlıca tespit edip çözebilirsiniz. Unutmayın ki teknoloji sürekli gelişiyor ve UTF-8 desteği yaygınlaştıkça IMAP UTF-7'ye olan ihtiyaç azalacaktır.