Linux Mail Sunucu Kurulumu: Postfix ve Dovecot

Kendi mail sunucunuzu kurmak, e-posta üzerinde tam kontrol sağlar. Postfix gönderim (SMTP), Dovecot ise alım (IMAP/POP3) için kullanılır. Uyarı: Mail...

Linux
Linux Mail Sunucu Kurulumu: Postfix ve Dovecot

Kendi mail sunucunuzu kurmak, e-posta üzerinde tam kontrol sağlar. Postfix gönderim (SMTP), Dovecot ise alım (IMAP/POP3) için kullanılır. Uyarı: Mail sunucu kurulumu karmaşıktır. Yanlış yapılandırma spam gönderimine veya güvenlik açıklarına yol açabilir. Production ortamda dikkatli olun.

Ön Gereksinimler

Sabit IP adresi: Dinamik IP'ler kara listelerde yer alabilir. Ters DNS (PTR) kaydı: IP adresiniz için doğru PTR kaydı olmalı. Domain kontrolü: DNS kayıtlarını düzenleyebilmelisiniz. SSL sertifikası: Let's Encrypt ile ücretsiz alabilirsiniz.

DNS Kayıtları

Başlamadan önce aşağıdaki DNS kayıtlarını oluşturun:

A Kaydı

mail.example.com → sunucu_ip_adresi

MX Kaydı

example.com → mail.example.com (öncelik: 10)

PTR Kaydı

Hosting sağlayıcınızdan IP için ters DNS kaydı talep edin:

sunucu_ip → mail.example.com

Postfix Kurulumu

Postfix, yaygın kullanılan açık kaynak MTA (Mail Transfer Agent) yazılımıdır.

Kurulum

sudo apt update sudo apt install postfix

Kurulum sırasında:

  • Internet Site seçin
  • System mail name: example.com

Temel Yapılandırma

/etc/postfix/main.cf dosyasını düzenleyin:

# Temel ayarlar myhostname = mail.example.com mydomain = example.com myorigin = $mydomain mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

# Ağ ayarları inet_interfaces = all inet_protocols = ipv4

# Güvenlik smtpd_banner = $myhostname ESMTP biff = no append_dot_mydomain = no

# 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_tls_security_level = may smtp_tls_security_level = may smtpd_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1 smtp_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1

# Boyut limitleri message_size_limit = 52428800 mailbox_size_limit = 0

# SASL Authentication 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_mynetworks, permit_sasl_authenticated, reject_unauth_destination

Submission Port (587)

/etc/postfix/master.cf dosyasına ekleyin:

submission inet n - y - - smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject

Servisi yeniden başlatın:

sudo systemctl restart postfix

Dovecot Kurulumu

Dovecot, IMAP ve POP3 sunucusudur.

Kurulum

sudo apt install dovecot-core dovecot-imapd dovecot-lmtpd

Temel Yapılandırma

/etc/dovecot/dovecot.conf:

protocols = imap lmtp

/etc/dovecot/conf.d/10-mail.conf:

mail_location = maildir:~/Maildir

/etc/dovecot/conf.d/10-auth.conf:

disable_plaintext_auth = yes auth_mechanisms = plain login

/etc/dovecot/conf.d/10-ssl.conf:

ssl = required ssl_cert =

/etc/dovecot/conf.d/10-master.conf - Postfix SASL için:

service auth { unix_listener /var/spool/postfix/private/auth { mode = 0666 user = postfix group = postfix } }

Servisi başlatın:

sudo systemctl enable --now dovecot

Kullanıcı Oluşturma

Sistem kullanıcısı ekleyin:

sudo adduser mail_user

Maildir oluşturun:

sudo mkdir -p /home/mail_user/Maildir sudo chown -R mail_user:mail_user /home/mail_user/Maildir

SSL Sertifikası

Let's Encrypt ile ücretsiz sertifika:

sudo apt install certbot sudo certbot certonly --standalone -d mail.example.com

Otomatik yenileme için cron:

0 0 1   certbot renew --post-hook "systemctl reload postfix dovecot"

SPF Yapılandırması

SPF (Sender Policy Framework), hangi sunucuların domain adınızla mail gönderebildiğini belirtir.

DNS TXT Kaydı

example.com TXT "v=spf1 mx ip4:sunucu_ip -all"

Açıklama:

  • v=spf1: SPF versiyonu
  • mx: MX kayıtlarındaki sunucular
  • ip4: Belirtilen IP adresi
  • -all: Diğerlerini reddet

SPF Doğrulama

Gelen maillerde SPF kontrolü için:

sudo apt install postfix-policyd-spf-python

/etc/postfix/main.cf'e ekleyin:

policy-spf_time_limit = 3600s smtpd_recipient_restrictions = ... check_policy_service unix:private/policy-spf

/etc/postfix/master.cf'e ekleyin:

policy-spf unix - n n - - spawn user=nobody argv=/usr/bin/policyd-spf

DKIM Yapılandırması

DKIM (DomainKeys Identified Mail), gönderilen mailleri dijital olarak imzalar.

OpenDKIM Kurulumu

sudo apt install opendkim opendkim-tools

Anahtar Oluşturma

sudo mkdir -p /etc/opendkim/keys/example.com cd /etc/opendkim/keys/example.com sudo opendkim-genkey -s mail -d example.com sudo chown opendkim:opendkim mail.private

Yapılandırma

/etc/opendkim.conf:

Syslog yes UMask 002 Domain example.com Selector mail KeyFile /etc/opendkim/keys/example.com/mail.private Socket inet:8891@localhost Canonicalization relaxed/simple Mode sv SubDomains no

/etc/default/opendkim:

SOCKET="inet:8891@localhost"

Postfix Entegrasyonu

/etc/postfix/main.cf'e ekleyin:

milter_default_action = accept milter_protocol = 2 smtpd_milters = inet:localhost:8891 non_smtpd_milters = inet:localhost:8891

DNS Kaydı

Oluşturulan public key'i DNS'e ekleyin:

cat /etc/opendkim/keys/example.com/mail.txt

DNS'e TXT kaydı olarak ekleyin:

mail._domainkey.example.com TXT "v=DKIM1; k=rsa; p=MIIBIjAN..."

Servisleri yeniden başlatın:

sudo systemctl restart opendkim postfix

DMARC Yapılandırması

DMARC (Domain-based Message Authentication, Reporting and Conformance), SPF ve DKIM sonuçlarına göre politika belirler.

DNS TXT Kaydı

_dmarc.example.com TXT "v=DMARC1; p=quarantine; rua=mailto:[email protected]; fo=1"

Açıklama:

  • p=none: Sadece izle (başlangıç için)
  • p=quarantine: Spam klasörüne at
  • p=reject: Reddet
  • rua: Raporların gönderileceği adres
  • fo=1: Hata durumunda rapor gönder

Kademeli uygulama önerilir: Önce none, sonra quarantine, en son reject.

OpenDMARC Kurulumu

sudo apt install opendmarc

/etc/opendmarc.conf:

AuthservID mail.example.com TrustedAuthservIDs mail.example.com RejectFailures false Socket inet:8893@localhost

/etc/postfix/main.cf'e ekleyin:

smtpd_milters = inet:localhost:8891, inet:localhost:8893

Test Etme

Mail Gönderme Testi

echo "Test mail" | mail -s "Test" [email protected]

Mail Alma Testi

Thunderbird veya başka mail istemcisi ile bağlanın:

  • IMAP: mail.example.com:993 (SSL/TLS)
  • SMTP: mail.example.com:587 (STARTTLS)

SPF/DKIM/DMARC Kontrolü

Gmail'e mail gönderin, alıcıda "Show original" ile header'ları kontrol edin:

Authentication-Results: spf=pass dkim=pass dmarc=pass

Online test araçları:

  • mail-tester.com
  • mxtoolbox.com

Spam Filtresi (Opsiyonel)

SpamAssassin

sudo apt install spamassassin spamc

Postfix entegrasyonu için /etc/postfix/master.cf:

smtp inet n - y - - smtpd -o content_filter=spamassassin

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

Amavis

Daha kapsamlı çözüm için Amavis, ClamAV ve SpamAssassin kombinasyonu kullanılabilir.

Sorun Giderme

Logları inceleyin:

sudo tail -f /var/log/mail.log

Yaygın sorunlar:

Mail gönderilmiyor: Firewall (25, 587, 465 portları açık mı) Mail spam'a düşüyor: SPF, DKIM, DMARC kontrol edin IMAP bağlantı hatası: SSL sertifikası ve Dovecot ayarları

Güvenlik İpuçları

Güncellemeleri takip edin Fail2Ban ile brute force koruması ekleyin Rate limiting uygulayın Düzenli log analizi yapın

Celil Uyanikoglu

Yazan Celil Uyanikoglu

25 yıldır bilgi işlem piyasasında farklı dallarda uzmanlaşan bir Bilgisayar Mühendisi

Yorum

Henüz yorum yok.

Sohbete katıl. Yorumlar yayınlanmadan önce moderasyondan geçer.

Yorum yap

E-posta adresin yayınlanmaz. Yorumlar moderasyondan sonra yayınlanır.

Sırada

İlgili notlar