Yeni yazı: Kümenin Kapağını Açalım: Kubernetes Bileşenleri Birbirini Neden Hiç Aramaz?
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’nun Özellikleri

  • Açık Kaynaklı: Tamamen açık kaynaklı bir projedir.
  • Docker Tabanlı: Docker kapsayıcıları kullanarak kolayca kurulabilir ve yönetilebilir. Fakat burada önemli olan şey docker compose v2 olmalı.
  • Güvenlik: Spam ve virüs filtreleme, SSL/TLS desteği gibi gelişmiş güvenlik özellikleri sunar.
  • Esneklik: Farklı konfigürasyon ve kullanıcı ihtiyaçlarına göre özelleştirilebilir.

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 Docker ve Compose sürümlerini doğrulayın — Mailu’nun ürettiği docker-compose.yml, Compose v1 ile çalışmaz:

$ docker version
  Client: Docker Engine - Community
   Version:           20.10.22
   API version:       1.41
   Go version:        go1.18.9
   Git commit:        3a2c30b
   Built:             Thu Dec 15 22:27:03 2022
   OS/Arch:           linux/arm64
   Context:           default
   Experimental:      true

  Server: Docker Engine - Community
   Engine:
    Version:          20.10.22
    API version:      1.41 (minimum version 1.12)
    Go version:       go1.18.9
    Git commit:       42c8b31
    Built:            Thu Dec 15 22:25:25 2022
    OS/Arch:          linux/arm64
    Experimental:     false
   containerd:
    Version:          1.6.14
    GitCommit:        9ba4b250366a5ddde94bb7c9d1def331423aa323
   runc:
    Version:          1.1.4
    GitCommit:        v1.1.4-0-g5fd4c4d
   docker-init:
    Version:          0.19.0
    GitCommit:        de40ad0

$ docker compose version
  Docker Compose version v2.14.1

Mailu Kurulum Adımları

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

Kuruluma başlamadan önce bazı değişkenlerin ayarlanması gerekmektedir. Mailu’nun konfigürasyon kendi sitesinden yaparak bilgileri doldurun: 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: Bağlantılı web sitesinin URL’sini girin. Örneğin, ``.
  • 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.

Merhaba Dünya!

Merhaba Dünya!

Bilişim dünyasına olan ilgim çocukluğumdan beri vardı. Bilgisayarlar ve teknolojiyle iç içe olmak beni her zaman cezbetmişti. Üniversitede Bilişim Teknolojileri alanında eğitim aldım ve bilişim dünyasının kapılarını aralamak için adım attım.

Linux'da Kullanıcı Hesapları ve Yetkileri: Sudo ve Su Komutları

Linux'da Kullanıcı Hesapları ve Yetkileri: Sudo ve Su Komutları

Linux işletim sistemi, güçlü bir çok kullanıcılı ve çok görevli bir yapıya sahiptir. Bu çoklu kullanıcı ortamında, her kullanıcının kendi hesabına ve yetkilerine sahip olması önemlidir. Linux’ta kullanıcı hesapları ve yetkileri, güvenlik ve sistem yönetimi açısından kritik bir rol oynar. Bu yazıda, Linux’ta kullanıcı hesaplarını yönetmek ve yetkileri kontrol etmek için kullanılan sudo ve su komutlarına odaklanacağız.