Pardus Üzerinde Postfix ve Dovecot ile Mail Sunucusu Kurulumu
Pardus (Debian tabanlı) üzerinde kendi yerel posta sunucunuzu kurmak, hem ağ yönetimi hem de sistem yöneticiliği (system administration) becerilerinizi geliştirmek için mükemmel bir laboratuvar çalışmasıdır.
Bu kurulumda, mail transferi (SMTP) için Postfix, maillerin kullanıcılara ulaştırılması ve okunması (IMAP/POP3) için ise Dovecot kullanacağız.
Pardus işletim sistemi üzerinde yerel bir ağda (LAN) hizmet verecek, tam donanımlı bir posta sunucusunun (Mail Server) nasıl kurulacağını adım adım inceleyeceğiz.
Senaryo ve Sistem Gereksinimleri:
İşletim Sistemi: Pardus Sunucu
IP Adresi: 192.168.101.250/24
Hostname: pserver
FQDN (Tam Nitelikli Alan Adı): bilisim.local
Adım 1: Sistem Hazırlığı ve Hostname Yapılandırması
Posta sunucularının doğru çalışabilmesi için sistemin kendi adını (hostname) ve ağdaki tam adını (FQDN) bilmesi kritik öneme sahiptir.
Öncelikle sunucumuzun hostname'ini
pserverolarak ayarlıyoruz:Bashsudo hostnamectl set-hostname pserverArdından
/etc/hostsdosyasını düzenleyerek sunucunun yerel IP adresi ile FQDN'ini eşleştiriyoruz.Bashsudo nano /etc/hostsDosyanın içeriğine aşağıdaki satırı ekleyin (veya mevcut 127.0.1.1 satırını buna göre düzenleyin):
Plaintext192.168.101.250 pserver.bilisim.local pserverSistem paketlerini güncelleyerek kuruluma temiz bir başlangıç yapalım:
Bashsudo apt update && sudo apt upgrade -y
Adım 2: Postfix (SMTP Sunucusu) Kurulumu ve Yapılandırması
Postfix, e-postaları bir adresten diğerine yönlendiren (MTA - Mail Transfer Agent) oldukça popüler ve güvenli bir yazılımdır.
Postfix'i kuralım:
Bashsudo apt install postfix -yKurulum sırasında karşınıza yapılandırma ekranları çıkacaktır:
General type of mail configuration:
Internet Site(İnternet Sitesi) seçin.System mail name:
bilisim.localolarak girin.
Kurulum bittikten sonra Postfix'in ana yapılandırma dosyasını düzenleyelim:
Bashsudo nano /etc/postfix/main.cfDosyadaki ilgili satırları bulup senaryomuza uygun şekilde aşağıdaki gibi değiştirin veya ekleyin:
Plaintextmyhostname = pserver.bilisim.local mydomain = bilisim.local myorigin = $mydomain mydestination = $myhostname, bilisim.local, localhost.bilisim.local, localhost mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.101.0/24 home_mailbox = Maildir/(Not:
mynetworkssatırına192.168.101.0/24ağımızı ekleyerek, bu ağdaki cihazların sunucumuzu kullanarak mail göndermesine izin vermiş olduk.home_mailbox = Maildir/satırı ise maillerin gelen kutusu formatını belirler.)Yapılandırmayı kaydedip çıkın ve Postfix'i yeniden başlatın:
Bashsudo systemctl restart postfix sudo systemctl enable postfix
Adım 3: Dovecot (IMAP/POP3 Sunucusu) Kurulumu ve Yapılandırması
Postfix mailleri alıp kullanıcının dizinine bırakır. Dovecot ise (MDA - Mail Delivery Agent) e-posta istemcilerinin (Outlook, Thunderbird vb.) bu mailleri okumasını sağlar.
Dovecot paketlerini kuralım:
Bashsudo apt install dovecot-core dovecot-imapd dovecot-pop3d -yMail dizini formatını Postfix ile uyumlu olacak şekilde ayarlayalım:
Bashsudo nano /etc/dovecot/conf.d/10-mail.confAşağıdaki satırı bulup başındaki
#işaretini kaldırın ve düzenleyin:Plaintextmail_location = maildir:~/MaildirYerel ağda test yapacağımız için düz metin (plaintext) kimlik doğrulamasına izin verelim (Gerçek bir dış sunucuda SSL zorunlu olmalıdır):
Bashsudo nano /etc/dovecot/conf.d/10-auth.confŞu satırları bulup düzenleyin:
Plaintextdisable_plaintext_auth = no auth_mechanisms = plain loginYapılandırmaları kaydedip Dovecot'u yeniden başlatın:
Bashsudo systemctl restart dovecot sudo systemctl enable dovecot
Adım 4: Test Kullanıcılarının Oluşturulması
Mail sistemini test etmek için Pardus üzerinde iki adet yerel sistem kullanıcısı oluşturalım:
sudo adduser ogrenci1
sudo adduser ogrenci2
(Şifreleri ve kullanıcı bilgilerini ekrandaki yönergelere göre belirleyin.)
Adım 5: Sistemin Test Edilmesi
Sunucunuz artık hazır! Ağınızdaki (192.168.101.0/24) herhangi bir bilgisayardan veya doğrudan Pardus ETAP akıllı tahtalarınız üzerinden Mozilla Thunderbird gibi bir e-posta istemcisi kurarak test edebilirsiniz.
Thunderbird'de hesap eklerken şu bilgileri kullanın:
İsim: Öğrenci 1
E-posta: ogrenci1@bilisim.local
Şifre: (Oluşturduğunuz şifre)
Gelen Sunucu (IMAP): 192.168.101.250 (Bağlantı güvenliği: Hiçbiri, Parola: Normal parola)
Giden Sunucu (SMTP): 192.168.101.250 (Bağlantı güvenliği: Hiçbiri, Parola: Normal parola)
Artık ogrenci1@bilisim.local adresinden ogrenci2@bilisim.local adresine başarılı bir şekilde e-posta gönderip alabilirsiniz.
Öğrencilerin veya kullanıcıların e-postalarına herhangi bir program kurmadan, doğrudan web tarayıcısı üzerinden erişebilmeleri sistemi çok daha kullanışlı hale getirecektir.
Bölüm 2: Roundcube Webmail Entegrasyonu
Postfix ve Dovecot ile kurduğumuz temel mail sunucusuna kullanıcı dostu bir arayüz kazandırmak için Roundcube kullanacağız. Roundcube, PHP tabanlı, modern ve açık kaynaklı bir web tabanlı e-posta istemcisidir.
Çalışabilmesi için bir web sunucusuna (Apache) ve veritabanına (MariaDB) ihtiyacı vardır.
Adım 6: Web Sunucusu, Veritabanı ve PHP Kurulumu (LAMP Stack)
Öncelikle web arayüzünü barındıracak temel bileşenleri ve Roundcube'un ihtiyaç duyduğu PHP eklentilerini kuruyoruz:
sudo apt install apache2 mariadb-server php libapache2-mod-php php-mysql php-intl php-mbstring php-xml php-gd php-curl zip unzip wget -y
Adım 7: Veritabanının Hazırlanması
Roundcube, kullanıcı tercihleri ve önbellek gibi verileri tutmak için bir veritabanına ihtiyaç duyar. MariaDB'ye giriş yapıp gerekli veritabanını ve kullanıcıyı oluşturalım:
MariaDB komut satırına root olarak giriş yapın:
Bashsudo mysql -u rootAşağıdaki SQL komutlarını sırasıyla çalıştırarak
roundcubedbadında bir veritabanı vercuseradında bir kullanıcı oluşturun (Şifreyi kendinize göre belirleyebilirsiniz):SQLCREATE DATABASE roundcubedb; CREATE USER 'rcuser'@'localhost' IDENTIFIED BY 'GucluBirSifre123!'; GRANT ALL PRIVILEGES ON roundcubedb.* TO 'rcuser'@'localhost'; FLUSH PRIVILEGES; EXIT;
Adım 8: Roundcube'un İndirilmesi ve Dosya İzinleri
Güncel Roundcube sürümünü indirip web sunucusunun kök dizinine yerleştireceğiz.
Kurulum paketini indirin (Sürüm numarası zamanla değişebilir, bu makalede 1.6.x serisi baz alınmıştır):
Bashwget https://github.com/roundcube/roundcubemail/releases/download/1.6.6/roundcubemail-1.6.6-complete.tar.gzİnen arşivi
/var/www/htmldizinine çıkartın ve adınıwebmailolarak değiştirin:Bashsudo tar -xvf roundcubemail-1.6.6-complete.tar.gz -C /var/www/html/ sudo mv /var/www/html/roundcubemail-1.6.6 /var/www/html/webmailApache web sunucusunun bu dosyalara okuma/yazma yapabilmesi için gerekli sahiplik ve izinleri ayarlayın:
Bashsudo chown -R www-data:www-data /var/www/html/webmail/ sudo chmod -R 755 /var/www/html/webmail/Veritabanı tablolarını Roundcube'un varsayılan şeması ile doldurun:
Bashsudo mysql -u root roundcubedb < /var/www/html/webmail/SQL/mysql.initial.sql
Adım 9: Tarayıcı Üzerinden Kurulum Sihirbazı
Geri kalan ayarları komut satırı yerine Roundcube'un görsel kurulum sihirbazından yapacağız.
Ağdaki bir bilgisayarın web tarayıcısını açın ve şu adrese gidin:
http://192.168.101.250/webmail/installerCheck Environment: Tüm gereksinimlerin "OK" (Yeşil) olduğunu kontrol edip "Next" diyerek ilerleyin.
Create Config: * Database Setup: Bu kısımda az önce oluşturduğunuz veritabanı adını (
roundcubedb), kullanıcı adını (rcuser) ve şifrenizi girin.IMAP Settings: default_host kısmını
localhostolarak bırakın.SMTP Settings: smtp_server kısmını
localhostolarak bırakın.Sayfanın altındaki "Create Config" butonuna tıklayın.
Çıkan ekrandaki konfigürasyon dosyasını (config.inc.php)
/var/www/html/webmail/config/dizinine indirmenizi veya manuel olarak oluşturmanızı isteyebilir. Yönergeleri takip edin.
Adım 10: Güvenlik ve Son Test
Kurulum bittikten sonra, güvenlik açığı yaratmaması için installer klasörünü sunucudan mutlaka silmelisiniz:
sudo rm -rf /var/www/html/webmail/installer/
Sisteme Giriş:
Artık tarayıcınızdan http://192.168.101.250/webmail adresine giderek, Adım 4'te oluşturduğunuz ogrenci1 veya ogrenci2 kullanıcı adları ve şifreleri ile sisteme giriş yapabilirsiniz. Hiçbir ayar yapmadan, tamamen web üzerinden mail alıp göndermeye hazırsınız!
Harika bir ekleme olacak. Özellikle eğitim ortamlarında veya laboratuvarlarda, öğrencilerin şifrelerinin ağ üzerinde düz metin olarak dolaşmasını engellemek ve zararlı yazılım içeren eklerin gönderilmesinin önüne geçmek sistem yönetimi açısından çok değerli bir tecrübedir.
Bölüm 3: Güvenlik Sıkılaştırması - SSL/TLS (HTTPS) ve Virüs Taraması (ClamAV)
Önceki bölümlerde mail sunucumuzu ve web arayüzümüzü kurduk. Ancak şu anda webmaile HTTP üzerinden bağlanıyoruz ve maillerimiz virüs taramasından geçmiyor. Bu bölümde sistemimizi profesyonel bir yapıya kavuşturacağız.
Adım 11: Webmail İçin Yerel SSL Sertifikası (HTTPS) Oluşturma
Sunucumuz yerel ağda (bilisim.local) çalıştığı için, ticari bir SSL sertifikası (Let's Encrypt vb.) yerine kendi imzaladığımız (Self-Signed) bir sertifika kullanacağız.
Gerekli sertifika dizinlerini kontrol edip OpenSSL ile 1 yıllık (365 gün) bir sertifika oluşturalım:
Bashsudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/certs/apache-selfsigned.crt(Komutu çalıştırdığınızda size Ülke, Şehir, Organizasyon gibi bilgiler soracaktır.
Common Namekısmınapserver.bilisim.localyazabilirsiniz.)Apache'nin SSL modülünü aktif edelim:
Bashsudo a2enmod sslVarsayılan SSL yapılandırma dosyasını düzenleyerek oluşturduğumuz sertifikaları gösterelim:
Bashsudo nano /etc/apache2/sites-available/default-ssl.confAşağıdaki satırları bulup, yolların bizim oluşturduğumuz dosyaları gösterdiğinden emin olun:
PlaintextSSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.keySSL sitesini aktif edip Apache'yi yeniden başlatalım:
Bashsudo a2ensite default-ssl.conf sudo systemctl restart apache2Artık tarayıcınızdan
https://192.168.101.250/webmailadresine giderek şifrelenmiş bağlantıyı test edebilirsiniz. (Tarayıcınız sertifikayı sizin imzaladığınızı gördüğü için bir güvenlik uyarısı verecektir, "Gelişmiş" diyerek ilerleyebilirsiniz.)
Adım 12: E-posta Virüs Taraması İçin ClamAV ve Amavis Kurulumu
Sisteme giren ve çıkan e-postaları taramak için ClamAV (Açık kaynaklı antivirüs motoru) ve bu motoru Postfix ile konuşturan Amavisd-new yazılımlarını kullanacağız.
Gerekli paketleri kuralım:
Bashsudo apt install clamav clamav-daemon amavisd-new -yAmavis ve ClamAV kullanıcılarının birbirlerinin dosyalarına erişebilmesi için onları aynı gruplara ekleyelim:
Bashsudo adduser clamav amavis sudo adduser amavis clamavServisleri yeniden başlatıp ClamAV veritabanını güncelleyelim:
Bashsudo systemctl restart clamav-daemon sudo systemctl restart amavis
Adım 13: Postfix ve Amavis Entegrasyonu
Son olarak Postfix'e, gelen mailleri direkt kutuya atmadan önce 10024 portu üzerinden Amavis'e (ve dolayısıyla ClamAV'a) göndermesini söylemeliyiz.
Postfix'in ana yapılandırma dosyasını açın:
Bashsudo nano /etc/postfix/main.cfEn alta şu satırı ekleyin:
Plaintextcontent_filter = smtp-amavis:[127.0.0.1]:10024Şimdi Postfix'in servis dosyasını (
master.cf) düzenleyerek Amavis'ten temiz olarak dönen mailleri 10025 portundan geri almasını sağlayalım:Bashsudo nano /etc/postfix/master.cfDosyanın en sonuna aşağıdaki yapılandırmayı dikkatlice ekleyin:
Plaintextsmtp-amavis unix - - n - 2 smtp -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes -o disable_dns_lookups=yes 127.0.0.1:10025 inet n - n - - smtpd -o content_filter= -o smtpd_delay_reject=no -o smtpd_client_restrictions=permit_mynetworks,reject -o smtpd_recipient_restrictions=permit_mynetworks,reject -o mynetworks=127.0.0.0/8 -o receive_override_options=no_header_body_checks,no_unknown_recipient_checksDeğişikliklerin geçerli olması için Postfix'i son kez yeniden başlatın:
Bashsudo systemctl restart postfix
Tebrikler! Artık bilisim.local alan adınız için HTTPS korumalı web arayüzüne sahip ve ekleri virüslere karşı otomatik tarayan, laboratuvar ortamına tam uygun bir posta sunucunuz var.
Yorumlar