สมัครสมาชิก   เข้าระบบ  
Life Style mrGilL
P mrGilL
Ramkhamhaeng University
อีเมลติดต่อ
 
อ่าน: 1912
การติดตั้งเมลเซิร์ฟเวอร์บน CentOS 5 ด้วย Postfix + Dovecot + OpenWebmail + MailGraph + Anti Spam and Malware
How to Mail Server On CentOS 5 with Postfix + Dovecot + OpenWebmail + MailGraph + Anti Spam and Malware

      สวัสดีครับช่วงนี้ก็เสร็จสิ้นการเรียน Summer ของผมแล้วเลยพอมีเวลาว่างมานั่งเขียนโน้นเขียนนี่บ้าง วันนี้นำเรื่องการติดตั้งเมลเซิร์ฟเวอร์สำหรับ CentOS 5 มาฝากกันครับ วันนี้คิดว่าอยู่ว่างๆ เลยมานั่งเขียนให้เสร็จไปเลยดีกว่า อีกอย่างช่วงนี้ผมเองก็ไม่ค่อยจะได้อัพเดทบล๊อกสักเท่าไหร่

      ในการติดตั้งเครื่องเซิร์ฟเวอร์ CentOS ใหม่ ผมไม่เลือก Packages อะไรเลยน่ะครับ แม้แต่ Gnome เองผมก็ไม่ได้เลือก เป็นเครื่องเปล่าๆ ผมปิดการทำงานของ iptables และ selinux ทั้งหมด

 *Tip  แนะนำสำหรับผู้เริ่มเริ่มใช้งานลีนุกซ์ใหม่นิดนึงครับเรื่องการแบ่งพาร์ติชันของลีุนุกซ์ ควรแบ่ง /var/spool/mail และ /var/log แยกออกมาจาก /var จะดีที่สุดครับ และควรให้ /var/log มีขนาดใหญ่เป็นพิเศษ เพราะจากประสบการณ์ของผมหากเราไม่ได้แยก /var/log และ /var/spool/mail ออกมาจาก /var และกำหนดขนาดของ /var ไว้น้อยเกินไปเช่น 4 GB ไม่นาน /var ก็จะเต็มเพราะ /var/log และ /var/spool/mail จะโตขึ้นทุกวันอาจทำให้ Server ที่เราให้บริการมีปัญหาได้

ก็เป็นทิปเล็กๆ น้อยๆ มาเริ่มกันเลยดีกว่าครับ

1.) ติดตั้ง Postfix (SMTP)

# yum install postfix

หลังจากติดตั้งเสร็จ ไฟล์คอนฟิกต่างๆ ของ postfix อยู่ที่ /etc/postfix

ไฟล์สำคัญที่ใช้สำหรับคอนฟิกค่าหลักๆ ของ postfix คือไฟล์ /etc/postfix/main.cf


2.) Generate Certificate Files ให้กัับ Postfix

# mkdir /etc/postfix/ssl

# cd /etc/postfix/ssl/

# openssl genrsa -rand /etc/hosts -out smtpd.key 1024

# chmod 600 smtpd.key

# openssl req -new -key smtpd.key -out smtpd.csr

# openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt

# openssl rsa -in smtpd.key -out smtpd.key.unencrypted

# mv -f smtpd.key.unencrypted smtpd.key

# openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650


3.) สร้างไฟล์ /etc/postfix/mime_header_checks เพื่อป้องกันไฟล์แนบที่เป็น .bat .exe .com .vbs

# echo "/name=[^>]*\.(bat|com|exe|dll|vbs)/ REJECT" > /etc/postfix/mime_header_checks


4.) สร้างไฟล์ /etc/postfix/mbl-body-deny เพื่อป้องกัน Malware

# wget -O - http://www.malware.com.br/cgi/submit?action=list_postfix > /etc/postfix/mbl-body-deny


5.) สร้างสคริปท์สำหรับใช้อัพเดทไฟล์ /etc/postfix/mbl-body-deny

# nano /etc/postfix/fetch.postfixmalware.sh

จากนั้นเพิ่มบรรทัดเหล่านี้เข้าไป

#!/bin/bash
# Script to update malware urls
/usr/bin/wget -O - http://www.malware.com.br/cgi/submit?action=list_postfix > /etc/postfix/mbl-body-deny
/usr/sbin/postmap /etc/postfix/mbl-body-deny
/etc/init.d/postfix reload

บันทึกและออกจาก nano (บันทึกกด Ctrl + O และออกกด Ctrl + X)


6.) เปลี่ยน permission ให้กับ /etc/postfix/fetch.postfixmalware.sh

# chmod +x /etc/postfix/fetch.postfixmalware.sh


7.) เพิ่ม crontab ดังนี้

# crontab -e

จากนั้นเพิ่มบรรทัดด้านล่างเข้าไป (กด i เพื่อเข้า Insert โหมด)

40 03 * * * /etc/postfix/fetch.postfixmalware.sh >/dev/null 2>&1

บันทึกและออกจาก crontab (กด esc แล้วกด :wq)


8.) ตอนนี้เราสร้างไฟล์ต่างๆ สำหรับ postfix เสร็จเรียบร้อยแล้วก็มาถึงขึ้นตอนการกำหนดค่าในไฟล์คอนฟิกของ postfix กันบ้าง

# cd /etc/postfix

# cp main.cf main.cf.original

# nano main.cf

ค่าที่สำคัญๆ มีดังนี้

myhostname = mail.obsdcontrol.org
mydomain = obsdcontrol.org
myorigin = $mydomain
inet_interfaces = all
mydestination = $myhostname, $mydomain, localhost
mynetworks = 202.41.164.195/128, 127.0.0.0/8

และเพิ่มบรรทัดเหล่านี้ไปต่อท้ายไฟล์

body_checks = regexp:/etc/postfix/mbl-body-deny
mime_header_checks = regexp:/etc/postfix/mime_header_checks

smtpd_tls_auth_only = yes
smtp_use_tls = yes
smtpd_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key
smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt
smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s

mailbox_size_limit = 0

#ส่วนของการป้องกัน Spam

smtpd_helo_required = yes
disable_vrfy_command = yes
strict_rfc821_envelopes = yes
invalid_hostname_reject_code = 554
multi_recipient_bounce_reject_code = 554
non_fqdn_reject_code = 554
relay_domains_reject_code = 554
unknown_address_reject_code = 554
unknown_client_reject_code = 554
unknown_hostname_reject_code = 554
unknown_local_recipient_reject_code = 554
unknown_relay_recipient_reject_code = 554
unknown_sender_reject_code = 554
unknown_virtual_alias_reject_code = 554
unknown_virtual_mailbox_reject_code = 554
unverified_recipient_reject_code = 554
unverified_sender_reject_code = 554

smtpd_recipient_restrictions =
            reject_invalid_hostname,
            reject_unknown_recipient_domain,
            reject_unauth_pipelining,
            permit_mynetworks,
            permit_sasl_authenticated,
            reject_unauth_destination,
            reject_rbl_client multi.uribl.com,
            reject_rbl_client dsn.rfc-ignorant.org,
            reject_rbl_client list.dsbl.org,
            reject_rbl_client sbl-xbl.spamhaus.org,
            reject_rbl_client bl.spamcop.net,
            reject_rbl_client cbl.abuseat.org,
            reject_rbl_client ix.dnsbl.manitu.net,
            reject_rbl_client combined.rbl.msrbl.net,
            reject_rbl_client rabl.nuclearelephant.com,
            permit

smtpd_error_sleep_time = 1s
smtpd_soft_error_limit = 10
smtpd_hard_error_limit = 20

บันทึกและออกจาก nano


9.) เนื่องด้วย CentOS มีการติดตั้ง Sendmail และกำหนดให้เป็นโปรแกรมเริ่มต้นของระบบดังนั้นจึงจำเป็นต้องถอนการติดตั้งหรือไม่ก็หยุดการทำงานของ Sendmail เสียก่อนถึงจะเปิดใช้งาน Postfix ได้ ในกรณีนี้ผมขอถอนการติดตั้งของ Sendmail

# /etc/init.d/sendmail stop

# yum remove sendmail

กำหนดให้ Postfix ทำงานทุกครั้งเมื่อเริ่มต้นระบบ

# chkconfig postfix on

# postmap /etc/postfix/mbl-body-deny

เริ่มการทำงานของ postfix

# /etc/init.d/postfix start


10.) เปิดการทำงานของเซอร์วิส saslauthd

# ckhconfig saslauthd on

# /etc/init.d/saslauthd start


11.) ติดตั้่ง Dovecot (IMAP, POP3)

# yum install dovecot

หลังจากติดตั้งเสร็จจะได้ไฟล์ /etc/dovecot.conf ค่าเริ่มต้นของ dovecot นี่สามารถใช้งานได้เลย หรือถ้าใครจะแก้ไข เช่น กำหนดให้รับเฉพราะ ipv4 ก็สามารถไปกำหนดได้ในไฟล์ดังกล่าว


12.) กำหนดใช้ Dovecot ทำงานทุกครั้งเมื่อเริ่มต้นระบบ

# chkconfig dovecot on

เริ่มการทำงานของ dovecot

# /etc/init.d/dovecot start


13.) ทดสอบการทำงานของ Postfix และ Dovecot

# ps aux | grep postfix
root      1952  0.0  0.6   6708  1760 ?        Ss   12:24   0:00 /usr/libexec/postfix/master
postfix   1955  0.0  0.7   6828  1820 ?        S    12:24   0:00 qmgr -l -t fifo -u
postfix   3442  0.0  0.6   6772  1716 ?        S    15:44   0:00 pickup -l -t fifo -u

# ps aux | grep dovecot
root      2035  0.0  0.2   1844   560 ?        Ss   12:31   0:03 /usr/sbin/dovecot
root      2037  0.0  0.6   7496  1640 ?        S    12:31   0:03 dovecot-auth
dovecot   2038  0.0  0.6   4788  1680 ?        S    12:31   0:03 pop3-login
dovecot   2039  0.0  0.6   4788  1684 ?        S    12:31   0:03 pop3-login
dovecot   2040  0.0  0.6   4788  1684 ?        S    12:31   0:03 pop3-login
dovecot   2041  0.0  0.6   4792  1684 ?        S    12:31   0:03 imap-login
dovecot   2042  0.0  0.6   4792  1684 ?        S    12:31   0:03 imap-login
dovecot   2043  0.0  0.6   4792  1688 ?        S    12:31   0:03 imap-login

# netstat -pant | grep 25
tcp        0      0 0.0.0.0:25                  0.0.0.0:*                   LISTEN      1952/master

# netstat -pant | grep 110
tcp        0      0 :::110                      :::*                        LISTEN      2035/dovecot

# netstat -pant | grep 143
tcp        0      0 :::143                      :::*                        LISTEN      2035/dovecot

# netstat -pant | grep 993
tcp        0      0 :::993                      :::*                        LISTEN      2035/dovecot

# netstat -pant | grep 995
tcp        0      0 :::995                      :::*                        LISTEN      2035/dovecot

ทดสอบโดยใช้คำสั่ง telnet ไปยังเครื่องเซิร์ฟเวอร์ที่พอร์ต 25, 110, 143 เพื่อทดสอบ postfix และ dovecot

# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost (127.0.0.1).
Escape character is '^]'.
220 mail.obsdcontrol.org ESMTP Postfix
ehlo mailserver
250-mail.obsdcontrol.org
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN

# telnet localhost 110
Trying 127.0.0.1...
Connected to localhost (127.0.0.1).
Escape character is '^]'.
+OK Dovecot ready.

# telnet localhost 143
Trying 127.0.0.1...
Connected to localhost (127.0.0.1).
Escape character is '^]'.
* OK Dovecot ready.



14.) ติดตั้ง httpd (Apache) + mod_ssl + mod_perl

# yum install httpd mod_ssl mod_perl

 หลังจากติดตั้งเสร็จแล้วไฟล์คอนฟิกต่างของ httpd จะอยู่ที่ /etc/httpd/conf และ /etc/httpd/conf.d ไฟล์คอนฟิกหลักของ httpd คือ /etc/httpd/conf/httpd.conf

กำหนดให้ httpd ทำงานเองทุกครั้งเมื่อเริ่มต้นระบบ

# chkconfig httpd on

เริ่มการทำงานของ httpd

# /etc/init.d/httpd start


15.) ติดตั้ง OpenWebmail สำหรับใช้เป็นเว็บเมล เราสามารถติดตั้ง openwebmail ได้หลายรูปแบบแต่ที่ผมจะทำในขั้นตอนต่อไปนี้ผมจะติดตั้งผ่านคำสั่ง yum

ดาวน์โหลด Repository ของ Openwebmail

# cd /etc/yum.repos.d

# lftpget ftp://openwebmail.org/pub/yum/openwebmail.repo แก้ไข 21 กรกฎาคม 2551

# lftpget http://openwebmail.org/openwebmail/download/redhat/rpm/release/openwebmail.repo


ติดตั้ง Repository ของ DAG เพิ่มเติมเข้าไปสำคัญมาก หากไม่ติดตั้งจะทำให้ไม่สามารถติดตั้ง Packages perl-Text-Iconv ได้

# rpm -Uhv http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm


ติดตั้ง Openwebmail

# yum install openwebmail

เมื่อติดตั้งเสร็จแล้ว openwebmail จะอยู่ที่ /var/www/cgi-bin/openwebmail

จากนั้นรันคำสั่งต่อไปนี้

# /var/www/cgi-bin/openwebmail/openwebmail-tool.pl --init

 

16.) รีสตาร์ท httpd และทดลองเข้า openwebmail โดยเรียก url ดังนี้

http://mail.yourdomain.com/cgi-bin/openwebmail/openwebmail.pl หรือ

http://mail.yourdomain.com/webmail  (ในกรณีที่มีการติดตั้ง Squirrelmail อยู่ก่อนหน้าแล้ว Alias ของ Openwebmail จะไปแทนที่ Alias ของ Squirrelmail ซึ่งจะอธิบายในข้อต่อไป) จะได้หน้าเว็บดังนี้

 

 

17.) จากที่กล่าวไว้ข้างต้นเรื่อง Alias ของ Openwebmail อาจไปซ้ำซ้อนกับ Squirrelmail (หากไม่ได้ติดตั้ง Squirrelmail ไว้ก่อนหน้า ข้ามหัวข้อนี้ไปได้เลย) ตำแหน่งที่เก็บไฟล์ Alias ของ Openwebmail จะอยู่ที่ /etc/httpd/conf.d/openwebmail.conf โดยในไฟล์ดังกล่าวมีข้อมูลดังนี้

ScriptAlias /webmail /var/www/cgi-bin/openwebmail/openwebmail.pl
Alias /data /var/www/data

วิธีเปลี่ยนชื่อ Alias ทำได้โดยเปลี่ยนค่า /webmail เป็นชื่อที่ต้องการเช่น /openwebmail จากนั้นรีสตาร์ท httpd และเรียก url

http://mail.yourdomain.com/openwebmail


ส่งท้ายเรื่อง Openwebmail หากต้องการแก้ไข logo ในหน้า login สามารถแก้ไขไฟล์ /var/www/data/openwebmail/images/openwebmail.gif โดยนำรูปที่ต้องการเป็น logo ไปเซฟทับไฟล์เก่าได้เลยครับ


18.) ติดตั้ง MailGraph เพื่อดูสถิติการใช้งานเมลเซิร์ฟเวอร์

ดาวน์โหลด mailgraph

# wget http://mailgraph.schweikert.ch/pub/mailgraph-1.14.tar.gz

# tar zxvf mailgraph-1.14.tar.gz

# cd mailgraph-1.14

# mv mailgraph.pl /usr/local/bin/

# chmod +x mailgraph-init

# mv mailgraph-init /etc/init.d/mailgraph

แก้ไขไฟล์ /etc/init.d/mailgraph

# nano /etc/init.d/mailgraph

โดยเปลี่ยนค่าบรรทัดต่อไปนี้

MAIL_LOG=/var/log/syslog

เป็น

MAIL_LOG=/var/log/maillog

และเพิ่ม IGNORE_LOCALHOST="--ignore-localhost" ต่อท้าย RRD_DIR=/var/lib ดังตัวอย่าง
PATH=/bin:/usr/bin
MAILGRAPH_PL=/usr/local/bin/mailgraph.pl
MAIL_LOG=/var/log/maillog #เปลี่ยนค่า
PID_FILE=/var/run/mailgraph.pid
RRD_DIR=/var/lib
IGNORE_LOCALHOST="--ignore-localhost" #เพิ่มเข้าไป

case "$1" in
'start')
        echo "Starting mail statistics grapher: mailgraph";
        nice -19 $MAILGRAPH_PL -l $MAIL_LOG -d \
                --daemon-pid=$PID_FILE --daemon-rrd=$RRD_DIR $IGNORE_LOCALHOST #เพิ่มต่อเข้าไป
        ;;

# mv mailgraph.* /var/www/cgi-bin

แก้ไขไฟล์ /var/www/cgi-bin/mailgraph.cgi

โดยแก้สองบรรทัดดังนี้

my $rrd = 'mailgraph.rrd'; # path to where the RRD database is
my $rrd_virus = 'mailgraph_virus.rrd'; # path to where the Virus RRD database is

เป็น

my $rrd = '/var/lib/mailgraph.rrd'; # path to where the RRD database is
my $rrd_virus = '/var/lib/mailgraph_virus.rrd'; # path to where the Virus RRD database is

เนื่องจาก mailgraph จำเป็นต้องใช้เพ็กเกจ rrdtool และ  perl-File-Tail ดังนั้นจึงจำเป็นต้องติดตั้ง rrdtool และ perl-File-Tail เสียก่อน (อ่านได้จาก README)

# yum install rrdtool perl-File-Tail

เริ่มการทำงานของ mailgraph

# /etc/init.d/mailgraph start

ให้ mailgraph ทำงานเองเมื่อเริ่มต้นระบบ

# ckhconfig mailgraph on

ทดสอบเรียกดูหน้าเว็บของ mailgraph โดยเรียก url

http://mail.yourdomail.com/cgi-bin/mailgraph.cgi

 

        สำหรับเรื่องของเมลเซิร์ฟเวอร์ก็คงมีแค่นี้ครับ สำหรับวิธีการใช้งานก็สร้าง user ขึ้นมาตามต้องการจากนั้นก็ลองรับส่งกันดูได้ครับ

        เพิ่มเติมนิดนึงครับ สำหรับใครที่ต้องการให้บริการแค่เว็บเมล และไม่ได้ใช้โปรแกรม mail agent อย่างพวก outlook, thunder bird , etc... ก็สามารถปิดบริการของ Dovecot ออกไปได้เลยครับ เพราะ Openwebmail ไม่จำเป็นต้องใช้ imap เหมือนกัน Squirrelmail และทางที่ดีควรใช้โปรโทคอล https ในการ login เพื่อใช้งานระบบเว็บเมลจะดีที่สุดครับ เพราะมีความปลอดกับกว่า http ธรรมดา

        หากขาดตกบกพร่องส่วนไหนไปยินดีรับความคิดเห็นของทุกคนน่ะครับ

        ขอบคุณครับ

แหล่งข้อมูล :

http://dag.wieers.com/rpm/FAQ.php#B

http://www.openwebmail.org/openwebmail/download/redhat/yum/readme.txt

http://www.howtoforge.com/perfect_server_centos4.5_p5

http://www.cyberciti.biz/tips/howto-setup-postfix-mail-server-to-block-mal

http://www.howtoforge.com/block_spam_at_mta_level_postfix

http://www.cyberciti.biz/tips/postfix-spam-filtering-with-blacklists-howto.html

คลิกเพื่อบันทึก​เข้า​ Social Bookmark Blog :      

สร้าง: จ. 12 พฤษภาคม 2551 @ 16:26   แก้ไข: อ. 11 พ.ย. 2551 @ 10:29   ขนาด: 36884 ไบต์
ความคิดเห็น
ไม่มีรูป
1. p'Tom Computer
เมื่อ ส. 17 พฤษภาคม 2551 @ 02:06
250573 [ลบ]

เยี่ยมครับ...การแบ่งปันและถ่ายทอดความรู้ให้คนอื่นๆ แบบนี้ น่ายกย่อง ให้กำลังใจและทำดีต่อไปนะ...แต่ไงกิว ก้อพยายามทำสิ่งดีให้กับตัวเองด้วยล่ะ ขอบคุณแทนเพื่อนๆ ที่ได้อ่านบทความนี้ด้วยครับผม ^o^

ไม่มีรูป
2. yangyuen
เมื่อ อ. 27 พฤษภาคม 2551 @ 14:44
251756 [ลบ]

ขอบคุณครับ เดี่ยวจะลองทำดู

ไม่มีรูป
3. NaN
เมื่อ จ. 18 ส.ค. 2551 @ 09:10
290637 [ลบ]

สุดยอดครับ หามานานแล้ว ขอบคุณมากเดี๋ยวจะลองทำดู

ไม่มีรูป
4. Tiger
เมื่อ จ. 01 ก.ย. 2551 @ 17:53
300135 [ลบ]

สุดยอดมากเลยครับ ลองทำดูแล้วเวิร์กมาเลยครับ ขอบคุณมากครับ

ไม่มีรูป
5. ยมฑูต สันดานเรว
เมื่อ อ. 04 พ.ย. 2551 @ 10:45
318993 [ลบ]

คือว่านะคัฟ มีปัญหาการใช้ telnet อ่ะคัฟ

คือว่า มีตัว install แร้ว

แต่ว่า จะใช้เครื่องอื่นทำการ

ติดต่อกับฐานข้อมูลของเครื่องเราอ่ะคัฟ

คือว่า เราใช้ sent OS 5 อ่ะคัฟ

ไม่สามารถติดต่อกันได้เรย

ควรทำไงดี ปวดหัวมากมายเรย

ชื่อ:
อีเมล:
IP แอดเดรส: 38.103.63.59
  เรียกใช้งานตัวจัดการข้อความ
ข้อความ:
 
รหัสสุ่ม: (ใส่รหัสสุ่มที่แสดงไว้ด้านบน)
  ยกเลิก



ผู้เข้าชม free web page counters คน
creativecommons Search Engine Optimization