Yeni yazı: Kümeyi Kurmak: Ready Yazması Kümenin Çalıştığı Anlamına Gelmez
Mailu: Güçlü ve Esnek Bir Mail Sunucusu Çözümü

Mailu: Güçlü ve Esnek Bir Mail Sunucusu Çözümü

İçindekiler

Kendi mail sunucunuzu kurmak teknik olarak bir öğleden sonralık iştir; mailinizin karşı tarafın gelen kutusuna düşmesi ise ayrı bir iştir. Postfix, Dovecot, antispam, antivirüs, webmail ve TLS sertifikasını tek tek kurup birbirine bağlamak yerine Mailu bunların hepsini birbiriyle konuşan Docker konteynerleri hâlinde verir.

Bu yazıda Mailu’nun ne sunduğunu, kurulum öncesi sunucuda ve DNS’te hazır olması gerekenleri ve setup.mailu.io sihirbazındaki her alanın ne işe yaradığını adım adım göreceğiz.

Mailu Kutudan Ne Çıkarıyor

Mailu tek bir program değil, bir bileşen paketidir. Elle kurmaya kalksanız birbirine bağlamanız gereken parçaları hazır yapılandırılmış konteynerler hâlinde verir:

Konteyner İş
front Nginx — TLS sonlandırma ve tüm protokollerin (SMTP, IMAP, HTTP) ön kapısı
smtp Postfix — mail alma ve gönderme
imap Dovecot — posta kutuları, IMAP/POP3 erişimi
antispam Rspamd — spam puanlama ve DKIM imzalama
admin Yönetim arayüzü, kullanıcı ve alan adı yönetimi
redis Oturum ve hız sınırı verisi

Antivirüs (ClamAV), webmail (Roundcube ya da SnappyMail), webdav, fetchmail, oletools ve Tika isteğe bağlıdır; kurulum sihirbazında açıp kapatırsınız.

Kazanç şurada: bu altı parçanın birbirini tanıması, aynı sertifikayı kullanması ve DKIM anahtarının hem imzalayan hem yayınlayan tarafta tutarlı olması Mailu’nun işidir. Elle kurulumda en çok zaman alan kısım da tam olarak budur.

Mailu Kurulumu İçin Gereksinimler

Mailu’yu kurmak için aşağıdaki gereksinimlere sahip olmanız gerekmektedir: resmî gereksinim listesi

  • Bir Alan Adı: Mailu’yu kullanmak için bir alan adına ihtiyacınız var.

  • DNS Kayıtları: Alan adınız için gerekli DNS kayıtlarını yapılandırmalısınız. Bunların hangileri olduğu ve neden pazarlık konusu olmadığı yazının sonunda.

  • Docker ve Docker Compose: Mailu, Docker kapsayıcıları ile çalışır, bu yüzden Docker ve Docker Compose v2 yüklü olmalıdır.

  • Sunucu: Mailu’yu barındıracak bir sunucuya ihtiyacınız var.

  • Hostname: Sunucunun hostname’ini mail sunucusunun genel adına ayarlayın ve /etc/hosts dosyasında da çözülür hâle getirin. Postfix bu adı karşı sunucuya HELO/EHLO sırasında bildirir; adın gerçek olmaması tek başına spam puanı yazdırır.

    sudo hostnamectl set-hostname mail.muratakpinar.com.tr
    

Sürüm kontrolü

Kuruluma başlamadan önce Compose sürümünü doğrulayın — Mailu’nun ürettiği docker-compose.yml Compose v1 ile çalışmaz:

docker compose version
# Docker Compose version v2.14.1

Çıktı docker-compose version 1.x diyorsa (araya tire giren eski komut) yanlış sürümdesiniz: v2, Docker’ın alt komutudur ve docker compose diye boşlukla çağrılır.

Mailu Kurulum Adımları

Adım 1: Başlangıç Konfigürasyonu

Mailu’nun yapılandırması kendi sitesindeki sihirbazdan üretilir; alanları doldurup dosyaları indireceksiniz: setup.mailu.io

  • Mailu Storage Path: Bu alan, Mailu’nun verilerini depolayacağı dizini belirtir. Docker volume path’i girilmelidir, örneğin: /mailu.
  • Main Mail Domain and Server Display Name: Ana mail domaini ve sunucu adı bu alana girilmelidir. Örneğin, muratakpinar.com.tr
  • Postmaster Local Part: Bu alan, postmaster e-posta adresinin yerel kısmını belirtir. Genellikle admin olarak kullanılır.
  • Choose how you wish to handle security TLS certificates: TLS sertifikalarını nasıl yönetmek istediğinizi seçin. letsencrypt gibi bir seçenek belirleyebilirsiniz.
  • Authentication rate limit per IP for failed login attempts on unique non-existing accounts: Belirli bir IP adresinden yapılan başarısız giriş denemeleri için saatlik limit. Örneğin, 5 / hour.
  • Authentication rate limit per user: Kullanıcı başına günlük giriş deneme limiti. Örneğin, 50 / day.
  • Outgoing message rate limit (per user): Kullanıcı başına günlük gönderilebilecek mesaj limiti. Örneğin, 200 / day.
  • Opt-in for anonymized statistics: Anonimleştirilmiş istatistiklere katılmak isteyip istemediğinizi belirleyin.
  • Website name: Web sitesinin adını girin. Örneğin, Murat Akpınar.
  • Linked Website URL: Webmail arayüzünden bağlanılacak site adresi. Örneğin https://muratakpinar.com.tr; boş bırakılabilir.
  • Enable the admin UI: Yönetim arayüzünü etkinleştirin. Bu seçenek, Mailu’nun yönetim araçlarına erişim sağlar.
  • Enable the API: API’yi etkinleştirin. Mailu’nun yapılandırmasını değiştirmek için RESTful API’yi kullanabilirsiniz. API’yi etkinleştirdiğinizde size bir TOKEN üretip verecektir.

Adım 2: Özellikleri Seçin

Mailu, bir yönetici arayüzü, web e-posta istemcileri, antispam, antivirüs gibi birden fazla temel özellik ile birlikte gelir. Bu bölümde, tercihlerinize göre servisleri etkinleştirebilirsiniz:

  • Enable Web email client: Web e-posta istemcisini etkinleştirin. Bu seçenek, kullanıcıların web üzerinden posta kutularına erişmelerini sağlar. none, roundcube veya snappymail seçeneklerinden birini belirleyebilirsiniz. (Eski sürümlerde bu listede geçen RainLoop‘un yerini SnappyMail aldı; RainLoop geliştirilmeyi bıraktığı için yeni kurulumlarda seçilmemelidir.)
  • Enable the antivirus service: Antivirüs hizmetini etkinleştirir. ClamAV kullanarak büyük ölçekli virüs yayılma kampanyalarına karşı koruma sağlar. Bu hizmeti etkinleştirmek için en az 1GB bellek gereklidir.
  • Enable the webdav service: Webdav hizmetini etkinleştirir. Kullanıcıların HTTP üzerinden takvim ve rehber gibi bilgileri depolamalarını sağlar.
  • Enable fetchmail: Fetchmail’i etkinleştirir. Kullanıcıların harici bir mail sunucusundan IMAP/POP3 ile posta çekip gelen kutularına yerleştirmelerini sağlar.
  • Enable oletools: Oletools’u etkinleştirir. E-posta eklerindeki belgeleri kötü amaçlı makrolara karşı tarar. Tam teşekküllü bir antivirüs programına göre daha düşük bellek kullanır.
  • Enable Tika: Tika’yı etkinleştirir. E-posta ekleri içinde arama yapma işlevini sağlar. Tika, e-posta eklerindeki belgeleri tarar, işler (OCR, anahtar kelime çıkarımı) ve verimli bir şekilde aranabilir hale getirir. Bu işlem önemli miktarda kaynak (RAM, CPU ve depolama) gerektirir.

Adım 3: Mailu’yu Dünyaya Açın

Mail sunucusunun e-posta alabilmesi, gönderebilmesi ve kullanıcıların posta kutularına erişebilmesi için dünyaya açılması gerekmektedir. Mailu, bu işlemi çeşitli yollarla yapabilir:

  • IPv4 listen address: Sunucunun dinleyeceği IP adresi. Sunucu doğrudan internete bakıyorsa buraya genel (public) IP adresini yazın; NAT arkasındaysa sunucunun kendi arayüzündeki adresi yazılır ve 25/465/587/993 portları dışarıdan bu makineye yönlendirilir. Örneğin, 192.168.1.50.
  • Subnet of the docker network: Docker ağının alt ağını belirtin. Bu ağ, sisteminizin bağlı olduğu herhangi bir ağ ile çakışmamalıdır. Genellikle format *.*.*.0/24 şeklindedir. Örneğin, 192.168.203.0/24.
  • Enable IPv6: IPv6’yı etkinleştirin. Bu, Mailu’nun DNSSEC doğrulamasını yapmasına, DNS kök sorgularını ve önbelleklemesini gerçekleştirmesine olanak tanır.
  • Enable an internal DNS resolver (unbound): Dahili bir DNS çözümleyiciyi etkinleştirin. Bu seçenek, antispam hizmetinin genel veya ISS DNS sunucuları tarafından engellenmemesine yardımcı olur.
  • Public hostnames: Sunucunun barındıracağı genel ana bilgisayar adlarını girin. Bu alan adları, e-posta alan adlarının MX kayıtlarında belirtilmelidir. Ana bilgisayar adları virgülle ayrılmalıdır.

mail.muratakpinar.com.tr

Adım 4: Dosyaları İndirin ve Ayağa Kaldırın

Sihirbaz, verdiğiniz cevaplara göre size özel bir bağlantı üretir ve iki dosya sunar: docker-compose.yml ile mailu.env. İkisini de depolama dizinine indirip servisleri başlatırsınız:

sudo mkdir -p /mailu && cd /mailu
# <ID> kısmı sihirbazın ürettiği bağlantıdan gelir
wget https://setup.mailu.io/2024.06/file/<ID>/docker-compose.yml
wget https://setup.mailu.io/2024.06/file/<ID>/mailu.env
docker compose -p mailu up -d

İlk yönetici hesabı elle oluşturulur; sihirbaz bunu yapmaz:

docker compose -p mailu exec admin flask mailu admin admin muratakpinar.com.tr 'PAROLA'

Komutun bu biçimi Mailu 2024.06 içindir; farklı bir sürüm kuruyorsanız o sürümün kurulum sayfasını açıp doğrulayın.

Kurulumdan Sonra: Teslim Edilebilirlik

Konteynerlerin ayağa kalkması mail sunucusunun çalıştığı anlamına gelir; maillerinizin karşı tarafa ulaştığı anlamına gelmez. Bu ikisinin arasındaki fark DNS’te ve sağlayıcınızın port politikasında saklıdır.

  • 25 numaralı port giden yönde açık mı? Çoğu ev interneti ve birçok bulut sağlayıcısı (AWS, Azure, Oracle Cloud, DigitalOcean) giden 25/tcp trafiğini varsayılan olarak keser. Kesikse Mailu hiçbir şey gönderemez ve kusur sunucuda değildir. Kurmadan önce sağlayıcıdan açtırın ya da bir smarthost planlayın.
  • PTR (reverse DNS) kaydı. IP adresinizin geriye doğru mail.alanadi.com çözmesi gerekir ve bu kaydı yalnızca IP’nin sahibi (sağlayıcınız) girebilir. Gmail ve Outlook, PTR’si olmayan sunucudan gelen postayı büyük ölçüde reddeder.
  • MX, SPF, DKIM, DMARC. Alan adınızın MX kaydı sunucunuzu göstermeli; SPF hangi IP’nin sizin adınıza gönderebileceğini, DKIM imzanın doğrulanacağı anahtarı, DMARC ise uyuşmazlıkta ne yapılacağını söyler. Mailu bu kayıtların metnini yönetim arayüzünde hazır olarak üretir (Mail domains → alan adınız → DNS); oradan kopyalayıp DNS sağlayıcınıza girmeniz gerekir.
  • TLS sertifikası. letsencrypt seçtiyseniz Mailu sertifikayı kendisi alır ve yeniler, ama bunun için 80 ve 443 portlarının dışarıdan erişilebilir olması şarttır.

Sonuç

  • Mailu’nun kolaylaştırdığı şey kurulum, teslim edilebilirlik değil. Konteynerler beş dakikada ayağa kalkar; PTR, SPF, DKIM ve DMARC tamamlanmadan gönderdiğiniz mailler spam klasöründe kalır.
  • Kurulumdan önce iki şeyi doğrulayın: giden 25/tcp portunuz açık mı ve IP’nizin PTR kaydını girebiliyor musunuz? İkisi de sizin elinizde değilse kendi sunucunuzu kurmak yerine bir mail sağlayıcısı kullanmak daha doğrudur.
  • Sürüm etiketine sadık kalın. Mailu’nun kurulum sihirbazı ve docker-compose.yml‘si sürüme özeldir (2024.06); farklı sürümlerin dosyalarını karıştırmak çalışmayan bir kurulum üretir.

Kurduktan sonra sunucunuzun dışarıdan nasıl göründüğünü mail-tester.com veya MXToolbox gibi bir servisle test edin — eksik kalan DNS kaydını size satır satır söyler.

Paylaş :

İlgili Yazılar

Dosya Türleri ve İzinleri: Linux Dosya Yönetiminin Temelleri

Dosya Türleri ve İzinleri: Linux Dosya Yönetiminin Temelleri

ls -l çalıştırdığınızda her satırın başında on karakterlik bir dizi görürsünüz: -rw-r--r--. Çoğu kullanıcı bu diziyi okumadan geçer ve izin gerektiğinde chmod 777 yazıp sorunu “çözer” — sonra o dosyayı sistemdeki herkesin değiştirebildiğini fark etmez.

Monitoring Nedir ve Neden Önemlidir?

Monitoring Nedir ve Neden Önemlidir?

Bir sunucunun diski dolduğunda bunu iki şekilde öğrenirsiniz: ya sistem size söyler, ya da müşteri arar. Aradaki fark teknik bir yetenek değil, bir tercihtir — o sunucuyu izliyor muydunuz, izlemiyor muydunuz?

Ansible Nedir ve Ne İşe Yarar?

Ansible Nedir ve Ne İşe Yarar?

Ansible, otomasyon, yapılandırma yönetimi ve uygulama dağıtımı için kullanılan açık kaynaklı bir yazılımdır. Genellikle sunucu yapılandırma yönetimi, yazılım dağıtımı ve iş süreçlerinin otomatikleştirilmesi gibi alanlarda kullanılır. Ansible, basit, etkili ve agentless (Kontrol edilecek sunuculara bir kurulum yapmaya gerek olmaz) bir yapısıyla bilinir. Bu da kurulumu ve yapılandırması kolaylaştırır, çünkü ek bir yazılım veya agent yüklemeye gerek kalmadan uzaktaki makineleri yönetebilir.