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
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:
- ASCII karakterler (0x20-0x7E) olduğu gibi bırakılır
- ASCII olmayan karakterler özel kodlama ile dönüştürülür
- & 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ı
- ASCII Printable Karakterler: Doğrudan kullanılır
- & Karakteri: &- olarak kodlanır
- 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.