Gmail alternatifi arayışım, Mailcow‘u keşfetmem ile son buldu. Tamamı açık kaynak kodlu parçalardan oluşan bu bundle, bir eposta servisinde aradığım -ve bulamadığım- tüm özelliklere sahip.
- Virüs taraması – ClamAV
- Metin arama (full text search) – Solr
- Spam filtresi – Rspamd
- Sistem güvenliği sağlayıcısı – Netfilter
- Otomatik SSL sertifikası üretimi – LetsEncrypt – ACME-Client
- Epostaların şifrelenerek saklanması – Mail Crypt
- Webmail, takvim ve kişi listesi – SoGo
- 2 adımlı doğrulama (TFA – Two Factor Authentication)
- IMAP, POP3 ve SMTP desteği
- Tek kullanımlık eposta adresleri (disposable emails)
- Ve daha fazlası…
Anti virüs ve metin arama özelliklerini kullanmak istiyorsanız, sunucunuzun 2.5 GB’dan daha fazla ram’e sahip olması gerekiyor. Ben, Vultr‘ın 20$’lık makinesini tercih ettim.
Mailcow Kurulumu
Gelelim kuruluma. Sunucunuzu sadece Mailcow için kullanacaksanız, kurulum çok basit. Fakat aynı anda başka siteler barındırmak için de kullanacaksanız Nginx gibi bir reverse proxy‘ye ihtiyacınız var. Ben her iki kurulumu da Ubuntu 18.04 için anlatacağım. Kurulum adımları diğer işletim sistemlerinde farklılık gösterecektir.
Ön Hazırlıklar
Bu aşamada her iki kurulumda da kullanılacak ortak yazılımları yükleyeceğiz.
1- Docker kurulumu
Aşağıdaki komutları tek tek girerek Docker Community Edition‘ı 🡥 kuruyoruz.
$ sudo apt-get update
$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io
Kurulumu tamamladıktan sonra Docker’ın, sunucu yeniden başladığında otomatik olarak çalışabilmesi için şu komutları 1 kez giriyoruz:
$ sudo systemctl enable docker
$ sudo systemctl start docker
2- Docker Compose Kurulumu
Docker Compose’u kurmak için çalıştırmanız gereken komutlar çok daha az:
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
3- Mailcow’un Sunucuya İndirilmesi
Mailcow’u Git reposu 🡥ndan klonlayarak kurmamız gerekiyor. Ubuntu 18.04’te Git yüklü olarak geliyor (en azından server edition’da). Eğer kullandığınız işletim sisteminde Git yüklü değil ise yüklemelisiniz.
$ umask # Bu komutun çıktısının 0022 olması gerekiyor.
$ cd /opt
$ git clone https://github.com/mailcow/mailcow-dockerized
4- DNS Ayarları
Mailcow’u kullanabilmek için 1 adet domaine ihtiyacınız var. Bu domaine ait bir subdomaini eposta sunucusu olarak kullanacağız. Yani dagli.net değil, mx.dagli.net ya da mail.dagli.net olmalı. Seçtiğiniz subdomaini, sunucu IP adresinize yönlendiren bir A kaydı oluşturmalısınız.
Kurulumu tamamladıktan sonra, IMAP ve SMTP portlarının güvenliği için bir çok TLSA kaydı oluşturmanız gerekecek. Eğer mevcut DNS sunucunuz TLSA kaydı oluşturmanıza izin vermiyor ise, Cloudflare 🡥‘in ücretsiz DNS hizmetini kullanabilirsiniz. Ben eposta sunucusu olarak kullandığım domainin DNS sunucusunu, Vultr’dan Cloudflare’e çevirmek zorunda kalmıştım.
Bu noktaya kadar sorunsuz olarak geldiyseniz, ön hazırlıkları tamamlamışsınız demektir.
Standalone Mailcow Kurulumu
Sunucunuzda sadece Mailcow’u kullanacaksanız, kurulum işlemlerinin bitmesine 2-3 dk kaldı.
$ cd /opt/mailcow-dockerized
$ ./generate_config.sh
Son komut, ayar dosyasını oluşturacak olan küçük bir sihirbaz. İlk önce eposta sunucusunun, sunucu adını (hostname) soracak. Buraya 4. ön hazırlık maddesinde seçmiş olduğunuz subdomaini yazacaksınız. İkinci soru ise, eposta sunucusunun zaman dilimi. Türkiye için Europe/Istanbul yazabilirsiniz.
Ayar dosyasını da oluşturduktan sonra, aşağıdaki iki komutu çalıştırarak, Mailcow kurulumunu tamamlayacaksınız.
$ docker-compose pull
$ docker-compose up -d
Mailcow Reverse Proxy Kurulumu
Eğer sunucunuzda Mailcow dışında herhangi bir site barındıracaksanız bir adet reverse proxy’ye ihtiyacınız var. Çünkü Mailcow yönetim paneli, standart HTTP(S) portları olan 80 ve 443’ü kullanıyor. Ön hazırlığı tamamladıktan sonra, benim tercihim olan Nginx’i kuruyoruz.
$ sudo apt-get install nginx
Standalone kurulumda anlattığım “ayar dosyası oluşturma” kısmını burada da yapacağız. Ayar dosyasını oluşturduktan sonra, favori editörünüz ile bu dosyası açmanız gerekiyor.
$ cd /opt/mailcow-dockerized
$ nano mailcow.conf
mailcow.conf dosyasında HTTP_PORT= kısmını bulup, aşağıdaki gibi düzenlemelisiniz.
HTTP_PORT=3080
HTTP_BIND=127.0.0.1
HTTPS_PORT=3043
HTTPS_BIND=127.0.0.1
Artık Mailcow’un kurulumunu tamamlayıp çalıştırabiliriz:
$ docker-compose pull
$ docker-compose up -d
Sırada Nginx konfigürasyonu var. /etc/nginx/sites-available klasörünün içine mailcow.conf 🡥 dosyası oluşturuyoruz.
# Kullandığım Mailcow Nginx konfigürasyon dosyasını indir
$ curl https://pastebin.com/raw/xt2zquxv > /etc/nginx/sites-available/mailcow.conf
# İndirilen konfigürasyon dosyasını, sites-enabled'a linkle
$ ln -s /etc/nginx/sites-available/mailcow.conf /etc/nginx/sites-enabled/000-mailcow.conf
# site-enabled'daki "default" linkini sil
$ rm /etc/nginx/sites-enabled/default
Bu dosyayı açıp __EPOSTA_SUNUCU_ADI__ yazan yerleri, 4. ön hazırlık maddesinde seçmiş olduğunuz subdomain ile değiştirmelisiniz.
Nginx’i yeniden başlattıktan sonra Mailcow ve Nginx reverse proxy kurulumu tamamlanmış oluyor.
$ sudo systemctl restart nginx
Kurulum Sonrası Ayarları
Eposta sunucu adresi olarak seçtiğiniz subdomaini tarayıcınızla açıp Mailcow yönetim paneline ulaşabilirsiniz. Ön tanımlı yönetici bilgileri:
Kullanıcı adı: admin
Kullanıcı şifresi: moohoo
Mailcow Kontrol Paneli – Giriş Ekranı
Giriş yaptıktan sonra yönetici bilgilerini değiştirmeniz gerekiyor. Ardından üst menüden Configuration > Mail Setup’a tıklayıp, domain yönetim paneline ulaşacaksınız. Eposta adresiniz olarak kullanmak istediğiniz tüm domainleri buradan eklemelisiniz.
Domainleri ekledikten sonra, üst menüden Configuration > Configuration & Details’e tıklayıp açılan sayfadan Configuration sekmesine tıklamalısınız. İlk bölüm olan “ARC/DKIM keys” kısmında, biraz aşağıda “Select domains with missing keys” linki var. Ona tıkladığınız zaman eklemiş olduğunuz ve ARC/DKIM key bilgisi olmayan domainleri seçecek. Ardından “Key Length” seçeneğinden istediğinizi seçip “Add” butonuna tıklayacaksınız.
Mailcow ARC/DKIM key ekleme kısmı
Şimdi tekrar Configuration > Mail Setup sayfasına gelerek, eklediğiniz alan adları listesini göreceksiniz. Bu listede en sağdaki DNS butonuna basarsanız, Mailcow mevcut DNS kayıtlarınız ile tanımlamanız gereken DNS kayıtlarının karşılaştırmalı listesini gösterecek. Bu listedeki kayıtları tek tek oluşturmalısınız.
Mailcow DNS ayarları yardımcısı
Artık ister Mailcow’un Webmail’i üzerinden ister favori mail client’ınız ile IMAP & SMTP üzerinden kendi barındırdığınız eposta hizmetinizi kullanabilirsiniz. Ben masaüstünde Thunderbird, Android telefonumda ise K-9 Mail uygulamalarını tercih ettim. Her iki yazılım da açık kaynak kodlu :)