En Kolay Mail Sunucusu Nasıl Kurulur?

Bazı VPS sağlayıcılarının spam e-posta gönderimine karşı olarak mail gönderim portlarını ön tanımlı olarak kapattıklarını hatırlatayım, yani abi ben kurdum ama e-posta gönderip alamıyorum diyorsanız sağlayıcınız ile ilgilidir ve destek ile iletişime geçmeniz gerekmektedir.

Engelleme olmayan bir sağlayıcı arıyorsanız, bakacağınız adres https://www.ilkbyte.com/ olmalı.

Bu makalede, sistemde yer alacak olan mail komutuyla programatik olarak posta gönderebileceğimiz basit bir Postfix sunucusu kuracağız. Gerçek ve tam işlevsel bir posta sunucusuna sahip olmak için kullanıcıların gelen kutularını okuyup uzaktan posta gönderebilecekleri bir posta istemcisine giriş yapabilmeleri gerekiyor.

Bu amaca ulaşmak için bizim Dovecot’a ihtiyacımız var. Dovecot, sunucu tarafından alınan postaları depolayabilir, kullanıcı hesaplarını doğrulayabilir ve postayla etkileşim kurabilir.

Eğer bir gelen kutusu kuruyorsak, spam koruma yazılımı olan spamassassin gibi bir yazılımı da kuracağız böylece spam e-postalarda gelmeyecek.

apt install mailutils postfix dovecot-imapd dovecot-sieve spamassassin spamc
ShellScript

Kurulum tamamlandıktan sonra e-posta için kullanılacak alt alan adı için SSL ayarlanacak isterseniz Acme.sh ile Ücretsiz SSL Sertifikası Nasıl Alınır ile isterseniz de Let’s Encrypt ile Web Server Yapılandırma ile bu işi kolayca yapabilir.

Ayrıca, alan adınızı nereden aldıysanız artık onun sitesinden ve/veya DNS sunucusunda iki küçük DNS kaydına ihtiyacımız var;

  • Bir MX kaydı, “@” için ekleme yapın, örneğin mertcangokgoz.com olarak tanımlayın.
  • Bir CNAME kaydı, Ana bilgisayar alanı: mail.example.org.
ssl = required
ssl_cert = </etc/letsencrypt/live/mail.example.org/fullchain.pem
ssl_key = </etc/letsencrypt/live/mail.example.org/privkey.pem
ssl_min_protocol = TLSv1.2
ssl_cipher_list = EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA256:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EDH+aRSA+AESGCM:EDH+aRSA+SHA256:EDH+aRSA:EECDH:!aNULL:!eNULL:!MEDIUM:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!RC4:!SEED
ssl_prefer_server_ciphers = yes
ssl_dh = </usr/share/dovecot/dh.pem
auth_mechanisms = plain login
auth_username_format = %n

protocols = $protocols imap

userdb {
    driver = passwd
}
passdb {
    driver = pam
}

mail_location = maildir:~/Mail:INBOX=~/Mail/Inbox:LAYOUT=fs
namespace inbox {
    inbox = yes
    mailbox Drafts {
    special_use = \Drafts
    auto = subscribe
}
    mailbox Junk {
    special_use = \Junk
    auto = subscribe
    autoexpunge = 30d
}
    mailbox Sent {
    special_use = \Sent
    auto = subscribe
}
    mailbox Trash {
    special_use = \Trash
}
    mailbox Archive {
    special_use = \Archive
}
}

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

protocol lda {
  mail_plugins = \$mail_plugins sieve
}
protocol lmtp {
  mail_plugins = \$mail_plugins sieve
}
plugin {
	sieve = ~/.dovecot.sieve
	sieve_default = /var/lib/dovecot/sieve/default.sieve
	sieve_dir = ~/.sieve
	sieve_global_dir = /var/lib/dovecot/sieve/
}
ShellScript

Hemen ardından spamlar için /var/lib/dovecot/sieve/default.sieve içerisine bir yapılandırma uygulayalım.

echo "require [\"fileinto\", \"mailbox\"];
if header :contains \"X-Spam-Flag\" \"YES\"
        {
                fileinto \"Junk\";
        }"
ShellScript

Bu işlemden sonra, e-postalara erişecek olan kullanıcıyı ve buna bağlı grubu oluşturmalıyız ardından sieve yapılandırmasını güncellemeliyiz.

grep -q '^vmail:' /etc/passwd || useradd vmail
chown -R vmail:vmail /var/lib/dovecot
sievec /var/lib/dovecot/sieve/default.sieve
ShellScript

Daha sonra, Dovecot için pam kimlik doğrulamayı etkinleştirmemiz gerekiyor.

echo "auth    required        pam_unix.so nullok
account required        pam_unix.so" >> /etc/pam.d/dovecot
ShellScript

Postfix’e kullanıcıların/parolaların kimlik doğrulaması için Dovecot’a bakmasını söylememiz gerekiyor /var/spool/postfix/private/auth içerisine aşağıdaki değişikliği uygulayın.

postconf -e 'smtpd_sasl_auth_enable = yes'
postconf -e 'smtpd_sasl_type = dovecot'
postconf -e 'smtpd_sasl_path = private/auth'
postconf -e 'mailbox_command = /usr/lib/dovecot/deliver'
ShellScript

Postfix’in posta akışını spamassassin üzerinden yönlendirebilmesi için /etc/postfix/master.cf dosyasını değiştireceğiz. Varsayılan yapılandırmayı kullanmayacağız silin gitsin ve aşağıdaki komutu çalıştırın.

echo "smtp unix - - n - - smtp
smtp inet n - y - - smtpd
  -o content_filter=spamassassin
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
smtps     inet  n       -       y       -       -       smtpd
  -o syslog_name=postfix/smtps
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
spamassassin unix -     n       n       -       -       pipe
  user=debian-spamd argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f \${sender} \${recipient}" >> /etc/postfix/master.cf
ShellScript

İşlem tamam, geleneksel yöntem ile mail sunucunuz hazır, bu işlemler neticesinde sunucunuz üzerinden e-posta gönderebilirsiniz. Çok az sayıda e-posta atıyorsanız işinize oldukça yarar, diğer amaçlar için kullanılmasını önermem.

Sistem Uzmanı, Linux Hacısı, El-Kernel

Yorum yapın