Ana içeriğe geç
Kategoriye Dön

Mail Sunucu Kurulumu: Postfix ve Dovecot

Postfix MTA, Dovecot IMAP/POP3, SSL/TLS yapılandırması, sanal domain desteği, spam filtreleme ve Docker Mail Server kurulum rehberi.

Okuma süresi: 20 dk E-posta
mailpostfixdovecotsmtpimapsslspam-filtredocker

İçindekiler

Mail Sunucu Kurulumu: Postfix ve Dovecot

Kendi mail sunucunuzu kurmak, e-posta iletişiminiz üzerinde tam kontrol sağlar. Bu rehberde Postfix MTA (Mail Transfer Agent), Dovecot IMAP/POP3 sunucusu, SSL/TLS yapılandırması, sanal domain desteği ve Docker Mail Server kurulumunu ele alacağız.

Mail sunucusu yönetimi karmaşık ve sürekli bakım gerektiren bir süreçtir. IP itibarı, spam filtreleme ve güvenlik güncellemeleri düzenli olarak takip edilmelidir.

Ön Gereksinimler

DNS Kayıtları

Mail sunucusu kurmadan önce aşağıdaki DNS kayıtlarını oluşturun:

# A kaydı - mail sunucusu IP'si
mail.example.com    A       185.x.x.x

# MX kaydı - mail yönlendirme
example.com         MX  10  mail.example.com

# SPF kaydı
example.com         TXT     "v=spf1 mx ip4:185.x.x.x -all"

# Reverse DNS (PTR) kaydı
185.x.x.x           PTR     mail.example.com

PTR (Reverse DNS) kaydı, REXE müşteri panelinden veya destek talebiyle ayarlanabilir. PTR kaydı olmadan gönderilen e-postalar spam olarak işaretlenebilir.

Hostname Ayarı

hljs bash
# Hostname'i mail sunucusu olarak ayarla
sudo hostnamectl set-hostname mail.example.com

# /etc/hosts dosyasını güncelle
echo "185.x.x.x mail.example.com mail" | sudo tee -a /etc/hosts

# Hostname kontrolü
hostname -f

Postfix Kurulumu (MTA)

Postfix, güvenilir ve performanslı bir Mail Transfer Agent'tır.

Kurulum

hljs bash
# Postfix ve bağımlılıkları kur
sudo apt update
sudo apt install postfix postfix-mysql -y

# Kurulum sırasında "Internet Site" seçin
# System mail name: example.com

Temel Yapılandırma

hljs bash
# /etc/postfix/main.cf
sudo nano /etc/postfix/main.cf
hljs ini
# Temel ayarlar
myhostname = mail.example.com
mydomain = example.com
myorigin = $mydomain
mydestination = $myhostname, localhost.$mydomain, localhost

# Ağ ayarları
inet_interfaces = all
inet_protocols = ipv4
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128

# Mailbox ayarları
home_mailbox = Maildir/
mailbox_size_limit = 0
recipient_delimiter = +

# TLS ayarları
smtpd_tls_cert_file = /etc/letsencrypt/live/mail.example.com/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/mail.example.com/privkey.pem
smtpd_use_tls = yes
smtpd_tls_auth_only = yes
smtpd_tls_security_level = may
smtp_tls_security_level = may

# SASL kimlik doğrulama
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname

# Kısıtlamalar
smtpd_recipient_restrictions =
    permit_sasl_authenticated,
    permit_mynetworks,
    reject_unauth_destination,
    reject_invalid_hostname,
    reject_non_fqdn_hostname,
    reject_non_fqdn_sender,
    reject_non_fqdn_recipient,
    reject_unknown_sender_domain,
    reject_rbl_client zen.spamhaus.org,
    reject_rbl_client bl.spamcop.net

# Boyut limitleri
message_size_limit = 52428800
mailbox_size_limit = 1073741824

Submission Port (587) Yapılandırması

hljs bash
# /etc/postfix/master.cf
sudo nano /etc/postfix/master.cf
hljs ini
# Submission port ekle
submission inet n       -       y       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_tls_auth_only=yes
  -o smtpd_reject_unlisted_recipient=no
  -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING

Dovecot Kurulumu (IMAP/POP3)

Dovecot, IMAP ve POP3 protokollerini destekleyen bir mail delivery agent'tır.

Kurulum

hljs bash
sudo apt install dovecot-core dovecot-imapd dovecot-pop3d dovecot-lmtpd -y

Yapılandırma

hljs bash
# /etc/dovecot/dovecot.conf
protocols = imap pop3 lmtp
listen = *, ::
hljs bash
# /etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:~/Maildir
mail_privileged_group = mail
hljs bash
# /etc/dovecot/conf.d/10-auth.conf
disable_plaintext_auth = yes
auth_mechanisms = plain login
hljs bash
# /etc/dovecot/conf.d/10-ssl.conf
ssl = required
ssl_cert = </etc/letsencrypt/live/mail.example.com/fullchain.pem
ssl_key = </etc/letsencrypt/live/mail.example.com/privkey.pem
ssl_min_protocol = TLSv1.2
hljs bash
# /etc/dovecot/conf.d/10-master.conf
service auth {
  unix_listener /var/spool/postfix/private/auth {
    mode = 0666
    user = postfix
    group = postfix
  }
}

SSL/TLS Sertifikası

hljs bash
# Let's Encrypt sertifikası al
sudo apt install certbot -y
sudo certbot certonly --standalone -d mail.example.com

# Otomatik yenileme
sudo crontab -e
# Ekle: 0 3 * * * certbot renew --post-hook "systemctl restart postfix dovecot"

Docker Mail Server (Alternatif)

Docker Mail Server, tüm bileşenleri tek bir container'da sunar.

hljs bash
# docker-compose.yml
mkdir -p /opt/mailserver && cd /opt/mailserver
hljs yaml
# docker-compose.yml
version: '3.8'
services:
  mailserver:
    image: ghcr.io/docker-mailserver/docker-mailserver:latest
    container_name: mailserver
    hostname: mail.example.com
    ports:
      - "25:25"
      - "465:465"
      - "587:587"
      - "993:993"
    volumes:
      - ./docker-data/dms/mail-data/:/var/mail/
      - ./docker-data/dms/mail-state/:/var/mail-state/
      - ./docker-data/dms/mail-logs/:/var/log/mail/
      - ./docker-data/dms/config/:/tmp/docker-mailserver/
      - /etc/letsencrypt:/etc/letsencrypt:ro
    environment:
      - ENABLE_SPAMASSASSIN=1
      - ENABLE_CLAMAV=1
      - ENABLE_FAIL2BAN=1
      - SSL_TYPE=letsencrypt
      - PERMIT_DOCKER=none
    restart: always
hljs bash
# Kullanıcı ekle
docker exec -it mailserver setup email add user@example.com

# DKIM anahtarı oluştur
docker exec -it mailserver setup config dkim

# Başlat
docker compose up -d

Spam Filtreleme

SpamAssassin

hljs bash
sudo apt install spamassassin spamc -y
sudo systemctl enable spamassassin
sudo systemctl start spamassassin

Postfix ile SpamAssassin Entegrasyonu

hljs bash
# /etc/postfix/master.cf'a ekle
smtp      inet  n       -       y       -       -       smtpd
  -o content_filter=spamassassin

spamassassin unix -     n       n       -       -       pipe
  user=spamd argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}

Test ve Doğrulama

hljs bash
# Postfix durumu
sudo systemctl status postfix

# Dovecot durumu
sudo systemctl status dovecot

# Port kontrolü
sudo ss -tlnp | grep -E '25|587|993|995'

# Mail gönderme testi
echo "Test mail" | mail -s "Test" user@example.com

# Log kontrolü
sudo tail -f /var/log/mail.log

# SMTP bağlantı testi
openssl s_client -connect mail.example.com:587 -starttls smtp

# IMAP bağlantı testi
openssl s_client -connect mail.example.com:993

Mail sunucunuzu kurduktan sonra mail-tester.com üzerinden spam puanınızı kontrol edin. 10/10 puan almak için SPF, DKIM ve DMARC kayıtlarının doğru yapılandırıldığından emin olun.

Sonuç

Kendi mail sunucunuzu kurmak tam kontrol sağlar ancak düzenli bakım gerektirir. Postfix + Dovecot kombinasyonu güvenilir bir çözüm sunarken, Docker Mail Server daha kolay yönetim imkanı sağlar. SPF, DKIM ve DMARC yapılandırmalarını mutlaka tamamlayın.