MailWizz kurulumu, kendi sunucunuzda çalışan bir bülten ve kampanya platformu isteyenlerin sık tercih ettiği yollardan biri. PHP ile yazılmış, tek seferlik lisans ücretiyle satın alınan ve kendi sunucunuza kurulan bir uygulama; birden fazla müşteri hesabı, kota yönetimi ve çoklu gönderim sunucusu desteğiyle özellikle küçük ölçekli bir gönderim servisi işletmek isteyenlere hitap ediyor. Kurulumun kendisi yarım saatlik iş; asıl mesele cron işlerini, bounce işlemeyi ve DKIM tarafını doğru kurmak.
Bu rehberde MailWizz'i sıfır bir sunucuya kurmayı, kurulum sihirbazının istediği ön koşulları, olmadan hiçbir kampanyanın gitmeyeceği cron işlerini, gönderim sunucusu (delivery server) tanımını, dönen mailleri ve şikâyet raporlarını işleyen ayarları ve izleme alan adı yapılandırmasını anlatıyorum. Sonunda yeni kuranların düştüğü tuzakları da topladım.
MailWizz Kimin İçin#
MailWizz'i doğru konumlandırmak, sonradan pişman olmamak açısından önemli. Bu yazılım tek bir markanın bülteni için tasarlanmış hafif bir araç değil; çok müşterili bir gönderim platformu olarak kurgulanmış. Yönetici tarafında müşteri hesapları açar, her birine gönderim kotası tanımlar, farklı gönderim sunucularını farklı müşterilere atarsınız.
Tek bir şirketin aylık bülteni için de kullanabilirsiniz elbette, ama o senaryoda kurulum ve bakım yükü ihtiyacınızın üstünde kalabilir. Karar verirken şu tabloya bakın:
| Senaryo | MailWizz uygun mu |
|---|---|
| Tek markanın aylık bülteni | Çalışır ama fazla ağır gelebilir |
| Birden çok müşteriye gönderim hizmeti | Asıl tasarlandığı senaryo |
| Kota ve fatura bazlı gönderim yönetimi | Evet, yerleşik olarak var |
| Davranışa dayalı derin otomasyon | Sınırlı; Mautic daha güçlü |
| Sadece hafif bir bülten motoru | Listmonk daha uygun |
| Kendi MTA'nızı işletmek | Ayrı katman; Postal ile birleştirilir |
MailWizz de tıpkı diğerleri gibi bir posta sunucusu değildir. Mailleri tanımladığınız bir SMTP sunucusuna teslim eder; teslimat kalitesi, IP itibarı ve kimlik doğrulama o tarafın işidir.
Sunucu Gereksinimleri ve Ön Hazırlık#
Root erişimli bir sunucu kullanın. Cron sıklığı ve uzun süren komut satırı işleri paylaşımlı ortamlarda genellikle kısıtlıdır. Başlangıç için 2 vCPU ve 4 GB RAM makul bir yapılandırmadır; gönderim hacmi arttıkça veritabanı tarafını büyütmeniz gerekir.
# Ubuntu üzerinde gerekli paketler
sudo apt update
sudo apt install -y nginx mariadb-server unzip curl \
php-fpm php-cli php-mysql php-mbstring php-curl php-xml \
php-zip php-gd php-imap php-bcmath
# imap eklentisi bounce ve FBL kutularını okumak için ZORUNLU
php -m | grep -E "imap|curl|mbstring|pdo_mysql"
imap eklentisi çoğu kurulumda unutulur ve sonucu şudur: kurulum tamamlanır, kampanyalar gider, ama dönen mailler hiç işlenmez ve listeniz zamanla çürür. Kurulumdan önce yukarıdaki php -m çıktısında dört eklentiyi de gördüğünüzden emin olun.
Veritabanını hazırlayın:
CREATE DATABASE mailwizz CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'mailwizz'@'localhost' IDENTIFIED BY 'guclu-bir-parola';
GRANT ALL PRIVILEGES ON mailwizz.* TO 'mailwizz'@'localhost';
FLUSH PRIVILEGES;
DNS tarafında da hazırlık yapın: uygulamayı panel.firmaniz.com gibi bir alt alan adına, izleme bağlantılarını ise ayrı bir tik.firmaniz.com alt alan adına bağlamayı planlayın. İkisini ayırmak, ileride izleme alan adını değiştirmenizi kolaylaştırır.
Kurulum Adımları#
Satın aldığınız arşivi açtığınızda içinde latest adlı bir klasör görürsünüz; web köküne kopyalamanız gereken şey bu klasörün içeriğidir, klasörün kendisi değil.
- Arşivi sunucuya yükleyip açın.
latest/içeriğini web köküne (/var/www/mailwizz) taşıyın.- Dosya sahipliğini ve izinleri ayarlayın.
- Tarayıcıdan
https://panel.firmaniz.com/installadresini açın. - Sihirbazın ön koşul kontrolünü geçin; eksik eklenti varsa kurup sayfayı yenileyin.
- Veritabanı bilgilerini ve yönetici hesabını girin.
- Kurulum bitince
installdizinini silin ya da erişime kapatın.
sudo mkdir -p /var/www/mailwizz
sudo unzip mailwizz.zip -d /tmp/mw
sudo cp -a /tmp/mw/latest/. /var/www/mailwizz/
sudo chown -R www-data:www-data /var/www/mailwizz
sudo find /var/www/mailwizz -type d -exec chmod 755 {} \;
sudo find /var/www/mailwizz -type f -exec chmod 644 {} \;
# Uygulamanın yazabilmesi gereken dizinler
sudo chmod -R 775 /var/www/mailwizz/apps/common/runtime
sudo chmod -R 775 /var/www/mailwizz/backend/assets/cache
sudo chmod -R 775 /var/www/mailwizz/frontend/assets/cache
sudo chmod -R 775 /var/www/mailwizz/customer/assets/cache
Yedinci adımı atlamayın: kurulum dizini yerinde bırakılırsa, yapılandırmanızı yeniden çalıştırabilecek herkese açık bir kapı bırakmış olursunuz.
Nginx tarafında yapılandırma sade:
server {
listen 443 ssl http2;
server_name panel.firmaniz.com;
root /var/www/mailwizz;
index index.php;
ssl_certificate /etc/letsencrypt/live/panel.firmaniz.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/panel.firmaniz.com/privkey.pem;
client_max_body_size 64M;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.x-fpm.sock;
fastcgi_read_timeout 300;
}
location ~ /(apps|install)/ { deny all; }
}
Zorunlu Cron İşleri#
MailWizz'te kampanya gönderimi, dönen mail işleme ve abone bakımı komut satırı görevleriyle yapılır. Cron kurulmazsa arayüz açılır, kampanya "gönderiliyor" durumunda kalır ve hiçbir mail çıkmaz.
# crontab -e -u www-data
CONSOLE="/usr/bin/php -q /var/www/mailwizz/apps/console/console.php"
# Kampanyaları gönder (en kritik iş)
* * * * * $CONSOLE send-campaigns >/dev/null 2>&1
# İşlemsel mailleri gönder
* * * * * $CONSOLE send-transactional-emails >/dev/null 2>&1
# Dönen mailleri (bounce) topla
*/2 * * * * $CONSOLE bounce-handler >/dev/null 2>&1
# Teslimat ve bounce günlüğünü işle
*/4 * * * * $CONSOLE process-delivery-and-bounce-log >/dev/null 2>&1
# Şikâyet (FBL) kutularını işle
*/5 * * * * $CONSOLE process-feedback-loop-servers >/dev/null 2>&1
# Abone bakım işleri
*/10 * * * * $CONSOLE process-subscribers >/dev/null 2>&1
# Günlük bakım ve raporlama
0 0 * * * $CONSOLE daily >/dev/null 2>&1
Cron değişkeni kullanmak yerine tam yolu her satıra yazmayı tercih ederseniz de olur; önemli olan görevlerin web sunucusu kullanıcısıyla çalışmasıdır. Root ile çalıştırırsanız uygulama önbelleğinin sahipliği değişir ve arayüz izin hatası vermeye başlar.
İşlerin gerçekten çalıştığını doğrulamak için bir komutu elle çalıştırıp çıktısını okuyun:
sudo -u www-data /usr/bin/php -q /var/www/mailwizz/apps/console/console.php send-campaigns --verbose=1
Delivery Server: SMTP Bağlantısını Tanımlamak#
MailWizz'te gönderim sunucuları Backend → Servers → Delivery servers altında tanımlanır. Kendi posta sunucunuzu kullanacaksanız tür olarak SMTP seçin ve şu değerleri girin:
| Alan | Değer | Not |
|---|---|---|
| Hostname | mail.firmaniz.com | rDNS'i doğru olmalı |
| Port | 587 | STARTTLS |
| Protocol | TLS | 465 kullanacaksanız SSL |
| Username / Password | SMTP hesabı | Kampanya için ayrı hesap açın |
| From email | [email protected] | SPF ve DKIM ile hizalı |
| Force from | Evet | Müşteri hesapları gönderen adresi değiştiremesin |
| Hourly / daily quota | Sunucunuzun kaldıracağı değer | Kademeli artırın |
| Bounce server | Tanımlı bir POP3/IMAP kutusu | Aşağıdaki bölüme bakın |
Force from ayarı çok müşterili kurulumlarda önemlidir: aksi hâlde bir müşteri, SPF kaydınızda yetkili olmayan bir alan adından gönderim yapmaya çalışır ve teslimat başarısız olur.
Sunucuyu kaydettikten sonra MailWizz doğrulama maili gönderir; gelmezse bağlantıyı bağımsız olarak sınayın:
swaks --to [email protected] --from [email protected] \
--server mail.firmaniz.com:587 --tls \
--auth-user [email protected] --auth-password 'parola'
Port ve TLS uyumsuzluğu en sık görülen hatadır; hızlı bir kontrol için SMTP test aracı da işinizi görür.
Bounce, FBL ve Sending Domain (DKIM)#
Üç ayar, uzun vadede teslimatınızı belirler.
Bounce server. Servers → Bounce servers altında bir POP3 ya da IMAP kutusu tanımlarsınız; MailWizz bu kutuyu düzenli okuyup dönen mailleri sınıflandırır ve sert dönenleri listeden çıkarır. Kutuyu [email protected] gibi ayrı bir adres yapın ve gönderim sunucusunun dönüş adresini (Return-Path) buraya yönlendirin. Bu ayar yoksa liste hijyeniniz çalışmaz; neden bu kadar kritik olduğunu mail listesi temizleme yazısında anlattım.
Feedback loop server. Bazı sağlayıcılar, kullanıcı "önemsiz" dediğinde size rapor gönderir. Bu raporların düştüğü kutuyu Servers → Feedback loop servers altında tanımlarsanız MailWizz şikâyet eden aboneyi otomatik olarak abonelikten çıkarır. Outlook tarafında bu raporları almak için ayrıca kaydolmanız gerekir; ayrıntısı Microsoft SNDS yazısında.
Sending domain (DKIM). Servers → Sending domains altında gönderen alan adınızı ekleyip DKIM anahtar çiftini üretirsiniz. Uygulama size bir TXT kaydı verir; onu DNS'e eklemeniz ve doğrulamanız gerekir.
; MailWizz'in ürettiği seçici (selector) ile
mw._domainkey.firmaniz.com. 3600 IN TXT "v=DKIM1; k=rsa; p=MIIBIjANBgkq..."
Kaydı ekledikten sonra yayılmayı bekleyin ve arayüzden doğrulayın. Anahtar uzunsa TXT değeri 255 karakter sınırına takılabilir; bu durumda kaydı parçalı yazmanız gerekir, ayrıntısı DKIM TXT kaydı 255 karakter sınırı yazısında.
İzleme Alan Adı ve Sık Yapılan Hatalar#
Varsayılan olarak açılma ve tıklama bağlantıları panel alan adınız üzerinden gider. Bunu ayrı bir izleme alan adına taşımak hem daha temiz görünür hem de panel adresinizi mesajlarda ifşa etmez. Servers → Tracking domains altında tik.firmaniz.com gibi bir alt alan adı tanımlayın, DNS'te panel sunucusuna CNAME ya da A kaydıyla bağlayın ve o alt alan için de geçerli bir SSL sertifikası kurun. Sertifikası geçersiz bir izleme alan adı, tıklanma oranınızı sessizce sıfırlar.
En sık yapılan hatalar şunlar. Birincisi, latest klasörünün kendisini web köküne kopyalamak: uygulama /latest/ alt yolundan açılır ve tüm bağlantılar bozulur. İkincisi, install dizinini silmemek. Üçüncüsü, imap eklentisini kurmadan devam etmek: bounce ve FBL işleme sessizce çalışmaz.
Dördüncüsü, cron işlerini root ile kurmak: önbellek sahipliği bozulur ve arayüz beklenmedik izin hataları verir. Beşincisi, gönderim kotasını ilk günden yüksek ayarlamak: yeni bir IP'den dakikada yüzlerce mail göndermek itibarınızı ilk kampanyada yakar. Altıncısı, bounce sunucusunu tanımlamayı sonraya bırakmak: bir kampanya gönderilip dönenler işlenmediğinde, o adresler ikinci kampanyada tekrar denenir ve dönüş oranınız birikerek büyür.
Sıkça Sorulan Sorular#
MailWizz ücretsiz mi#
Hayır. MailWizz ticari bir yazılımdır ve tek seferlik bir lisans ücretiyle satın alınır; lisans türüne göre kendi kullanımınız ya da müşterilerinize hizmet vermeniz kapsamı değişir. Yazılım ücretinin yanında sunucu, gönderim altyapısı ve bakım maliyetlerini de hesaba katın. Tamamen ücretsiz bir alternatif arıyorsanız Listmonk ya da Mautic açık kaynak seçeneklerdir.
MailWizz kurdum ama kampanyalar gönderilmiyor#
Neredeyse her zaman cron kaynaklıdır. Önce send-campaigns görevinin gerçekten çalışıp çalışmadığını, komutu elle çalıştırarak doğrulayın; çıktı size hatayı doğrudan söyleyecektir. İkinci sırada gönderim sunucusu ayarları gelir: hostname, port ve TLS uyumsuzluğu kampanyayı kuyrukta bırakır. Üçüncü olarak gönderim kotanızın dolup dolmadığına bakın.
Bounce sunucusu tanımlamak zorunlu mu#
Teknik olarak zorunlu değil ama tanımlamazsanız sistem dönen adresleri hiç öğrenemez. Sonuç, her kampanyada aynı ölü adreslere göndermeye devam etmek ve dönüş oranının birikerek yükselmesidir. Bu da doğrudan gönderici itibarınızı düşürür. Kurulumdan hemen sonra bir bounce kutusu açıp tanımlamanızı öneririm.
DKIM kaydını nasıl doğrularım#
Kaydı DNS'e ekledikten sonra komut satırından sorgulayın: dig mw._domainkey.firmaniz.com TXT +short komutu, girdiğiniz genel anahtarı döndürmelidir. Boş dönerse kayıt henüz yayılmamış ya da yanlış isimle eklenmiş demektir. Değer kırpılmış görünüyorsa 255 karakter sınırına takılmış olabilirsiniz; kaydı parçalı biçimde yazmanız gerekir.
MailWizz ile Mautic arasındaki fark ne#
MailWizz çok müşterili bir gönderim platformu olarak tasarlanmıştır: hesaplar, kotalar ve çoklu gönderim sunucusu yönetimi güçlü yanıdır. Mautic ise davranışa dayalı otomasyon, açılış sayfası ve form yönetiminde daha derindir. Müşterilerinize gönderim hizmeti veriyorsanız MailWizz, tek markanın karmaşık müşteri yolculuklarını kurguluyorsanız Mautic daha uygun düşer.
Kendi SMTP sunucum yoksa ne yapmalıyım#
MailWizz gönderim sunucusu olarak herhangi bir SMTP hizmetini kabul eder; kendi sunucunuz olmak zorunda değildir. Ancak kendi IP'nizden gönderdiğinizde itibarı siz yönetirsiniz, paylaşımlı bir servis kullandığınızda ise başkalarının davranışından etkilenirsiniz. Düzenli ve hacimli gönderim yapacaksanız kendi gönderim sunucunuza geçmek uzun vadede daha kontrollü olur.
Kapanış#
MailWizz'i çalışır hale getirmek kurulum sihirbazını tamamlamaktan ibaret değil; asıl iş sihirbazdan sonra başlıyor. Aklınızda kalması gereken dört alışkanlık şu: latest klasörünün içeriğini web köküne kopyalayıp install dizinini kurulumdan sonra kaldırın, cron işlerini web sunucusu kullanıcısıyla kurup elle çalıştırarak doğrulayın, bounce ve FBL sunucularını ilk kampanyadan önce tanımlayın, ve gönderim kotasını düşük başlatıp kademeli artırın. İzleme alan adını da ayrı bir alt alan adına taşımayı unutmayın.
Uygulama katmanı hazır olsa bile teslimat kalitesi gönderim sunucunuzda belirlenir. MailWizz'i çalıştırmak için root erişimli VDS veya bulut sunucu paketlerimizi, gönderim tarafı için Postfix, DKIM ve TLS yapılandırması kurulu gelen SMTP sunucu paketlerimizi değerlendirebilirsiniz. Sunucu bakımını bize bırakmak isterseniz sunucu yönetimi, kampanya tarafını komple devretmek isterseniz e-posta pazarlama hizmetimiz devrede.