banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành *nix Làm mail server với Postfix - Phần 3  XML
  [Article]   Làm mail server với Postfix - Phần 3 11/08/2006 02:27:53 (+0700) | #1 | 13864
[Avatar]
tranvanminh
HVA Friend

Joined: 04/06/2003 06:36:35
Messages: 516
Location: West coast
Offline
[Profile] [PM]
Chống spam bằng SpamAssassin

Nội dung

1. Giới thiệu
2. Cài đặt, cấu hình cơ bản
3. Mở rộng, nâng cao
4. Tham khảo

Giới thiệu

SpamAssassin phát hiện và đánh dấu spam mail bằng cách phân tích thông tin trong header và nội dung mail. SpamAssassin tiêu tốn khá nhiều tài nguyên (cpu, memory, thời gian xử lý) của server, đặc biệt khi phải xử lý những mail có size lớn. Cấu hình để SpamAssassin hoạt động tốt, đồng thời giảm nhẹ sự tiêu tốn tài nguyên cho server là một vấn đề quan trọng.

Bài viết này giới thiệu cách dùng SpamAssassin và procmail để đánh dấu spam mail cho Postfix server (postfix 2.x). Phương pháp này có những đặc điểm

* ít thay đổi cấu hình mặc định của Postfix (chỉ sửa một dòng trong file main.cf, không thay đổi file master.cf)
* giảm tải cho server bằng cách dùng spamc/spamd (không dùng trực tiếp chương trình spamassassin) và chọn cỡ mail thích hợp
* cho phép mỗi user tự xây dựng quy tắc kiểm tra spam riêng cho mình
* chú ý: ở đây chỉ dùng SpamAssassin để đánh dấu mail. Việc xử lý những mail bị đánh dấu spam (như xóa, phân loại vào hộp thư riêng) được thực hiện ở mail client.

Bắt đầu viết: tháng 5 năm 2003.
Thay đổi lần cuối vào lúc: Sun Feb 1 12:47:44 JST 2004.

Cài đặt và cấu hình

Mail đến server sẽ được xử lý như sau: postfix → procmail → spamassassin → hộp thư của user.

Bài viết này giả sử postfix, spamassassin, và procmail đã được cài đặt và hoạt động. Những file cấu hình cần thiết và vị trí của chúng giả sử như sau

1. postfix: /etc/postfix/main.cf
2. procmail: /etc/procmailrc
3. SpamAssassin: /etc/mail/spamassassin/local.cf

Trước hết, sửa file main.cf để procmail xử lý mail

### chỉ cần uncomment (xóa #) dòng này
mailbox_command = /usr/bin/procmail
 

Tiếp đến, tạo một file /etc/procmailrc như sau

### tôi thích dùng Maildir
MAILDIR=$HOME
DEFAULT=$MAILDIR/Maildir/
DROPPRIVS=yes

# spam thường có size nhỏ hơn 10 KiB (10*1024=10240 bytes),
# kiểm tra những file lớn chỉ làm tốn tài nguyên của server!
:0fw
* < 10240
| /usr/bin/spamc
 

Sau đó lập những quy tắc kiểm tra mail cho SpamAssassin. File local.cf ghi những quy tắc chung cho mọi user.

# thường chỉ nhận mail tiếng Việt, tiếng Anh
ok_locales vi en
# ngưỡng spam, nên sử dụng những giá trị từ 5-10
required_hits 5
# thay đổi tiêu đề mail nếu là spam
rewrite_subject 1
# đánh dấu spam
subject_tag [*** SPAM ***]

# với SpamAssassin 3.x: thay thế "rewrite_subject" và "subject_tag" bằng
# rewrite_header Subject [*** SPAM ***]

# đây là mail của những người quan trọng,
# không bao giờ được đánh dấu spam!
whitelist_from gf@domain-1.name
whitelist_from *@domain-2.name 


Khởi động SpamAssassin (xem script khởi động phía dưới) với option: SPAMDOPTIONS="-d -c -a -m5", trong đó

1. -d: (daemonize) chế độ daemon
2. -c: (create-prefs) tạo file cấu hình riêng cho các user
3. -a: (auto-whitelist) tự động điều chỉnh whitelist
4. -m: (max-children) số process tối đa

Gõ "man spamd" để xem thêm về các option.

Sau đây là một ví dụ về script khởi động /etc/init.d/spamassassin (tham khảo từ file của FC1).

#!/bin/sh
# spamassassin This script starts and stops the spamd daemon
#
# chkconfig: 3 80 30
#
# description: spamd is a daemon process which uses SpamAssassin to check
# email messages for SPAM. It is normally called by spamc
# from a MDA.

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0

# Source spamd configuration.
if [ -f /etc/sysconfig/spamassassin ] ; then
. /etc/sysconfig/spamassassin
else
SPAMDOPTIONS="-d -c -a -m5 -H"
fi

[ -f /usr/bin/spamd -o -f /usr/local/bin/spamd ] || exit 0
PATH=$PATH:/usr/bin:/usr/local/bin

# See how we were called.
case "$1" in
start)
# Start daemon.
echo -n "Starting spamd: "
daemon spamd $SPAMDOPTIONS
RETVAL=$?
echo
[ $RETVAL = 0 ] && touch /var/lock/subsys/spamassassin
;;
stop)
# Stop daemons.
echo -n "Shutting down spamd: "
killproc spamd
RETVAL=$?
echo
[ $RETVAL = 0 ] && rm -f /var/lock/subsys/spamassassin
;;
restart)
$0 stop
$0 start
;;
status)
status spamd
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
esac

exit 0 


Sau khi khởi động, spamd (spamassassin daemon) sẽ chờ ở cổng 783 của localhost (address 127.0.0.1).

### khởi động spamassassin
/etc/init.d/spamassassin start

### kiểm tra bằng nmap
$ nmap localhost

### kết quả nmap
...
783/tcp open hp-alarm-mgr
...

Đến đây kết thúc phần cấu hình. Khởi động lại postfix (lệnh "postfix reload"), gửi thử 1 mail và kiểm tra phần header

### đây là ví dụ về header một mail bình thường, không phải spam
X-Spam-Checker-Version: SpamAssassin ver (YYYY-MM-DD) on ServerName
X-Spam-Level: *
X-Spam-Status: No, hits=1.2 required=5.0 tests=xxx autolearn=xxx version=x.yz

### đây là ví dụ về header của một spam mail
X-Spam-Checker-Version: SpamAssassin ver (YYYY-MM-DD) on ServerName
X-Spam-Level: ******************
X-Spam-Status: Yes, hits=18.3 required=5.0 tests=FORGED_AOL_HTML,
FORGED_MUA_AOL_FROM,HTML_90_100,HTML_IMAGE_ONLY_02,HTML_MESSAGE,
MIME_HTML_NO_CHARSET,MIME_HTML_ONLY,MIME_HTML_ONLY_MULTI,
MISSING_MIMEOLE,MISSING_OUTLOOK_NAME,NO_DNS_FOR_FROM,RCVD_IN_DSBL,
RCVD_IN_NJABL,RCVD_IN_NJABL_PROXY,RCVD_IN_SORBS,RCVD_IN_SORBS_HTTP,
RCVD_IN_SORBS_MISC autolearn=spam version=x.yz
 


Tham khảo, thông tin thêm

1. mẫu thử spam
2. ví dụ về một spam mail sau khi qua bộ lọc SpamAssassin
3. http://www.peregrinehw.com/downloads/SpamAssassin/INSTALL-RH9-NOTES
4. tại sao dùng spamc/spamd hiệu quả hơn dùng trực tiếp chương trình spamasassin?

man spamc: Spamc is the client half of the spamc/spamd pair. It should be used in place of "spamassassin" in scripts to process mail... Spamc has extremely low overhead in loading, so it should be much faster to load than the whole spamassassin program.

man spamd: The purpose of this program is to provide a daemonized version of the spamassassin executable. The goal is improving throughput performance for automated mail checking. This is intended to be used alongside "spamc", a fast, low-overhead C client program.
5. Theo cấu hình spamd như trong bài viết này, mỗi user có thể dùng bộ lọc mặc định (là file /etc/mail/spamassassin/local.cf do system admin quản lý), hoặc có thể tự điều chỉnh bộ lọc riêng cho mình nếu không thỏa mãn với cấu hình của bộ lọc mặc định. Cấu hình bộ lọc spam cho user nằm ở file $HOME/.spamassassin/user_prefs

Mỗi khi kiểm tra mail, spamd sẽ sử dụng bộ lọc user_prefs trước (ưu tiên), nếu không tìm thấy user_prefs, spamd sẽ dùng bộ lọc mặc định local.cf. Những option để cấu hình user_prefs hoàn toàn giống như của local.cf

6. Xem list tất cả những option của bộ lọc spam ở đây
http://spamassassin.apache.org/tests.html
[Up] [Print Copy]
  [Article]   Làm mail server với Postfix - Phần 3 26/06/2013 01:51:42 (+0700) | #2 | 276910
h2_audio
Member

[Minus]    0    [Plus]
Joined: 04/04/2011 07:27:29
Messages: 1
Offline
[Profile] [PM]
cháu có tổng hợp đc thành 1 ebook cùng chia sẻ cho mọi người nhé! http://www.slideshare.net/h2audio/xy-dng-mail-server-vi-postfix-23399766
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|