Ubuntu kurulumu Türkçe (Apache/MySQL sunucu kurulum)
Ubuntu kurulumu Türkçe anlatım belgesinde, sıfır bir sisteme nasıl Ubuntu 10.04 Sunucu Sürümü yükleneceği, sunucunun uzaktan nasıl yönetilebileceği ve LAMP olarak yapılandırılmasının nasıl yapıldıgı anlatıldıktan sonra, e-posta alıp gönderme işlevlerini yerine getirmesi için kurulması gereken yazılımların nasıl kurulup ayarlanacağı tarif edilecektir. Posta aktarma vekili (MTA) olarak Postfix, POP3 ve IMAP sunucusu olarak Dovecot ve alan adları ve kullanıcıları tutmak icin de MySQL veritabanı seçilmiştir. Ubuntu kurulumu, Posta kullanıcılarının hizmeti web arayüzünden kullanabilmelerine olanak tanıyan yazılımlardan biri olan SquirrelMail’in kurulumu ve konfigurasyonu ile anlatım tamamlanacaktır. Kurulumda sadece OpenSSH paketi yüklenmiş. Gerekli olan tüm diğer kurulumlar başka bir bilgisayar uzerinden SSH aracılığı ile yapılmıştır. Siz yerelde de aynı işlemleri gerceklestirebilirsiniz. O sartlarda SSH anahtarı olusturmak kişisel tercihinize kalmıştır.
Ubuntu kurulumu Türkçe
İlk olarak programların ne işe yaradıklarından bahsedelim. Apache ve PHP’yi muhtemelen daha once duymuşuzdur. Duymamış olabileceklerimizi kısaca açıklayalım.
Postfix nedir?
Postfix internet uzerinden e-posta alip gonderme islemini gerceklestiren yazilimdir. Alinan e-postalari kullanicilarin e-posta kutularina gonderme ve gonderilen e-postalari da karsi tarafa iletme gorevlerini yerine getirir.
Dovecot nedir?
Dovecot e-posta kullanicilarinin, postalarini internet uzerinden POP3 ve IMAP protokolleri ile erisebilmesini saglayan e-posta sunucusudur.
MySQL nedir?
MySQL uzerinde cok sayida veritabani ve tablolar olusturabileceginiz bir veritabani programidir.
SquirrelMail nedir?
Kullanicilarin, e-postalarina bir web arayuzunden erismelerine imkan veren yazilimdir.
Ubuntu kurulumu
Ubuntu’nun alternatif download sayfasından 11.10 64 bit sunucu versiyonun kalıbı indirilip bir CD’ye yazilir (Ubuntu kurulumu için gerekli). Daha sonra bilgisayar CD’den baslatilacak sekilde ayarlanir.
1) Bizi karsilayan ilk ekran dil secimi ekranidir. Bu ekranda hangi dilde kurulum yapmak istiyorsak o dili secerek ilerliyoruz.
2) Daha sonra secenekler ekrani gelir (“Ubuntu kurulumu”).
3) “Sunucu Kur” dedikten sonra karsimiza cikan asagidaki ekran bolge secim ekranidir.
4) Ardindan klavye dili ayarlanir. Burada otomatik secim ya da elle secim yapabilirsiniz. Tercih size kalmis.
5) Makinaya bir isim verilir.*
6) Zaman dilimi secilir.
7) Disk bicimlendirme icin kilavuz yardimi kullanilarak LVM secilir.**
8 ) Bolumlenecek disk secilir.
9) Degisiklikler diske yazilir.
10) Disk boyutu belirlenir.**
11) Yeni yaptigimiz degisiklikler tekrardan diske yazilir.
12) Sistem kendini yuklemeye baslar.
13) Kullanici adi ve soyadi belirlenir.
14) Kullanicinin giris yapmak icin kullanacagi isim secilir.
15) Kullanici sifresi belirlenir.
16) Kullanici dizini sifrelenir.***
17) Kurulum devam eder.
18) Guvenlik guncellestirmeleri acilir. Eger cok kritik bir yazilim kullaniyor ve gelen guncellestirmelerin sisteminizin calismasini etkileyecegini dusunuyorsaniz, guncellestirmeleri elle yapmayi da secebilirsiniz.
19) OpenSSH paketi secilir.
20) GRUB yukleme secenegi ayarlanir.****
21) Son islemler gerceklestirilir.
22) Kurulum tamamlanir.
23) Sisteme giris yapilir.
Sisteme giris yaparken yazdiginiz sifre terminal ekraninda gozukmez.
24) Ilk giris yaptiginizda suna benzer bir ekranla karsilasirsiniz.
25) Ilk isimiz bilgisayarimizin IP adresini kontrol edip bir kenara not etmektir. Bunun icin asagidaki komut verilir.
1 | ifconfig |
Bizi asagidaki gibi bir ekran karsilar. Bu ekranda IP adresimizi gorebiliriz [Ubuntu kurulumu].
26) Ikinci yapmamiz gereken is guncelleme olup olmadigini kontrol etmek, eger varsa gerekli guncellemeleri yapmaktir. Bunun icin su komutlar verilir.
1 2 | sudo apt-get update sudo apt-get upgrade |
Guncellemeler bittikten sonra sistemi asagidaki komutla yeniden baslatmanizi oneririm. Tekrar acildiktan sonra normalde herhangi bir guncelleme olmamasi gerekiyor.
1 | sudo shutdown -r now |
Simdi sunucumuzun anahtar izini ogrenelim ki uzaktan bir bilgisayardan SSH ile erismek zorunda kaldigimizda baglandigimiz sunucunun dogru sunucu olup olmadigini anlayabilelim.
1 | ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub |
Ustteki komutu verdigimizde ekrana asagidaki gibi bir dizinin yazdirilmasi gerekir. Asagidakine benzeyen kisimi IP adresimizi not ettigimiz yere not ediyoruz.
1 | 2b:d1:e1:a7:0a:d1:6c:29:2d:df:99:a4:17:21:c0:96 |
Kurulu isini tamamladik. Artik bu makinaya uzaktan erisebiliriz. Sunucuyu acik birakip istedigimiz herhangi bir makinaya gidiyoruz ve terminalinden, sunucumuza girmek icin kullanacagimiz bir SSH anahtari olusturuyoruz.
1 | ssh-keygen -t rsa |
Eger bir SSH anahtariniz varsa tekrar olusturmaniza gerek yok. Ilk kez olusturacaklar passphrase soruldugunda oldukca guclu ve tahmin edilemeyecek uzunlukta bir kod yazip bunu IP adreslerini not ettikleri kagida not ettikten sonra kaybetmeyecekleri bir yere koysalar iyi ederler. SSH anahtarimizi olusturduktan sonra sunucumuza yuklemeliyiz ki bundan sonra sunucuya, tanitilan makinadan yaptigimiz baglantilarda sifre girmemize gerek kalmasin.
1 | ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected] |
Yukaridaki komutta [email protected] kismini kendi kullaniciniz ve IP adresiniz ile degistirmelisiniz. Eger anahtarlari varsayilan dizinlerde saklamadiysaniz dizinleri de duzeltmelisiniz. Bu komutu girdigimizde sunucunun, kurulum yaptigimizda aldigimiz anahtar izini gorecegiz. Eger not aldigimiz ile tutuyorsa guvenlice kendi sunucumuza baglanmisiz demektir. Bize daha once belirledigimiz passphrase’i soracak. Bir defaya mahsus olarak giriyoruz. Bundan sonra SSH anahtarini tanittigimiz herhangi bir bilgisayardan sunucumuza sifre girmeye gerek kalmaksizin baglanabilecegiz.
Hostname’i kurulum sirasinda ayarlamistik ama ne olur ne olmaz diyerek bir kez daha yazalim. Hostname ag uzerinde bilgisayariniza verdiginiz isimdir. Terminalden asagidaki komutlari vererek hostname’inizi gorebilirsiniz.
1 2 | hostname hostname -f |
Ikinci komut FQDN olarak adlandirilan tam erisim adresinizi gostermektedir. Ornegin isimi titania olan ve ornek.com altinda yapilandirilmis bir sistem sirasiyla bu komutlar icin su ciktilari vermelidir.
1 2 | titania titania.ornek.com |
Eger buna benzer bir cikti almiyorsaniz hostname’inizi ayarlamaniz gerekmektedir. Bir sistemin hostname’inin uzerinde sunulan servislerle hicbir ilgisi yoktur. Bu sadece bilgisayariniza verdiginiz essiz bir isimdir. Dolayisiyla istediginiz isimi vermekte ozgursunuz. Genellikle sunucu yoneticileri gezegenlerin ya da mitolojik karakterlerin adlarini kullanirlar. Hostname’inizi ayarlamak icin su komutlari vermelisiniz (Ubuntu kurulumu).
1 2 3 | sudo su echo "titania" > /etc/hostname hostname -F /etc/hostname |
Burada titania’yi kendi vermek istediginiz isim ile degistirebilirsiniz. Bu islemden sonra eger mevcutsa /etc/default/dhcpcd dosyasinda #SET_HOSTNAME=’yes’ olacak sekilde bir ayar yapmalisiniz. Eger mevcut degilse olusturmaniza gerek yok.
Simdi /etc/hosts dosyanizi asagidakine benzer olacak sekilde duzenlemelisiniz. Ben burada verilecek isim degerini titania ve ornek.com, IP adresini ise 192.168.1.9 degerleri uzerinden gosterecegim. Siz kendinize gore uyarlamalisiniz. Ubuntu kurulumu Hostname’de oldugu gibi FQDN isminizi de istediginiz gibi secebilirsiniz. www.ornek.com adresli siteyi sunmak icin FQDN adinizin .ornek.com ile bitmesine gerek yok. ubuntuneguzel.com ile de bitebilir. Yine de sunmak istediginiz adresle iliskili olacak sekilde secmeniz ileride baska bir sistem yoneticisi icin isleri kolaylastiracaktir.
/etc/hosts dosyasi ornek gorunumu su sekilde olmalidir.
1 2 | 127.0.0.1 localhost.localdomain localhost 192.168.1.9 titania.ornek.com titania |
Eger IPv6 ISP’niz tarafindan destekleniyor ise IPv6 adresinizi de hosts dosyaniza ekleyebilirsiniz. O takdirde gorunum su sekilde olacaktir.
1 2 3 | 127.0.0.1 localhost.localdomain localhost 192.168.1.9 titania.ornek.com titania 1245:4d03::a356:b145:c287:d987 titania.ornek.com titania |
Burada belirttiginiz IP adresinin DNS’te bir A ya da AAAA kaydina sahip olmasi gerekmektedir. A IPv4 icin kullanilirken, AAAA IPv6 icin kullanilmaktadir. Iki kayit tipi de ayni isi gorurler. Bu dokumanda nasil DNS kaydi eklenecegi gibi DNS ile alakali ayarlar anlatilmamistir.
Ubuntu kurulumu / Türkçe Apache Kurulumu
Sirasiyla asagidaki komutlar verilir ve dosyalardaki ilgili degisiklikler yapilir.
1 2 | sudo apt-get install apache2 sudo nano /etc/apache2/ports.conf |
Acilan dosyada NameVirtualHost un yanindaki * silinerek IP adresi yazilir.
1 | sudo nano /etc/apache2/sites-available/default |
Acilan dosyada NameVirtualHost un yanindaki * silinerek IP adresi yazilir
1 | sudo nano /etc/apache2/sites-available/ornek.com |
Komutu verilerek ornek.com alan adi icin Apache yapilandirma dosyasi olusturulur. Dosya icerigi suna benzer olacak sekilde doldurulur.
1 2 3 4 5 6 7 8 | <VirtualHost 192.168.1.9:80> ServerAdmin [email protected] ServerName ornek.com ServerAlias www.ornek.com DocumentRoot /srv/www/ornek.com/public_html/ ErrorLog /srv/www/ornek.com/logs/error.log CustomLog /srv/www/ornek.com/logs/access.log combined </VirtualHost> |
Ben bu rehberde dosyalarin /srv/www/site_adi/* altinda tutulmasini istedigim icin gerekli yollari bu sekilde belirledim ama siz istediginiz gibi tanimlayabilirsiniz. Eger tanimladiginiz dizinler mevcut degils, siteyi aktif hale getirmeden o dizinleri yaratmalisiniz. Aksi taktirde Apache hata verecektir. Benim yukarida ayarladigim adreslerdeki dizinleri su komutlar olusturur.
1 2 | sudo mkdir -p /srv/www/ornek.com/public_html/ sudo mkdir /srv/www/ornek.com/logs/ |
Simdi Apache sunucumuzu yeniden baslatabiliriz.
1 | sudo service apache2 restart |
Eger DNS kayitlarinizi ayarladiysaniz ornek.com adresi su anda internet uzerinden erisilebilinir durumdadir. Eger deneminizi yerel ag uzerinde gerceklestiriyorsaniz http://IP_adresi uzerinden Apache’nin calisip calismadigini gorebilirsiniz. Eger calisiyorsa “It Works” yazan bir web sayfasi goreceksiniz.
Ubuntu kurulumu / Türkçe MySQL kurulumu
1 | sudo apt-get install mysql-server |
Yukaridaki komut ile ilgili paketler depodan indirilerek kurulur. Ilk gelen ekranda sizden bir sifre belirlemeniz istenir. Oldukca guclu bir sifre yazip bunu da artik yanimizda olan not defterimize kaydediyoruz.
Simdiki ekranda ise sizden girmis oldugunuz sifreyi dogrulamanizi istiyor. Dolayisiyla yazim hatalarina karsi bir onlem alinmis oluyor.
Butun yukleme islemleri bittikten sonra asagidaki komutu calistirip, belirlediginiz sifreyi girin.
1 | sudo mysql_secure_installation |
Ilk geren soru sifrenizi degistirmek isteyip istemediginizi soruyor. N diyerek devam ediyoruz. Ikinci soru anonim kullanicinin silinmesini isteyip istemediginizi soruyor. Y diyerek anonim kullaniciyi silelim ki herkes veritabanimiza ulasamasin. Ucuncu soru root kullanicisinin sadece lokalden erisime acilmasi ile ilgili. Bu soruyu Y olarak cevapliyoruz. Boylece uzaktaki bir makinadan biri root olarak giris yapamasin. Sonraki soru test veritabanini silmek isteyip istemediginizi soruyor. Y dedikten sonra bir uyari verecek. Sorun degil devam edin. Besinci ve son soru yaptiginiz degisiklikleri etkinlestirmek isteyip istemediginiz. Bu soruya da Y diyerek MySQL kurulumunu bitiriyoruz.
Simdi deneme amacli bir veritabani yaratalim. MySQL komut satirina dusmek icin asagidaki komutu girin. Size sifre soracaktir. Sifrenizi girdikten sonra MySQL komut satirina ulasmis olacaksiniz.
1 | mysql -u root -p |
Simdi sirayla asagidaki kodlari girelim.
1 2 3 | CREATE DATABASE deneme; GRANT ALL ON deneme.* TO 'kullanici' IDENTIFIED BY 'sifre'; FLUSH PRIVILEGES; |
Bu islemlerin sonucunda eger bir hata yapmadiysaniz “Query OK” yazisini gorursunuz. Cikmak icin asagidaki komut yazilir.
1 | quit |
Ubuntu kurulumu / Türkçe PHP Kurulumu
Asagidaki komut ile gerekli paketler yuklenir.
1 | sudo apt-get install php5 php-pear |
Simdi asagidaki komutla PHP ayar dosyasini acip bazi ayarlari yapacagiz.
1 | sudo nano /etc/php5/apache2/php.ini |
Bu dosyada tavsiye edilen ayarlar aksi gerekceleriniz olmadikca su sekildedir.
1 2 3 4 5 6 7 | max_execution_time = 30 memory_limit = 128M error_reporting = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR display_errors = Off log_errors = On error_log = /var/log/php.log register_globals = Off |
memory_limit onemli bir parametre oldugundan sunucunuzun yeteneklerine gore ayarlamakta fayda var. nano’da bu degiskenleri CTRL+W kombinasyonuyla metin icinde aratabilirsiniz.
Simdi asagidaki komutlari sirasiyla verelim ve MySQL-PHP iletisimi icin gerekli paketi, PHP’nin daha guvenli olmasini saglayan suhosin paketini kuralim. Son olarak Apache’yi yeniden baslattik.
1 2 3 | sudo apt-get install php5-mysql sudo apt-get install php5-suhosin sudo service apache2 restart |
PHP kurulumunuzu denemek isterseniz;
/var/www dizini altina info.php adinda bir dosya yaratip icine asagidaki satiri yazdiktan sonra http://IPadresi/info.php adresinden ulasmayi deneyebilirsiniz.
1 | <?php phpinfo()?> |
Eger bir bilgi sayfasi goruyorsaniz PHP kurulumuz gerceklestirilmis demektir.
Sunucuzda hangi portlarin acik oldugunu gormek icin asagidaki komutu kullanabilirsiniz. Su asamada 80 ve 22 disinda acik bir port olmamalidir.
1 | netstat -tapln |
Tebrikler LAMP sunucunuz oldu.
Ubuntu kurulumu Türkçe / E-Posta Sunucu
1 | apt-get install postfix postfix-mysql postfix-doc mysql-client mysql-server dovecot-common dovecot-imapd dovecot-pop3d libsasl2-2 libsasl2-modules libsasl2-modules-sql sasl2-bin libpam-mysql openssl telnet mailutils |
Bu komut Postfix mail sunucu, Dovecot IMAP/POP sunucu, MySQL sunucu ve kimlik dogrulama ile ilgili cesitli servisleri yukleyecek. Eger MySQL’i daha onceden yuklemessiniz, ki biz yukledik, tekrardan yuklenmeyecektir.
Simdi karsimiza soyle bir ekran gelecek. Bu ekranda Tamam diyoruz.
Simdiki ekranda Internet Site deyip kuruluma devam ediyoruz.
Bu gelen ekranda FQDN ismimizi girecegiz. Yani titania.ornek.com Siz bunu kendi ayarladiginiz isime gore degistireceksiniz.
Kurulum islemlerini boylece tamamlamis olduk.
Sanal Alan Adlari ve Kullanicilar Icin MySQL’in Yapilandirilmasi
1 | mysql -u root -p |
komutunu verip root sifremizi girdikten sonra MySQL komut satirina dusuyoruz. Simdi bir mail veritabani yaratacagiz.
1 2 | CREATE DATABASE mail; USE mail; |
mail veritabanimizi yarattiktan sonra bu veritabanini kontrol eden mail_admin kullanicisini olusturalim ve gerekli izinleri verelim. Sirayla asagidaki komutlari giriyoruz.
1 2 3 | GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO 'mail_admin'@'localhost' IDENTIFIED BY 'buraya_admin_icin_sifre_yazilacak'; GRANT SELECT, INSERT, UPDATE, DELTE ON mail.* TO 'mail_admin'@'localhost.localdomain' IDENTIFIED BY 'buraya_admin_icin_sifre_yazilacak'; FLUSH PRIVILEGES; |
Simdi alan adlari icin kullanacagimiz tabloyu olusturalim {Ubuntu kurulumu}.
1 | CREATE TABLE domains (domain varchar(50) NOT NULL, PRIMARY KEY (domain) ); |
Forwarding tablosunu yaratiyoruz.
1 | CREATE TABLE forwardings (source varchar(80) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source) ); |
Kullanicilarin tutuldugu tablo icin;
1 | CREATE TABLE users (email varchar(80) NOT NULL, password varchar(20), NOT NULL, PRIMARY KEY (EMAIL) ); |
MySQL komut arayuzunden cikmak icin quit komutunu veriyoruz.
1 | quit |
/etc/mysql/my.cbf dosyasinda bind-address = 127.0.0.1 seklinde bir ayar olduguna emin olalim. Bu Postfix’in veritabanimiz ile iletisime gecebilmesi icin es gecilmemesi gereken bir adim.
MySQL’i yeniden baslatalim.
1 | sudo service mysql restart |
Postfix’i MySQL ile Calisacak Sekilde Ayarlamak
Oncelikle Postfix’in MySQL uzerinden hangi domainleri host ettigimiz bilgisine ulasmasi icin gereken belgeyi yaratalin.
1 | sudo nano /etc/postfix/mysql-virtual_domains.cf |
1 2 3 4 5 | user = mail_admin password = buraya_mail_admin_sifesini_girecegiz dbname = mail query = SELECT domain AS virtual FROM domains WHERE domain='%s' hosts = 127.0.0.1 |
Simdi posta yonlendirme icin gerekli belgeyi yaratalim.
1 | sudo nano /etc/postfix/mysql-virtual_forwardings.cf |
1 2 3 4 5 | user = mail_admin password = buraya_mail_admin_sifesini_girecegiz dbname = mail query = SELECT destination FROM forwardings WHERE source='%s' hosts = 127.0.0.1 |
Simdi de kullanicilar icin gereken belgeyi yaratiyoruz.
1 | sudo nano /etc/postfix/mysql-virtual_mailboxes.cf |
1 2 3 4 | user = mail_admin password = buraya_mail_admin_sifesini_girecegiz dbname = mail query = SELECT CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/') FROM users WHERE email='%s' |
Son olarak da kullanicilar ile postalari iliskilendirmek icin kullanilan dosyayi olusturacagiz
1 | sudo nano /etc/postfix/mysql-virtual_email2email.cf |
1 2 3 4 5 | user = mail_admin password = buraya_mail_admin_sifesini_girecegiz dbname = mail query = SELECT email FROM users WHERE email='%s' hosts = 127.0.0.1 |
Simdi bu yarattigimiz dosyalara su komutlar ile gerekli izinleri verelim.
1 2 | sudo chmod o= /etc/postfix/mysql-virtual_*.cf sudo chgrp postfix /etc/postfix/mysql-virtual_*.cf |
Postalari kontrol edip sanal kullanicilarimiza dagitacak posta kullanicisini olusturalim.
1 2 | sudo groupadd -g 5000 vmail sudo useradd -g vmail -u 5000 vmail -d /home/vmail -m |
Simdi Postfix ayarlarini yapacagiz. Burasi biraz uzun. dolayisiyla yazarken dikkatli olmamiz gerekiyor. titania.ornek.com’u kendi FQDN degerimizle degistirmeliyiz. Komutlarin hepsi “postconf – e” ile baslayan birer satirdan ibaret. Alt satira inmis komutlar ekrana sigmadigindan alt satira inmis gozukuyor. Lutfen yazarken sudo’ya gelmeden once enter’a basmayin. Yani birden cok satirdan olustugunu gordugunuz satirlarin basinda sudo yoksa bosluk kullanmalisiniz.*****
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | sudo postconf -e 'myhostname = titania.ornek.com' sudo postconf -e 'mydestination = titania.ornek.com, localhost, localhost.localdomain' sudo postconf -e 'mynetworks = 127.0.0.0/8' sudo postconf -e 'message_size_limit = 30720000' sudo postconf -e 'virtual_alias_domains =' sudo postconf -e 'virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql-virtual_email2email.cf' sudo postconf -e 'virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql-virtual_domains.cf' sudo postconf -e 'virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailboxes.cf' sudo postconf -e 'virtual_mailbox_base = /home/vmail' sudo postconf -e 'virtual_uid_maps = static:5000' sudo postconf -e 'virtual_gid_maps = static:5000' sudo postconf -e 'smtpd_sasl_auth_enable = yes' sudo postconf -e 'broken_sasl_auth_clients = yes' sudo postconf -e 'smtpd_sasl_authenticated_header = yes' sudo postconf -e 'smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination' sudo postconf -e 'smtpd_use_tls = yes' sudo postconf -e 'smtpd_tls_cert_file = /etc/postfix/smtpd.cert' sudo postconf -e 'smtpd_tls_key_file = /etc/postfix/smtpd.key' sudo postconf -e 'virtual_create_maildirsize = yes' sudo postconf -e 'virtual_maildir_extended = yes' sudo postconf -e 'proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $virtual_mailbox_limit_maps' sudo postconf -e virtual_transport=dovecot sudo postconf -e dovecot_destination_recipient_limit=1 |
Postfix icin gerekli sertifikalari olusturalim.
1 | cd /etc/postfix |
1 | sudo openssl req -new -outform PEM -out smtpd.cert -newkey rsa:2048 -nodes -keyout smtpd.key -keyform PEM -days 365 -x509 |
1 2 3 4 5 6 7 | Country Name (2 letter code) [AU]:TR State or Province Name (full name) [Some-State]:Ege Locality Name (eg, city) []:Izmir Organization Name (eg, company) [Internet Widgits Pty Ltd]:Ubuntu-TR Forum Organizational Unit Name (eg, section) []:E-posta Sunucusu Common Name (eg, YOUR name) []:titania.ornek.com Email Address []:[email protected] |
Seklinde bir sertifika olusturacagiz. Ilgili kisimlari size uyan degerlerle degistirebilirsiniz. Simdi izinleri yeniden yazalim.
1 | sudo chmod o= /etc/postfix/smtpd.key |
saslauthd’yi MySQL Kullanacak Sekilde Ayarlamak
Once dizinimizi olusturalim.
1 | sudo mkdir -p /var/spool/postfix/var/run/saslauthd |
Simdi yapilandirma dosyasinin bir yedegini alalim.
1 | sudo cp -a /etc/default/saslauthd /etc/default/saslauthd.bak |
Simdi yapilandirma dosyasini duzenleyelim. Asagida verilen degerleri parametrelerin karsisina yazmali ve o parametrelerin basinda # isareti olmadigina emin olmalisiniz.
1 | sudo nano /etc/default/saslauthd |
1 2 3 4 5 6 7 | START=yes DESC="SASL Authentication Daemon" NAME="saslauthd" MECHANISMS="pam" MECH_OPTIONS="" THREADS=5 OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r" |
Asagidaki dosyada mail_admin sifresini kendi sifreniz ile degistirmelisiniz.
1 | sudo nano /etc/pam.d/smtp |
1 2 | auth required pam_mysql.so user=mail_admin passwd=BENI_DEGISTIR host=127.0.0.1 db=mail table=users usercolumn=email passwdcolumn=password crypt=1 account sufficient pam_mysql.so user=mail_admin passwd=BENI_DEGISTIR host=127.0.0.1 db=mail table=users usercolumn=email passwdcolumn=password crypt=1 |
1 | sudo nano /etc/postfix/sasl/smtpd.conf |
1 2 3 4 5 6 7 8 9 | pwcheck_method: saslauthd mech_list: plain login allow_plaintext: true auxprop_plugin: mysql sql_hostnames: 127.0.0.1 sql_user: mail_admin sql_passwd: BENI_DEGISTIR sql_database: mail sql_select: select password from users where email = '%u' |
Izinleri duzenleyelim
1 2 | sudo chmod o= /etc/pam.d/smtp sudo chmod o= /etc/postfix/sasl/smtpd.conf |
Postfix kullanicisi icin gereken islemleri yapalim.
1 2 3 | sudo adduser postfix sasl sudo service postfix restart sudo service saslauthd restart |
Dovecot Yapilandirmasi
Asagida acacagimiz dosyanin sonuna gelip altta verilen satirlari ekliyoruz. Dosyanin formatina sadik kalacak sekilde eklemeliyiz.
1 | sudo nano /etc/postfix/master.cf |
1 2 | dovecot unix - n n - - pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient} |
Simdi dovecot yapilandirma dosyasinin bir yedegini aliyoruz.
1 | sudo cp -a /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.bak |
Yedegini aldigimiza gore dosyanin orijinalini silebiliriz.
1 | sudo rm /etc/dovecot/dovecot.conf |
Simdi ayni dosyayi kendi sistemimize gore tekrar yaratacagiz. ornek.com ile olan yerleri kendinize gore degistirin.
1 | sudo nano /etc/dovecot/dovecot.conf |
1 2 3 | protocols = imap imaps pop3 pop3s log_timestamp = "%Y-%m-%d %H:%M:%S " mail_location = maildir:/home/vmail/%d/%n/Maildir |
ssl_cert_file = /etc/ssl/certs/dovecot.pem
ssl_key_file = /etc/ssl/private/dovecot.pem
namespace private {
separator = .
prefix = INBOX.
inbox = yes
}
protocol lda {
log_path = /home/vmail/dovecot-deliver.log
auth_socket_path = /var/run/dovecot/auth-master
postmaster_address = [email protected]
mail_plugins = sieve
global_script_path = /home/vmail/globalsieverc
}
protocol pop3 {
pop3_uidl_format = %08Xu%08Xv
}
auth default {
user = root
passdb sql {
args = /etc/dovecot/dovecot-sql.conf
}
userdb static {
args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes
}
socket listen {
master {
path = /var/run/dovecot/auth-master
mode = 0600
user = vmail
}
client {
path = /var/spool/postfix/private/auth
mode = 0660
user = postfix
group = postfix
}
}
}
Bu islemden sonra sirada Dovecot icin MySQL ayarlarini yapmak var. Once bir yedek alalim.
1 | sudo cp -a /etc/dovecot/dovecot-sql.conf /etc/dovecot/dovecot-sql.conf.bak |
Simdi ustte yaptigimiz gibi orijinal dosyayi silip tekrar yeniden olusturalim ve icerigini su sekilde degistirelim.
1 | sudo rm /etc/dovecot/dovecot-sql.conf |
1 | sudo nano /etc/dovecot/dovecot-sql.conf |
1 2 3 4 | driver = mysql connect = host=127.0.0.1 dbname=mail user=mail_admin password=BENI_DEGISTIR default_pass_scheme = CRYPT password_query = SELECT email as user, password FROM users WHERE email='%u'; |
Dovecot yapilandirmasi bitti. Yeniden baslatabiliriz.
1 | sudo service dovecot restart |
Simdi Dovecot hata vermis mi kontrol etmek icin log dosyasini kontrol edelim.
1 | sudo tail -n 2 /var/log/mail.log |
1 2 | Jul 9 17:22:48 titania dovecot: Dovecot v1.2.9 starting up (core dumps disabled) Jul 9 17:22:49 titania dovecot: auth-worker(default): mysql: Connected to 127.0.0.1 (mail) |
benzeri iki satir gorduyseniz sorun yok demektir. izinleri ayarlayalim tekrar.
1 2 | sudo chgrp vmail /etc/dovecot/dovecot.conf sudo chmod g+r /etc/dovecot/dovecot.conf |
Simdi POP3 sunucumuzu test edebiliriz.
1 | telnet localhost pop3 |
Bize soyle bir cikti dondurecek
1 2 3 4 5 | Trying ::1... Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. +OK Dovecot ready. |
quit yazarak baglantiyi kapatiyoruz.
1 2 3 | quit +OK Logging out Connection closed by foreign host. |
Posta Lakaplari
ornek.com’u kendi isminizle degistirmeniz gerekiyor.
1 | sudo nano /etc/aliases |
1 2 | postmaster: root root: [email protected] |
Simdi yeniden baslatalim
1 2 | sudo newaliases sudo service postfix restart |
Postfix’i Test Etme
1 | telnet localhost 25 |
1 2 3 4 5 6 | telnet localhost 25 Trying ::1... Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 titania.ornek.com ESMTP Postfix (Ubuntu) |
Simdi selam verelim.
1 | ehlo localhost |
Bize asagidakine benzer bir cikti dondurecek.
1 2 3 4 5 6 7 8 9 10 11 | 250-titania.ornek.com 250-PIPELINING 250-SIZE 30720000 250-VRFY 250-ETRN 250-STARTTLS 250-AUTH PLAIN LOGIN 250-AUTH=PLAIN LOGIN 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN |
quit yazarak baglantiyi kapatiyoruz. Her sey yolunda gozukuyor.
1 2 3 | quit 221 2.0.0 Bye Connection closed by foreign host. |
ONEMLI: Bu kisimda tekrar bir hatirlatma yapalim. Bu rehber DNS kayitlarinin nasil ve nerede olusturulacagini icermemektedir. Dolayisiyla DNS ayarlarinizi yapmak icin baska bir kaynaga bakmalisiniz. MX kayit turu diye adlandirilan DNS kaydi olmaksizin sadece yerel aginizda posta gonderebilirsiniz. Internet uzerinden posta gondermek icin MX kaydi olusturmalisiniz. MX kayitlarinizi yaptiginizi varsayarak devam ediyorum.
Kullanici Olusturma
1 | mysql -u root -p |
Asagidaki kayitlardaki ornek.com’u e-posta adresini ve sifreyi kendinize gore degistirmelisiniz.
1 2 | INSERT INTO domains (domain) VALUES ('ornek.com'); INSERT INTO users (email, password) VALUES ('[email protected]', ENCRYPT('COKGIZLISIFRE')); |
1 | quit |
Az once [email protected] kullanicisini olusturduk. Kullaniciyi aktif hale getirmek icin bir adet posta yollamaliyiz.
1 | mailx [email protected] |
CC: diye soracak enter ile gecebilirsiniz. Subject: Istediginiz bir konuyu yazip enter’a basin. Simdi mesajin icerigini yazip CTRL+D yaparsaniz mail gonderilecektir. Hemen kontrol edelim.
1 | sudo tail -n 5 /var/log/mail.log |
Asagidakine benzer bir cikti gormelisiniz.
1 2 3 4 5 | Jul 9 17:32:12 titania postfix/pickup[2513]: E740A5EF6A: uid=1000 from=<siradan> Jul 9 17:32:12 titania postfix/cleanup[2524]: E740A5EF6A: message-id=<[email protected]> Jul 9 17:32:12 titania postfix/qmgr[2514]: E740A5EF6A: from=<[email protected]>, size=374, nrcpt=1 (queue active) Jul 9 17:32:13 titania postfix/pipe[2530]: E740A5EF6A: to=<[email protected]>, relay=dovecot, delay=0.27, delays=0.12/0.03/0/0.12, dsn=2.0.0, status=sent (delivered via dovecot service) Jul 9 17:32:13 titania postfix/qmgr[2514]: E740A5EF6A: removed |
Bir de Dovecot ne yapmis ona bakalim.
1 | sudo tail -n 2 /home/vmail/dovecot-deliver.log |
1 | 2011-07-09 17:32:13 deliver([email protected]): Info: msgid=<[email protected]>: saved mail to INBOX |
Eger buna benzer bir cikti aldiysaniz sorun yok. Simdi az once gonderdigimiz postayi okumayi deneyelim bakalim gercekten gitmis mi? Normal kullanici olarak gidemedigimiz icin root olmaliyiz.
1 | sudo su |
Simdi dizinimizi postalarin tutuldugu dizin olarak degistiriyoruz.
1 | cd /home/vmail/ornek.com/admin/Maildir |
1 | find |
find komutu bize asagidakine benzer bir cikti vermeli.
1 2 3 4 5 6 7 8 9 | . ./dovecot.index.log ./dovecot-uidvalidity ./dovecot-uidvalidity.4e1803fd ./dovecot-uidlist ./cur ./new ./new/1310196733.M114018P2531.titania,S=435,W=447 ./tmp |
Simdi isi biraz daha gorsellestirelim ve komut satirindan calisan bir e-posta programi kuralim.
1 | apt-get install mutt |
(sudo yazmadik cunku hala root’uz)
mutt kurulduktan sonra postamizi okumak icin su komutu veriyoruz;
1 | mutt -f . |
Bize dizin yaratilsin mi diye bir soru soracaktir. Isimiz icin gerekli degil. Hayir diyebiliriz. Sirayla suna benzer iki adet ekranla karsilasacaksiniz.
Birinci ekran mutt programini ilk actiginiz zaman karsilasacaginiz ekrandir ve asagidaki gibidir.
Simdiki ekran ise gonderilen postayi okumaki icin enter’a bastigimizda gorecegimiz ekran.
Boylelikle eger DNS kayitlarinizi duzgun olusturduysaniz artik calisan bir eposta sunucuya sahipsiniz.
Ek olarak “catchall mail” olarak tabir edilen ve ornek.com domaini altinda daha once yaratilmis olsun olmasin butun kullanicilara gonderilen bir posta hesabi nasil yaratiliyor onu gosterecegim. Yani ornegin biz su anda sadece [email protected] hesabini yarattik. Lakin bize posta gondermek isteyen biri yanlislikla [email protected] adresine gonderirse sunucumuz kendisine oyle bir posta hesabi olmadigini soyleyecektir. Iste bunu engellemek icin @ornek.com’a gelen butun mailleri [email protected]‘a yonlendirebiliriz. Eger posta sunucunuzda birden cok kisiye hesap vereceksiniz bunu yapmamaniz gerekiyor. Cunku gecerli kullanicilara gelen postalar da bu adrese dusecektir. tek bir kisinin kullandigi sunucularda ise bir sorun olmayacaktir.
Once MySQL komut penceresine duselim.
1 | mysql -u root -p |
Simdi sirayla asagidaki komutlari veriyoruz.
1 2 3 | USE mail; INSERT INTO forwardings (source, destination) VALUES ('@ornek.com', '[email protected]'); quit |
Tebrikler! Ubuntu uzerinde saglikli sekilde calisan Apache, MySQL, PHP, Postfix ve Dovecot yazilimlarina sahipsiniz. Rehberi olustururken anlatmayi tasarladigim programlardan geriye tek bir tane kaliyor SquirrelMail.
Ubuntu kurulumu Türkçe / SquirrelMail Kurulumu
Depodan SquirrelMail icin gerekli paketler su komutla kurulur.
1 | sudo apt-get install squirrelmail |
Yapilandirma icin su komut verilir.
1 | sudo squirrelmail-configure |
Bizi asagidaki gibi bir ekran karsilar.
Dilimize cevirirsek;
1. Kurum Tercihleri
2. Sunucu Ayarlari
3. Klasor Varsayilanlari
4. Genel Secenekler
5. Temalar
6. Adres Defterleri
7. Gunun Mesaji
8. Eklentiler
9. Veritabani
10. Diller
1 komutunu verdigimizde su ekrani goruruz.
Eger degistirmek istedigimiz bir kisim varsa ilgili numaraya basip gelen kisimdan yeni degerini verebiliriz. Mesala Organization Name’i degistirelim. 1 tusuna basiyoruz. Karsimiza soyle bir ekran gelecek.
Bu ekranda iki noktadan sonra imlecimizin bulundugu yere Ornek Sirket yazip enter’a basiyoruz. Simdi Organization Name’in degistigini gorebiliriz. R tusu ile ana menuye donelim. 2 numarali menuye gidip
1 2 | A. Update IMAP Settings : localhost:143 (other) B. Update SMTP Settings : localhost:25 |
ayarlarinin bu sekilde olduguna emin olalim. Daha sonra R tusu ile geri donelim. S ile yaptigimiz degisiklikleri kaydettikten sonra Q tusu ile yapilandirmadan cikalim.
Simdi Apache’yi SquirrelMail’i sunacak sekilde ayarlamamiz gerekiyor. Ornek dosyayi kopyalayalim.
1 | sudo cp /etc/squirrelmail/apache.conf /etc/apache2/sites-available/squirrelmail |
Simdi sayfayi aktive edelim.
1 | a2ensite squirrelmail |
Asagidaki komutla Apache’yi yeniden baslattiktan sonra http://IP_adresimiz/squirrelmail e gidersek web arayuzumuze ulasmis olacagiz.
1 | sudo service apache2 restart |
Ubuntu kurulumu şimdi giris yapip daha once gonderdigimiz postayi web arayuzunden de okuyabiliriz. Giris yaparken posta adresimizi @ isaretinden sonraki kisim ile birlikte yazmamiz gerekiyor cunku domainlerimizi MySQL uzerinde yaratmistik. Yani hangi domain’e ulasacagini bilmeli SquirrelMail [Ubuntu kurulumu].
Boylece bu rehberin sonuna geldik. Isinize yaramasi dilegiyle. Bu makale aşağıda ki terimlerin gereksinimlerini karşılamak için hazırlanmıştır;
Ubuntu kurulumu mysql kurulumu postfix kurulumu squirrelmail kurulumu dovecot kurulumu ubuntu server kurulumu ubuntu kurulumu resimli ubuntu kurulumu resimli anlatım |
ubuntu 10.10 kurulumu usb ubuntu kurulumu ubuntu usb kurulumu mysql kurulumu resimli mysql server kurulumu linux ubuntu kurulumu php apache mysql kurulumu windows 7 mysql kurulumu |
ubuntu vmware kurulumu vmware Ubuntu kurulumu ubuntu java kurulumu ubuntu apache kurulumu ubuntu 10.04 kurulumu mysql kurulumu resimli anlatım ubuntu webmin kurulumu ubuntu 10.10 kurulumu resimli anlatım |
ubuntu lamp kurulumu ubuntu server kurulumu resimli freebsd mysql kurulumu ubuntu kde kurulumu ubuntu mail server kurulumu Apache Postfix Dovecot |
Ubuntu kurulumu Türkçe (Apache/MySQL sunucu kurulum)
* Hostname: Makinanizi agda tanimlamak icin verdiginiz isimdir. Istediginiz herhangi bir isimi kullanabilirsiniz, bu windows 8 sunucularda da aynı olabilmekte..
** LVM (Logical Volume Manager): Sisteminizde dinamik olarak boyutlandirma yapmaniza izin veren bir yontemdir. Ornegimizde 10.5 GB kapasiteli bir diskin 8 GB’ini kullanacak sekilde ayarlayip, 2GB’i daha sonradan ihtiyac olursa kullanmak uzere su anda baska bir sistemin deposu olarak kullaniyorum. LVM ile bicimlendirme yapmak zorunda degilsiniz fakat ogrenmenizi tavsiye ederim.
*** Sisteminize baska birinin erisimi ya da dosyalarinizin biri tarafindan calinmasi halinde, saldirganin belgelerinizi okuyamamasi icin dosyalariniz sifrelemeniz onerilir.
**** GRUB bir acilis yukleyicisidir. Eger makinanizda baska isletim sistemlerini acan herhangi bir acilis yukleyici varsa bu asamada GRUB’i yuklememeyi secebilirsiniz. [“Ubuntu kurulumu”] Eger sabit diskinizde kurulu olacak olan sistem sadece su anda kurulumunu yaptiginiz Ubuntu olacak ise diskinizin bilgisayar acilirken ilk bakilan yeri olan MBR (Master Boot Record) kismina GRUB’i yukleyerek Ubuntu’yu acmak icin nereye bakmasi gerektigini soylemis olursunuz.
***** Burada yaptigimiz ayarlarin Ubuntu kurulumu detaylarini Postfix dokumanlarindan ogrenebilirsiniz.
Bir cevap yazın