E-posta & SMTP Sunucu

    Dovecot Yapılandırma Rehberi: IMAP ve POP3 Ayarları

    Dovecot ile IMAP ve POP3 servislerini güvenli biçimde yapılandırmanın adımları.

    10 dk okuma Güncellendi: 25 Ağustos 2026

    Postfix maili sunucuya kabul etmeyi bilir ama kullanıcıların o maili telefonundan ya da Outlook'tan okumasını sağlayamaz; o iş Dovecot'a düşer. Dovecot yapılandırması, posta kutularının diskte nasıl duracağını, kullanıcının hangi şifreyle doğrulanacağını, IMAP ve POP3 servislerinin hangi portlarda ve hangi şifreleme seviyesiyle dinleyeceğini belirler. Yanlış kurulmuş bir Dovecot, "şifrem doğru ama bağlanamıyorum" hatasından sessizce kaybolan maillere kadar uzanan bir sorun listesi üretir.

    Bu rehberde Dovecot'un yapılandırma dosyalarını mantıklı bir sırayla ele alacağız: önce dosya düzeni ve posta kutusu biçimi, sonra kimlik doğrulama, sonra SSL, ardından Postfix ile konuşan SASL soketi, kota ve Sieve filtreleri. Her adımda hem çalışan yapılandırma parçasını hem de doğrulama komutunu vereceğim, çünkü Dovecot'ta bir ayarın etkili olup olmadığını doveconf ile saniyeler içinde görebilirsin.

    Dosya Düzeni ve İlk Doğrulama#

    Debian ve Ubuntu'da Dovecot, tek bir dev dosya yerine /etc/dovecot/conf.d/ altında numaralandırılmış parçalar kullanır. Ana dosya /etc/dovecot/dovecot.conf bu parçaları sırayla dâhil eder. Numaralar önemlidir: 10-mail.conf 20-imap.conf'tan önce okunur ve aynı ayar iki yerde tanımlıysa sonra okunan kazanır.

    # Etkin yapılandırmanın tamamını (varsayılanlar dâhil) gör
    doveconf -n
    
    # Tek bir ayarın gerçek değerini oku
    doveconf mail_location
    doveconf ssl_cert
    
    # Söz dizimi kontrolü ve yeniden yükleme
    dovecot -n > /dev/null && systemctl reload dovecot
    

    doveconf -n çıktısı, tıpkı Postfix'teki postconf -n gibi, sadece varsayılandan farklı olan satırları gösterir. Bir sorunu araştırırken önce bu çıktıya bak; ham dosyaları okumak neredeyse her zaman zaman kaybıdır. Hangi servislerin hangi portta dinlediğini de doğrulamayı alışkanlık hâline getir:

    ss -lntp | grep dovecot
    # Beklenen çıktı:
    # LISTEN 0 100 0.0.0.0:143  users:(("dovecot",...))   IMAP  (STARTTLS)
    # LISTEN 0 100 0.0.0.0:993  users:(("dovecot",...))   IMAPS (örtük TLS)
    # LISTEN 0 100 0.0.0.0:110  users:(("dovecot",...))   POP3
    # LISTEN 0 100 0.0.0.0:995  users:(("dovecot",...))   POP3S
    

    Posta Kutusu Biçimi: Maildir mi mbox mu#

    Dovecot iki temel depolama biçimini destekler. mbox, bir klasördeki tüm mailleri tek bir dosyada tutar; Maildir ise her maili ayrı dosya olarak saklar. Yeni bir kurulumda tereddütsüz Maildir seç. Sebebi basit: eşzamanlı erişimde kilit çakışması yaşamaz, tek bir bozuk mail tüm klasörü götürmez ve yedekleme araçları yalnızca değişen dosyaları kopyalar.

    # /etc/dovecot/conf.d/10-mail.conf
    mail_location = maildir:/var/mail/vhosts/%d/%n/Maildir
    mail_privileged_group = mail
    
    namespace inbox {
      inbox = yes
      separator = /
      mailbox Drafts { special_use = \Drafts; auto = subscribe }
      mailbox Sent   { special_use = \Sent;   auto = subscribe }
      mailbox Junk   { special_use = \Junk;   auto = subscribe }
      mailbox Trash  { special_use = \Trash;  auto = subscribe }
    }
    

    Buradaki %d alan adını, %n ise kullanıcı adının @ öncesi kısmını temsil eder. Yani [email protected] kutusu /var/mail/vhosts/firmaniz.com/ali/Maildir altında oluşur. special_use etiketleri, istemcilerin hangi klasörün "Gönderilenler", hangisinin "Çöp Kutusu" olduğunu tahmin etmek yerine bilmesini sağlar; bu etiket yoksa Outlook kendi başına ikinci bir "Sent Items" klasörü açar ve kullanıcı iki yerde gönderilmiş mail arar.

    ÖzellikMaildirmbox
    DepolamaMail başına bir dosyaKlasör başına tek dosya
    Eşzamanlı erişimKilit gerektirmezDosya kilidi gerekir
    YedeklemeSadece yeni dosyalarTüm dosya yeniden kopyalanır
    Tek mail silmeDosyayı silDosyayı yeniden yaz
    Büyük kutuda performansİyiBelirgin şekilde düşer

    IMAP ile POP3 arasındaki davranış farkını ve hangisini kullanman gerektiğini merak ediyorsan IMAP ve POP3 farkı yazısı bu kararı netleştirir.

    Kimlik Doğrulama: Kullanıcılar Nerede Duruyor#

    Dovecot'ta kimlik doğrulama iki ayrı adımdan oluşur ve bu ayrımı anlamak sorun gidermenin yarısıdır. passdb şifreyi doğrular; userdb ise kullanıcının UID, GID ve ana dizin bilgisini döndürür. Küçük bir kurulumda ikisi de düz bir dosyadan okunabilir.

    # /etc/dovecot/conf.d/10-auth.conf
    disable_plaintext_auth = yes
    auth_mechanisms = plain login
    
    passdb {
      driver = passwd-file
      args = scheme=SHA512-CRYPT username_format=%u /etc/dovecot/users
    }
    
    userdb {
      driver = static
      args = uid=vmail gid=vmail home=/var/mail/vhosts/%d/%n
    }
    

    disable_plaintext_auth = yes satırı, TLS kurulmadan düz şifre gönderilmesini reddeder; localhost'tan gelen bağlantılar bundan muaftır, bu yüzden Postfix'in SASL soketi etkilenmez. Kullanıcı dosyasındaki şifreler asla düz metin olmamalıdır:

    # Yeni bir kullanıcı için şifre hash'i üret
    doveadm pw -s SHA512-CRYPT
    # Enter new password: ...
    # {SHA512-CRYPT}$6$rounds=5000$...
    
    # /etc/dovecot/users satır biçimi:
    # [email protected]:{SHA512-CRYPT}$6$rounds=5000$...
    

    Dosya izinlerini de sıkı tut: chown root:dovecot /etc/dovecot/users && chmod 640 /etc/dovecot/users. Kimlik doğrulamada bir sorun yaşarsan tahmin yürütme, doğrudan test et:

    # Kullanıcı adı ve şifre doğru mu, hangi userdb değerleri dönüyor
    doveadm auth test [email protected]
    doveadm user [email protected]
    

    Bu iki komut, "şifre yanlış" ile "kullanıcı bulunamadı" arasındaki farkı net biçimde gösterir. Kullanıcı sayısı arttıkça passwd-file yerine MySQL ya da LDAP sürücüsüne geçmek mantıklıdır; mantık aynı kalır, yalnızca driver ve args satırları değişir.

    SSL Sertifikası ve Şifreleme Seviyesi#

    Dovecot'un sunduğu sertifika, kullanıcıların istemcisinde görünen sertifikadır ve alan adı uyuşmazlığı ilk açılışta korkutucu bir uyarı üretir. Let's Encrypt sertifikasını doğrudan kullanabilirsin.

    # /etc/dovecot/conf.d/10-ssl.conf
    ssl = required
    ssl_cert = </etc/letsencrypt/live/mail.firmaniz.com/fullchain.pem
    ssl_key  = </etc/letsencrypt/live/mail.firmaniz.com/privkey.pem
    ssl_min_protocol = TLSv1.2
    ssl_prefer_server_ciphers = yes
    

    Baştaki < işareti bir yazım hatası değildir; Dovecot'a "bu değeri dosyadan oku" demenin yoludur. ssl = required ayarı, TLS olmadan hiçbir oturuma izin vermez. Sertifikanın hangi isimler için geçerli olduğunu ve gerçekten sunulduğunu dışarıdan kontrol et:

    # IMAPS (993) üzerinde sunulan sertifikayı incele
    openssl s_client -connect mail.firmaniz.com:993 -servername mail.firmaniz.com </dev/null 2>/dev/null \
      | openssl x509 -noout -subject -dates
    
    # STARTTLS ile 143 portunu test et
    openssl s_client -connect mail.firmaniz.com:143 -starttls imap </dev/null
    

    Sertifika yenilendiğinde Dovecot'un dosyayı yeniden okuması gerekir. certbot yenileme kancasına systemctl reload dovecot eklemezsen, 90 gün sonra kullanıcıların hepsi aynı anda sertifika uyarısı almaya başlar. Aynı kanca içine Postfix reload'ını da koy; Postfix main.cf yapılandırması yazısında bu ayrıntıyı ayrıca vurgulamıştım.

    Postfix ile Konuşan SASL Soketi#

    Kullanıcının IMAP şifresiyle SMTP üzerinden de mail gönderebilmesi için Postfix'in Dovecot'a "bu kullanıcı gerçekten bu mu" diye sorabilmesi gerekir. Bu köprü bir Unix soketidir ve iki tarafın da aynı yolu göstermesi şarttır.

    # /etc/dovecot/conf.d/10-master.conf
    service auth {
      unix_listener /var/spool/postfix/private/auth {
        mode = 0660
        user = postfix
        group = postfix
      }
    }
    
    service lmtp {
      unix_listener /var/spool/postfix/private/dovecot-lmtp {
        mode = 0600
        user = postfix
        group = postfix
      }
    }
    

    Soketin Postfix'in chroot dizini olan /var/spool/postfix/ içinde oluşturulduğuna dikkat et; Postfix bu dizinin dışını göremez. Postfix tarafında karşılığı smtpd_sasl_path = private/auth satırıdır — yol göreceli yazılır çünkü Postfix zaten kendi kök dizini içindedir.

    LMTP soketi ise teslimat içindir. Postfix'e maili yerel dosyaya kendisi yazmak yerine Dovecot'a devretmesini söylersen, kota kontrolü, Sieve filtreleri ve indeks güncellemesi tek elden yapılır:

    # /etc/postfix/main.cf tarafında
    mailbox_transport = lmtp:unix:private/dovecot-lmtp
    virtual_transport = lmtp:unix:private/dovecot-lmtp
    

    Bu satırlar olmadan Postfix maili doğrudan Maildir'e yazar, Dovecot da bir sonraki taramada fark eder; çalışır ama kota aşımını fark etmez ve Sieve kuralları hiç işlemez.

    Kota ve Sieve Filtreleri#

    Disk dolduğunda hangi kullanıcının ne kadar yer kapladığını bilmek istersin. Dovecot'un kota eklentisi hem sınırı uygular hem de kullanıcı doluluk oranına yaklaştığında uyarı maili gönderebilir.

    # /etc/dovecot/conf.d/90-quota.conf
    plugin {
      quota = maildir:User quota
      quota_rule = *:storage=2G
      quota_rule2 = Trash:storage=+200M
      quota_status_success = DUNNO
      quota_status_nouser = DUNNO
      quota_status_overquota = "552 5.2.2 Mailbox is full"
    }
    

    quota_rule2 satırı Çöp Kutusu'na ana kotanın üstüne 200 MB pay verir; böylece kullanıcı yer açmak için mail silmeye çalıştığında "silemiyorum çünkü kota dolu" kısır döngüsüne girmez. Doluluk durumunu her zaman komut satırından kontrol edebilirsin:

    doveadm quota get -u [email protected]
    # Quota name  Type    Value   Limit   %
    # User quota  STORAGE 1583104 2097152 75
    

    Sieve ise sunucu tarafında çalışan filtre dilidir. İstemciye bağlı olmadığı için kurallar telefonda da, web mailde de aynı biçimde işler.

    # /var/mail/vhosts/firmaniz.com/ali/.dovecot.sieve
    require ["fileinto", "mailbox"];
    
    # Spam olarak işaretlenenleri Junk klasörüne taşı
    if header :contains "X-Spam-Flag" "YES" {
      fileinto "Junk";
      stop;
    }
    
    # Fatura maillerini ayrı klasöre topla
    if header :contains "subject" "Fatura" {
      fileinto :create "Muhasebe";
    }
    

    Spam başlığını üreten katman Dovecot değil, önündeki içerik filtresidir; Rspamd kurulumu yazısında bu başlıkların nasıl eklendiğini anlattım. Kullanıcıların kendi filtrelerini web arayüzünden yönetmesini istersen managesieve servisini (port 4190) açman gerekir.

    Sık Yapılan Hatalar ve Sorun Giderme#

    Dovecot sorunlarının büyük çoğunluğu üç kaynaktan çıkar: dosya izinleri, yol uyuşmazlığı ve sertifika. Aşağıdaki liste, log'da göreceğin satırla gerçek sebebi eşleştiriyor.

    1. Permission denied hatası Maildir üzerinde. mail_location içindeki dizinin sahibi, userdb içinde tanımladığın uid/gid ile aynı olmalıdır. chown -R vmail:vmail /var/mail/vhosts komutu çoğu kurulumda sorunu bitirir.
    2. Auth process died ya da soket bulunamadı. Postfix'in smtpd_sasl_path değeri ile Dovecot'un unix_listener yolu birbirini tutmuyordur. Soketin gerçekten var olduğunu ls -l /var/spool/postfix/private/auth ile doğrula.
    3. Kullanıcı bağlanıyor ama kutu boş görünüyor. Maildir yolunda %d/%n kullandın ama kullanıcı adını username_format=%u yerine %n ile eşleştirdin; alan adı düşünce Dovecot başka bir dizine bakar. doveadm user çıktısındaki home değerini gerçek dizinle karşılaştır.
    4. İstemci sertifika uyarısı veriyor. Kullanıcıya mail.firmaniz.com yerine firmaniz.com yazdırıyorsundur ya da sertifika yenilendikten sonra reload yapılmamıştır.
    5. POP3 açık olduğu hâlde mailler kayboluyor. POP3 varsayılan olarak indirdiğini sunucudan siler. Kullanıcı hem telefondan hem bilgisayardan bağlanıyorsa POP3 yerine IMAP kullanmalı.

    Log seviyesini geçici olarak yükseltmek, tahmin yürütmekten çok daha hızlıdır:

    # /etc/dovecot/conf.d/10-logging.conf — sorun giderirken aç, sonra kapat
    auth_verbose = yes
    auth_debug = yes
    mail_debug = yes
    
    journalctl -u dovecot -f
    # ya da
    tail -f /var/log/mail.log | grep dovecot
    

    Bu ayrıntı seviyesi disk yer, sorun çözülünce geri kapat. Tüm bu yığını kendin kurmak yerine hazır teslim almayı tercih ediyorsan SMTP sunucu paketlerimiz Postfix, Dovecot ve içerik filtresi kurulu gelir; kendi kurulumunu yapmak istersen VDS sunucularında tam root erişimin olur.

    Sıkça Sorulan Sorular#

    Dovecot'ta IMAP mı POP3 mü kullanmalıyım#

    Birden fazla cihazdan aynı posta kutusuna erişiyorsan IMAP kullan. IMAP mailleri sunucuda tutar ve okundu/silindi durumunu tüm cihazlar arasında eşitler. POP3 ise varsayılan davranışta maili indirip sunucudan siler, yani telefonundan indirdiğin bir maili bilgisayarında bulamazsın. POP3'ü yalnızca tek bir makineden bağlanan ve sunucuda yer tutmak istemeyen özel senaryolarda tercih et.

    Dovecot yapılandırmasını değiştirdim ama etkili olmuyor, neden#

    En yaygın sebep aynı ayarın conf.d altındaki iki farklı dosyada tanımlı olması ve sonra okunanın kazanmasıdır. doveconf -n çıktısı gerçekte etkin olan değeri gösterir; dosyada yazan değil, burada görünen geçerlidir. İkinci sebep servisin yeniden yüklenmemiş olmasıdır: değişiklikten sonra systemctl reload dovecot çalıştır. Söz dizimi hatası varsa reload sessizce başarısız olabilir, bu yüzden önce dovecot -n ile kontrol et.

    Kullanıcı şifresini komut satırından nasıl değiştiririm#

    doveadm pw -s SHA512-CRYPT komutunu çalıştır, yeni şifreyi iki kez gir ve ekrana basılan hash'i kopyala. Ardından kullanıcı veritabanındaki ilgili satırın şifre alanını bu yeni hash ile değiştir; passwd-file kullanıyorsan /etc/dovecot/users dosyasındaki satırı düzenlemen yeterlidir. Dosya tabanlı passdb'de reload gerekmez, Dovecot dosyayı her doğrulamada okur. Değişikliği doveadm auth test ile doğrulamayı unutma.

    Maildir'i mbox'a ya da tersine dönüştürebilir miyim#

    Evet, doveadm sync komutu iki farklı biçim arasında dönüşüm yapabilir. Kaynağı ve hedefi ayrı yollar olarak verip senkronizasyon çalıştırırsın; işlem sırasında kullanıcıların bağlantısını kesmen daha güvenlidir çünkü açık bir IMAP oturumu dönüşüm sırasında indeks bozulmasına yol açabilir. Dönüşüm öncesi mutlaka tam yedek al; büyük kutularda işlem uzun sürer ve yarıda kesilmesi hâlinde geri dönüş yedekten yapılır.

    Dovecot kota ayarı yaptım ama uygulanmıyor#

    Kotanın uygulanabilmesi için mailin Dovecot üzerinden teslim edilmesi gerekir. Postfix maili doğrudan Maildir'e yazıyorsa Dovecot teslim anında devrede olmadığı için kotayı kontrol edemez. Çözüm, Postfix'te virtual_transport = lmtp:unix:private/dovecot-lmtp satırını tanımlayıp teslimatı Dovecot'un LMTP servisine devretmektir. Ayrıca kota eklentisinin mail_plugins listesinde etkin olduğundan emin ol.

    IMAP bağlantısını dışarıdan nasıl test ederim#

    En hızlı yol openssl s_client -connect mail.firmaniz.com:993 komutuyla bağlanıp elle IMAP komutu göndermektir; bağlantı kurulduktan sonra a1 LOGIN kullanici sifre yazarak yanıtı görebilirsin. Sunucu a1 OK dönerse kimlik doğrulama çalışıyordur. Sertifika sorunlarını ayıklamak için aynı komutun çıktısındaki Verify return code satırına bak; sıfırdan farklı bir değer zincir ya da isim uyuşmazlığına işaret eder.

    Kapanış#

    Dovecot'u kararlı hâle getiren şey, karmaşık ayarlar değil birkaç doğru temel karardır: Maildir biçimini seçmek, kullanıcı dizinlerinin sahipliğini vmail kullanıcısında toplamak, TLS'i zorunlu kılmak ve teslimatı LMTP üzerinden Dovecot'a devretmek. Bir sorun çıktığında da refleksin dosya okumak değil doveconf -n, doveadm auth test ve doveadm user çalıştırmak olsun; bu üç komut sorunların çoğunu ilk dakikada daraltır. Sertifika yenileme kancasına reload eklemeyi de kurulum günü hallet, üç ay sonra hatırlamak zor olur.

    Kendi posta sunucunu baştan sona kurup yönetmek istiyorsan VDS ve sanal sunucu paketlerimizde tam root erişimiyle bu yapılandırmayı uygulayabilirsin. Postfix, Dovecot ve spam filtresi kurulu bir sistemi hazır teslim almayı tercih edersen SMTP sunucu paketlerimize bakabilir, sunucu bakımını üstlenmek istemiyorsan kurumsal e-posta çözümümüzle posta kutularını doğrudan kullanmaya başlayabilirsin.

    DovecotIMAPMail Sunucusu

    Uygulamaya geçmeye hazır mısınız?

    NVMe SSD, ücretsiz SSL ve %99.9 uptime garantisiyle Clou.TR hosting ve sunucu çözümleriyle projenizi hayata geçirin.