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


วิธีการนี้ ทดสอบการใช้งานกับ Ubuntu 8.04 (วิธีการเลือกแผ่น Ubuntu, การปรับแต่งหลังติดตั้ง Ubuntu และ การใช้งาน apt-get ภายใน ม.สงขลานครินทร์)
และเพื่อความสะดวก ขอให้ sudo su (เพื่อใช้สิทธิ์ Super User) ในการแก้ไขระบบ
MailScanner
ติดตั้ง Postfix (อ่านข้อมูลเพิ่มเติมที่นี่)
     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;"></span>