سكربت لمعرفه السبامرز مع جدوله للارسال للبريد

رووح القلوب

عضو جديد
20 مارس 2009
246
1
0
السلام عليكم .

شخصيا كنت بالماضي أعاني من مصيبة أنه أحيانا تجد اللود على السيرفر عالي وطبعا بما أني السيرفر ادمن ، يجب أن أعرف ما السبب . وبعد تطبيق أشهر الأوامر لمعرفة اللود ... كالعادة سبامر جديد مركب ميل ليست على مساحتة بالسيرفر .

يعني أن احد له عدد الإرسال ب 100 رسالة بالساعة لن يحل الأزمة . بل ما يحل الأزمة سسبند لمساحة هذا السامر . لذا كانت المقولة الحاجة أم الإختراع حق .

نبدأ بعون الله :

بداية أنا أفترض أنه لديك Cpanel + WHM .

1- إفتح لوحة التحكم ال WHM ومن ثم إذهب إلى خيارات تعديل ملف الإكزيم - إذهب إلى الوضع المتطور - وأضف السطور التالية في أول صندوق فارغ :


PHP:
log_selector = +all
message_logs = false
rfc1413_query_timeout = 0s

2- الان طبق هذا الأمر عن طريق الشل وذللك لتفريغ اللوق الخاص بالبريد :


PHP:
 > /var/log/exim_mainlog
> /var/log/exim_paniclog
> /var/log/maillog
> /var/log/exim_rejectlog
> /var/log/messages
rm -rf /var/log/exim_paniclog.[1-9].gz
rm -rf /var/log/exim_mainlog.[1-9].gz
rm -rf /var/log/exim_rejectlog.[1-9].gz
rm -rf /var/log/messages.[1-9]
rm -rf /var/log/maillog.[1-9]
rm -rf /var/log/secure.[1-9]
واعمل ريستارت للإكزيم .


PHP:
/etc/init.d/exim restart

3 - الان أفتح ال SSH من جديد . انشئ ملف جديد وسمة php_track_spamers



PHP:
pico php_track_spamers
وضع فية الكود التالي :

PHP:
#!/bin/bash
day=`date +%d`
year=`date +%Y`
month=`date +%m`

path="/home"
> /tmp/allpublic_html.txt
all_public_html=`grep '/public_html'  /var/log/exim_mainlog > /tmp/allpublic_html.txt`
all_count=`cat /tmp/allpublic_html.txt | wc -l`

if [ $all_count != "0" ]
  then
         for a in $path/* ; do
          if [ $a != "pkgall.sh" ]
                then
                  smart="${a:6}"
                                  
                   nobody_count=`grep /home/$smart/public_html /tmp/allpublic_html.txt | wc -l`
                   today_nobody_count=`grep '/home/'$smart'/public_html' /tmp/allpublic_html.txt | grep $year-$month-$day | wc -l`
                        if [ $nobody_count != "0" ]
                        then
                           echo $smart "Total ("$nobody_count") Today ("$today_nobody_count")#" `grep /home/$smart/public_html /tmp/allpublic_html.txt |awk '{print $1,$4}' | tail -1`
                        fi
          fi
done
fi
rm -f /tmp/allpublic_html.txt
بعد حفظ الملف ...
يجب علينا أن نقوم بتعديل الصلاحيات :

PHP:
chmod 755 php_track_spamers
هذا الكود الجميل سوف يقوم بعملية البحث ضمن ملفات اللوق وايجاد التالي :

1- إسم المستخدم لكل مساحة منشة على السيرفر .
2- عدد المرات التي التي قام باستخدام منفذ البريد لإرسال البريد . في اليوم الحالي و الاجمالي
مثال عن أسلوب الإخراج للبيانات :

PHP:
 abuarabh Total (15) Today (2)# 2008-10-04 cwd=/home/abuarabh/public_html
aladibn Total (9) Today (0)# 2008-10-03 cwd=/home/aladibn/public_html/arabic/news
alitijah Total (3) Today (0)# 2008-10-03 cwd=/home/alitijah/public_html/newweb
amalkom Total (8) Today (0)# 2008-10-03 cwd=/home/amalkom/public_html/site
darhiraa Total (13) Today (0)# 2008-10-03 cwd=/home/darhiraa/public_html
f
3- مكان تواجد السكريبت الذي إستخدمة لإرسال البريد . cwd
4- يخطرك بتاريخ أخر إرسال

أفكر بتطوير السكريبت ليكون مع واجهات و إحصائيات كاملة تخزن ضمن SQL ولكن هذا الملف يكفيني وزيادة .

ربما تواجه بطء أحيانا نتيجة عدد المستخديمين الكبير الذي تملكة .


الأن لكي تصلك المعلومات إلى بريدك بشكل يومي .
أضف كورن جوب .



PHP:
 crontab -e
ومن ثم أدخل السطر التالي :


PHP:
0 18 * * * /php_track_spamers | mail -s 'PHP Mail Useg' myemail@gmail.com

استبدل الايميل بايميلك
أنا إفترضت أن صفحة php_track_spamers موجودة مباشرة على / .

وللتشغيل للسكربت


PHP:
./php_track_spamers
اتمنى الدعاء لي ولكاتب الموضووع بالتوفيق والهدايه :icon31:​