[Nasıl] 10.04 LTS, Apache, MySQL, PHP5, Postfix, Dovecot, SquirrelMail Kurulumu

Başlatan cagriemer, 08 Temmuz 2011 - 14:09:03

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

cagriemer

Bu belgede, sifir bir sisteme nasil Ubuntu 10.04 Sunucu Surumu yuklenecegi, sunucunun uzaktan nasil yonetilebilecegi ve LAMP olarak yapilandirilmasinin nasil yapildigi anlatildiktan sonra, e-posta alip gonderme islevlerini yerine getirmesi icin kurulmasi gereken yazilimlarin nasil kurulup ayarlanacagi tarif edilecektir. Posta aktarma vekili (MTA) olarak Postfix, POP3 ve IMAP sunucusu olarak Dovecot ve alan adlari ve kullanicilari tutmak icin de MySQL veritabani secilmistir. Posta kullanicilarinin hizmeti web arayuzunden kullanabilmelerine olanak taniyan yazilimlardan biri olan SquirrelMail'in kurulumu ve konfigurasyonu ile anlatim tamamlanacaktir. Kurulumda sadece OpenSSH paketi yuklenmis. Gerekli olan tum diger kurulumlar baska bir bilgisayar uzerinden SSH araciligi ile yapilmistir. Siz yerelde de ayni islemleri gerceklestirebilirsiniz. O sartlarda SSH anahtari olusturmak kisisel tercihinize kalmistir.

Ilk olarak programlarin ne ise yaradiklarindan bahsedelim. Apache ve PHP'yi muhtemelen daha once duymusuzdur. Duymamis olabileceklerimizi kisaca aciklayalim.

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 sayfasindan 10.04.2 64 bit sunucu versiyonun kalibi indirilip bir CD'ye yazilir. 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.



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.

ifconfig

Bizi asagidaki gibi bir ekran karsilar. Bu ekranda IP adresimizi gorebiliriz.



26) Ikinci yapmamiz gereken is guncelleme olup olmadigini kontrol etmek, eger varsa gerekli guncellemeleri yapmaktir. Bunun icin su komutlar verilir.

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.

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.

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.

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.

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.

ssh-copy-id -i ~/.ssh/id_rsa.pub siradan@192.168.1.9

Yukaridaki komutta siradan@192.168.1.9 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.

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.

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.

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. 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.

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.

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.

Apache Kurulumu

Sirasiyla asagidaki komutlar verilir ve dosyalardaki ilgili degisiklikler yapilir.

sudo apt-get install apache2
sudo nano /etc/apache2/ports.conf


Acilan dosyada NameVirtualHost un yanindaki * silinerek IP adresi yazilir.

sudo nano /etc/apache2/sites-available/default

Acilan dosyada NameVirtualHost un yanindaki * silinerek IP adresi yazilir

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.

<VirtualHost 192.168.1.9:80>
     ServerAdmin webmaster@ornek.com
     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.

sudo mkdir -p /srv/www/ornek.com/public_html/
sudo mkdir  /srv/www/ornek.com/logs/


Simdi Apache sunucumuzu yeniden baslatabiliriz.

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.

MySQL Kurulumu

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.

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.

mysql -u root -p

Simdi sirayla asagidaki kodlari girelim.

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.

quit

PHP Kurulumu

Asagidaki komut ile gerekli paketler yuklenir.

sudo apt-get install php5 php-pear

Simdi asagidaki komutla PHP ayar dosyasini acip bazi ayarlari yapacagiz.

sudo nano /etc/php5/apache2/php.ini

Bu dosyada tavsiye edilen ayarlar aksi gerekceleriniz olmadikca su sekildedir.

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.

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.

<?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.

netstat -tapln

Tebrikler LAMP sunucunuz oldu.

E-Posta Sunucu


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

mysql -u root -p

komutunu verip root sifremizi girdikten sonra MySQL komut satirina dusuyoruz. Simdi bir mail veritabani yaratacagiz.


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.


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.

CREATE TABLE domains (domain varchar(50) NOT NULL, PRIMARY KEY (domain) );

Forwarding tablosunu yaratiyoruz.

CREATE TABLE forwardings (source varchar(80) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source) );

Kullanicilarin tutuldugu tablo icin;

CREATE TABLE users (email varchar(80) NOT NULL, password varchar(20), NOT NULL, PRIMARY KEY (EMAIL) );

MySQL komut arayuzunden cikmak icin quit komutunu veriyoruz.

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.

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.

sudo nano /etc/postfix/mysql-virtual_domains.cf

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.

sudo nano /etc/postfix/mysql-virtual_forwardings.cf

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.

sudo nano /etc/postfix/mysql-virtual_mailboxes.cf

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

sudo nano /etc/postfix/mysql-virtual_email2email.cf

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.

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.

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.*****

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.

cd /etc/postfix

sudo openssl req -new -outform PEM -out smtpd.cert -newkey rsa:2048 -nodes -keyout smtpd.key -keyform PEM -days 365 -x509

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 []:admin@ornek.com


Seklinde bir sertifika olusturacagiz. Ilgili kisimlari size uyan degerlerle degistirebilirsiniz. Simdi izinleri yeniden yazalim.
sudo chmod o= /etc/postfix/smtpd.key

saslauthd'yi MySQL Kullanacak Sekilde Ayarlamak

Once dizinimizi olusturalim.

sudo mkdir -p /var/spool/postfix/var/run/saslauthd

Simdi yapilandirma dosyasinin bir yedegini alalim.

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.

sudo nano /etc/default/saslauthd

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.

sudo nano /etc/pam.d/smtp

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


sudo nano /etc/postfix/sasl/smtpd.conf

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

sudo chmod o= /etc/pam.d/smtp
sudo chmod o= /etc/postfix/sasl/smtpd.conf


Postfix kullanicisi icin gereken islemleri yapalim.

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.

sudo nano /etc/postfix/master.cf

dovecot   unix  -       n       n       -       -       pipe
    flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient}


Simdi dovecot yapilandirma dosyasinin bir yedegini aliyoruz.

sudo cp -a /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.bak

Yedegini aldigimiza gore dosyanin orijinalini silebiliriz.

sudo rm /etc/dovecot/dovecot.conf

Simdi ayni dosyayi kendi sistemimize gore tekrar yaratacagiz. ornek.com ile olan yerleri kendinize gore degistirin.

sudo nano /etc/dovecot/dovecot.conf

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 = postmaster@ornek.com
    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.

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.

sudo rm /etc/dovecot/dovecot-sql.conf

sudo nano /etc/dovecot/dovecot-sql.conf

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.

sudo service dovecot restart

Simdi Dovecot hata vermis mi kontrol etmek icin log dosyasini kontrol edelim.

sudo tail -n 2 /var/log/mail.log

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.

sudo chgrp vmail /etc/dovecot/dovecot.conf
sudo chmod g+r /etc/dovecot/dovecot.conf


Simdi POP3 sunucumuzu test edebiliriz.

telnet localhost pop3

Bize soyle bir cikti dondurecek

Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
+OK Dovecot ready.


quit yazarak baglantiyi kapatiyoruz.

quit
+OK Logging out
Connection closed by foreign host.


Posta Lakaplari

ornek.com'u kendi isminizle degistirmeniz gerekiyor.

sudo nano /etc/aliases

postmaster: root
root: postmaster@ornek.com


Simdi yeniden baslatalim

sudo newaliases
sudo service postfix restart


Postfix'i Test Etme

telnet localhost 25

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.

ehlo localhost

Bize asagidakine benzer bir cikti dondurecek.

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.

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

mysql -u root -p

Asagidaki kayitlardaki ornek.com'u e-posta adresini ve sifreyi kendinize gore degistirmelisiniz.

INSERT INTO domains (domain) VALUES ('ornek.com');
INSERT INTO users (email, password) VALUES ('admin@ornek.com', ENCRYPT('COKGIZLISIFRE'));


quit

Az once admin@ornek.com kullanicisini olusturduk.  Kullaniciyi aktif hale getirmek icin bir adet posta yollamaliyiz.

mailx admin@ornek.com

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.

sudo tail -n 5 /var/log/mail.log

Asagidakine benzer bir cikti gormelisiniz.

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=<20110709073212.E740A5EF6A@titania.ornek.com>
Jul  9 17:32:12 titania postfix/qmgr[2514]: E740A5EF6A: from=<siradan@titania.ornek.com>, size=374, nrcpt=1 (queue active)
Jul  9 17:32:13 titania postfix/pipe[2530]: E740A5EF6A: to=<admin@ornek.com>, 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.

sudo tail -n 2 /home/vmail/dovecot-deliver.log

2011-07-09 17:32:13 deliver(admin@ornek.com): Info: msgid=<20110709073212.E740A5EF6A@titania.ornek.com>: 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.

sudo su

Simdi dizinimizi postalarin tutuldugu dizin olarak degistiriyoruz.

cd /home/vmail/ornek.com/admin/Maildir

find

find komutu bize asagidakine benzer bir cikti vermeli.

.
./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.

apt-get install mutt

(sudo yazmadik cunku hala root'uz)

mutt kurulduktan sonra postamizi okumak icin su komutu veriyoruz;

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 admin@ornek.com hesabini yarattik. Lakin bize posta gondermek isteyen biri yanlislikla admni@ornek.com adresine gonderirse sunucumuz kendisine oyle bir posta hesabi olmadigini soyleyecektir. Iste bunu engellemek icin @ornek.com'a gelen butun mailleri admin@ornek.com'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.

mysql -u root -p

Simdi sirayla asagidaki komutlari veriyoruz.

USE mail;
INSERT INTO forwardings (source, destination) VALUES ('@ornek.com', 'admin@ornek.com');
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.

SquirrelMail Kurulumu

Depodan SquirrelMail icin gerekli paketler su komutla kurulur.

sudo apt-get install squirrelmail

Yapilandirma icin su komut verilir.

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

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.

sudo cp /etc/squirrelmail/apache.conf /etc/apache2/sites-available/squirrelmail

Simdi sayfayi aktive edelim.

a2ensite squirrelmail

Asagidaki komutla Apache'yi yeniden baslattiktan sonra http://IP_adresimiz/squirrelmail e gidersek web arayuzumuze ulasmis olacagiz.

sudo service apache2 restart



Simdi 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.



Boylece bu rehberin sonuna geldik. Isinize yaramasi dilegiyle.

* Hostname: Makinanizi agda tanimlamak icin verdiginiz isimdir. Istediginiz herhangi bir isimi kullanabilirsiniz.

** LVM (Logical Volume Manager): Sisteminizde dinamik olarak boyutlandirma yapmaniza izin veren bir yontemdir. Daha fazla bilgi icin http://goo.gl/I5AP7 adresine bakabilirsiniz. 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. 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 detaylarini Postfix dokumanlarindan ogrenebilirsiniz.

sem

Elinize sağlık...

Öyle bir belge olmuş ki, sunucu ile falan alakam yok fakat belge tamamlandığında deneyeceğim sanırım, öyle bir belge olmuş...
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

heartsmagic

Bu konularda Türkçe kaynağımız çok az, yavaş yavaş da olsa böyle belgeleri görmek sevindirici.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

cagriemer

Alıntı yapılan: sem0900 - 08 Temmuz 2011 - 14:11:02
Elinize sağlık...

Öyle bir belge olmuş ki, sunucu ile falan alakam yok fakat belge tamamlandığında deneyeceğim sanırım, öyle bir belge olmuş...

Tesekkur ederim. Umarim ilk testcilerden biri olarak bir problem yasamazsiniz denediginizde :) Gerci yasarsaniz da testciligin manasi o degil mi zaten?

Alıntı yapılan: heartsmagic - 08 Temmuz 2011 - 14:21:05
Bu konularda Türkçe kaynağımız çok az, yavaş yavaş da olsa böyle belgeleri görmek sevindirici.

Sıkıntı deneme imkanimizin olmamasindan kaynaklaniyor diye dusunuyorum. Bir gonullunun kendi evinde, kendi olanaklariyla ag ortami yaratmasi cok kolay bir sey degil. Dolayisiyla sunucu kisminda belge uretimi eksik kaliyor cunku yazmaya gonullu olan kisi deneyecek ortami bulamiyor. Bir de tabii ki kolaya kacma var. Isini yabanci kaynaklardan goren, "Tamam ben problemimi hallettim baskasina yardimci olmasam da olur." diye dusunuyor. Ya da oyle dusunmuyor da belgelemesi zor geliyor. Gerci sunucu tarafinda yabanci kaynak sikintisi oldugu da bir gercek. Olanlarin da ne kadar nitelikli oldugu tartismaya acik. Neyse, daha da uzatmadan sonlandirayim. Umarim ihtiyaci olan bir kisiye yardimci olur.

bytan

Dolu dolu bir belge olmuş. Son cümlelerini okuyunca, gönüllü gerçekten bu işe gönüllü olunca her şeyi yapar.
Umut en büyük kötülüktür; işkenceyi uzatır. - F.N.


Bir şey ne ise odur, bu kadar. Öyleyse, iki şey arasında bağdaşıklık varsa, bu aralarında iletişim kuruyorlar demek değildir.
"... kavrayışını bilgi ile derinleştir ..."
PF @ ST

heartsmagic

Devamı o kadar güzel gelmiş ki :) Ben baktığımda bu kadar dolu dolu değildi.
@cagriemer, söylediklerinde sonuna kadar haklısın. Sorun bizlerin de deneme imkânının pek olmaması. Hani ufak tefek şeyleri, uygulamaları, derlemeleri deneyebiliyoruz da mesele sunucu uygulamalarına gelince ne yazık ki o imkân pek olmuyor. Zira ne ortam aynı ne de şartlar, denesek de bin türlü farklılık çıkacaktır ortaya. Kaldı ki sunucu uygulamaları başlı başına bir mesele, denemesi de çok zor.

Tekrar belirteyim, bu türden belgelendirmeler cidden beni çok sevindiriyor. @bytan'ın da ikinci cümlesi çok manidar olmuş.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

Felâsife

Olayın sunucu yönüyle çok ilgim olmamakla beraber, belgenin ihtişamını görünce cagriemer'e bir teşekkürde benden gelsin.  :)

Gönül sen nelere kadirsin  :D
Maceraya hazır mısın!  Bir BSD almaz mısın?

Al Arabi

Belgenin tamamını okumadım. Umarım birden fazla site yayınına değinmişsinizdir. Yarın tamamını okuyacağım. İlgilendiğim bir konu. Elinize sağlık.

cagriemer

Alıntı yapılan: Felâsife - 06 Eylül 2011 - 04:48:54
Olayın sunucu yönüyle çok ilgim olmamakla beraber, belgenin ihtişamını görünce cagriemer'e bir teşekkürde benden gelsin.  :)

Gönül sen nelere kadirsin  :D

Sagolun. Umarim birilerinin isine yarar bir belge olmustur.

Alıntı yapılan: Al Arabi - 06 Eylül 2011 - 06:40:51
Belgenin tamamını okumadım. Umarım birden fazla site yayınına değinmişsinizdir. Yarın tamamını okuyacağım. İlgilendiğim bir konu. Elinize sağlık.

VirtualHost konusuna deginmemistim aslinda ama bir problem yasarsaniz kurulum esnasinda, buraya ornek ayar dosyalari koyabilirim.

Al Arabi

Alıntı yapılan: cagriemer - 06 Eylül 2011 - 06:49:25

VirtualHost konusuna deginmemistim aslinda ama bir problem yasarsaniz kurulum esnasinda, buraya ornek ayar dosyalari koyabilirim.


Bir iki örnek olsa mükemmel olur.

cagriemer

Ornek bir apache2.conf dosyasi. # ile baslayan satirlari anlasilmasi kolay olsun diye sildim.


ServerRoot "/etc/apache2"

LockFile /var/lock/apache2/accept.lock

PidFile ${APACHE_PID_FILE}

Timeout 300

KeepAlive On

MaxKeepAliveRequests 100

KeepAliveTimeout 15


<IfModule mpm_prefork_module>
    StartServers          5
    MinSpareServers       5
    MaxSpareServers      10
    MaxClients          150
    MaxRequestsPerChild   0
</IfModule>

<IfModule mpm_worker_module>
    StartServers          2
    MinSpareThreads      25
    MaxSpareThreads      75
    ThreadLimit          64
    ThreadsPerChild      25
    MaxClients          150
    MaxRequestsPerChild   0
</IfModule>

<IfModule mpm_event_module>
    StartServers          2
    MaxClients          150
    MinSpareThreads      25
    MaxSpareThreads      75
    ThreadLimit          64
    ThreadsPerChild      25
    MaxRequestsPerChild   0
</IfModule>

User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}


AccessFileName .htaccess

<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
    Satisfy all
</Files>

DefaultType text/plain


HostnameLookups Off

ErrorLog /var/log/apache2/error.log

LogLevel warn

Include /etc/apache2/mods-enabled/*.load
Include /etc/apache2/mods-enabled/*.conf

Include /etc/apache2/httpd.conf

Include /etc/apache2/ports.conf

LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent

CustomLog /var/log/apache2/other_vhosts_access.log vhost_combined



Include /etc/apache2/conf.d/

Include /etc/apache2/sites-enabled/


Simdi elimizde iki tane site olsun ornek1.com ve ornek2.com diye. Bunlari da ayni IP uzerinden yayinlayacak olalim.

Oncelikle /etc/apache2/sites-available altinda iki site icin de ayar dosyalarini olusturacagiz.

sudo nano ornek1.com

<VirtualHost IP:Port>
        ServerAdmin yonetim@ornek1.com
        ServerName ornek1.com
        ServerAlias www.ornek1.com
        DocumentRoot /srv/www/ornek1.com/public_html/
        ErrorLog /srv/www/ornek1.com/logs/error.log
        CustomLog /srv/www/ornek1.com/logs/access.log combined
</VirtualHost>


sudo nano ornek2.com

<VirtualHost IP:Port>
        ServerAdmin yonetim@ornek2.com
        ServerName ornek2.com
        ServerAlias www.ornek2.com
        DocumentRoot /srv/www/ornek2.com/public_html/
        ErrorLog /srv/www/ornek2.com/logs/error.log
        CustomLog /srv/www/ornek2.com/logs/access.log combined
</VirtualHost>


Ben site icerigini /srv/www/site-adi/public_html/ altinda, hata kayitlarini da /srv/www/site-adi/logs/ altinda tutmayi tercih ediyorum. Siz kendi durumunuza gore bu dizin yollarini degistirmelisiniz. Diger kisimlar oldukca acik zaten. IP:Port tanimini degistirmeyi unutmayin yeterli. Bu islem bittikten sonra eger apache'nin okuyacagi bu dizinler mevcut degilse, olusturuyoruz ki hata vermesin. Daha sonra,

sudo a2ensite ornek1.com
sudo a2ensite ornek2.com


komutlariyla iki adresimizi de etkinlestirip,

sudo service apache2 restart

komutu ile apache'yi yeniden baslatiyoruz. Eger DNS kayitlariniz dogru sekilde ayarlandiysa, su anda iki siteyi ayni IP uzerinden sunuyorsunuz.

Bir de cok basit bir dns zone dosyasi vereyim ornek1.com adresi icin.

; ornek1.com [227870]
$TTL 86400
@ IN SOA ns1.isimsunucu.com. yonetim.ornek1.com. 2011090601 14400 14400 1209600 86400
@ NS ns1.isimsunucu.com.
@ NS ns2.isimsunucu.com.
@ NS ns3.isimsunucu.com.
@ NS ns4.isimsunucu.com.
@ NS ns5.isimsunucu.com.
@ MX 10 mail.ornek1.com.
@ A SUNUCUNUN_IP_ADRESI
mail A SUNUCUNUN IP ADRESI
www         A SUNUCUNUN IP ADRESI


Gordugunuz gibi cok basit A kayitlari var sadece. Kullandiginiz DNS sunucuya bu sekilde bir kayit vermeniz gerekiyor ki siteleriniz disaridan ulasilabilir olsunlar.

sem

Bu başlıkta yazarımız geliyorum demiş aslında =)

Bu arada artık deneme zamanım geldi =) Zaman bulduğumda değil de zaman yaratıp yine denmem lazım... Yakından alakalı olmam gereken konular oldular artık....

O nedenle teşekkür ederek favorilerime ekliyorum...
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

yakusha

çok hoş bir makale olmuş; mail server kurulumu meselesini tek celsede halletmiş...

gmail ile olan mail birlikteliğimize artık boşol diyoruz :) Yeni sözleşmeymiş falan hepsi palavra, özgürlüğe geçişe devam.
Artık bu forumu kullanmıyor.


zeusmaster

Bilgisizliğin ne kadar zor bir şey olduğunu bir kez daha anladım :(
Sorum ya da aslında yapmak istediğim şey bir e-posta listesi oluşturmak. Bir internet adresim var (Okulun sağladığı,kendi sunucusu üzerinde ve sadece ftp ile dosyaları atabildiğim) ve bir adet laboratuvarda sabit ip li bir makine. Ben posta sunucusunu ve mailman'i sabit ip li makineye kurabilir miyim? Bu internet sitesinin saklandığı sunucu üzerinde bir değişiklik yapmam gerekir mi? Cidden çok cahilce bir soru olabilir kusura bakmayın.
Up and Running...

if

@bahdem, yapabilmeniz gerek. Önce Postfix ve mailman kurmanız yeterli sanırım. Kısıtlı bilgimle cevap verdiğimi unutmayınız.

https://help.ubuntu.com/12.04/serverguide/email-services.html

cagriemer

Sadece FTP hesabi ile Mailman kurulumu yapmak pek mumkun degil. Listeleri olusturmak, yonetmek icin ucbirime ihtiyac duyabiliyorsunuz. Hem Apache'nin ayarlariyla oynamaniz gerekecek bir noktada. Zaten sunucu sadece size ait degilse MTA (ornegin postfix) kurulumundan bilgi islem pek memnun kalmayacaktir.

burhan3347

bende ilk defa kurmaya çalışıyorum ama sürekli hata alıyorum  :'(

heartsmagic

Hataları aktarmazsan sana yardımcı olamayız. Ancak, senin başka bir konun var oradan devam edebiliriz konuşmaya.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

smt_smt

Merhaba, benim yüklememde sorunlarla karşılaşıyorum
Mesela :
mail.log'da aşağıda bold yaptığım  satır için hata veriyor:
protocol lda {
    log_path = /home/vmail/dovecot-deliver.log
    auth_socket_path = /var/run/dovecot/auth-master
    postmaster_address = postmaster@ornek.com
    mail_plugins = sieve
   [b]global_script_path = /home/vmail/globalsieverc[/b]
}


2. )
cd /home/vmail/ornek.com/admin/Maildir
no such file/directory
hatası veriyor. zaten vmailin altında bi klasör de bende yok.



not:
mta sanırım çalıışyor çünkü mail komutu ile mail gönderebiliyorum root kullanıcısından. yani gönderen root@hostname  şeklinde görünüyor

heartsmagic

Öncelikle, ilgili anlatımdaki ornek.com gibi ifadeleri kendine göre düzenlemen gerekiyor. Onlar, adı üzerinde, sadece birer örnek. Yapılandırmada nasıl bir düzen istiyorsan ona göre kendin ayarlamaları yapmalısın. Kullanacağın dizinler, isimleri vs. sana bağlı.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

teknick

Alıntı yapılan: smt_smt - 09 Aralık 2013 - 21:29:13
Merhaba, benim yüklememde sorunlarla karşılaşıyorum
Mesela :
mail.log'da aşağıda bold yaptığım  satır için hata veriyor:
protocol lda {
    log_path = /home/vmail/dovecot-deliver.log
    auth_socket_path = /var/run/dovecot/auth-master
    postmaster_address = postmaster@ornek.com
    mail_plugins = sieve
   global_script_path = /home/vmail/globalsieverc
}

2. )
cd /home/vmail/ornek.com/admin/Maildir
no such file/directory hatası veriyor. zaten vmailin altında bi klasör de bende yok.



not:
mta sanırım çalıışyor çünkü mail komutu ile mail gönderebiliyorum root kullanıcısından. yani gönderen root@hostname  şeklinde görünüyor


Bu mesaj yazılalı 2.5 sene olmuş smt_smt versiyon farkından dolayı bu şekilde daha yeni bir kaynak lazım şuanda bu güzelim yazının bu şekilde uygulanabilirliği malesef yok.
çoğu ingilizce kurulumda bile sorun çıkıyor.
sorunsuz birtane bulursam haber veririm.
Ubuntuyu Cok Seviyorum...


Murat Erdemir

Merhaba arkadaşlar. Ubuntu 12.04.03 kurdum ve aşağıdaki alanlarda takıldım. Sorun var mı yok mu sormak istedim.

Simdi Dovecot hata vermis mi kontrol etmek icin log dosyasini kontrol edelim.

Buradaki çıktı bende böyle verdi :

root@ghsweb:/etc/postfix# tail -n 2 /var/log/mail.logFeb 26 14:33:25 ghsweb dovecot: log: Warning: Killed with signal 15 (by pid=1 uid=0 code=kill)Feb 26 14:33:25 ghsweb dovecot: master: Warning: Killed with signal 15 (by pid=1 uid=0 code=kill) 

Bir de :

Simdi POP3 sunucumuzu test edebiliriz.çıktısı :

Trying 127.0.0.1...telnet: Unable to connect to remote host: Connection refused
Intel Core 2 Quad Q9300
Gigabyte EP45C-DS3R
Nvidia GeForce 9600 GT
Kingstone DDR2 6 GB
500 GB HDD

heartsmagic

Bu konuda fazlaca tecrübem olmasa da eğer Dovecot'a ait çıktı o kadarsa sorun var demektir. "Dovecot starting up" vardır üstteki çıktılarda ancak altta sorun vermiş. Yapılandırma dosyasını okurken sürekli sonlandırıldığını söylemiş birileri bu durumda. Kısacası biraz daha kayıt dosyalarını kurcalamak gerekebilir. POP3 için de sorun var gibi, Telnet ile ilgili port üzerinden olumlu sonuç alamamış gibisin.

grep dovecot /var/log/syslog

ne diyor?

Ayrıca, tüm yapılandırma dosyalarını buraya geç ki gerek @cagriemer, gerek başka bir anlayan yorum yapabilsin.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.