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
Henüz yorum yok.
Sohbete katıl. Yorumlar yayınlanmadan önce moderasyondan geçer.