cPanel kullanan bir mail sunucusunu yönetiyorsanız, büyük ihtimalle Exim ile iç içe geçmiş bir dünyada yaşıyorsunuz demektir. cPanel’in varsayılan MTA’sı olan Exim, doğru yapılandırıldığında son derece güçlü ve esnek bir mail altyapısı sunar. Ancak bu ikiliyi verimli kullanmak, sadece cPanel arayüzünü tıklamaktan çok daha fazlasını gerektirir. Bu yazıda Exim ile cPanel entegrasyonunu derinlemesine inceleyeceğiz, sık karşılaşılan sorunlara pratik çözümler bulacağız ve performansı artırmak için gerçek dünya senaryoları üzerinden ilerleyeceğiz.
cPanel’de Exim’in Çalışma Mantığı
cPanel, Exim’i kendi yapılandırma şablonları üzerinden yönetir. Doğrudan /etc/exim.conf dosyasını düzenlediğinizde, bir sonraki cPanel güncellemesinde veya WHM üzerinden yapılan değişikliklerde bu ayarların üzerine yazılabilir. Bu yüzden cPanel ortamında Exim’i yönetirken şu yapıyı aklınızda tutmanız gerekir:
- /etc/exim.conf: Asıl çalışan konfigürasyon dosyası (cPanel tarafından üretilir)
- /etc/exim.conf.local: Kullanıcı tanımlı özel ayarlar için kullanılan dosya
- /etc/exim.conf.localopts: WHM arayüzündeki seçeneklerin saklandığı dosya
- /var/spool/exim/: Mail kuyruğunun tutulduğu dizin
- /var/log/exim_mainlog: Ana log dosyası
- /var/log/exim_rejectlog: Reddedilen maillerin logu
- /var/log/exim_paniclog: Kritik hataların logu
cPanel, Exim konfigürasyonunu template sistemi üzerinden oluşturur. Özel değişikliklerinizi kalıcı hale getirmek için /etc/exim.conf.local dosyasını kullanmak en sağlıklı yaklaşımdır.
WHM Üzerinden Temel Exim Yapılandırması
WHM arayüzünde Exim Configuration Manager bölümü, mail sunucusunun temel davranışını kontrol eder. Buraya WHM > Service Configuration > Exim Configuration Manager yolundan ulaşabilirsiniz.
Kritik ayarların nerede durduğunu görmek için şu komutu çalıştırın:
cat /etc/exim.conf.localopts | grep -E "^[A-Z]" | head -30
Bu komut, WHM tarafından yönetilen seçeneklerin listesini görmenizi sağlar. Hangi ayarın aktif olduğunu anlamak için bu dosya oldukça işe yarar.
Exim Servisini Yönetmek
cPanel sunucularda Exim’i yönetmek için hem service komutu hem de cPanel’in kendi araçları kullanılabilir:
# Exim servisini yeniden başlatma
service exim restart
# Exim durumunu kontrol etme
service exim status
# cPanel üzerinden Exim konfigürasyonunu yeniden oluşturma
/scripts/buildeximconf
# Konfigürasyonu oluşturduktan sonra Exim'i yeniden yükleme
/scripts/restartsrv_exim
/scripts/buildeximconf komutu özellikle önemlidir. WHM’de bir değişiklik yaptığınızda veya /etc/exim.conf.local dosyasını düzenlediğinizde, bu scripti çalıştırarak değişikliklerin /etc/exim.conf dosyasına yansımasını sağlarsınız.
Mail Kuyruğu Yönetimi
Bir cPanel sunucusunda en sık karşılaşılan sorunlardan biri mail kuyruğunun şişmesidir. Özellikle paylaşımlı hosting ortamlarında bir hesabın spam göndermesi tüm sunucunun mail performansını etkileyebilir.
# Kuyruktaki mail sayısını görmek
exim -bpc
# Kuyruktaki mailleri listelemek
exim -bp | head -50
# Kuyruktaki mailleri gönderen adrese göre saymak
exim -bp | grep "<" | awk '{print $4}' | sort | uniq -c | sort -rn | head -20
# Belirli bir maili silmek (mesaj ID ile)
exim -Mrm MESSAGE_ID
# Tüm kuyruğu temizlemek (DİKKATLİ KULLANIN)
exim -bp | awk '/^ *[0-9]+[mhd]/{print $3}' | xargs exim -Mrm
Gerçek dünya senaryosu: Sabah sunucuya baktığınızda kuyrukta 50.000 mail olduğunu görüyorsunuz. Paniğe kapılmadan önce hangi hesabın bu mailleri gönderdiğini tespit etmek gerekir:
# Kuyruktaki maillerin detaylı analizi
exim -bp | grep "<" | awk '{print $4}' | cut -d@ -f2 | sort | uniq -c | sort -rn | head -10
# Belirli bir domain'den gelen tüm mailleri silmek
exim -bp | grep "spam-domain.com" | awk '{print $3}' | xargs exim -Mrm
# Freeze durumundaki mailleri silmek
exim -bp | grep frozen | awk '{print $3}' | xargs exim -Mrm
cPanel Hesap Bazlı Mail Limitleri
cPanel, hesap başına mail gönderim limiti belirlemenize olanak tanır. Bu özellik özellikle paylaşımlı hosting ortamlarında kötüye kullanımı önlemek için kritiktir.
WHM’de Home > Server Configuration > Tweak Settings > Mail bölümünden bu ayarlara ulaşabilirsiniz. Ancak komut satırından da yapılandırabilirsiniz:
# Saatlik mail limitini görmek
cat /etc/cpanel/email_send_limits/username
# Tüm hesaplar için mail limiti ayarlamak
# WHM API üzerinden
whmapi1 set_tweaksetting key=maxemailsperhour value=200
Bir hesabın saatlik limitini aştığında Exim log dosyasında şuna benzer satırlar görürsünüz:
# Log analizi ile limit aşan hesapları bulmak
grep "has exceeded the max emails per hour" /var/log/exim_mainlog | awk '{print $7}' | sort | uniq -c | sort -rn
SPF, DKIM ve DMARC Entegrasyonu
cPanel, SPF ve DKIM yönetimini otomatikleştirir. Ancak bu kayıtların doğru çalışıp çalışmadığını düzenli kontrol etmek gerekir.
# DKIM anahtarlarının durumunu kontrol etmek
/usr/local/cpanel/bin/dkim_keys_install --check
# Belirli bir domain için DKIM anahtarı oluşturmak
/usr/local/cpanel/bin/dkim_keys_install --domain=ornekdomain.com
# SPF kaydını test etmek
dig TXT ornekdomain.com | grep spf
# DKIM imzasını test etmek (mail gönderdikten sonra header kontrolü)
exim -Mvh MESSAGE_ID | grep -i dkim
Önemli bir nokta: cPanel bazı durumlarda DKIM anahtarlarını otomatik yenilemiyor olabilir. Özellikle eski hesaplarda anahtarlar bozulmuş veya eksik olabilir. Bu durumu tespit etmek için:
# Tüm domainlerin DKIM durumunu toplu kontrol
for domain in $(ls /etc/userdomains | awk '{print $1}'); do
if [ ! -f "/etc/exim/dkim/${domain}.private" ]; then
echo "DKIM eksik: $domain"
fi
done
Exim ile Spam Filtreleme Optimizasyonu
cPanel ortamında spam filtreleme genellikle SpamAssassin ile birlikte çalışır. Exim’in ACL (Access Control List) mekanizması bu noktada devreye girer.
/etc/exim.conf.local dosyasına özel ACL kuralları ekleyebilirsiniz. Bu dosya cPanel güncellemelerinden etkilenmez:
# /etc/exim.conf.local dosyasına ekleme örneği
# Belirli IP bloklarını reddetmek için
cat >> /etc/exim.conf.local << 'EOF'
# Kötü niyetli IP bloklarını reddet
deny hosts = /etc/exim.blocked_ips
message = Access denied
# Çok fazla bağlantı yapan IP'leri sınırla
defer ratelimit = 10 / 1m / strict / $sender_host_address
message = Rate limit exceeded, try again later
EOF
Bloklanacak IP’leri yönetmek için:
# Blok listesine IP eklemek
echo "192.168.1.100" >> /etc/exim.blocked_ips
# IP aralığı eklemek
echo "10.0.0.0/8" >> /etc/exim.blocked_ips
# Değişiklikleri uygulamak
/scripts/restartsrv_exim
Mail Log Analizi ve Sorun Giderme
Exim logları, mail sorunlarını çözmek için birincil kaynaktır. cPanel ortamında loglar oldukça kalabalık olabilir, bu yüzden filtreleyerek analiz etmek gerekir:
# Belirli bir mail adresine giden mailleri takip etmek
grep "[email protected]" /var/log/exim_mainlog | tail -20
# Başarısız teslimatları bulmak
grep "** " /var/log/exim_mainlog | tail -30
# Belirli bir mesaj ID'sini takip etmek
exim -Mvl MESSAGE_ID
# Son bir saatteki bounce oranını hesaplamak
grep "$(date -d '1 hour ago' '+%Y-%m-%d %H')" /var/log/exim_mainlog | grep -c "bounce"
# Real-time log takibi
tail -f /var/log/exim_mainlog | grep --line-buffered -v "H=localhost"
Gerçek dünya senaryosu: Bir müşteri maillerinin gitmediğini bildiriyor. Aşağıdaki adımları izleyerek sorunu tespit edebilirsiniz:
# Önce kuyruğu kontrol et
exim -bp | grep "[email protected]"
# Mail ID'yi bul ve detaylarını incele
exim -Mvl MAIL_ID
# Manuel olarak teslim etmeyi dene
exim -v -M MAIL_ID
# DNS kontrolü yap
dig MX hedefdomain.com
TLS/SSL Sertifika Yapılandırması
cPanel ortamında Exim için TLS yapılandırması genellikle otomatik yönetilir. Ancak sertifika sorunları mail teslimatını doğrudan etkiler:
# Mevcut TLS sertifikasını kontrol etmek
openssl s_client -connect localhost:465 -showcerts 2>/dev/null | openssl x509 -noout -dates
# Exim'in kullandığı sertifika dosyasını görmek
grep -i "tls_certificate" /etc/exim.conf
# cPanel ile TLS sertifikasını yenilemek
/scripts/updatenow --upcp
# Exim için AutoSSL sertifikasını manuel olarak güncellemek
/usr/local/cpanel/bin/autossl_check --all
Sertifika yenilendikten sonra Exim’i yeniden başlatmayı unutmayın:
/scripts/restartsrv_exim
Mailman ve Mailing List Entegrasyonu
cPanel sunucularda Mailman, Exim ile entegre çalışır. Mailing list sorunları genellikle bu entegrasyondan kaynaklanır:
# Mailman servisini kontrol etmek
service mailman status
# Mailman listelerini listelemek
/usr/local/cpanel/3rdparty/mailman/bin/list_lists
# Bozuk bir listeyi onarmak
/usr/local/cpanel/3rdparty/mailman/bin/check_db -v LISTE_ADI
# Mailman kuyruk sorunlarını gidermek
/usr/local/cpanel/3rdparty/mailman/bin/qrunner --runner=All --once
Exim Performans Optimizasyonu
Yoğun bir mail sunucusunda Exim performansını artırmak için birkaç kritik parametre vardır. Bu ayarları /etc/exim.conf.local üzerinden yönetebilirsiniz:
# Mevcut Exim konfigürasyon parametrelerini görüntülemek
exim -bP | grep -E "smtp_accept_max|queue_run_max|deliver_queue_load_max"
# Sistem kaynaklarını kontrol etmek
exiwhat
WHM’den yapabileceğiniz optimizasyon ayarları:
- smtp_accept_max: Aynı anda kabul edilecek maksimum SMTP bağlantısı (varsayılan: 20, yoğun sunucular için 50-100 arası önerilir)
- queue_run_max: Aynı anda çalışabilecek maksimum kuyruk işlemcisi sayısı
- deliver_queue_load_max: Sistem yükü bu değerin üzerindeyse kuyruk işlenmez
- smtp_connect_backlog: Beklemedeki bağlantı kuyruğu boyutu
- remote_max_parallel: Bir hedefe yapılan paralel bağlantı sayısı
Bu parametreleri /etc/exim.conf.local dosyasına ekleyebilirsiniz:
cat >> /etc/exim.conf.local << 'EOF'
smtp_accept_max = 50
queue_run_max = 5
deliver_queue_load_max = 8
smtp_accept_queue_per_connection = 10
EOF
/scripts/buildeximconf
/scripts/restartsrv_exim
Güvenlik Sıkılaştırması
cPanel + Exim kombinasyonunu güvenli hale getirmek için dikkat edilmesi gereken birkaç önemli nokta vardır:
# Open relay kontrolü (kesinlikle yapılmalı)
exim -bh TEST_IP_ADDRESS << 'EOF'
EHLO test.com
MAIL FROM: [email protected]
RCPT TO: [email protected]
DATA
Test mail
.
QUIT
EOF
# Kimlik doğrulama gerektiren port 587'yi test etmek
telnet localhost 587
# Şüpheli auth girişimlerini log'dan bulmak
grep "535 Incorrect authentication" /var/log/exim_mainlog | awk '{print $4}' | sort | uniq -c | sort -rn | head -10
# Brute force saldırılarını tespit etmek ve bloklamak
grep "535 Incorrect" /var/log/exim_mainlog | grep "$(date '+%Y-%m-%d')" | awk '{print $4}' | sort | uniq -c | sort -rn | awk '$1 > 10 {print $2}' | while read ip; do
csf -d $ip "Exim brute force"
done
CSF (ConfigServer Security & Firewall) kuruluysa, Exim ile entegrasyonu şu şekilde kontrol edebilirsiniz:
# CSF'nin Exim log izlemeyi aktif ettiğinden emin olmak
grep "EXIM_LOG" /etc/csf/csf.conf
# LFD ile mail güvenliğini aktifleştirmek
grep "LF_SMTPAUTH" /etc/csf/csf.conf
Dovecot ile Exim Entegrasyonu
cPanel ortamında Exim sadece göndermekle kalmaz, Dovecot ile birlikte çalışarak local mail teslimini de yönetir. Bu entegrasyonun sağlıklı çalışması için:
# Dovecot servisini kontrol etmek
service dovecot status
# Local mail teslim testini yapmak
echo "Test mesaji" | exim -v [email protected]
# Dovecot ile Exim arasındaki socket bağlantısını doğrulamak
ls -la /var/run/dovecot/
# LMTP teslimini test etmek
exim -bP | grep lmtp
Yerel mail teslimatında sorun yaşanıyorsa çoğunlukla Dovecot’un auth socket’i veya mailbox izinleri sorunludur:
# Mailbox izinlerini kontrol etmek
ls -la /home/kullanici/mail/
# Exim'in mail teslim ettiği dizini görmek
exim -Mvb MAIL_ID | grep "X-Delivered-To"
Backup ve Felaket Kurtarma
Exim ve cPanel mail yapılandırmasının yedeklenmesi kritiktir:
# Exim konfigürasyonunu yedeklemek
cp /etc/exim.conf /etc/exim.conf.backup.$(date +%Y%m%d)
cp /etc/exim.conf.local /etc/exim.conf.local.backup.$(date +%Y%m%d)
# DKIM anahtarlarını yedeklemek
tar -czf /backup/dkim_keys_$(date +%Y%m%d).tar.gz /etc/exim/dkim/
# Mail kuyruğunu yedeklemek
tar -czf /backup/exim_queue_$(date +%Y%m%d).tar.gz /var/spool/exim/
Konfigürasyonu geri yüklemek gerektiğinde:
# Yedekten geri yükleme
cp /etc/exim.conf.local.backup.TARIH /etc/exim.conf.local
/scripts/buildeximconf
/scripts/restartsrv_exim
İzleme ve Alerting
Exim’i sürekli izlemek için basit ama etkili bir monitoring scripti:
cat > /usr/local/bin/exim_monitor.sh << 'EOF'
#!/bin/bash
QUEUE_SIZE=$(exim -bpc)
THRESHOLD=1000
EMAIL="[email protected]"
if [ "$QUEUE_SIZE" -gt "$THRESHOLD" ]; then
echo "UYARI: Exim kuyruğu $QUEUE_SIZE mail içeriyor!" |
mail -s "Exim Kuyruk Uyarısı - $(hostname)" $EMAIL
fi
# Panic log kontrolü
if [ -s /var/log/exim_paniclog ]; then
PANIC_COUNT=$(wc -l < /var/log/exim_paniclog)
echo "Exim panic log $PANIC_COUNT satır içeriyor. Kontrol edilmeli!" |
mail -s "Exim Panic Log Uyarısı - $(hostname)" $EMAIL
fi
EOF
chmod +x /usr/local/bin/exim_monitor.sh
# Cron'a eklemek
echo "*/15 * * * * root /usr/local/bin/exim_monitor.sh" >> /etc/cron.d/exim_monitor
Sonuç
Exim ve cPanel entegrasyonu, doğru yönetildiğinde son derece güvenilir bir mail altyapısı sunar. Ancak bu ikilinin inceliklerini bilmeden sadece WHM arayüzüne güvenmek, ilerleyen zamanlarda ciddi sorunlara yol açabilir.
Bu yazıda öğrendiklerimizi özetleyecek olursak:
/etc/exim.conf.localdosyasını kullanarak cPanel güncellemelerinden bağımsız özel yapılandırma yapabilirsiniz- Mail kuyruk yönetimi, bir paylaşımlı hosting ortamının sağlığı için kritik önemdedir
- Güvenlik sıkılaştırması için open relay kontrolü ve brute force koruması ihmal edilmemelidir
- DKIM, SPF ve DMARC kayıtlarının düzenli denetimi, mail teslimini doğrudan etkiler
- Exim logları sorun gidermede birincil kaynağınızdır ve doğru filtreyle analiz edilmelidir
En önemli tavsiyem şu: Değişiklik yapmadan önce mutlaka yedek alın ve değişiklikleri test ortamında deneyin. Bir mail sunucusu düştüğünde, kullanıcılardan gelen baskı çok hızlı artıyor. Sakin kafayla doğru adımları atmak için önceden hazırlıklı olmak her şeyi değiştirir.