Postfix ve Dovecot'u MySQL Yetkilendirmesi Ile Calistirmak

From Lapis Wiki

Jump to: navigation, search
Fedora Core Linux
Fedora Core Linux
Bu makale NASIL bölümü serisinin bir parçasıdır
MasaÜstü Donanım Dağıtımlar
Tarayıcılar Programlama Linux ve Oyunlar

Konu başlıkları

Giris

Bu belgenin hazirlanis amaci posta sunucularinda yetkilendirme amacli kullanilan standart linux kullanicilari yerine mysql veritabanini kullanmak ve anti-virus ve spam engelleyici programlarla posta sunucunuzun guclendirilmesidir. Posta sunuculari icin yetkilendirme amacli mysql kullanmanin baslica avantajlari:

 1. Kabuk guvenligi,
 2. Kullanici uzerine daha cok bilgi barindirabilme,
 3. Makineye bagli limitsiz kullanici olusturabilmedir

Asagidaki ayarlar benim sistemimde olusturdugum vmail kullanici icin yapilmistir. Bu yuzden oncelikle bu kullaniciyi asagidaki komutla olusturmaniz gerekiyor:

 adduser vmail

Eger isterseniz vmail yerine farkli bir kullanici yaratip asagidaki ayar dosyalarini bu kullaniciya gore duzenleyebilirsiniz.

SASL ile MySQL kullanmak icin cyrus-sasl-sql paketinin sisteminizde yuklu olduguna emin olun. Eger yoksa yum ile kolayca yukleyebilirsiniz.

 yum install cyrus-sasl-sql
 NOT: Bu bolum NASIL: Fedora Core 4 Altinda Postfix Dovecot SASL Kurulumu makalesinde anlatilan temel Postfix, Dovecot ve CyrusSASL kurulumlarini yaptiginizi varsaymaktadir.

Postfix Ayarlari

Fedora icin standart olarak rpm paketleri varsayilan olarak mysql yetkilendirmesini desteklememektedir. Bunun icin yapmamiz gereken Postfix'in kaynak rpm dosyasinin icinden MYSQL destegini acik hale getirmektir. Bunun icin en son Postfix Kaynak RPM dosyasini sisteminize indirin ve

 rpm ivh postfix.x.src.rpm
 cd /usr/src/redhat/SPECS/
 vi postfix.spec

postfix.spec dosyasinin icinde "%define MYSQL 0" satirini bulun ve bunu "%define MYSQL 1" olacak sekilde degistirin. Simdi yapmamiz gereken kaynak rpm dosyasini yeniden derlemek ve sistemimize kurmak. Bunun icin asagidaki komutlari kullanabilirsiniz.

 rpmbuild -ba postfix.spec
 cd /usr/src/redhat/RPMS/i386/
 rpm -ivh postfix.x.rpm

Daha onceki Postfix kurulumunda yaptigimiz /etc/postfix/main.cf dosyasindaki smtpd_recipient_restrictions kismini asagidaki satir ile degistirelim,

 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_hostname, reject_non_fqdn_sender, reject_non_fqdn_recipient, reject_unauth_destination, reject_unauth_pipelining, reject_invalid_hostname

ve asagidaki satiri da ekleyelim,

 smtpd_sasl_local_domain = $myhostname

/etc/postfix/main.cf dosyasinda yapacagimiz son degisiklik MySQL yetkilendirmesini tanitmak icin asagidaki satirlari dosyanin en sonuna eklemek,

 virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
 virtual_gid_maps = static:87
 virtual_mailbox_base = /home/vmail
 virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
 virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
 virtual_minimum_uid = 87
 virtual_transport = virtual
 virtual_uid_maps = static:87


Postfix Ayarları 2

/etc/postfix/main.cf dosyasının sonuna yazdigimiz virtual kurallarinda belirtilmis dosyalari yaratalim.

mysql_virtual_alias_maps.cf

 user = postfix
 password = postfix
 hosts = localhost
 dbname = postfix
 table = alias
 select_field = goto
 where_field = address

mysql_virtual_domains_maps.cf

 user = postfix
 password = postfix
 hosts = localhost
 dbname = postfix
 table = domain
 select_field = domain
 where_field = domain
 additional_conditions = and backupmx = '0' and active = '1'

mysql_virtual_mailbox_maps.cf

 user = postfix
 password = postfix
 hosts = localhost
 dbname = postfix
 table = mailbox
 select_field = maildir
 where_field = username


Dovecot Ayarları

/etc/dovecot-mysql.conf adinda bir dosya olusturun ve icine sunlari yazin:

 db_host = 127.0.0.1
 db_port = 3306
 db = postfix
 db_user = postfix
 db_passwd = postfix
 db_client_flags = 0
 default_pass_scheme = PLAIN
 password_query = SELECT password FROM mailbox WHERE username = '%u'
 user_query = SELECT maildir, 87 AS uid, 87 AS gid FROM mailbox WHERE username = '%u'

/etc/dovecot.conf dosyasinin icinde su satirlarin varligini kontrol edin. Olmayanlari siz yazin, farkli olanlari degistirin:

 auth_userdb = mysql /etc/dovecot/dovecot-mysql.conf
 auth_passdb = mysql /etc/dovecot/dovecot-mysql.conf
 first_valid_uid = 87
 default_mail_env = maildir:/home/vmail/%d/%n


Diger Ayarlar

Yukaridaki ayarlari yaptiysaniz sira geldi bir kullanici olusturmaya. Su ana yaptigimiz tum ayarlamalar vmail kullanicisi uzerineydi, eger farkli bir kullanici uzerine islem yapmak istiyorsaniz yukarida vmail gordugunuz yerlere kendi kullanicinizi yaziniz. Ayrica 106 gordugunuz tum yerleri sisteminizde bulunan postfix kullanicisinin id'si ile degistirmeniz gerekli. test kullanicisini asagidaki komutlarla olusturalim:

 mkdir -p /home/vmail/domain_adiniz.com/test
 chmod -R 770 /home/vmail
 chown -R postfix:postfix /home/vmail/

SASL icin de MySQL yetkilendirmesini aktif hale getirelim. Bunun icin /usr/lib/sasl2/smtpd.conf dosyasina asagidaki satirlari yerlestirmemiz yeterli olacaktir. Eger daha onceden bu dosyada ayarlar varsa onlari yorum haline getirmeniz sistemin duzgun calismasi acisindan yararli olacaktir.

 pwcheck_method: auxprop
 mech_list: PLAIN LOGIN
 auxprop_plugin: sql
 sql_verbose: yes
 sql_engine: mysql
 sql_hostnames: localhost
 sql_user: postfix
 sql_passwd: postfix
 sql_database: postfix
 sql_select: select password from mailbox where username = '%u@%r'

Veritabani Semasi

Anlatilan tum ayarlar PostfixAdmin MySQL veritabani semasi uzerine kurulmustur. Bunun icin PostfixAdmin'in sitesinden kurulum dosyasini indirip, sikistirilmis dosya icerisindeki DATABASE_MYSQL.TXT dump dosyasini asagidaki komutla MySQL'e aktarmaniz gerekli:

 mysql -u root -p < DATABASE_MYSQL.TXT


Yeni Kullanici Olusturma

Yeni kullanici olusturmak icin en kolay yontem PostfixAdmin kullanmaktir. PostfixAdmin'i kullanarak sisteminizde kolaylikla yeni domain tanimlayabilir, takma ad olusturabilir ve kullanici yaratabilirsiniz. Tabi bunun icin posta sunucusu kurulu sistemlerinizde eger kurulu degilse bir web sunucusu kurmaniz gerekiyor. Veritabani Semasi bolumunde gerekli veritabani altyapisini olusturmak icin zaten PostfixAdmin'i indirmistik. Simdi PostfixAdmin kurulumunu yapalim. Oncelikle yapmamiz gereken PostfixAdmin'i web sunucu uzerinde herhangi bir tarayici ile erisebilecegimiz klasore aktaralim. Ornegin /var/www/html/postfixadmin. Daha sonra klasorun icerisindeki config.inc.php.sample dosyasinin adini config.inc.php olarak degistirelim:

 mv config.inc.php.sample config.inc.php

config.inc.php dosyasinin icinde "change-this-to-your.domain.tld" yazan yerleri "domain_adiniz.com" olacak sekilde degistirin. En son olarak asagida belirtilen degiskenleri karsisindaki degerlerle degistirin:

 $CONF['domain_path'] = 'YES';
 $CONF['domain_in_mailbox'] = 'NO';
 $CONF['encrypt'] = 'cleartext';

Evet artik PostfixAdmin'e tarayicinizin adres kismina http://domain_adiniz.com/postfixadmin yazarak erisebilirsiniz. Tabi kullanici olusturma bununla bitmiyor. Yeni kullanici olusturmak icin /home/vmail klasoru altina gidip varsayilan domain_adinizin klasoru altinda da kullaniciyi yaratmaniz gerekiyor. Bunun icin asagidaki komutlari kullanabilirsiniz:

 mkdir -p /home/vmail/domain_adiniz.com/yeni_kullanici
 chmod -R 770 /home/vmail
 chown -R postfix:postfix /home/vmail/


Final

Yukaridaki tum islemleri eksiksiz yaptiginiz takdirde mysql yetkilendirme destekli posta sunucunuz hizmete hazir demektir. Hayirli ugurlu olsun:)


Bağlantılar

Dahili Bağlantılar

Konu ile ilgili fikirlerinizi paylaşmak için; Lapis Wiki Başlığı

Harici Bağlantılar

Kaynak


Belge Hakkında

Bu belge Orcunyucel tarafından hazırlanmıştır...