Cloudflare ile Email Routing: Ücretsiz E-posta Yönlendirme
Kendi domain’in var ama her subdomain veya takma ad için ayrı ayrı e-posta hesabı açmak istemiyorsun. Ya da belki sadece [email protected] adresine gelen maillerin Gmail’ine düşmesini istiyorsun, ama bunun için aylık para ödemek saçma geliyor. İşte tam burada Cloudflare Email Routing devreye giriyor ve hayatını ciddi anlamda kolaylaştırıyor.
Cloudflare’in bu ücretsiz servisi, domain’ine gelen e-postaları istediğin herhangi bir adrese yönlendirmene izin veriyor. Kurumsal görünümlü e-posta adresleri oluşturabilir, bunları kişisel veya iş e-posta hesaplarına yönlendirebilir, hatta catch-all kurallarıyla hiçbir maili kaçırmayabilirsin. Tüm bunlar için tek kuruş ödemiyorsun.
Cloudflare Email Routing Nedir ve Neden Kullanmalısın
Cloudflare Email Routing, temel olarak bir e-posta yönlendirme (forwarding) servisidir. Kendi mail sunucun olmadan, [email protected], [email protected], [email protected] gibi adresler oluşturabilir ve bunları mevcut e-posta hesaplarına yönlendirebilirsin.
Servisin öne çıkan özellikleri şunlar:
- Tamamen ücretsiz: Cloudflare’in free planında bile çalışıyor
- Sınırsız adres: İstediğin kadar yönlendirme kuralı oluşturabiliyorsun
- Catch-all desteği: Tanımlanmamış adreslere gelen mailleri de yakalıyor
- Workers entegrasyonu: İleri seviye filtreleme için Cloudflare Workers kullanabiliyorsun
- SPF/DKIM otomatik ayarı: DNS kayıtlarını otomatik olarak ekliyor
Gerçek dünya senaryosu olarak düşün: Freelance çalışan bir web geliştiricisin. Müşterilere [email protected] adresini veriyorsun, ama aslında Gmail kullanıyorsun. Cloudflare Email Routing sayesinde [email protected]‘e gelen her mail anında Gmail’ine düşüyor. Müşteri seni profesyonel görüyor, sen de alışık olduğun arayüzden çalışmaya devam ediyorsun.
Ön Gereksinimler
Başlamadan önce şunlara ihtiyacın var:
- Cloudflare’de tanımlı ve aktif bir domain
- Domain’in DNS yönetiminin Cloudflare üzerinden yapılıyor olması
- E-postaların yönlendirileceği bir hedef adres (Gmail, Outlook, Protonmail, her şey olabilir)
Domain’i Cloudflare’e henüz taşımadıysan, önce nameserver’larını değiştirmen gerekiyor. Bu işlem genellikle 24-48 saat alıyor.
Cloudflare Dashboard’dan Email Routing Aktifleştirme
Cloudflare paneline giriş yaptıktan sonra ilgili domain’i seç. Sol menüde Email > Email Routing seçeneğini göreceksin.
İlk kez açıyorsan seni bir kurulum sihirbazı karşılıyor. “Get started” butonuna tıkla.
DNS Kayıtlarının Otomatik Eklenmesi
Cloudflare, Email Routing’i aktifleştirdiğinde aşağıdaki DNS kayıtlarını otomatik olarak ekliyor:
# MX Kayıtları (Cloudflare'in mail sunucularına yönlendirme)
MX @ route1.mx.cloudflare.net priority: 86
MX @ route2.mx.cloudflare.net priority: 32
MX @ route3.mx.cloudflare.net priority: 14
# SPF Kaydı (TXT)
TXT @ "v=spf1 include:_spf.mx.cloudflare.net ~all"
Bu kayıtlar domain’ine gelen maillerin önce Cloudflare’in sunucularına gitmesini sağlıyor. Cloudflare orada kurallarını uygulayıp maili hedef adrese iletiyor.
Eğer daha önce başka bir mail servisi kullanıyorduysan (Google Workspace, Zoho, etc.), eski MX kayıtların çakışabilir. Cloudflare seni bu konuda uyarıyor ve eski kayıtları devre dışı bırakmana izin veriyor.
İlk Yönlendirme Kuralını Oluşturma
DNS kayıtları yerleştikten sonra artık kural oluşturabilirsin.
Email > Email Routing > Routing Rules sekmesine geç.
“Create address” butonuna tıkla. Açılan formda:
- Custom address: Kaynak adres (örneğin
info) - Action: Forward to
- Destination: Hedef e-posta adresi
Hedef adresi ilk kez ekliyorsan Cloudflare oraya bir doğrulama maili gönderiyor. Bu maildeki linke tıklayarak onaylayana kadar yönlendirme aktif olmuyor.
# Örnek senaryo: Birden fazla adres yönlendirmesi
# [email protected] -> [email protected]
# [email protected] -> [email protected]
# [email protected] -> [email protected]
# [email protected] -> /dev/null (drop)
Catch-All Kuralı
Bu özellik çok işe yarıyor. Diyelim ki birisi [email protected] gibi var olmayan bir adrese mail attı. Normalde bu mail bounce olur, gönderene hata döner. Catch-all ile bu mailleri de yakalayıp istediğin adrese yönlendirebilirsin.
Routing Rules sayfasının alt kısmında Catch-all address bölümünü göreceksin. Buraya tıkla ve kuralını ayarla.
Catch-all için üç seçenek var:
- Drop: Gelen maili sil, gönderene hata verme
- Send an email: Belirtilen adrese yönlendir
- Send to a Worker: Cloudflare Worker’a gönder (ileri seviye filtreleme)
Gerçek dünya örneği: Bir SaaS ürün geliştiriyorsun ve kullanıcılara sistem bildirimleri gönderiyorsun. Her modül için farklı adres kullanmak istiyorsun: billing@, support@, alerts@ gibi. Hepsini tek tek tanımlamak yerine catch-all ile tek bir inbox’ta toplayabilirsin. Sonra orada filter kurallarıyla organize edersin.
Hedef Adresleri Yönetme
Cloudflare, güvenlik amacıyla her hedef adresi doğruluyor. Email > Email Routing > Destination addresses sekmesinden tüm onaylı ve bekleyen adresleri görebilirsin.
# Doğrulama durumları:
# Verified - Aktif, yönlendirme çalışıyor
# Pending - Doğrulama maili gönderildi, bekleniyor
# Unverified - Doğrulama yapılmadı veya süresi doldu
Bir adresin doğrulaması süresi dolarsa, o adrese yönlendirilen mailler drop edilir. Periyodik olarak kontrol etmek iyi bir alışkanlık.
Cloudflare Workers ile Gelişmiş Filtreleme
Basit yönlendirmenin ötesine geçmek istiyorsan Workers devreye giriyor. Bu özellikle spam filtreleme, içerik bazlı yönlendirme veya otomatik yanıtlar için kullanılıyor.
Önce Workers scriptini oluşturman gerekiyor. Workers & Pages > Create application > Create Worker yolunu izle.
// Basit spam filtresi örneği
export default {
async email(message, env, ctx) {
// Spam skorunu kontrol et
const spamHeader = message.headers.get("X-Spam-Score");
if (spamHeader && parseFloat(spamHeader) > 5.0) {
// Spam ise direkt sil
message.setReject("Spam detected");
return;
}
// Normal maili yönlendir
await message.forward("[email protected]");
}
}
// Konu satırına göre yönlendirme
export default {
async email(message, env, ctx) {
const subject = message.headers.get("subject") || "";
if (subject.toLowerCase().includes("fatura") ||
subject.toLowerCase().includes("invoice")) {
await message.forward("[email protected]");
} else if (subject.toLowerCase().includes("teknik") ||
subject.toLowerCase().includes("bug")) {
await message.forward("[email protected]");
} else {
await message.forward("[email protected]");
}
}
}
Worker’ı oluşturduktan sonra Email Routing > Routing Rules kısmına dön ve bir kural eklerken Action olarak “Send to a Worker” seçeneğini seç. Oluşturduğun Worker’ı buradan bağlıyorsun.
// Birden fazla adrese aynı anda yönlendirme
export default {
async email(message, env, ctx) {
// Maili hem ekip mailine hem de arşive gönder
const forwardPromises = [
message.forward("[email protected]"),
message.forward("[email protected]")
];
await Promise.all(forwardPromises);
}
}
Bu özellik özellikle küçük ekipler için harika. Bir müşteri destek adresine gelen mailleri hem ilgili kişiye hem de genel bir arşiv adresine aynı anda gönderebiliyorsun.
API ile Email Routing Yönetimi
Cloudflare API’sini kullanarak yönlendirme kurallarını programatik olarak yönetebilirsin. Bu özellikle otomasyonlarda işe yarıyor.
# API token'ını ortam değişkenine al
export CF_API_TOKEN="your_api_token_here"
export CF_ZONE_ID="your_zone_id_here"
export CF_ACCOUNT_ID="your_account_id_here"
# Email Routing durumunu kontrol et
curl -s -X GET
"https://api.cloudflare.com/client/v4/zones/${CF_ZONE_ID}/email/routing"
-H "Authorization: Bearer ${CF_API_TOKEN}"
-H "Content-Type: application/json" | jq '.'
# Yeni yönlendirme kuralı ekle
curl -s -X POST
"https://api.cloudflare.com/client/v4/zones/${CF_ZONE_ID}/email/routing/rules"
-H "Authorization: Bearer ${CF_API_TOKEN}"
-H "Content-Type: application/json"
--data '{
"matchers": [
{
"type": "literal",
"field": "to",
"value": "[email protected]"
}
],
"actions": [
{
"type": "forward",
"value": ["[email protected]"]
}
],
"enabled": true,
"name": "Yeni kural"
}' | jq '.'
# Mevcut kuralları listele
curl -s -X GET
"https://api.cloudflare.com/client/v4/zones/${CF_ZONE_ID}/email/routing/rules"
-H "Authorization: Bearer ${CF_API_TOKEN}"
-H "Content-Type: application/json" | jq '.result[] | {name: .name, enabled: .enabled}'
Bu API özellikle SaaS uygulamalarında işe yarıyor. Kullanıcı kaydolduğunda otomatik olarak o kullanıcıya özel bir e-posta adresi oluşturmak istiyorsan, backend’den bu API’yi çağırarak dinamik kurallar ekleyebilirsin.
Sık Karşılaşılan Sorunlar ve Çözümleri
Mailler Gelmiyor
En sık karşılaşılan sorun bu. Adım adım kontrol et:
# DNS propagasyonunu kontrol et
dig MX domain.com
# Beklenen çıktı:
# domain.com. 300 IN MX 86 route1.mx.cloudflare.net.
# domain.com. 300 IN MX 32 route2.mx.cloudflare.net.
# domain.com. 300 IN MX 14 route3.mx.cloudflare.net.
Eğer eski MX kayıtları hala görünüyorsa, DNS henüz propagate olmamış demektir. 24-48 saat bekle.
Hedef adresin doğrulanmış olduğundan emin ol. Cloudflare dashboard’da Destination addresses bölümüne gidip “Verified” yazdığını teyit et.
Spam Klasörüne Düşüyor
Yönlendirilen mailler bazen spam olarak işaretlenebiliyor, çünkü orijinal gönderici SPF/DKIM kaydı Cloudflare’i yetkilendirmemiş olabilir. Bu durum için Email Routing > Settings bölümünde DMARC ayarlarını incele.
# Domain'in SPF kaydını kontrol et
dig TXT domain.com | grep spf
# Cloudflare'in SPF kaydının dahil olduğunu doğrula
# "include:_spf.mx.cloudflare.net" görmeli misin
Gmail’de spam sorununu çözmek için orijinal e-posta adresini kişilere eklemek de yardımcı olabilir.
Mevcut Mail Servisiyle Çakışma
Eğer domain’de halihazırda Google Workspace veya başka bir mail servisi varsa, MX kayıtları çakışacak. Bu durumda iki seçeneğin var:
- Eski mail servisini tamamen Cloudflare Email Routing’e geçir
- Subdomain kullan:
@mail.domain.comiçin eski servis,@domain.comiçin Cloudflare
İkinci seçenek için Cloudflare’de subdomain’e ayrı bir zone oluşturman gerekmiyor. Sadece subdomain için ayrı MX kayıtları tanımlarsın.
E-posta Gönderme Sorunu ve Çözümü
Cloudflare Email Routing sadece e-posta alma işlemi yapıyor. Yani [email protected] adresinden doğrudan mail gönderemiyorsun. Bu önemli bir kısıt.
Gönderme için birkaç seçenek var:
Gmail ile “Send As” özelliği: Gmail ayarlarından, yönlendirilen adresi gönderici olarak ekleyebilirsin. Bunun için Gmail’in SMTP sunucusunu kullanman gerekiyor.
Gmail > Settings > Accounts and Import > Send mail as > Add another email address yolunu izle. Burada [email protected] ekleyip Gmail’in sunucularıyla gönderme yetkisi ver. Böylece maillerini sanki [email protected]‘dan gönderiyormuş gibi gözükebilirsin.
Üçüncü taraf SMTP servisi: Brevo (eski Sendinblue), Mailgun, veya Resend gibi servisler ücretsiz tier sunuyor ve domain doğrulamayla gönderme yapabiliyorsun.
# Resend API ile örnek mail gönderme
curl -s -X POST
"https://api.resend.com/emails"
-H "Authorization: Bearer your_resend_api_key"
-H "Content-Type: application/json"
--data '{
"from": "[email protected]",
"to": ["[email protected]"],
"subject": "Merhaba",
"text": "Test maili"
}'
Bu yaklaşım özellikle geliştiriciler için pratik. Cloudflare ile alma, Resend veya benzeri servislerle gönderme yaparsın.
Gerçek Dünya Senaryoları
Senaryo 1: Küçük İşletme
Beş kişilik bir ekibin var. Her kişinin şirket adresi olsun istiyorsun ama Google Workspace’in aylık maliyetini karşılayamıyorsun.
Çözüm: Her çalışan için kendi Gmail’ine yönlendiren kurallar oluştur. [email protected] -> [email protected], [email protected] -> [email protected] şeklinde. Gönderme için Gmail’in Send As özelliğini kullanırlar.
Senaryo 2: Geliştirici / Kişisel Marka
Birden fazla projen var ve her proje için farklı iletişim adresi istiyorsun. [email protected], [email protected], [email protected] gibi. Hepsini tek bir inbox’ta toplayıp Gmail filtreleriyle organize edebilirsin.
Senaryo 3: Gizlilik Odaklı Kullanım
Farklı servisler için farklı takma ad oluşturabilirsin. [email protected], [email protected] gibi adresleri catch-all ile yönlendirirsin. Bir servisten spam gelmeye başlarsa sadece o kuralı silersin. Gerçek adresin asla kimseyle paylaşılmaz.
Cloudflare Email Routing’in Limitleri
Servisin her şeyi çözmediğini de belirtmek lazım. Sınırlamaları şunlar:
- Sadece yönlendirme: Kendi mail sunucun gibi davranamıyor. Gelen kutusun Cloudflare’de olmuyor
- Gönderme yok: Cloudflare adresinden doğrudan gönderemiyorsun
- Büyük ekler: 25 MB üzeri ekler bazen sorun çıkarabiliyor
- Rate limiting: Çok yoğun trafik durumlarında kısıtlamalar devreye girebiliyor
- Workers limiti: Free planda Workers için günlük 100.000 istek limiti var
Kurumsal ihtiyaçlar için Google Workspace veya Microsoft 365 daha mantıklı. Ama bireysel kullanım ve küçük ekipler için Cloudflare Email Routing gerçekten yeterli.
Sonuç
Cloudflare Email Routing, özellikle domain’i olan ama tam teşekküllü bir mail servisi için bütçesi olmayan herkes için mükemmel bir çözüm. Kurulumu 10 dakika alıyor, DNS kayıtlarını otomatik yönetiyor ve sıfır maliyle profesyonel görünümlü e-posta adresleri oluşturmanı sağlıyor.
Pratik kullanım açısından değerlendirince: Freelancerlar, küçük işletmeler, geliştiriciler ve kişisel marka oluşturmak isteyenler için gerçekten ideal. Workers entegrasyonu ile spam filtreleme veya içerik bazlı yönlendirme gibi gelişmiş özellikler de eklenince, ücretsiz bir araç için çok güçlü bir seçenek haline geliyor.
Gönderme sorununun çözümü için Gmail’in Send As özelliği veya Resend gibi ücretsiz SMTP servisleriyle birleştirince, neredeyse tam bir e-posta çözümü elde ediyorsun. Cloudflare panelinde birkaç dakika harcayarak, sonraki yıllarda hem paradan hem de baş ağrısından kurtuluyorsun.
