ติดตั้ง MailScanner และ MailWatch

จาก Wiki Opensource

ปรับปรุงเมื่อ 2011-01-16 00:56

โดย คณกรณ์ หอศิริธรรม


วิธีการนี้ ทดสอบการใช้งานกับ Ubuntu 8.04 (วิธีการเลือกแผ่น Ubuntu, การปรับแต่งหลังติดตั้ง Ubuntu และ การใช้งาน apt-get ภายใน ม.สงขลานครินทร์)
และเพื่อความสะดวก ขอให้ sudo su (เพื่อใช้สิทธิ์ Super User) ในการแก้ไขระบบ

MailScanner

     sudo apt-get install postfix

  • ติดตั้ง package mailscanner เพื่อตรวจคัดกรองจดหมาย และ clamav  เพื่อหาหนอนและไวรัสคอมพิวเตอร์ใน e-mail

     sudo apt-get install mailscanner clamav

     !!! สำหรับ Ubuntu 10.04, mailscanner ที่มากับ Ubuntu ไม่สามารถใช้การได้ ให้ทำดังนี้แทน !!!
     sudo apt-get install libconvert-tnef-perl libdbd-sqlite3-perl libfilesys-df-perl libmailtools-perl libmime-tools-perl libmime-perl libnet-cidr-perl libsys-syslog-perl libio-stringy-perl libfile-temp-perl libsys-hostname-long-perl
     wget http://debian.intergenia.de/debian/pool/main/m/mailscanner/mailscanner_4.79.11-2.2_all.deb
     sudo dpkg --force-all -i mailscanner_4.79.11-2.2_all.deb

  • แก้ไขไฟล์ /etc/MailScanner/MailScanner.conf

      Run As User = postfix
      Run As Group = postfix
      Incoming Queue Dir = /var/spool/postfix/hold
     Outgoing Queue Dir = /var/spool/postfix/incoming
      MTA=postfix
      Virus Scanners = clamav

  • แก้ไขไฟล์ /etc/MailScanner/spam.assassin.prefs.conf

      razor_config /var/lib/MailScanner

  • ติดตั้ง package เครื่องมือช่วยวิเคราะห์ Spam

     sudo apt-get install pyzor razor

     sudo apt-get -f install

  • แก้ไข /etc/default/mailscanner

      run_mailscanner=1

  • แก้ไขสิทธิ์ ให้เป็นของ postfix ในไฟล์ต่อไปนี้

     sudo chown -R postfix.postfix /var/spool/MailScanner/
     sudo chown -R postfix.postfix /var/lib/MailScanner/
     sudo chown -R postfix.postfix /var/run/MailScanner/
     sudo chown -R postfix.postfix /var/lock/subsys/MailScanner/

  • หลังการเปลี่ยนแปลง ก็ restart mailscanner

     sudo /etc/init.d/mailscanner restart


MailWatch

  • ติดตั้ง package เกี่ยวกับ mysql และ php ต่างๆ

     sudo apt-get install mysql-server php5-mysql php5-gd php5-cli

  • ระบบจะให้ตั้ง password ของ mysql ให้กำหนดลงไป (ตั้งรหัสไว้อย่างไรจำให้ได้ด้วย)
  • restart apache

    sudo /etc/init.d/apache2 restart

  • restart mysql

     sudo /etc/init.d/mysql start

  • download mailwatch มา (ในกรณีนี้ ดึงจาก ftp ของมหาวิทยาลัยสงขลานครินทร์)

     sudo wget ftp://ftp.psu.ac.th/pub/mailwatch/mailwatch-1.0.4.tar.gz

  • แตกไฟล์ออกมาเป็น directory

     sudo tar -zxvf mailwatch-1.0.4.tar.gz

     sudo ln -s mailwatch-1.0.4 mailwatch

  • เข้าไปใน directory mailwatch เพื่อดำเนินการติดตั้ง mailwatch

     cd mailwatch

  • เรียกใช้ sql script เพื่อสร้าง Database สำหรับ MailWatch

     mysql -uroot -p < create.sql

  • Login เข้าไปใน mysql เพื่อสร้างผู้ใช้สำหรับ MailWatch

     mysql -u root -p
     mysql> GRANT ALL ON mailscanner.* TO mailwatch@localhost IDENTIFIED BY 'mailwatchpassword';
     mysql> quit

  • แก้ไขไฟล์ MailWatch.pm

     my($db_user) = 'mailwatch';
     my($db_pass) = 'mailwatchpassword';

  • นำไฟล์ MailWatch.pm ไปผูกกับ MailScanner

     sudo cp MailWatch.pm /usr/share/MailScanner/MailScanner/CustomFunctions

  • Login เข้า mysql ด้วยสิทธิ์ user ของ MailWatch และสร้าง user สำหรับเข้าใช้งานทาง Web

     mysql mailscanner -u mailwatch -p
     mysql> INSERT INTO users VALUES ('mailwatchweb',md5('mailwatchwebpassword'),'MailWatch Web User','A','0','0','0','0','0');

  • ย้าย directory mailwatch ไปไว้ใน Document Root ของ apache เพื่อให้สามารถเรียกใช้ทาง web ได้

     sudo mv mailscanner /var/www

  • เข้าไปใน directory /var/www/mailscanner เพื่อกำหนดสิทธิ์การเข้าถึง directory ส่วนต่างๆ

     cd /var/www/mailscanner
     sudo  chown root.www-data images
     sudo  chown root.www-data images/cache
     sudo  chmod ug+rwx images
     sudo  chmod ug+rwx images/cache

  • copy ต้นแบบ configuration ของเดิม มาใช้งาน

     sudo cp conf.php.example conf.php

  • แก้ไขไฟล์ conf.php เพื่อทำให้ MailWatch เข้าใช้ mysql ได้

     define(DB_USER, 'mailwatch');
     define(DB_PASS, 'mailwatchpassword');
     define(QUARANTINE_USE_FLAG, true);
     //define(MAILWATCH_HOME, '/var/www/html/mailscanner');
     define(MAILWATCH_HOME, '/var/www/mailscanner');

  • แก้ไขไฟล์ /path/to/mailwatch/tools/quarantine_maint.php (/path/to/mailwatch/ คือ path ที่เราแตกไฟล์ mailwatch-1.0.4.tar.gz ออกมาในข้างต้น ต้องแก้ไขให้ตรงกับความเป็นจริงด้วย)

     //require('/var/www/html/mailscanner/functions.php');
     require('/var/www/mailscanner/functions.php');

  • สร้างไฟล์ cron สำหรับลบ Quarantine ของ MailWatch ทุกวัน และเปลี่ยนสิทธ์ให้สามารถ execute ได้

     sudo echo "/path/to/mailwatch/tools/quarantine_maint.php --clean" > /etc/cron.daily/mailwatch_quarantine_maint.sh
     sudo chmod +x /etc/cron.daily/mailwatch_quarantine_maint.sh

  • แก้ไขไฟล์ /var/www/mailscanner/do_message_ops.php (ในกรณีที่ต้องการอ่าน queue file ใน quarantine)

     //if (preg_match('/^OPT-([-[a-zA-Z0-9]+)$/', $k, $Regs)) {
     //$id = $Regs[1];
     if (preg_match('/^OPT-([a-zA-Z0-9]+)_([a-zA-Z0-9]+)/', $k, $Regs)) {
     $id = "$Regs[1].$Regs[2]";

  • หยุดการทำงานของ mailscanner ชั่วคราวเพื่อแก้ไขระบบ

     sudo /etc/init.d/mailscanner stop

  • แก้ไขไฟล์ /etc/MailScanner/MailScanner.conf

     Run As Group = www-data
     Quarantine User = postfix
     Quarantine Group = www-data
     Quarantine Permissions = 0660
     Quarantine Whole Message = yes
     Quarantine Whole Messages As Queue Files = no
     Spam Actions = deliver header "X-Spam-Status: Yes" store
     High Scoring Spam Actions = deliver header "X-Spam-Status: Yes" store
     Non Spam Actions = deliver header "X-Spam-Status: No" store
     Always Looked Up Last = &MailWatchLogging

  • แก้ไข /etc/MailScanner/spam.assassin.prefs.conf ค่าต่อไปนี้

    bayes_path /etc/MailScanner/bayes/bayes
    bayes_file_mode 0660

    แล้วสร้าง bayes directory และให้สิทธิ group เดียวกับ Web User (www-data)

    sudo mkdir /etc/MailScanner/bayes
    sudo chown root:www-data /etc/MailScanner/bayes
    sudo chmod g+rws /etc/MailScanner/bayes

   
    จากนั้น ย้ายของเดิม (ถ้ามี) ไปเก็บ และเปลี่ยน Permission ให้ถูกต้อง

    sudo cp /home/mama/.spamassassin/bayes_* /etc/MailScanner/bayes
    sudo chown root:www-data /etc/MailScanner/bayes/bayes_*
    sudo chmod g+rw /etc/MailScanner/bayes/bayes_*

  • แก้ไขไฟล์ /etc/postfix/main.cf (เพื่อเปิดให้ postfix ไปตรวจสอบ Header ของแต่ละ e-mail โดยดูแบบตัวอย่างจากไฟล์ header_checks)

     header_checks = regexp:/etc/postfix/header_checks

  • แก้ไขไฟล์ /etc/postfix/header_checks (บังคับให้ e-mail ไหลเข้า HOLD queue ของ Postfix เพื่อให้ MailScanner ตรวจสอบก่อนจะส่งเข้า incoming queue เพื่อส่งต่อไป)

      /^Received:/ HOLD

  • ทำการ Restart postfix
    sudo /etc/init.d/postfix restart
  • จากนั้น ให้ restart mailscanner  อีกครั้งจึงเสร็จสมบูรณ์

     sudo /etc/init.d/mailscanner start

วิธีการเข้าใช้งาน MailWatch

  • เปิด Web Browser ไปที่

     http://your.web.site/mailscanner
     ระบบจะถาม username/password สำหรับเข้า web interface ของ MailWatch ที่กำหนดไว้<span style="text-decoration: underline;" />