Yıllık arşivler: 2013

Linux usb disk fat32 format ve unable to open ..: Device or resource busy hatası

fdisk –l komutuyla cihaza takılı tüm diskler görünmektedir. Formatlamak istediğiniz diskin adını buradan alın.

mkdosfs –F 32 –I /dev/sdb komutu ile fat32 formatında disk biçimlendirilir.  Burada /dev/sdb benim biçimlendirmek istediğim diskim. Sizin biçimlendirmek istediğiniz diskin adı farklı olabilir. Bu noktaya dikkat edilmelidir. Ayrıca ben bu şekilde formatlamak istediğimde unable to open /dev/sdb : Device or resource busy hatası verdi. Bunun sebebi diskin daha önceden partition’lara ayrılması imiş. Bu sebeple önce diskin partition’larını silmek gerekiyor. Bunun için fdisk /dev/sdb komutunu çalıştırdım ve p tuşuna bastım. Bana /dev/sdb1 ve /dev/sdb2 şeklinde iki partition’a ayrıldığı söyledi. Daha sonra d tuşuna basarak silme moduna geldim ve 2 tuşuna basarak 2.partition’ı sildim. Aynı işlemi 1. partition için de yaptım. Usb diski çıkarıp tekrar taktığımda disk formatlanmaya hazır hale geldi. Daha sonra daha önce bahsettiğim mkdosfs ile formatlama işlemini tekrar denedim. Sorunsuz şekilde disk fat32 formatında biçimlendirildi.

Spamassassin: kural ekleme

Öncelikle /etc/amavisd/amavisd.conf dosyasında $sa_tag_level_deflt  = 2.0; satırını $sa_tag_level_deflt  = -1000; şeklinde değiştirdim.

Sonrasında /etc/mail/spamassassin/local.cf konfigürasyon dosyasının altına aşağıdaki satırları ekledim.

header   ORNEK_KURAL         Subject =~ /^testrules/
score    ORNEK_KURAL         1000
describe ORNEK_KURAL         Test kuralıdır.

Dosyayı kaydedip kapattıktan sonra spamassassin –-lint komutunu çalıştırdım (kural yazımında hata oluğ olmadığını kontrol eder) amavisd servisini restart ettim.

Bu işlemlerden sonra konusu içerinde testrules kelimesi geçen e-postalar spam olarak işaretlenmeye başladı. Bu kurala benzer şekilde başka kurallar da konfigürasyon dosyasına eklenebilir ve gönderenin mail adresi, mail içeriği, mail konu içeriğini içeren farklı kurallar oluşturulabilir. Bu kurallar için yukarıda ifade edilen kodlardan score satırı sabit kalmak şartı ile describe satırına kuralı anlatacak istenilen ifadeler yazılabilir. İlk satır ise kuralı belirteceğinden önem arzeder. Bizim yazdığımız kuralda mailin konusuna göre bir kontrol yapıldığında dolayı satır header ile başlamıştır. Farklı kontroller için farklı komutları internette bulmanız mümkün.

Ayrıca belirli bir mail adresinden gelen  tüm e-postaların spam olarak olarak işaretlenmesi için konfigürasyon dosyasına blacklist_from user@example.com satırını eklemek yeterli olacaktır.

Zindandan Mehmed’e Mektup

Zindan iki hece, Mehmed’im lâfta!
Baba katiliyle baban bir safta!
Bir de, geri adam, boynunda yafta…
Halimi düşünüp yanma Mehmed’im!
Kavuşmak mı? .. belki… daha ölmedim!

Avlu… bir uzun yol… tuğla döşeli,
Kırmızı tuğlalar altı köşeli.
Bu yol da tutuktur hapse düşeli…
Git ve gel… yüz adım… bin yıllık konak.

Ne ayak dayanır buna, ne tırnak!
Bir âlem ki, gökler boru içinde!
Akıl, olmazların zoru içinde.
Üstüste sorular soru içinde:
Düşün mü, konuş mu, sus mu, unut mu?
Buradan insan mı çıkar, tabut mu?

Bir idamlık Ali vardı, asıldı;
Kaydını düştüler, mühür basıldı.
Geçti gitti, birkaç günlük fasıldı.
Ondan kalan, boynu bükük ve sefil;
Bahçeye diktiği üç beş karanfil…

Müdür bey dert dinler, bugün ‘maruzât’!
Çatık kaş.. Hükûmet dedikleri zat…
Beni Allah tutmuş, kim eder azat?
Anlamaz; yazısız, pulsuz, dilekçem…
Anlamaz; ruhuma geçti bilekçem!

Saat beş dedi mi, bir yırtıcı zil;
Sayım var, maltada hizaya dizil!
Tek yekûn içinde yazıl ve çizil!
İnsanlar zindanda birer kemmiyet;
Urbalarla kemik, mintanlarla et.

Somurtuş ki bıçak, nâra ki tokat;
Zift dolu gözlerde karanlık kat kat…
Yalnız seccâdemin yününde şefkat;
Beni kimsecikler okşamaz mâdem;
Öp beni alnımdan, sen öp seccâdem!

Çaycı, getir, ilâç kokulu çaydan!
Dakika düşelim, senelik paydan!
Zindanda dakika farksızdır aydan.
Karıştır çayını zaman erisin;
Köpük köpük, duman duman erisin!

Peykeler, duvara mıhlı peykeler;
Duvarda, başlardan, yağlı lekeler,
Gömülmüş duvara, baş baş gölgeler…
Duvar, katil duvar, yolumu biçtin!
Kanla dolu sünger… beynimi içtin!

Sükût… kıvrım kıvrım uzaklık uzar;
Tek nokta seçemez dünyadan nazar.
Yerinde mi acep, ölü ve mezar?
Yeryüzü boşaldı, habersiz miyiz?
Güneşe göç var da, kalan biz miyiz?

Ses demir, su demir ve ekmek demir…
İstersen demirde muhali kemir,
Ne gelir ki elden, kader bu, emir…
Garip pencerecik, küçük, daracık;
Dünyaya kapalı, Allaha açık.

Dua, dua, eller karıncalanmış;
Yıldızlar avuçta, gök parçalanmış.
Gözyaşı bir tarla, hep yoncalanmış…
Bir soluk, bir tütsü, bir uçan buğu;
İplik ki, incecik, örer boşluğu.

Ana rahmi zâhir, şu bizim koğuş;
Karanlığında nur, yeniden doğuş…
Sesler duymaktayım: Davran ve boğuş!
Sen bir devsin, yükü ağırdır devin!
Kalk ayağa, dimdik doğrul ve sevin!

Mehmed’im, sevinin, başlar yüksekte!
Ölsek de sevinin, eve dönsek de!
Sanma bu tekerlek kalır tümsekte!
Yarın, elbet bizim, elbet bizimdir!
Gün doğmuş, gün batmış, ebed bizimdir!

Necip Fazıl KISAKÜREK

Iredadmin web panel uzun sürede açılma problemi

Problemin kaynağı çok fazla kullanıcının olmasıdır. Dashboard çok yavaş geliyor. Bunu aşmak için açılan ilk sayfanın dashboard değil de farklı bir sayfa olarak ayarlanması gerekiyor. Bunun için /var/www/controllers/ldap/basic.py içinde aşağıdaki şekilde /dashboard yazan yerler domains ya da farklı bir sayfa olarak ayarlanmalıdır.

raise web.seeother(‘/dashboard’)
raise web.seeother(‘/domains’)

Rastrigin Fonksiyonu

Rastrigin fonksiyonu içerisinde birçok lokal minimumu içeren ve bu yüzden de optimizasyon tekniklerinin performansını ölçmek için kullanılabilecek ideal bir test fonksiyonu ve problemdir. Fonksiyonun global minimumu iki boyutlu uzay için [0,0] noktası, üç boyutlu bir uzay için ise [0,0,0] noktasıdır. Bir anlamda boyut ne olursa olsun merkez nokta global minimumdur. Fonksiyonun grafik üzerindeki görünümü ve formülü aşağıda bulunmaktadır. Şekil üç boyutlu uzayda rastrigin fonksiyonu göstermektedir. Şekilden de görüleceği üzere içerisinde birçok lokal minimum bulunurken, global minimum x=0, y=0, z=0 noktasıdır.

image_

image

Kaynaklar

· http://en.wikipedia.org/wiki/Rastrigin_function

· http://www.digplanet.com/wiki/Evolutionary_multimodal_optimization

· http://eksisozluk.com/rastrigin-fonksiyonu–2163513

Iredmail yeni bir sunucuya taşıma

Bildiri olarak sunulan bu çalışmaya bağlantıdan ulaşabilirsiniz.

You can access this study presented as a conference paper from the link.


Iredmail mail sunucusunu yeni kuracağınız başka bir sunucuya taşımak için öncelikle mevcut sunucudaki sürümün aynını yeni sunucuya kurmamız gerekiyor. Bunun için kullandığımız sürümü öğrenip o sürümü siteden indiriyoruz. Daha sonra mevcut sistemdeki ayarlara göre yeni sunucuya kuruyoruz. Kurulum adımları Iredmail’in sitesinde mevcuttur. Kurulumu tamamladıktan sonra backup almakta yarar var zira bundan sonraki aşamalarda bir sıkıntı çıkacak olursa sunucuya tekrar kurarak zaman kaybetmekten bize kurtaracaktır. Benim kurduğum sürüm eski bir sürüm olduğundan kaynaklı kendi otomatik indireceği bazı dosyaları bulamadı. Ben bunları kendim internetten indirdikten sonra aradığı klasöre kopyalayarak yüklemeyi devam ettirdim. Ayrıca mevcut sunucuda roundcube’ün versiyonun yükselttiğim için taşıma işleminden önce roundcube’ün de versiyonunu yükselttim. Roundcube’ün upgrade işlemi için web sitesinden bilgi alabilirsiniz. Yükseltme esnasında upgrade scripti olan installto.sh’ın bulunduğu klasördeki tüm dosyaların modunu 777 yapmalıyız. Ayrıca sunucuda rsync kurulu olmalıdır. Mevcut sunucudan bize gerekli olan dosya ve bilgiler şunlardır;

  • Kullanıcı hesaplarının bulunduğu dizin
  • Mysql backup
  • Openldap backup
  • DKIM dosyası

Kullanıcı hesaplarının bulunduğu dizin eğer kurulum sırasında bir değişiklik yapılmamışsa /var/vmail dizinidir. Bu sebeple bu dizini yeni sunucuda aynı isimli klasöre kopyalıyoruz. Kopyaladıktan sonra dizinlerin sahibi vmail olarak belirlenmelidir. Taşıma ve sonrası ile ilgili detaylı bilgi için en alttaki linkler kullanılabilir.

İkinci olarak mevcut sunucunun mysql veri tabanlarının backup’ını alıyoruz. Mysql’in tamamının backup’ı alındığı zaman bize amavisd, iredadmin, mysql, policyid ve roundcube olmak üzere 5 adet veri tabanının sql dosyalarını verecektir. Bunlardan mysql dışındaki dördünü yeni sunucudaki mysql’e restore etmeliyiz. Mysql backup’tan sonra dosyaları bz2 olarak vermektedir. Bu sql dosyalarını bzip2 –d dosyaadi.bz2 komutlarıyla çıkarabiliriz.

Üçüncü olarak mevcut sunucudaki Openldap’ın backup’ı alınarak yeni sunucuya restore edilecek.

Son olarak /var/lib/dkim/ klasörü altındaki .pem uzantılı dosyayı yeni sunucuda aynı yere taşıyoruz.

Bu adımlar sırasında hatayla karşılaşılmaması durumunda Iredmail sunucusu başarıyla taşınmuş olup, mevcut sunucudaki kullanıcılar mevcut şifreleriyle yeni sunucuda maillerine ulaşabilirler.

Eski sunucuda kullanılan bir ssl sertifikası varsa yeni sunucuya eklemeyi unutmamak gerekir. Anlatılanlara kaynak olarak ve daha fazla bilgi için aşağıdaki linkler kullanılabilir.

http://www.iredmail.org/wiki/index.php?title=IRedMail/FAQ/Backup.iRedMail.Server

http://www.iredmail.org/wiki/index.php?title=IRedMail/FAQ/Backup

Not: İşlemlerden sonra taşıdığım hesaplar önceki sunucudaki kullanıcı adı ve şifreleriyle kullanılabilir durumdaydı. Fakat mail dosyalarına ulaşılamıyordu. Burada /var/vmail/vmail1…..org‘daki dosyaları /var/vmail/….org klasörüne taşıdığımda sorun çözüldü. Sebebini anlamasam da problem halloldu.

Not: Eski sunucunuzda sonradan tanımladığınız attribute ve object’ler varsa ldap restore yapmadan önce bunları yeni sunucuya taşıyınız. Yoksa hata verecektir.

Linux: ssh rsync ile otomatik backup alma

Bir linux makineden belli zaman aralıklarında otomatik olarak başka bir makineye backup alınmasını istiyoruz. Bu durumda takip edeceğimiz adımlar aşağıdaki şekildedir.

1.   Öncelikle rsync’ın makinemize kuralım. (yum rsync ya da apt-get install rsync)

2. Backup’ı alınacak makineden herhangi bir klasörü backup’ı saklayacağımız makineye senkronize etmeye çalışalım. Aşağıdaki komutu backup’ı alınacak bilgisayarda çalıştırıyoruz.

rsync -avz -e ‘ssh -p 22’ /home/dosya root@192.168.1.2:/home/yedek/

Yukarıdaki komut dizisi çalıştırıldığında bize 192.168.1.2 ip’li bilgisayarın root kullanıcısının şifresini soracaktır. Eğer şifre doğru girilirse senkronizasyon başlayacaktır ve içerisinde bulunduğumuz makinenin /home/dosya dizini 192.168.1.2 ip’sine sahip bilgisayarın /home/yedek dizinine kopyalanacaktır. Eğer başka bir kullanıcı ile bağlanacak ise komut dizisinde root yerine kullanıcı adını yazmalıyız. Ayrıca başka bir porttan ssh bağlantısı yapmak istiyorsak 22 yerine istenilen port yazılmalıdır. Başarılı bir şekilde kopyalama işlemi tamamlandıysa diğer  adımlara geçebiliriz.

3. Bir önceki adımda görüldüğü üzere rsync’ı ssh üzerinde kullandığımızdan dolayı her çalışmada bize şifre soracaktır. Olayı otomatikleştirmek istediğimizden dolayı bunu engellemeliyiz. Bunun için ssh keygen üretmeliyiz. Backup’ını alacağımız makinede aşağıdaki işlemleri yapıyoruz.

ssh-keygen komutunu çalıştırıyoruz. Bize şifre soracak direk enter’a basıp boş olarak geçelim.

ssh-copy-id –i ~/.ssh/id_rsa.pub “192.168.1.2 –p 22”  komut dizisi ile backup’ı alacağımız makineye keygen’i gönderiyoruz.

Not: Koddaki 22 port numarasıdır. Farklı bir porttan bağlanmak için değiştirilmesi gerekir.

şimdi ssh 192.168.1.2 kodunu çalıştırdığımızda şifre sormadan direkt olarak uzak bağlantı yapıyor olmamız gerekiyor. Burada da sorun yoksa diğer adıma geçiyoruz.

4. Bu adımda rsync kodumuzu script içerisine yazacağız. Böylece scripti  çalıştırdığımızda otomatik olarak dizin senkronize olmaya başlayacaktır. Bunun için bir metin dosyası açıp içerisine aşağıdaki şekilde rsync kodunu yazıyoruz. Dizinler, ip adresi, kullanıcı adı ve port ayarı yapmayı unutmayınız. (Komut dizininde geçen delete komutu backup alınacak dosyalarda silinmiş dosyalar var ise yedeği tuttuğunuz yerden de onları silecektir.)

#!/bin/bash

rsync –avz –delete -e ‘ssh -p 22’ /home/dosya root@192.168.1.2:/home/yedek/

Kodu yazdıktan sonra dosyası .sh uzantılı olacak şekilde kaydediyoruz. Örnek olarak, dosyamızın ismi backup.sh olsun.

Dosyası kaydettikten sonra aşağıdaki şekilde çalıştırıyoruz.

/bin/bash /dizin/backup.sh

Bu işlemden sonra dosya senkronize olmuşsa herşey yolunda gidiyor demektir. Bir sonraki adıma geçiyoruz.

5. Bu adımda yazdığımız scripti cron’a ekleyerek istenilen zaman dilimlerinde scriptin otomatik olarak çalıştırılmasını sağlayacağız. Örnek olarak ben bu scriptin iki saatte bir otomatik olarak çalışmasını istiyorum. Bunun için aşağıdaki komutları yazmam gerekiyor.

job eklemek için öncelikle crontab -e yazıyorum.
vim editörüyle açılan dosyaya 0 */2 * * * /dizin/backup.sh satırını ekliyorum ve kaydediyorum.

Benim örneğimde script her 2 saatte bir çalışacak. Bunu her 15 dakika,1 saat, 1 gün, 1 hafta ve 1 ay gibi sürelere çekebilirsiniz. Bu programlama için cron hakkında internetten detaylı bilgiye ulaşabilirsiniz.

Cron’a işi ekledikten sonra tüm işlemlerimiz tamamlanmış bulunmaktadır. Doğru çalışıp çalışmadığın loglardan takip edebilirsiniz. Doğru çalışıyor ise sorunsuz biçimde belirlediğiniz zaman dilimlerinde backup’ınız alınıyor olacaktır.

Not: İlk kullanımda bende cron permission denied (erişim yetkisi) hatası verdi. Bu hatayı da aşağıdaki komutla giderebilirsiniz.

chmod 711 /dizin/backup.sh