Cloudflare Workers ile Ücretsiz E-posta Sunucusu Kurulumu (Cloud-Mail)

Yandex Mail Alternatifi: Cloudflare Workers ile Ücretsiz Kurumsal E-posta Kurulumu

Yandex Mail for Domain hizmetinin kapanması, Zoho Mail’in ücretsiz planını kısıtlaması ve Google Workspace’in tamamen ücretli hale gelmesiyle birlikte, kendi alan adıyla ücretsiz kurumsal e-posta kullanmak isteyenler için seçenekler oldukça azaldı.

Bu noktada açık kaynaklı Cloud-Mail projesi, Cloudflare altyapısını kullanarak kendi alan adınızla e-posta alıp göndermenize olanak sağlayan güçlü bir alternatif sunuyor.

Bu rehberde Cloud-Mail kullanarak kendi domaininiz üzerinde e-posta adresleri oluşturmayı, gelen e-postaları yönetmeyi, Resend üzerinden e-posta göndermeyi ve sistemi Cloudflare Workers üzerinde yayınlamayı adım adım anlatacağım.

Yandex Mail for Domain Neden Kapandı?

Yandex, alan adına özel e-posta hizmetini Yandex 360 for Business adı altında ücretli bir sisteme dönüştürdü. Mevcut kullanıcılar belirli bir süre ücretsiz kullanmaya devam edebilse de yeni ücretsiz domain kaydı kabul edilmemeye başlandı.

Bunun yanında Türkiye’den zaman zaman yaşanan erişim ve doğrulama sorunları da kullanıcıları alternatif hizmetlere yöneltti.

Mevcut Kurumsal E-posta Alternatifleri

Hizmet Ücretsiz Plan Dezavantaj
Zoho Mail 5 kullanıcı, 5 GB Ücretsiz planda IMAP ve POP desteği bulunmayabilir
Google Workspace Yok Kullanıcı başına aylık ücret
Microsoft 365 Yok Kullanıcı başına aylık ücret
Yandex 360 Yeni kayıt yok Ücretsiz domain kaydı kapalı
ImprovMX Sınırlı Temel olarak e-posta yönlendirme hizmeti
Cloud-Mail Cloudflare limitleri dahilinde ücretsiz Kurulum ve yapılandırma kullanıcıya ait

Cloud-Mail Nedir?

Cloud-Mail, Cloudflare Workers altyapısı üzerinde çalışan açık kaynaklı bir e-posta yönetim projesidir.

Gelen e-postalar Cloudflare Email Routing üzerinden Worker’a aktarılır. E-postalar Cloudflare D1 veritabanında saklanır. Giden e-postalar ise Resend gibi haricî bir e-posta gönderim hizmeti üzerinden iletilir.

Bu yapı sayesinde klasik bir e-posta sunucusu kurmadan kendi alan adınızla web tabanlı bir e-posta sistemi oluşturabilirsiniz.

Öne Çıkan Özellikler

  • Kendi alan adınızla birden fazla e-posta adresi oluşturma
  • Modern ve mobil uyumlu web arayüzü
  • E-posta gönderme ve alma
  • Çoklu kullanıcı desteği
  • Kullanıcı ve rol yönetimi
  • PWA desteği
  • Telegram bildirim entegrasyonu
  • Yapay zekâ destekli doğrulama kodu çıkarma
  • Cloudflare ücretsiz planında kullanılabilme
  • Açık kaynak kodlu yapı

Kurulum İçin Gerekenler

Kuruluma başlamadan önce aşağıdaki hesap ve uygulamalara ihtiyacınız bulunmaktadır:

  • Ücretsiz bir Cloudflare hesabı
  • Cloudflare DNS yönetimine eklenmiş bir alan adı
  • Mail gönderimi için Resend hesabı
  • Bilgisayarınızda Node.js 18 veya üzeri
  • pnpm paket yöneticisi
  • Git

1. Cloud-Mail Projesini İndirin

Terminali veya komut istemini açarak aşağıdaki komutları çalıştırın:

git clone https://github.com/maillab/cloud-mail.git
cd cloud-mail/mail-worker
pnpm install

Bu komutlar Cloud-Mail projesini bilgisayarınıza indirecek ve Worker için gerekli paketleri yükleyecektir.

2. Cloudflare Hesabınıza Giriş Yapın

Wrangler üzerinden Cloudflare hesabınıza giriş yapmak için aşağıdaki komutu çalıştırın:

npx wrangler login

Komutu çalıştırdığınızda tarayıcınız açılacak ve Cloudflare hesabınız için yetkilendirme yapmanız istenecektir.

3. D1 Veritabanı Oluşturun

Cloud-Mail, e-postaları ve kullanıcı bilgilerini saklamak için Cloudflare D1 kullanır.

D1 veritabanını oluşturmak için:

npx wrangler d1 create cloud-mail-db

Komut tamamlandığında terminalde bir database_id gösterilecektir. Bu kimliği daha sonra kullanacağımız için bir yere kaydedin.

4. KV Namespace Oluşturun

Cloudflare KV alanını oluşturmak için aşağıdaki komutu çalıştırın:

npx wrangler kv namespace create kv

Komut çıktısında gösterilen KV kimliğini de kaydedin.

5. wrangler.toml Dosyasını Yapılandırın

mail-worker/wrangler.toml dosyasını bir metin editörüyle açın ve aşağıdaki örneğe göre düzenleyin:

name = "cloud-mail"
main = "src/index.js"
compatibility_date = "2026-08-05"
keep_vars = true

[observability]
enabled = true

[[d1_databases]]
binding = "db"
database_name = "cloud-mail-db"
database_id = "D1_ID_BURAYA"

[[kv_namespaces]]
binding = "kv"
id = "KV_ID_BURAYA"

[ai]
binding = "ai"

[assets]
binding = "assets"
directory = "./dist"
not_found_handling = "single-page-application"
run_worker_first = true

[triggers]
crons = ["0 16 * * *"]

[vars]
domain = ["sizindomain.com"]
admin = "[email protected]"
jwt_secret = "rastgele-guclu-bir-sifre"

[build]
command = "pnpm --prefix ../mail-vue install && pnpm --prefix ../mail-vue run build"

Değiştirmeniz Gereken Alanlar

  • D1_ID_BURAYA: D1 oluştururken verilen veritabanı kimliği
  • KV_ID_BURAYA: KV oluştururken verilen namespace kimliği
  • sizindomain.com: Kullanacağınız alan adı
  • [email protected]: Yönetici e-posta adresi
  • jwt_secret: Tahmin edilmesi zor, uzun ve rastgele bir güvenlik anahtarı
Güvenlik uyarısı: jwt_secret alanında kısa veya kolay tahmin edilebilir bir parola kullanmayın. Büyük ve küçük harf, rakam ve özel karakterlerden oluşan uzun bir değer belirleyin.

6. Cloud-Mail Worker’ını Yayınlayın

Worker’ı Cloudflare üzerine yüklemek ve özel alan adınızı bağlamak için aşağıdaki komutu kullanabilirsiniz:

npx wrangler deploy --domain mail.sizindomain.com

Buradaki mail.sizindomain.com bölümünü kullanmak istediğiniz alt alan adıyla değiştirin.

Örneğin alan adınız ornek.com ise aşağıdaki gibi kullanabilirsiniz:

npx wrangler deploy --domain mail.ornek.com

Deploy işlemi sırasında web arayüzü oluşturulur, Worker Cloudflare’a yüklenir ve destekleniyorsa özel alan adı Worker’a bağlanır.

7. Veritabanını Başlatın

Worker yayınlandıktan sonra veritabanı tablolarını oluşturmak için tarayıcınızdan başlangıç adresini açın:

https://mail.sizindomain.com/api/init/jwt_secret_degeriniz

Buradaki jwt_secret_degeriniz kısmına wrangler.toml dosyasında belirlediğiniz gerçek jwt_secret değerini yazın.

İşlem başarılı olduğunda ekranda success benzeri bir yanıt görmeniz gerekir.

Önemli: Başlangıç adresinde güvenlik anahtarınız yer aldığı için bu bağlantıyı başkalarıyla paylaşmayın ve ekran görüntüsünü yayımlamayın.

8. Cloudflare Email Routing Ayarlarını Yapın

Alan adınıza gelen e-postaların Cloud-Mail Worker’ına ulaşması için Cloudflare Email Routing özelliğini etkinleştirmeniz gerekir.

  1. Cloudflare Dashboard’a giriş yapın.
  2. Cloud-Mail için kullanacağınız alan adını seçin.
  3. Email bölümüne girin.
  4. Email Routing sayfasını açın.
  5. Email Routing özelliğini etkinleştirin.
  6. Cloudflare’ın istediği MX ve TXT kayıtlarını onaylayın.
  7. Catch-all veya yönlendirme kuralı oluşturun.
  8. Hedef olarak Send to a Worker seçeneğini belirleyin.
  9. Worker olarak cloud-mail projesini seçin.

Catch-all etkinleştirildiğinde alan adınızdaki tanımlanmamış adreslere gönderilen e-postalar da Worker tarafından karşılanabilir.

Örneğin aşağıdaki adreslere gelen mesajlar Cloud-Mail tarafından işlenebilir:

9. Resend ile E-posta Gönderimini Ayarlayın

Cloudflare Email Routing temel olarak gelen e-postaların işlenmesini sağlar. Dışarıya e-posta göndermek için Cloud-Mail içerisinde Resend gibi ayrı bir gönderim hizmeti kullanılır.

  1. Resend web sitesine giderek hesap oluşturun.
  2. Resend panelinde Domains bölümünü açın.
  3. Add Domain seçeneğiyle alan adınızı ekleyin.
  4. Resend tarafından verilen DNS kayıtlarını Cloudflare DNS bölümüne ekleyin.
  5. DKIM, SPF ve Return-Path kayıtlarının doğrulanmasını bekleyin.
  6. Domain doğrulandıktan sonra API Keys bölümüne girin.
  7. Yeni bir API anahtarı oluşturun.

Daha sonra Cloud-Mail yönetim paneline giriş yaparak Ayarlar bölümündeki Resend Tokens alanına aşağıdaki formatta API anahtarınızı ekleyin:

{
  "sizindomain.com": "re_BURAYA_API_KEY"
}

Birden fazla alan adı kullanıyorsanız her domain için ayrı bir tanımlama yapabilirsiniz:

{
  "birincidomain.com": "re_BIRINCI_API_KEY",
  "ikincidomain.com": "re_IKINCI_API_KEY"
}
Not: SPF kaydı eklerken alan adınızda daha önce oluşturulmuş başka bir SPF kaydı bulunup bulunmadığını kontrol edin. Aynı alan adı için birden fazla SPF TXT kaydı oluşturmak e-posta teslimat sorunlarına neden olabilir.

10. İlk Yönetici Hesabını Oluşturun

Kurulum tamamlandıktan sonra aşağıdaki adrese gidin:

https://mail.sizindomain.com

Kayıt ekranından yönetici hesabınızı oluşturun. Projenin yapılandırmasına bağlı olarak kullanıcı adını yalnızca admin şeklinde girmeniz yeterli olabilir ve domain otomatik olarak eklenebilir.

Giriş yaptıktan sonra yönetici paneli üzerinden kullanıcıları, e-posta adreslerini ve sistem ayarlarını yönetebilirsiniz.

Cloud-Mail ile Neler Yapabilirsiniz?

Birden Fazla E-posta Adresi Oluşturma

Yönetim panelinden ihtiyacınıza göre farklı e-posta adresleri oluşturabilirsiniz:

Oluşturabileceğiniz adres sayısı, uygulamanın teknik yapısı ile Cloudflare ve gönderim servisinin kullanım limitlerine bağlıdır.

Çoklu Kullanıcı Yönetimi

Ekibinizdeki kişiler için ayrı kullanıcı hesapları oluşturabilir, roller tanımlayabilir ve kullanıcıların erişebileceği alanları sınırlandırabilirsiniz.

Telegram Bildirimleri

Telegram bot token ve chat ID bilgilerini sisteme ekleyerek yeni bir e-posta geldiğinde Telegram üzerinden bildirim alabilirsiniz.

Davet Kodu Sistemi

Kayıt işlemini herkese açık bırakmak yerine davet koduyla sınırlandırabilirsiniz. Böylece yalnızca sizin oluşturduğunuz davet koduna sahip kişiler sisteme kayıt olabilir.

PWA Desteği

Cloud-Mail web arayüzü desteklenen cihazlarda ana ekrana eklenerek mobil uygulamaya benzer şekilde kullanılabilir.

Maliyet Karşılaştırması

Özellik Cloud-Mail Google Workspace Zoho Mail Yandex 360
Aylık ücret Cloudflare limitleri dahilinde ücretsiz Kullanıcı başına ücretli Plana göre ücretli Ücretli
E-posta adresi Yapılandırmaya bağlı Plana bağlı Plana bağlı Plana bağlı
Depolama Cloudflare D1 limitlerine bağlı Plana bağlı Plana bağlı Plana bağlı
Özel alan adı Evet Evet Evet Evet
Web arayüzü Evet Evet Evet Evet
Kaynak kodu kontrolü Evet Hayır Hayır Hayır

Ücretsiz Plan Limitleri

Cloud-Mail’in tamamen limitsiz bir e-posta hizmeti olmadığını unutmamak gerekir. Sistem, kullandığınız Cloudflare ve Resend planlarının limitleri içerisinde çalışır.

Dikkate alınması gereken başlıca limitler şunlardır:

  • Cloudflare Workers günlük istek limiti
  • Cloudflare D1 veritabanı boyutu ve okuma-yazma limitleri
  • Cloudflare KV okuma ve yazma limitleri
  • Cloudflare Email Routing kullanım koşulları
  • Resend günlük ve aylık e-posta gönderim limitleri

Bu limitler zaman içerisinde değişebileceği için kurulum öncesinde Cloudflare ve Resend’in güncel fiyatlandırma sayfalarını kontrol etmeniz önerilir.

Cloud-Mail Kullanmanın Avantajları

  • Ayrı bir VPS veya fiziksel sunucu gerektirmez.
  • Postfix ve Dovecot gibi servislerle uğraşmanız gerekmez.
  • Cloudflare altyapısı üzerinde çalışır.
  • Açık kaynak kodlu olduğu için özelleştirilebilir.
  • Küçük ekipler ve kişisel projeler için düşük maliyetlidir.
  • Web tabanlı modern bir yönetim arayüzü sunar.

Dikkat Edilmesi Gerekenler

Cloud-Mail klasik anlamda eksiksiz bir SMTP, IMAP ve POP3 sunucusunun birebir karşılığı değildir. Sistem temel olarak Cloudflare Email Routing, Workers, D1 ve haricî gönderim servislerinin birlikte çalışmasına dayanır.

Bu nedenle aşağıdaki konuları dikkate almalısınız:

  • Outlook veya Thunderbird gibi uygulamalarda doğrudan IMAP kullanımı desteklenmeyebilir.
  • Gönderim limitleri Resend planınıza bağlıdır.
  • Cloudflare hesabınızın güvenliği doğrudan e-posta sisteminizi etkiler.
  • D1 veritabanı yedeklerinin düzenli olarak alınması önerilir.
  • API anahtarları ve JWT anahtarı kesinlikle paylaşılmamalıdır.
  • Önemli ve kritik kurumsal iletişimlerde ücretli ve SLA sunan hizmetler daha uygun olabilir.

Sonuç

Cloud-Mail, kendi alan adıyla ücretsiz veya düşük maliyetli bir web tabanlı e-posta sistemi kurmak isteyenler için dikkat çekici bir açık kaynak alternatifidir.

Cloudflare Workers sayesinde ayrı bir sunucu kiralamadan e-posta alabilir, D1 üzerinde mesajları saklayabilir ve Resend entegrasyonu üzerinden dışarıya e-posta gönderebilirsiniz.

Özellikle kişisel projeler, test ortamları, küçük işletmeler ve sınırlı e-posta trafiğine sahip ekipler için değerlendirilebilir. Bununla birlikte sistemin Cloudflare ve Resend limitlerine bağlı olduğu, klasik IMAP destekli kurumsal e-posta hizmetleriyle tamamen aynı özellikleri sunmadığı unutulmamalıdır.

Proje bağlantısı: GitHub – maillab/cloud-mail


Bu rehberde anlatılan kurulumu kendi alan adım üzerinde test ederek çalıştığını doğruladım. Kurulum sırasında karşılaştığınız sorunları yorum bölümünden paylaşabilirsiniz.

OpenLiteSpeed Cli php versiyonunu değiştirme

OpenLiteSpeed Cli php versiyonunu değiştirme

sudo update-alternatives --config php
There are 3 choices for the alternative php (providing /usr/bin/php).

  Selection    Path                             Priority   Status
------------------------------------------------------------
* 0            /usr/bin/php.default              100       auto mode
  1            /usr/bin/php.default              100       manual mode
  2            /usr/bin/php8.1                   81        manual mode
  3            /usr/local/lsws/lsphp84/bin/php   84        manual mode

Press <enter> to keep the current choice[*], or type selection number: 3

 

Sitenize Class E / Reserved İp ile ziyaretçi geliyorsa

Siteniz Class E / Reserved ziyaretçi geliyor ve bu nasıl oluştugunuz nereden geldigini benim gibi anlamıyorsanız yapmanız gereken cloudflare üzerinden network alanından “Pseudo IPv4” OFF durumuna çevirmek

Okumaya devam et Sitenize Class E / Reserved İp ile ziyaretçi geliyorsa

Googlebot, Bingbot IP adresleri (Güncel)

Google bot ip adreslilerini aşağıdaki adresi kullanarak googlebot iplerini json formatında görebilirsiniz.

Google Bot
https://developers.google.com/static/search/apis/ipranges/googlebot.json

Bing Bot :
https://www.bing.com/toolbox/bingbot.json

Special-Crawlers (AdsBot + AdSense/Mediapartners):
https://developers.google.com/static/search/apis/ipranges/special-crawlers.json

User-Triggered Fetchers:
https://developers.google.com/static/search/apis/ipranges/user-triggered-fetchers.json

User-Triggered Fetchers (Google IP’li):
https://developers.google.com/static/search/apis/ipranges/user-triggered-fetchers-google.json

Applebot:
https://search.developer.apple.com/applebot.json

GPTBot:
https://openai.com/gptbot.json

OAI-SearchBot:
https://openai.com/searchbot.json

ChatGPT-User:
https://openai.com/chatgpt-user.json

Bilgisayarında Yerel Yapay Zeka Kurulumu (Localhost Yapay Zeka)

Denediğim modeller

  1. Qwen3.5 (122B)
  2. Qwen2.5-Coder (14B)

Buradan bakabilirsiniz : https://ollama.com/search?c=cloud

Windows için PowerShell açıp şunu çalıştır:

irm https://ollama.com/install.ps1 | iex
ollama

Ram iyiyse bunu indrebilirsiniz yine powershell den

ollama pull qwen3.5:122b

Yada buradan modellere göre bakın: https://ollama.com/library/qwen3.5

daha sonra bunu indirin vscode ile entegre etmek için

https://marketplace.visualstudio.com/items?itemName=Continue.continue

Daha sonra alttaki kombinasyonu kullanıp config dosyasını açalım.

Ctrl + Shift + P → Continue: Open Config

ve içine bunu yapıştırın kendi local ai göre

name: Local Config
version: 1.0.0
schema: v1

models:
  - name: Qwen 3.5 122B (Ultra)
    provider: ollama
    model: qwen3.5:122b
    roles:
      - chat
      - edit
      - apply

  - name: Qwen Coder 14B (Coding)
    provider: ollama
    model: qwen2.5-coder:14b
    roles:
      - autocomplete
      - edit

  - name: Nomic Embed
    provider: ollama
    model: nomic-embed-text:latest
    roles:
      - embed

daha sonra vscode içindeki Continue açıp sol altta gözükür modeli seçip kullanmaya başlaya bilirsiniz.

ollama list

Yazarak yüklediginiz modelleri göre bilirsiniz başka modelleri denemek için
https://ollama.com/search buradan bakıp indire bilirsiniz.

openlitespeed litespeed curl_init

PHP Fatal error:  Uncaught Error: Call to undefined function curl_init() in

Eğer yukarıdaki gibi bir hata alıyorsanız sorun default tanımlanan php modülüne gitmesi bunu kaldırıp openlitespeed bakmasını sağlamak gerekiyor.

# Mevcut (çalışmayan) php linkini silelim
sudo rm /usr/bin/php

# OpenLiteSpeed'in PHP'sini sisteme varsayılan olarak bağlayalım
sudo ln -s /usr/local/lsws/lsphp83/bin/php /usr/bin/php

 

alias php='/usr/local/lsws/lsphp83/bin/php'

 

lsphp83 burası sizin yüklediğiniz openlitespeed php versiyonu olması gerekiyor.

Openlitespeed Read-only file system hatası alıyorsanız

root@ubuntu-8gb-hel1-1:~# service lsws restart
Job for lshttpd.service failed because the control process exited with error code.
See "systemctl status lshttpd.service" and "journalctl -xeu lshttpd.service" for details.

Feb 02 20:07:43 ubuntu-8gb-hel1-1 lswsctrl[1420]: /usr/local/lsws/bin/lswsctrl: 259: cannot create /usr/local/lsws/bin/../logs/lsrestart.log: Read-only file system
Feb 02 20:07:43 ubuntu-8gb-hel1-1 lswsctrl[1420]: /usr/local/lsws/bin/lswsctrl: 260: cannot create /usr/local/lsws/bin/../logs/lsrestart.log: Read-only file system
Feb 02 20:07:43 ubuntu-8gb-hel1-1 lswsctrl[1431]: [ERROR] Failed to write to pid file:/tmp/lshttpd/lshttpd.pid!
Feb 02 20:07:43 ubuntu-8gb-hel1-1 lswsctrl[1420]: [ERROR] Failed to start litespeed!
Feb 02 20:07:45 ubuntu-8gb-hel1-1 lswsctrl[1420]: /usr/local/lsws/bin/lswsctrl: 216: cannot create /usr/local/lsws/bin/../logs/lsrestart.log: Read-only file system
Feb 02 20:07:46 ubuntu-8gb-hel1-1 lswsctrl[1420]: /usr/local/lsws/bin/lswsctrl: 220: cannot create /usr/local/lsws/bin/../logs/lsrestart.log: Read-only file system

Openlitespeed vb. şeylerde Read-only file system hatası alıyorsanı bu hdd zarar görmemesi için yaptıgı bir koruma fakat anlamsız bir şekilde bazen yedek alırkende yapıyor bunu şu komutu yazarak iptal edebilirsiniz.

 

mount -o remount,rw /dev/sda1 /

 

Tek komutla Ubuntu özellikleri listeleme.

echo "=== CPU ===" && lscpu && \
echo -e "\n=== RAM ===" && free -h && \
echo -e "\n=== DISK ===" && lsblk -o NAME,TYPE,SIZE,FSTYPE,MOUNTPOINT && \
echo -e "\n=== IO SCHEDULER ===" && for d in $(lsblk -nd -o NAME); do echo -n "$d: "; cat /sys/block/$d/queue/scheduler; done && \
echo -e "\n=== FILESYSTEM ===" && df -hT && \
echo -e "\n=== NETWORK ===" && ip -brief addr

 

Chrome Geçmişte Tarih Filtreli getirme

Google Hesabı ile (en net yöntem ✅)

Eğer Chrome’da Google hesabınla oturum açıksa, tüm geçmiş burada çok daha düzenli görünür:

👉 https://myactivity.google.com

Buradan:

  1. Sol menüden “Etkinliği filtrele”
  2. Tarih → Özel aralık
  3. 03.01.2026 – 03.01.2026 seç
  4. Chrome / Web & App Activity açık olsun

✔ Saat saat hangi sitelere girdiğini görebilirsin
✔ Silinen Chrome geçmişi bile bazen burada durur