portal.osym.gov.tr'ye squid arkasından erişim problemliydi. Daha doğrusu squidin gönderdiği isteklerde olan X-Forwarded-For:unknown headeri osym'nin serverinin cevap olarak browserı yonlendirdiği sayfa portal.osym.gov.tr olduğu için loopa sokuyordu. Bu yüzden devamlı browser aynı sayfayı getirmeye çalışıyor ve connectionı ayakta tutup aptalca kısır döngünün içine giriyordu. Bu yüzden squid'in isteklerinde bu X-Forwarded-For'u kaldırmam gerekiyordu. Bu yüzden squid.conf'a şunu ekledim:
header_access X-Forwarded-For deny all
Bu şekilde bu headerdan kurtuldum ve sayfa doğru düzgün çalışmaya başladı. Bu satırı ekleyenlerin dikkat etmesi gereken eğer squid'leri bir load balancera falan gidiyorsa ve bu load balancer da bu X-Forward-For headerini kullnaıp clientları stick yapıyorsa load balancer işlevselliğini yitirir.
Wednesday, May 24, 2006
Tuesday, May 16, 2006
Aşağıdaki script ps -efl komutundaki memsize kısmını cekiyor ve o sütunu topluyor. İşe yaramaz birşey ama toplama yapmak için uygun:) Tek sayılı ve çift sayılı girdilerde problem yaratıyor. Aşağıdaki hangisine göre unuttum. Ama eğer problem çıkarırsa count=0 ı count=1 yapın düzelir. Uğraşamam yaa zaten birşeye yaramıyor script ama yararsa harbi haberim olsun:)
#!/bin/bash
ps -efl |awk '{print $10}' >memsize.log
ilksatir=$(cat memsize.log|wc -l)
tail -$(expr $ilksatir - 1) memsize.log>memo.log
t=$(cat memo.log|wc -l)
a=1
for i in $(cat /home/servis/memo.log)
do
z[$a]=${i}
b=$a
c=$(expr $b + 1)
a=$c
done
for ((count=0 ; count <= t ; count++))
do
toplam=$(expr ${z[$count]} + ${z[$(expr $count + 1)]})
count=$(expr $count + 1)
toplamson=$(expr $toplamson + $toplam)
done
echo "$toplamson"
Friday, May 12, 2006
Eğer courier dan dovecota gecerken küçük bir ayrıntı olan mailbox isimlendirmesini doğru yapmazsanız iki günümüzü alan bu script dizisini çalıştırmanız gerekebilir. Bu işlem o kadar çok stressli ki düşmanımın başına gelmesini istemem. Loglar'ı bile 100 megabyte civarında tuttu. Tabiki burdaki scriptler çalıştığım yere uygun scriptler uyarlaması size kalmış.
MAIL TASIMA PROSEDURU
0.) YEDEK ALINACAK DISK UZERINE .. MAILLER UZERINDEKI SERVISLER DURDURULACAK ..
1.) /vmail/vmail klasoru bizi ilgilendirmiyor. İcabında silinecek
2.) test userlari yapacagimiz scripte katilmayacak
3.) Oncelik sirasina gore Giden kutusu , Silinenler , Taslaklar scriptleri calistirilmali.
Tum scriptler 2 asamali olacak ve screen ile calistirilacak;
En once;
find ./ -depth -print > data.dat -- Bu komutla kullanacagimiz scriptler icin bize lazim olan dosya
yapsini iceren bir text database dosyasi olusturcagiz. (2 saat suruyor..)
Fuzuli dosyalari silmek icin;
cat data.dat | grep -E “courierimapsubscribed | courierimapuiddb” > remove_courier.dat
----SCRIPT --- remove_courier.dat
#!/bin/bash
cat remove_courier.dat |while read line; do echo "${line}"
for i in "${line}"
do
rm -f "$i"
echo $i >> remove_edilen_courier.log
done
done
---------------------------------
chmod 777 remove_courier.sh
Giden Kutusu İcin;
ASAMA 1
.INBOX.Giden Kutusu ve .Giden Kutusu olan kullancilarda .Giden Kutusunun icindeki cur,new ve tmp klasorlerinin
icerisindeki maillerin yeni formattaki .INBOX.Giden Kutusu icerisindeki cur,new ve tmp altina kopyalanmasi.
cat data.dat | grep -v "tk100" |grep "Giden Kutusu" | grep -v "INBOX" |grep "rsct" | sort | uniq > cp_giden.dat
---COPY SCRIPT---cpgiden.sh----
#!/bin/bash
cat cp_giden.dat |while read line; do echo "${line}"
for i in "${line}"
do
w=$(echo $i|cut -d/ -f1-3|sed -e 's/\.Giden Kutusu/\.INBOX.Giden Kutusu/')
if test -d "$w"
then
cp "$i" "$(echo $i|cut -d/ -f1-4|sed -e 's/\.Giden/\.INBOX.Giden/')"
echo "$i" >>giden_kopyalanan.log
else
echo "hedef klasor olmadiginden move ile tasinmali"
echo "$i" >>giden_kopyalanmayan.log
fi
done
done
--------------------------------
chmod 777 cpgiden.sh
ASAMA2
Eskiden .Giden Kutusu olupta yeni mail server formatinda .INBOX.Giden Kutusu olmayanlarin
asagidaki script ile eski klasorun move edilerek yeni formata donusturulmesi.
cat data.dat | grep -v "tk100" | grep "Giden Kutusu"| grep -v "INBOX" | cut -d/ -f1-3 | sort |uniq > mv_giden.dat
---- MOVE SCRIPT---mvgiden.sh----
#!/bin/bash
cat mv_giden.dat|while read line; do echo "${line}"
for i in "${line}"
do
w=$(echo $i|sed -e 's/\.Giden Kutusu/\.INBOX.Giden*/')
if test -d $w
then
echo "Inbox klasoru olusturulmus tasima yapilamiyor."
echo "$w" >>giden_tasinmayan.log
else
mv "$i" "$(echo $i|sed -e 's/\.Giden Kutusu/\.INBOX.Giden Kutusu\//')"
echo ".Giden Kutusu move ediliyor."
echo "$i" >>giden_tasinan.log
fi
done
done
-------------------------
chmod 777 mvgiden.sh
Silinenler Klasoru İcin;
ASAMA1
.INBOX.Silinenler ve .Silinenler klasoru olan kullancilarda .Silinenler klasoru icindeki cur,new ve tmp klasorlerinin
icerisindeki maillerin yeni formattaki .INBOX.Silinenler icerisindeki cur,new ve tmp altina kopyalanmasi.
cat data.dat | grep -v "tk100" |grep "Silinenler" | grep -v "INBOX" |grep "rsct" | sort | uniq > cp_silinenler.dat
---COPY SCRIPT---cpsilinenler.sh----
#!/bin/bash
cat cp_silinenler.dat |while read line; do echo "${line}"
for i in "${line}"
do
w=$(echo $i|cut -d/ -f1-3|sed -e 's/\.Silinenler/\.INBOX.Silinenler/')
if test -d "$w"
then
cp "$i" "$(echo $i|cut -d/ -f1-4|sed -e 's/\.Silinenler/\.INBOX.Silinenler/')"
echo "$i" >>silinenler_kopyalanan.log
else
echo "hedef klasor olmadiginden move ile tasinmali"
echo "$i" >>silinenler_kopyalanmayan.log
fi
done
done
--------------------------------
chmod 777 cpsilinenler.sh
ASAMA2
Eskiden .Silinenler klasoru olupta yeni mail server formatinda .INBOX.Silinenler klasoru olmayanlarin
asagidaki script ile eski klasorun move edilerek yeni formata donusturulmesi.
cat data.dat | grep -v "tk100" | grep "Silinenler"| grep -v "INBOX" | cut -d/ -f1-3 | sort |uniq > mv_silinenler.dat
---- MOVE SCRIPT---mvsilinenler.sh----
#!/bin/bash
cat mv_silinenler.dat|while read line; do echo "${line}"
for i in "${line}"
do
w=$(echo $i|sed -e 's/\.Silinenler/\.INBOX.Silinenler/')
if test -d $w
then
echo "Silinenler klasoru olusturulmus tasima yapilamiyor."
echo "$w" >>silinenler_tasinmayan.log
else
mv "$i" "$(echo $i|sed -e 's/\.Silinenler/\.INBOX.Silinenler\//')"
echo ".Silinenler Klasoru move ediliyor."
echo "$i" >>silinenler_tasinan.log
fi
done
done
-------------------------
chmod 777 mvsilinenler.sh
Taslaklar Klasoru İcin;
Asama 1
.INBOX.Taslaklar ve .Taslaklar klasoru olan kullancilarda .Taslaklar klasoru icindeki cur,new ve tmp klasorlerinin icerisindeki maillerin yeni formattaki .INBOX.Taslaklar icerisindeki cur,new ve tmp altina kopyalanmasi.
cat data.dat | grep -v "tk100" |grep "Taslaklar" | grep -v "INBOX" |grep "rsct" | sort | uniq > cp_taslaklar.dat
---COPY SCRIPT---cptaslaklar.sh----
#!/bin/bash
cat cp_taslaklar.dat |while read line; do echo "${line}"
for i in "${line}"
do
w=$(echo $i|cut -d/ -f1-3|sed -e 's/\.Taslaklar/\.INBOX.Taslaklar/')
if test -d "$w"
then
cp "$i" "$(echo $i|cut -d/ -f1-4|sed -e 's/\.Taslaklar/\.INBOX.Taslaklar/')"
echo "$i" >>taslaklar_kopyalanan.log
else
echo "hedef klasor olmadiginden move ile tasinmali"
echo "$i" >>taslaklar_kopyalanmayan.log
fi
done
done
--------------------------------
chmod 777 cptaslaklar.sh
Asama 2
Eskiden .Taslaklar klasoru olupta yeni mail server formatinda .INBOX.Taslaklar klasoru olmayanlarin
asagidaki script ile eski klasorun move edilerek yeni formata donusturulmesi.
cat data.dat | grep -v "tk100" | grep "Taslaklar"| grep -v "INBOX" | cut -d/ -f1-3 | sort |uniq > mv_taslaklar.dat
---- MOVE SCRIPT---mvtaslaklar.sh----
#!/bin/bash
cat mv_taslaklar.dat|while read line; do echo "${line}"
for i in "${line}"
do
w=$(echo $i|sed -e 's/\.Taslaklar/\.INBOX.Taslaklar/')
if test -d $w
then
echo "Taslaklar klasoru olusturulmus tasima yapilamiyor."
echo "$w" >>taslaklar_tasinmayan.log
else
mv "$i" "$(echo $i|sed -e 's/\.Taslaklar/\.INBOX.Taslaklar\//')"
echo ".Taslaklar Klasoru move ediliyor."
echo "$i" >>taslaklar_tasinan.log
fi
done
done
-------------------------
chmod 777 mvtaslaklar.sh
5.)Kisisel klasorlerin tasinmasi icinse once prefixinde . isareti olup .INBOX olmayanlari grepleyerek kisilerin sahsi klasorleri bulunacak ve onune .INBOX prefixi eklenecek. Kisisel klasorlerin webmail uzeriden goruntulenebilmesi icinse, mailboxlarda onunde .INBOX prefixi olan klasorlerin
listesi olusturulup subscription dosyasina yazdiriilacak. Bu islemleri yapacak script asagida;
Yontem:
cat data.dat |grep -vE "INBOX|.Silinenler|.Taslaklar|.Giden|.Trash|cur|new|tmp|dovecot|courier|subscriptions|maildirfolder"|cut -d/ -f2-3|grep / > ozel.dat
----SCRIPT --- ozel.sh
#!/bin/bash
cat ozel.dat |while read line; do echo "${line}"
for i in "${line}"
do
mv "$i" "$(echo $i |sed -e 's/\./\.INBOX./')"
echo $i >> ozel_tasinan.log
echo ""$(echo $i |cut -d/ -f2-3|sed -e 's/\./INBOX./')"" >> "$(echo $i |cut -d/ -f1| sed -e 's/$/\/subscriptions/g' )"
done
done
---------------------------------
chmod 777 ozel.sh
4.) Geride kalan eski directorylerin ( .Giden Kutusu, .Silinenler, .Taslaklar ve kisiye ozel klasorler ) silinmesi icin asagidaki scripti kullanacagiz.
cat data.dat |grep -v ".INBOX"|grep -E ".Silinenler|.Taslaklar|.Giden Kutusu" | cut -d/ -f1-3 >remove.dat
----SCRIPT --- remove.dat
#!/bin/bash
cat remove.dat |while read line; do echo "${line}"
for i in "${line}"
do
rm -rf "$i"
echo $i >> remove_edilen.log
done
done
---------------------------------
chmod 777 remove.sh
5.) tum dosya haklari vmail.vmaile cekilecek
7) Mail serverlarin servisleri tetiklenip son kontroller yapilacak.
8) Hersey duzgun ise FIREWALL acilacak...
Monday, May 08, 2006
Proxy üstünden çıkışlarda java uygulamalarında şifre sorması başka problemlere yol açtı. Kullanıcılarımız şifre ekranından şifrelerini girmeyi beceremiyor. Bu yüzden squid.conf'a aşağıdaki satırları ekledim. Yeni rulelarla artık bir problem kalmadı.
acl javascript rep_mime_type -i ^application/x-javascript$
acl dosyauzantisi url_regex \.css$ \.js$ \.jar$ \.class$ \.gif$ \.jpg$
http_access allow dosyauzantisi
http_access allow javascript
Mesela javayla bir foto üstünde efekt yaptınız. Proxy yine şifre sorar. Bunun sebebi java'nın etkilediği dosyalarında şifre ekranı çıkarmasıdır. Bu yüzden java nın kendi dosyalarını dahil etmenize rağmen şifre sormaya devam ediyorsa java ekranından hangi dosyada yüklemeyi durdurup şifre sorduğuna bakın. Onu da ekleyin şifre gelmesin.