Hyper-V üzerinde Lenny guest kurulumu yapacaksanız dikkat etmeniz gereken sadece iki ufak nokta vardır.

Bunlardan birincisi Lenny üzerinde henüz default kernel 2.6.26 olduğu için Hyper-V tarafından sağlanan synthetic device’lar ile konuşamamktadır (kernel 2.6.32 upgrade’i ile de bunu aşabilirsiniz). Bunun için sanal makineye normal bir ethernet kartı değil “Legacy Network Adapter” eklemeniz gerekmektedir.

Böylece problemsiz olarak ethernet kartlarını kullanmaya başlayabilirsiniz.

 

Bir diğer problem ise öntanımlı olarak framebuffer device’tan dolayı installer ekranlarının geç render olması. Bunun için boot etmeden önce fb=off parametresi ile framebuffer device’ı disable edebilir ve console ortamında daha rahat çalışabilirsiniz.

Dağıtık projelerde genellikle yaşanılan sıkıtılardan biri kullanmış olduğunuz yazılımların yapıları gereği bir API’ye sahip olmamasından kaynaklanmaktadır. Bununla beraber yazılımların izin verdiği derece alt arayüzler ve genellikle ek yazılımlar üreterek çözümler geliştirilir.

Örneğin multi node’dan oluşan bir web-host farm’ında her noktadan gelecek değişilikleri bind üzerinde güncellemek/eklemek istiyorsunuz. Bunun için ya bir veritabanı üzerinden çalışan bir queue mantığı ile yönetmeniz ya da bu işi yapan bir RPC Interface ile gerçekleştirmeniz gerekecektir.

Bunun yerine diğer bir seçenek ise Bind’ın config dosyaları üzerinde değişiklik yapmaktan ziyade daha pratik bir uygulamaile host detay kayıtlarının MySQL üzerinde tutulduğu ve anlık olarak buradan değiştirildiği bir DNS sunucuya sahip olmak olabilir.

Bunun için sourceforge üzerinde yayınlan mysql-bind adlı projeyi kullanabiliriz. Debian bir sistem üzerinde yapmamız gereken adımlar şu adımlardan oluşmaktadır;

İşleme gerekli paketlerin yüklenmesi ile başlayalım;

 Bash |  copy code |? 
1
cd /usr/src
2
apt-get install mysql-server libmysqlclient15-dev
3
apt-get install build-essential
4
apt-get install libssl-dev libtool libdb-dev libldap2-dev libxml2-dev libcap2-dev hardening-wrapper libkrb5-dev debhelper fakeroot bison
5

Bu işlem sırasında MySQL size bir root parolası soracaktır. Belirlemiş olduğunuz bu parola tüm MySQL yönetimsel işlemlerinde kullanılacağından sağlam ve unutmayacağınız bir parola vermeniz gerekmektedir.

Bundan bir sonraki adımda bind source ve bind-mysql’i edinmek;

 Bash |  copy code |? 
1
apt-get source bind9
2
wget http://downloads.sourceforge.net/project/mysql-bind/mysql-bind/mysql-bind-0.2%20src/mysql-bind.tar.gz?use_mirror=garr
3
tar zxf mysql-bind.tar.gz
4


mysql-bind kodunu bind’a ekliyoruz;

 

 Bash |  copy code |? 
1
cd mysql-bind
2
cp mysqldb.c ../bind9-9.5.1.dfsg.P3/bin/named/
3
cp mysqldb.h ../bind9-9.5.1.dfsg.P3/bin/named/include/named/
4
cd ../bind9-9.5.1.dfsg.P3/
5

Bind’a Database driver’ını ekelemek için gerekli bilgileri MySQL’den almamız gerekiyor. Bu komutların vermiş olduğu çıktıları bir kenara not etmemiz gerekmektedir.

 Bash |  copy code |? 
1
mysql_config --cflags
2
mysql_config --libs
3
cd ../bind9-9.5.1.dfsg.P3/
4
nano bin/named/Makefile.in
5

Açılan dosyamız içerisinde DBDRIVER_OBJS yazan satıra gitmemiz gerekiyor. Bu satırda yer alan değişkenleri aşağıdaki gibi doldurmamız gerekiyor;

 C |  copy code |? 
01
02
DBDRIVER_OBJS = 
03
DBDRIVER_SRCS = 
04
DBDRIVER_INCLUDES =
05
DBDRIVER_LIBS =
06
 
07
DBDRIVER_OBJS = mysqldb.@O@
08
DBDRIVER_SRCS = mysqldb.c
09
DBDRIVER_INCLUDES = -I'/usr/include/mysql' //mysql_config --cflags ciktisi
10
DBDRIVER_LIBS = -L'/usr/lib/mysql' -lmysqlclient //mysql_config --libs ciktisi
11


dosyayı kaydederek kapatıyoruz.

Bir sonraki aşamada ise bind’ın MySQL bağlantısını açabilmesini sağlamak için gerekli eklemeleri bin/named/main.c içinde değişiklik yapmamız gerekiyor.

 Bash |  copy code |? 
1
2
nano bin/named/main.c
3

Dosya içerisinde öncelikle mysqldb header dosyasının dahil olmasını ardından ns_server_create fonksiyonunun çağırıldığı satırın öncesine mysqldb_init(); ekleyerek veritabanı bağlantısının yapılmasını, ns_server_destroy fonsksiyonundan hemen sonraki satırda mysqldb_clear(); ile açılan bağlantının kapatılmasını sağlamamız gerekiyor.

 C |  copy code |? 
01
#include <dns/view.h>
02
/*
03
*
04
*
05
*/
06
 
07
#include <dst/result.h>
08
 
09
#include "bin/named/include/named/mysqldb.h"
10
 
11
/*
12
*
13
*
14
*/
15
 
16
#endif
17
 
18
mysqldb_init();
19
ns_server_create(ns_g_mctx, &amp;ns_g_server);
20
}
21
 
22
/*
23
*
24
*
25
*
26
*/
27
 
28
destroy_managers();
29
 
30
ns_server_destroy(&ns_g_server);
31
mysqldb_clear();
32
 
33
ns_builtin_deinit();
34
 
35

Artık hazırlamış olduğumuz yapılandırmayı bir debian paketi haline getirebilir ve oluşturduğumuz paketleri yükleyebiliriz.

 Bash |  copy code |? 
1
2
dpkg-buildpackage -rfakeroot -b
3
cd ..
4
dpkg -i *.deb
5

Bu işlemden sonra bind’ı durdurarak MySQL üzerinde gerekli kullanıcı ve tablolaları yaratıroyuruz;

 Bash |  copy code |? 
1
2
/etc/init.d/bind stop
3
mysql -u root -p
4

%nbsp;

 SQL |  copy code |? 
01
02
CREATE DATABASE dns;
03
CREATE USER 'dnsuser'@'localhost' IDENTIFIED BY 'password';
04
GRANT SELECT ON dns.* TO 'dnsuser'@'localhost';
05
 
06
CREATE TABLE mydomains ( 
07
  name varchar(255) DEFAULT NULL, 
08
  ttl int(11) DEFAULT NULL, 
09
  rdtype varchar(255) DEFAULT NULL, 
10
  rdata varchar(255) DEFAULT NULL 
11
) TYPE=MyISAM;
12
 
13
INSERT INTO mydomains VALUES ('mydomain.com', 259200, 'SOA', 'mydomain.com. www.mydomain.com. 200309181 28800 7200 86400 28800'); 
14
INSERT INTO mydomains VALUES ('mydomain.com', 259200, 'NS', 'ns0.mydomain.com.'); 
15
INSERT INTO mydomains VALUES ('mydomain.com', 259200, 'NS', 'ns1.mydomain.com.'); 
16
INSERT INTO mydomains VALUES ('mydomain.com', 259200, 'MX', '10 mail.mydomain.com.'); 
17
INSERT INTO mydomains VALUES ('ns0.mydomain.com', 259200, 'A', '192.168.1.1'); 
18
INSERT INTO mydomains VALUES ('ns1mydomain.com', 259200, 'A', '192.168.1.1'); 
19
INSERT INTO mydomains VALUES ('www.mydomain.com', 259200, 'A', '192.168.1.1'); 
20
INSERT INTO mydomains VALUES ('mydomain.com', 259200, 'A', '192.168.1.1'); 
21

Hem kullanacağımız veritabanı hem de örnek bir domain için gerekli kayıtları oluşturmuş olduk. Artık sadece named.conf’a bu domain’i belirterek bind’ı başlatmamız yeterli olacaktır.

 Bash |  copy code |? 
1
2
zone "mydomain.com" { 
3
  type master; 
4
  notify no; 
5
  database "mysqldb dns mydomains localhost dnsuser password"; 
6
};
7

Konsoldan nslookup ile sorguladığınızda dns sunucunuzun verdiği sonuçları kontrol edebilirsiniz;

 Bash |  copy code |? 
01
02
>nslookup
03
>server 127.0.0.1
04
 Default server: 127.0.0.1
05
 Address: 127.0.0.1#53
06
>www.mydomain.com
07
Server:         127.0.0.1
08
Address:        127.0.0.1#53
09
 
10
Non-authoritative answer:
11
Name:   www.mydomain.com
12
Address: 192.168.1.1
13

Ve işte artık zone kayıtlarını MySQL üzerinde tutan bir bind sunucuya sahip durumdayız.

Not:

  • Boot sırasında MySQL sunucunun bind’tan önce başlamak zorunda olduğunu unutmayınız.
  • Çıkabilecek bind açıklarına karşı bind updatelerini kesinlikle takip etmenizi öneririm.

Ubuntu; Lucid Lynx release notlarında duyurduğu üzere [1] Sun JDK6′yı non-free software reposu olan multiverse üzerinden çekmiş ve bunu partner reposuna taşımış durumda.

JDK ile bağıl herhangi bir yazılım kurmak istediğiniz otomatik olarak main repo’dan openjdk yüklenecektir. Eğer ki kullanmış olduğunuz yazılımlarda SUN’ın javasına bağlı iseniz aşağıdaki adımları izleyerek sun-java6-jdk paketini yükleyebilirsiniz.

 Bash |  copy code |? 
1
2
leoman@leotown:~$ sudo echo "deb http://archive.canonical.com/ lucid partner" >> /etc/apt/sources.list
3
leoman@leotown:~$ apt-get update
4
leoman@leotown:~$ apt-get install sun-java6-jdk
5

[1] https://wiki.ubuntu.com/LucidLynx/ReleaseNotes#Sun Java moved to the Partner repository

Mail sunucu yönetenler için sıkça yaşanabilecek bir problem olarak sevgili kullanıcılarınızın bir botnet zombisi haline gelmiş olması ya da bir şekilde mail şifresini çaldırmış olmasıdır. Buna bağlı olarak kullanıcının bilgisayarı üzerinden ya da farklı bir noktadan yüklü bir spam mail gönderimi ile sonuçlanır.

Eğer ki MTA olarak qmail kullanıyorsak takım çantanızda sürekli barındırmanız gereken iki adet edevat bulunmaktadır. Bunlardan birincisi qmHandle, daha bir güzeli ise qmail-remove

qmHandle detaylı bir çıktı verebilen, local ve remote queue’yu sadece bir parametre ile güzelce listeleyebilen güzel bir perl script’idir. Eğer ki queue’da biriken mailleriniz onbinlerin üzerinde ise maalesef ki queue üzerinde işlem yapmanız demek pek te mümkün olmayacaktır.

qmHandle’ı http://sourceforge.net/projects/qmhandle/ adresi üzerinden edinebilir ve queue directory yapısında değişiklik yapılmamış bir qmail kurulumu üzerinde problemsiz olarak kullanabilirsiniz.

Download adresinden indireceğiniz dosyayı tar ile açmanız yeterlidir. Script bash üzerinde çalışmaya nazır ve hazırdır.

(Plesk kontrol panel kullanılan sunucularda qmHandle’ı indirmeye gerek bulunmamaktadır. Çakma bir isim değiştirme yöntemi  ile duplicate edilmiş script’in kendisini /usr/local/psa/admin/sbin/mailqueuemng adıyla çağırabilirsiniz.)

Bash üzerinde perl ile birlikte şu şekilde  çalıştırabilirsiniz.

 Bash |  copy code |? 
1
2
perl qmHandle
3

Bu işlem sonunda kullanabileceğiniz parametrelere dair aşağıdaki gibi bir çıktı görüntülenecektir;

 Bash |  copy code |? 
01
02
qmHandle v1.2.0
03
Copyright 1998-2003 Michele Beltrame
04
Available parameters:
05
  -a     : try to send queued messages now (qmail must be running)
06
  -l     : list message queues
07
  -L     : list local message queue
08
  -R     : list remote message queue
09
  -T     : list todo message queue
10
  -s     : show some statistics
11
  -mN    : display message number N
12
  -dN    : delete message number N
13
  -Stext : delete all messages that have/contain text as Subject
14
  -D     : delete all messages in the queue (local and remote)
15
  -V     : print program version
16
 
17
Additional (optional) parameters:
18
  -c     : display colored output
19
  -N     : list message numbers only
20
           (to be used either with -l, -L, -R or -T)
21
 
22
You can view/delete multiple message i.e. -d123 -v456 -d567
23

Yardım içeriğinde de bahsettiği üzre “-l”, “-L”, “-R”, “-T” ile queue üzerindeki tüm mesajları ve queue’daki çeşitlerine göre listeleyebilmektesiniz.

Örneğin qmHandle -R ile listelemiş olduğunuz remote queue’da aynı kullanıcının defalarca mail gönderdiğini gördünüz fakat içeriğini merak ediyorsunuz.

 Bash |  copy code |? 
01
02
65732975 (10, R)
03
  Return-path: spammer@damnit.com
04
  From:
05
  To:
06
  Subject: Viagra Cialis
07
  Date: Thu, 3 Jun 2010 19:17:37 +0300
08
  Size: 11273 bytes
09
  Message-Id: <000f01cb0338$484a6c80$0302a8c0@emlak5a8613ad1>
10
  Queue Time: 1275581860 sec
11
  Envelope Recipients (R): mazlum@yandim.com, daha_bir_cok_mail_adresi
12
 
13
65736822 (16, R)
14
  Return-path: spammer@damnit.com
15
  From:
16
  To:
17
  Subject: Viagra Cialis
18
  Date: Thu, 3 Jun 2010 19:17:37 +0300
19
  Size: 11273 bytes
20
  Message-Id: <000f01cb0338$484a6c80$0302a8c0@emlak5a8613ad1>
21
  Queue Time: 1275581860 sec
22
  Envelope Recipients (R): mazlum@tiallahcezani.com, daha_bir_cok_mail_adresi
23

Yukarıdaki görmüş olduğunuz queue çıktısında mail header’larının hemen üstünde yer alan numara unique bir queue id’sidir. Yine qmHandle yardımı ile mesajın içeriğini aşağıdaki gibi görüntüleyebiliriz.

 Bash |  copy code |? 
1
2
perl qmHandle -m65736822
3

DİKKAT : Gerek qmHandle, gerek qmail-remove ile kuyruktan herhangi bir maili silmeden önce muhakkak ve muhakkak qmail’i durdurmanız gerekmektedir.

Yine bu maili dilerseniz mesaj id’si ile, dilerseniz de subject’ine göre silebilirsiniz;

 Bash |  copy code |? 
1
2
perl qmHandle -m65736822
3

veya
 Bash |  copy code |? 
1
2
perl qmHandle -SViagra\ Cialis
3

Eğer ki normal işleyen bir mail sistemi ise queue’nuz da çok kabarık olmayacağından bu şekilde çok rahat kuyruk maillerini yönetebiliriz. Ya bekleyen 263000 mail biriktiyse?

Bu gibi durumlarda qmHandle sizin için yeterli olmayacaktır. queue okuma işini qmail’in kendi binary’si olan qmail-qread’a ve silme işini de qmail-remove’un eline bırakacağız.

Kurulumu sadece bir C dosyası build etmekten ibaret olan basit ve 3 adımlı bir süreçten geçeceğiz; download – untar – make ve make install

 Bash |  copy code |? 
1
2
wget http://www.linuxmagic.com/opensource/qmail/qmail-remove/qmail-remove-0.95.tar.gz
3
tar zxf qmail-remove-0.95.tar.gz
4
make &amp;amp;&amp;amp; make install
5

Bu işlemin ardından /usr/local/sbin altında emirlerimize amade bir qmail-remove bulunmakta. Artık queue’ya göz atmaya hazır ve spam olması muhtemel mailleri silmeye geldi;
 Bash |  copy code |? 
01
02
/var/qmail/bin/qmail-qread
03
 
04
03 Jun 2010 21:21:21 GMT  #65732975 468772    bouncing
05
 
06
done      remote  zavalli@insancik.com
07
            remote  vahtuh@spamyedik.com
08
done      remote  mazlum@tiallahcezani.com
09
            remote  ulan@spamgondereninben.com
10
 
11
03 Jun 2010 21:21:22 GMT  #65732975 468772    bouncing
12
 
13
done      remote  zavalli@insancik.com
14
            remote  vahtuh@spamyedik.com
15
done      remote  mazlum@tiallahcezani.com
16
            remote  ulan@spamgondereninben.com
17
 
18
03 Jun 2010 21:21:25 GMT  #65732975 468772    bouncing
19
 
20
done      remote  zavalli@insancik.com
21
            remote  vahtuh@spamyedik.com
22
done      remote  mazlum@tiallahcezani.com
23
            remote  ulan@spamgondereninben.com
24

gibi bir çıktıda spammer@damnit.com’un spam yaptığını gördünüz. Bundan sonrası qmail’i durdurmak ve qmail-remove’a pattern olarak mail adresini vererek sil demek kadar basit olacaktır.
 Bash |  copy code |? 
1
2
/etc/init.d/qmail stop
3
qmail-remove -d -p spammer@damnit.com
4

silinen maillere karşılık şöyle bir çıktı alırsınız.

 Bash |  copy code |? 
01
02
remove mess/20/65732975
03
remove remote/20/65732975
04
remove info/20/65732975
05
65733100: no
06
65732893: no
07
65733156: yes
08
remove mess/7/65732975
09
remove remote/7/65732975
10
remove info/7/65732975
11
65733087: no
12
65736008: yes
13
remove mess/7/65732975
14
remove remote/7/65732975
15
remove info/7/65732975
16
remove bounce/65732975
17
263482 file(s) match
18

Artık qmail’i start ederek mutlu mesut günlerinize kaldığınız yerden devam edebilirsiniz.

Not:

  • -d parametresini vermediğiniz sürece qmail-remove silme işlemi yapmayacaktır.
  • -d -p parametresini vererek bir pattern belirtmezseni qmail-remove komple queue’nuzu boşaltacaktır.
  • Dosyaların incelemek üzre silinmemesini istiyorsanız -y parametresi ile bir klasör belirtebilirsiniz.
  • Eğer ki queue directory’niz /var/qmail/queue ‘den farklıysa -q parametresi ile bu klasörün yerini bildirebilirsiniz.

Bir çok uzak noktada Mikrotik cihaz/PC’ye sahip olduğumuzu düşünelim. Bunları belirli periyotlarla elle yedeklemek unutulma, dosya isimlerinde çıkacak karışıklık vb. türlü türlü problem yüzüden pek mümkün olmayacak, ayrıca bu her noktaya bağlanarak tek tek yedek almak ta ciddi bir zaman kaydı olacaktır.

Bunun yerine otomatik olarak Mikrotik’lere “Şu kadar günde bir yedek al! Aldığın yedekleri bana mail at!” diyebilme seçeneğiniz mevcut.

Bu işlem için öncelikle bir SMTP sunucuya sahip olmalı, Mikrotik cihazlarının bu SMTP server’a erişebilmesi, SMTP server’ın da Mikrotik için kullanıcı doğrulaması gerektirmeden mailleri kabul edebilmesi gerekmektedir.

Tüm bu şartların sağlanmış olduğunu düşünürsek, Mikrotik üzerinden yapılacak iş iki adımdan oluşmakta. Birinci adım olarak kayıtlı bir script yaratma, ikinci adım olarak kayıtlı olan bu script’i belirli zaman aralıklarında çalıştırmak.

 Bash |  copy code |? 
1
2
/system script add name="Oto-Yedek" \
3
policy=ftp, read, write, policy, test \
4
source="/system backup save=oto_yedek \
5
/tool e-mail send body=\"yedek\" to=\"alici@domain.com\" file=\"oto_yedek\" \
6
server=\"xxx.xxx.xxx.xxx\" from=\"gonderen@domain.com\" \
7
subject=\"XXX Mikrotik Yedegi\""
8

İle yeni Oto-Yedek adından bir yedekleme script’i oluşturduk ve;

 Bash |  copy code |? 
1
2
/system scheduler add comment="Otomatik yedekleme scriptini zamanlar"\
3
name="Oto-Yedek-Zamanla" on-event=Oto-Yedek \
4
start-date="Jun/11/2009" start-time="01:00:00" interval="1d" \
5
disabled=no 
6

zamanlaması ile hergün saat gece 1′de yedekleme scriptinin çalışmasını sağlayabiliriz. Bu işlem sonucunda artık Mikrotik’e login olmaya gerek kalmadan otomatik olarak yedekler belirttiğiniz e-mail adresine gelecek ve yedek alma zamanını sıfıra indirecektir.

11-13 Şubat 2009 tarhleri arasında Harran Üniversitesi’nde yapılacak olan Akademik Bilişim Konferasında Arda Çetin ile birlikte Mikrotik Router OS, Mikrotik Router Board ve Appliance cihazları tanıtıp anlatacağız hatta ve hatta 30dk. süremiz içerisine sığdırabilirsek ufak bir uygulamada yapacağız.

Canis aureus izlenimleri February 5th, 2009

Evet Pardus 1.0′dan beri kurup kullanmak için pek fırsatım olmamış idi. Şu anda bir test için kurup Pardus kullanmam gerekti ve şu noktaları gözüme çarpan noktalar şunlar;

  1. Ubuntu’nun çalıştırmak için 40 takla attıran ekran ve kablosuz ağ kartım canavar gibi çalışıyor.
  2. Sevgili Kaptan “Windoze ile aynı disk ile kurulu olduğundan burdaki verilerinizi göç ettirmek ister misiniz?” dedi. Bunu test etmek için vaktim olmasa da bir ara deneyeceğim.
  3. Yine sevgili Kaptan Internet’e ağ ayarlarınızı yapılandıralım dedi ve bunu profil bazlı yapacağım dedi. Bu da ayrı bir güzel fakat keşke profil oluşturduktan sonra hemen ağa kendi bağlansaydı sanki daha hoş olacak idi.
  4. mp3, divx, dvd vs. gibi medyalar için beni uğraştırmadı kesinlikle ben hepsini çalar, oynatırım yeterli aralar bozulmasın dedi.
  5. Ön tanımlı konsol renklendirmesi hoş, hele ki grep’lediğimde sonuçları renklendirmesi gayet iyi bir cilve idi. Keşke bunu daha önce ben de yapsaymışım.
  6. NTFS olarak biçimlendirilmiş harici diskim yazılabilir mount edilmiş, yazabiliyorum evet. :D
  7. Pisi ile paket kurmak istediğimde 3 paket seçtiniz fakat 7 paket kurulacak dedi ama diğer ek paketler nedir açıklama gereğinde bulunmadı! Paketler yüklenirken türlü maymunluklarla güldürmeyi unutmadı.
  8. Üzerinde IM olarak Kopete kurulu gelmiş. Her nasıl oluyorsa tek bir IM hesabımı eklemiş olmama rağmen login olmamla birlikte bilgisayarım kitlenlenmesi aynı ana denk gelme olasığını yok varsayıyorum. Bir IM nasıl komple bilgisayarı down eder enteresan.

Zannedersem test maceramız bu kadar kısa sürecekmiş. :)   Bir daha ki boş vaktime kadar kurulu bekleyecek. O zaman biraz daha detaylı da inceleyebiliriz.

Sonradan gelen edit : Kurulum süresi Ubuntu’ya göre çok çok daha kısa sürdü :)