Google

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

No comments: