Chi tiết các hồ sơ cần điều chỉnh cho qmail cho vấn đề tối ưu hoá.
4.2 Danh mục các hồ sơ trong "qmail-control" cần thiết cho Qmail relay server:
Ngoại trừ bạn dùng Qmail để thiết lập một mail server hạng nặng và muốn
xử dụng tối đa chức năng của mỗi chương trình trong Qmail suite bạn sẽ
hiếm khi phải xử dụng tới trọn bộ 28 hồ sơ ở trên. Với trường hợp Qmail
là một relay server bạn không cần quá một chục hồ sơ trong nhóm các hồ
sơ thuộc "qmail-control". Sau đây là danh sách các hồ sơ tôi dùng cho
"qmail-control" và nội dụng của từng hồ sơ để giúp bạn hình dung dễ
dàng hơn chức năng của từng hồ sơ:
4.2.1 Hồ sơ "me" thuộc qmail-send:
- Hồ sơ "me" là khởi điểm cho mọi hoạt động của Qmail thiếu nó Qmail
sẽ không chạy. Hồ sơ này được tạo ra từ bước 2.4.4 khi bạn chạy lệnh
./config để thiết lập hostname cho mail server của bạn. Hồ sơ này chỉ
có một dòng chỉ định cho domain entry của mail relay server.
- Nội dung của hồ sơ này có dạng: mail.mydomain.com trong đó: mail là hostname của mail relay server mydomain.com là fully qualified domain name bạn có.
4.2.2 Hồ sơ "locals" thuộc qmail-send:
- Hồ sơ này dùng để chỉ định các địa chỉ e-mail được xem là "local" đối
với mail relay server. Nếu không có entry nào trong "locals" thì
qmail-send cho rằng chỉ có mỗi host trong "me" thuộc local. Trường hợp
dùng Qmail như một mail relay server không cần "locals" nữa nếu có hồ
sơ "locals" này có một dòng chỉ định y hệt như "me" vậy thôi.
4.2.3 Hồ sơ "concurincoming"(hay còn gọi là concurrencylocal) thuộc qmail-send:
- Hồ sơ này ấn định số lượng mail được chuyển giao cùng một lúc.
Default có giá trị là 10 với giá trị này Qmail đủ sức chuyển giao
mail cho một server cỡ nhỏ đến cỡ trung. Nên tránh dùng giá trị quá nhỏ
để đề phòng trường hợp bị "denial attack". Tôi dùng giá trị là 20 cho
một văn phòng cỡ 100 nhân viên (khoảng 140 e-mails tổng cộng bao gồm
các e-mail chung cho từng nhóm nhân viên).
4.2.4 Hồ sơ "defaultdomain" thuộc qmail-inject:
- Hồ sơ này dùng như một dạng bản mẫu nếu vì một lý do gì đó mail
client không dùng trọn bộ tên người dùng + tên domain như một e-mail
thông thường ví dụ: me@mycom.com mà chỉ có tên người dùng là me thì
"defaultdomain" được qmail dùng để "gắn" thêm cái đuôi tên domain trước
khi nó gởi mail ra ngoài. Nếu qmail không tìm thấy "defaultdomain" nó
sẽ tự động dùng entry trong hồ sơ "me" ở trên. Hồ sơ này không quá cần
thiết sự hiện diện của nó thường để loại trừ trường hợp mail client
không gởi "sender" đúng và dùng để giao chuyển giữa các mail account
trong cùng mail relay server.
- Hồ sơ này chỉ đơn giản có 1 entry là domain name của bạn ví dụ: mycompany.com
4.2.5 Hồ sơ "queuelifetime" thuộc hồ sơ qmail-send:
- Hồ sơ này dùng để chỉ định thời gian (tính theo đơn vị giây) mail
được giữ trong mail queue (vì lý do gì đó không chuyển gởi được) trước
khi bị xoá. Khi mail đợi trong queue đến hạn cuối của "queuelifetime"
qmail sẽ chuyển gởi mail đó lần cuối trước khi thực sự xoá nó khỏi mail
queue (nếu mail này vẫn không thể chuyển giao được).
- Giá trị default của hồ sơ "queuelifetime" là 604800 giây (tương đương với 1 tuần lễ). Giá trị này tùy thuộc vào môi trường của bạn mà thiết lập cho thích hợp. Ví dụ mail relay server của bạn chỉ phục vụ cho một số ít người và thuộc mạng "chậm" thì nên thiết kết giá trị của "queuelifetime" cao hơn một tí để mail có cơ hội được chuyển giao trong trường hợp mạng bi nghẽn (thật ra queuelifetime cho 1 tuần là rất lâu). Tôi chọn giá trị 172800 (khoảng 48 giờ) vì mail relay server trong trường hợp tôi thiết kế phục vụ cho khá nhiều người và đường dẫn khá tốt.
4.2.6 Hồ sơ "badmailfrom" thuộc qmail-smtpd:
- Hồ sơ này là một trong những hồ sơ tiện dụng của qmail nó dùng để
chứa các e-mail bạn không cho phép qmail server nhận vào (nó thuộc
qmail-smtpd nên thuộc phần "nhận"). Dù phương pháp chống "bom thư" hay
spam này không được linh động cho lắm nhưng nó là một trong những chức
năng chứng tỏ sự quan tâm của ông Bernstein khi viết Qmail trong vấn đề
chống spam.
- Hồ sơ này chứa các e-mail hoặc trọn bộ domain bạn không muốn nhận bất cứ tin tức gì mỗi e-mail phải nằm trên một dòng. Ví dụ:
spamboy@spamhouse.com (không nhận mail từ 1 địa chỉ này)
@spamhouse.com (không nhận mail từ trọn bộ domain này).
- Các phương pháp phòng chống "bom thư" linh động hơn sẽ được đi sâu hơn trong những phần tới.
4.2.7 Hồ sơ "rpcthosts" thuộc qmail-smtpd:
- Hồ sơ rcpthosts là một hồ sơ hết sức quan trọng đối với qmail-smtpd
nhất là cho một mail relay server. Hồ sơ này cung cấp dữ kiện cho
qmail-smtpd daemon này thay mặt các hosts và domains nào muốn nhận
chuyển mail. Ví dụ bạn có 2 mail server trong LAN nội bộ có tên là
domain1.com và domain2.com hồ sơ rcpthosts phải có dữ kiện của 2 mail
server này nếu không mail từ bên ngoài vào 2 server này sẽ bị
qmail-smtpd từ chối chuyển nhận vào bên trong. Nên nhớ phải có ít nhất
là một dữ kiện cho chính mail relay server không thì sẽ không có mail
nào được vào (ngay cả cho chính mail relay server).
- Hồ sơ rcpthosts chứa các dữ kiện theo mặc định mỗi dòng một host/domain. Hồ sơ này có cấu trúc tương tự như sau:
mail.mydomain.com (mail là hostname của mail relay server và domain.com
là fully qualified domain name. Ðây chính là dữ kiện thiết yếu và đầu
tiên cho mail relay server).
exchange1.mydomain.com (exchange1 là hostname của MS exchange thuộc LAN nội bộ. Tất nhiên DNS của bạn (hoặc của ISP cung cấp cho bạn) phải có entry cho host exchange1 này và mail relay server phải biết được địa chỉ (bên trong) của host exchange1).
exchange2.mydomain.com (tương tự như exchange1 và nhiều mail server bên trong theo cấu trúc này nếu cần).
mydomain.net (giả sử bạn có thêm một domain name khác với đuôi .net và một trong những mail server thuộc LAN nội bộ đã thiết lập để nhận mail cho domain.net này entry domain.net trong rcpthosts cần thiết để mail relay server biết domain.net được phép nhận mail từ bên ngoài thông qua mail relay server).
mail.myfriend.com (giả sử một người bạn có domain name là myfriend.com và anh ta bị trục trặc với mail server. Bạn có thể "tạm thời" giúp anh ta bằng cách cho phép mail relay server của bạn nhận các mail thuộc myfriend.com vào host mail để anh ta có thể dial in host mail này mà lấy mail (chẳng hạn). Kỹ thuật này còn có cái tên là "chuyển nhận có lựa chọn" (selective relay policy).
- Sự hiện diện của hồ sơ rpcthosts là một trong những đặc thù của qmail trong vấn đề phòng chống open-relay. Chỉ có những host/domain hiện diện trong rpcthosts được phép nhận mail từ mai relay server của bạn. Ðiều này có nghĩa một người ở hostA (mang IP address xx.xx.xx.xx) có ý định dùng mail relay server của bạn để chuyển tới một mail server nào đó (có IP address zz.zz.zz.zz) ngoài giới hạn quy định của rpcthosts tuyệt đối không thể được. Phần "Thử nghiệm sau khi cài đặt" trong phần 6 sẽ đi xuyên qua một số bước kiểm tra cụ thể.
4.2.8 Hồ sơ "smtpgreeting" thuộc qmail-smtpd:
- Hồ sơ này trên mặt chức năng gần như không cần thiết nhưng trên mặt
tâm lý nó mang ít nhiều tính chuyên nghiệp (professionalism) sự sắp xếp
và hiện diện của một mail relay server trên Internet. Hồ sơ
smtpgreeting không chứa gì ngoài một giòng thông điệp "chào mừng" những
ai đến mail relay server này (bao gồm sự trao đổi giữa các mail relay
servers và ngay cả các tay chuyên dùng telnet hoặc các loại dụng cụ
thăm dò mail server lỗ hổng open-relay).
- Hồ sơ này tùy thuộc vào tinh thần của bạn mà hình thành một lời "chào mừng" đúng mức. Tôi đã từng thấy một số mail relay server có lời "chào mừng" khá thách thức chẳng hạn như: "Kiddies this server is not your playground. Stay away or stick around for a challenge" (Tạm dịch: Mấy ông nhóc con server này không phải là chỗ chơi của các ông. Tránh xa hay nhào vô mà thử thách). Dù cơ chế làm việc của qmail mang nặng tính bảo mật không có nghĩa là nó hoàn hảo và không cách gì phá được. Một thông điệp mang tính hoà nhã và nghiêm túc thường có tác dụng tốt đẹp hơn nhiều (bạn sẽ phải hối hận nếu lỡ buông lời thách thức trong thế giới bảo mật).
- Tôi giả định nên dùng một thông điệp ngắn gọn và rõ ràng như sau: "Welcome to company ABC mail server and have a nice time". Xét cho cùng bạn không muốn tạo nên phiền toái mà làm gì. Nếu một tay chuyên tìm open-relay thất vọng khi "đụng" phải mail server của bạn đã là một thành tựu; một thông điệp nhẹ nhàng sẽ giúp cho anh ta quyết định "để yên server" của bạn. Nên nhớ rằng dù mail relay server của bạn không open-relay những kẻ muốn phá vẫn có thể "flood" server của bạn được tổn thất ở chỗ người dùng trong nội mạng không có cơ hội gởi và nhận mail trong khi mail relay server bị "flood".
4.2.9 Hồ sơ "smtproutes" thuộc qmail-remote:
- Ðối với một mail server bình thường (qmail được thiết kế để trực tiếp
nhận / gởi e-mail từ clients bên trong nội mạng và các mail server
ngoại mạng) hồ sơ smtproutes không cần thiết. Tuy nhiên để một qmail
relay server làm việc hồ sơ này không thể thiếu được. Hồ sơ này tương
tự hồ sơ rcpthosts ở trên chỉ có thêm giá trị địa chỉ IP đi sau mỗi
host (mail server trong nội mạng). Các IP của mail server trong nội
mạng giúp mail relay server xác định được mail sẽ được chuyển về đâu và
mỗi mail server nội mạng chịu trách nhiệm phân phát cho các clients
theo đúng quy định. Ðây chính là cốt yếu khác biệt giữa một mail server
bình thường và một mail relay server.
- Hồ sơ smtproutes có cấu trúc như sau:
hostname.domain.com:[IP_ADDRESS]. Giả sử hai exchange mail servers
trong nội mạng có tên là exchange1 (IP: 192.168.1.100) và exchange2
(IP: 192.168.1.200) dữ kiện được quy định trong smtproutes sẽ như sau:
exchange1.mydomain.com:[192.168.1.100]
exchange2.mydomain.com:[192.168.1.200]
mail.myfriend.com:[192.168.1.100] (dùng exchange1 để "nhận dùm" mail
cho người bạn tất nhiên exchange1 đã được thiết kế để tiếp nhận mail
cho domain myfriend.com).
4.3 Mail server trong nội mạng (MS Exchange)
- Tôi chọn MS Exchange như một mail server nội mạng không phải vì khả
năng chuyên biệt của MS Exchange mà vì tính phổ biến của nó trong môi
trường văn phòng thường xử dụng MS Back Office. Cách điều chỉnh cho các
loại mail server khác có những điểm tương tự như MS Exchange về phương
diện mail đi ra / vào (thay vì đi vào trực tiếp từ mail server của ISP
bạn dùng MS Exchange hoặc mail server nào đó có thể đi vào từ Qmail
mail relay server).
- Trong phần điều chỉnh Connections của MS Exchange bạn chọn
"Internetmail Service Properties". Trong phần điều chỉnh này có một
"tab" gọi là "Connection" trong đó bạn có thể điều chỉnh hai dữ kiện
để MS Exchange biết phải chuyển nhận mail từ Qmail mail relay server ở
đâu:
Transfer mode chọn: "Inbound and Outbound"
Message delivery chọn: "Forward all messages to host" và IP của host chính là IP của mail relay server.
- Nếu Exchange server của bạn chịu trách nhiệm quản lý mail cho
nhiều domain bạn phải điều chỉnh "Reroute incoming SMTP mail" cho
thích ứng trong "tab" Routing của "Internet Mai Properties. Những thiết
lập này mang tính cụ thể cho từng loại mail server. Bạn nên tham khảo
thêm tài liệu của mỗi loại mail server để đi sâu vào các chi tiết.
- Nguyên tắc làm việc trước và sau khi có mail relay server là:
* Các mail server thuộc nội mạng (hoặc DMZ) không còn truy cập trực
tiếp đến mail server của ISP mà truy cập vào Qmail relay server.
* Cơ chế mail relay hoàn toàn do qmail server nắm giữ.
* Qmail relay server có thể được nằm trong DMZ hoặc nội mạng hoặc đằng
sau một router miễn sao router + firewall có thể "foward" các thông tin
từ bên ngoài vào mail relay server. Quyết định đặt để qmail relay
server tùy thuộc vào cấu trúc của từng network.
Qmail as a Mail Gateway - Phần 4 (cuối)
Chi tiết nâng cao - vấn đề bom thư với qmail.
5. Ðiều chỉnh sau khi cài đặt
Trước đây khi Internet còn giới hạn (chỉ phổ biến giữa các trường đại học và các nhóm nghiên cứu và rất ít người dùng bình thường) mail là một phương tiện tuyệt vời để liên lạc và trao đổi. Tính thương mại hoá hầu như chưa có cho đến khi loạt "SPAM" đầu tiên xuất hiện đã biến Internet mail trở nên một vấn đề gần như nan giải đối với các loạt mail "vô chủ" chuyên để quảng cáo.
Có hai trường hợp thường xảy ra trong vấn nạn "SPAM" đó là:
- Bị biến thành phương tiện để "SPAM" những nạn nhân khác nếu mail
server không được điều chỉnh và kiểm soát đúng mức (bị relay).
- Bị "SPAM" (bom thư).
5.1 Chiến thuật relaying điện thư (để không biến mail server của mình trở thành phương tiện để "SPAM"
5.1.1 Tại sao cần relay?
Như đã đề cập đến trong phần 3.5 (Bộ quản trị SMTP Access Control) có
những trường hợp bạn cần cho phép mail gateway của mình relay mail vì
lý do nào đó (chuyển nhận mail dùng cho công ty bạn hoặc mail server
của bạn dùng để relay mail cho nhiều domain khác nhau như một mail
server của ISP). Nói một cách ngắn gọn khả năng "mail relaying"của một
mail server A là khả năng tiếp nhận mail từ host X và chuyển gởi mail
này đến host Y hoặc những host nào đó trong chế độ định sẵn mà mail
server phải đảm nhiệm.
5.1.2 Chuyện gì xảy ra nếu không relay?
Nếu mail gateway của bạn chỉ dành phục vụ cho một domain riêng của bạn
thì vấn đề relay không còn cần thiết nữa và quyết định hoàn toàn không
relay là cách an toàn nhất để ngăn ngừa trường hợp mail gateway của bạn
bị biến thành một phương tiện để SPAM.
5.1.3 Cho phép relaying theo lựa chọn
Trong phần 3.5 đã đi sâu vào chi tiết sắp xếp cho phép relay một cách
chọn lọc một trong những variables cần phải chú tâm đến là:
allow RELAYCLIENT. Nên xem xét một cách kỹ lưỡng các giá trị
"RELAYCLIENT" để nắm chắc bạn đã không cho phép một "client" nào đó
được phép relay vì sơ ý.
5.1.4 Thử nghiệm relaying bằng tcprulescheck
Trong nhóm "ucspi-tcp" có một chương trình gọi là tcprulescheck cho
phép bạn kiểm tra các "luật" relay trước khi ứng dụng Qmail như một
mail relay server thực sự. tcprulescheck dùng 2 variables của môi
trường để kiểm tra các "luật" relay đó là: TCPREMOTEIP và
TCPREMOTEHOST. Bạn có thể thay đổi các variables này cho quy trình kiểm
tra.
Sau đây là một ví dụ đơn giản quy trình kiểm tra các "luật" relay bằng tcprulescheck. Giả sử chúng ta dùng ví dụ qmail-rules.txt từ phần 3.5.
127.:allow RELAYCLIENT=""
Chúng
ta thử "cat" qmail-rules.txt và "pipe" nó xuyên qua chương trình
tcprules để tạo ra hash của các rules thuộc "qmail-rules.txt" (nên nhớ
smtpd daemon dùng hash của qmail-rules.txt đó là hồ sơ tcp.smtp.cdb
nó không bao giờ dùng nguyên bản cleartext qmail-rules.txt):
192.168.1.:allow RELAYCLIENT=""
10.10.10.50:allow RELAYCLIENT=""
spamboy@spamhouse.com:deny
badhost.net:deny
.:deny
# cat /etc/smtprules/qmail-rules.txt | tcprules /etc/tcp.smtp.cdb
Hash của các rules được chứa trong hồ sơ tcp.smtp.cdb và chúng ta sẽ dùng hồ sơ này để kiểm tra các "luật" relay.
a. Lệnh $ tcprulescheck /etc/tcp.smtp.cdb sẽ cho kết quả:
rule:
deny connection
Trường hợp ở trên tcprulescheck dùng giá trị mặc định (default) của
"qmail-rules.txt" đó là .:deny. Bất cứ truy cập nào vào mail relay
server của bạn đầu tiên nó sẽ dùng giá trị mặc định để "deny" trước và
sau đó dựa trên IP hoặc hostname của nơi gởi mail mà định đoạt "số
phận" của mail này.
b. Thử lệnh trên một lần nữa trước khi chỉnh variable TCPREMOTEIP là 10.10.10.50 như đã cho phép trong "qmail-rules.txt" ở trên:
$ TCPREMOTEIP=10.10.10.50 ; export TCPREMOTEIP
$ tcprulescheck /etc/tcp.smtp.cdb sẽ cho kết quả:
rule: 10.10.10.50:
set environment variable RELAYCLIENT=
allow connection
Ở trên cho thấy qmail chấp nhận TCPREMOTEIP là 10.10.10.50 là vì IP này đã thuộc trong danh sách qmail-rules.txt và được thiết lập ở chế độ allow RELAYCLIENT nên tcprulescheck trả lời: allow connection.
c. Thử lệnh trên với TCPREMOTEIP mang giá trị khác giả sử như
badhost.net có IP là 172.173.174.175 (được thiết lập ở chế độ deny
trong qmail-rules.txt)
$ TCPREMOTEIP=172.173.174.175 ; export TCPREMOTEIP
$ tcprulescheck /etc/tcp.smtp.cdb sẽ cho kết quả:
rule: badhost.net:
deny connection
Ở trên cho thấy Qmail từ chối không nhận mail muốn được chuyển nhận đến server 172.173.174.175 (IP của badhost.com trong ví dụ này) vì địa chỉ này được ấn định là deny.
Cứ như vậy bạn đi xuyên qua mỗi "rule" trong qmail-rules.txt để kiểm tra chức năng relay của các rules.
5.1.5 Thử nghiệm relaying bằng "telnet"
Phương pháp dùng "telnet" để truy cập vào một mail server ở port 25
(SMTP port) có lẽ là một phương pháp cổ điển và phổ biến nhất để kiểm
tra tính năng "relay" của nó. Ðây cũng là một trong những phương pháp
các tay chuyên tìm kiếm "open relay" để có thể SPAM tất nhiên không
bằng cách "telnet" từng mail server mà bằng cách "tự động hoá" qua một
dạng scripting nào đó để có thể đi xuyên qua hàng loạt mail server
trong một khoảng thời gian ngắn.
Ở đây tôi sẽ đưa ra hai ví dụ đơn giản để kiểm tra tính năng "relay"
của mail server của bạn. Ðòi hỏi đơn giản chỉ cần có chương trình
"telnet" trong máy. Tính năng "relay" dựa trên hồ sơ "rcpthosts" (trong
phần 4.2.7) có các giá trị như sau:
mail.mydomain.com
exchange1.mydomain.com
exchange2.mydomain.com
mydomain.net
mail.myfriend.com
Khởi động telnet trên một command prompt (Windows hoặc *nix tùy
chọn). Giả sử mail gateway server của tôi có địa chỉ là 192.168.1.200
với hostname là mail.mydomain.com chẳng hạn tôi sẽ làm các bước như
sau: 1 telnet 192.168.1.200 25
Dòng 1: Dùng telnet với các thông số là IP 192.168.1.200 và SMTP port 25.
2 220 My company mail server - Welcome ESMTP
3 HELO
4 250 My company mail server - Welcome
5 MAIL FROM:
6 250 ok
7 RCPT TO:
8 553 sorry that domain isn t in my list of allowed rcpthosts (#5.7.1)
Dòng 2: Nếu mail server của tôi đang hoạt động bình thường tôi sẽ nhận được lời chào (bạn còn nhớ hồ sơ "smtpgreeting" trong phần 4.2.8? đây chính là lời chào lấy từ hồ sơ "smtpgreeting" này).
Dòng 3: Tôi thử lệnh HELO một lệnh căn bản của SMTP.
Dòng 4: Mail server của tôi sẽ trả lời với thông điệp lấy từ "smtpgreeting".
Dòng 5: Tôi "mạo danh" là spamboy@spamhouse.com qua lệnh MAIL FROM:
Dòng 6: Mail server trả lời 250 ok bởi vì tôi chưa cho mail server của tôi biết là người nhận sẽ là ai và người nhận thuộc domain nào.
Dòng 7: Tôi dùng lệnh RCPT TO: và cho mail server biết người nhận là reciepient thuộc domain someonecompany.com; một domain không hề có trong rcpthosts.
Dòng 8: Qmail sẽ từ chối ngay lập tức.
Hãy thử kiểm tra relaying bằng telnet dùng các giá trị người nhận
thuộc domain có trong hồ sơ "rcpthosts". Quy trình này tương tự như
sau: 1 telnet 192.168.1.200 25
Dòng 1 đến dòng 6: tương tự như ví dụ ở trên
2 220 My company mail server - Welcome ESMTP
3 HELO
4 250 My company mail server - Welcome
5 MAIL FROM:
6 250 ok
7 RCPT TO:
8 250 ok
9 DATA
10 354 go ahead
11 From: spamboy@spamhouse.com
12 To: someone@mydomain.net
13 Subject: a relay test
14 This is only a test for open relay
15 .
16 250 ok 1041050865 qp 12150
17 QUIT
18 221 My company mail server - Welcome
19
20 Connection to host lost.
Dòng 7: Lệnh RCPT TO: gởi đến người nhận thuộc domain mydomain.net domain này có trong danh sách rcpthosts
Dòng 8: Mail server tiếp nhận và trả lời với SMTP code 250. Sở dĩ mail server tiếp nhận trong trường hợp này là vì domain mydomain.net hiện diện trong rcpthosts
Dòng 9: Lệnh DATA để báo với mail server dự định gởi thông điệp
Dòng 10: Mail server tiếp nhận và trả lời với SMTP code 354
Dòng 11 đến dòng 13: Các "message header" From To và Subject thông thường để mail client có thể hiển thị những thông tin này
Dòng 14: Nội dung của thông điệp. Nội dung này có thể trải ra thành nhiều dòng nếu cần
Dòng 15: Dấu chấm (.) để kết thúc thông điệp
Dòng 16: Mail server trả lời kết thúc một "xuất" gởi thông điệp
Dòng 17: Lệnh QUIT dùng để dừng truy cập đến mail server bằng telnet
Dòng 18: Mail server trả lời với SMTP code 221 ngưng truy cập vào mail server thành công
Dòng 19 và dòng 20: Dòng trống trên console và thông điệp telnet báo không còn truy cập đến mail server nữa.
Ở trên bạn thấy người gởi "spamboy@spamhouse.com" vẫn có thể gởi mail đến "someone@mydomain.net" vì domain mydomain.net hiện diện trong hồ sơ "rpcthost". Nếu trong hồ sơ "qmail-rules.txt" có dữ kiện dùng để "deny" người gởi này chắc chắn mail ở trên không thể đi vào mail server của bạn được. Ví dụ trên một phần nào minh hoạ quan hệ giữa "qmail-rules.txt" và "rcpthosts" trên phương diện chống relay và chống spam.
Qua hai phần thử nghiệm 5.1.4 và 5.1.5 chúng ta có thể rút tỉa được một số điểm quan trọng như sau:
- Hồ sơ "qmail-rules.txt" dùng để xác định các host được phép relay và được phép dùng mail gateway để chuyển mail. Nó còn có trách nhiệm giúp Qmail quyết định mail đến và đi từ các host nào sẽ có số phận ra sao. Ðịnh nghĩa ÐẾN và ÐI ở đây có nghĩa là mail đi từ bên ngoài domain của bạn hoặc bên ngoài những domain bạn cho phép relay. Ngoài hồ sơ "badmailfrom" (xem lại trong phần 4.2.6) "qmail-rules.txt" là nơi để xác định những domains hosts và các e-mail bạn không muốn tiếp nhận (qua phương thức :deny).
- Hồ sơ "rpcthost" dùng để xác định các domain nào được Qmail relay server giao chuyển mail. Ðiều này có nghĩa Qmail dựa trên những dữ liệu của "rpcthosts" để tiếp nhận mail từ một nơi nào đó đến một mail server nào mà nó đã chịu trách nhiệm relay.
5.2 Chiến thuật chống bom thư với Qmail
Các bước 5.14 và 5.1.5 ở trên dùng để kiểm tra lại những lỗ hổng
"relay" trên bình diện mail gateway được dùng để relay (hoặc mail
gateway được làm phương tiện để spam các hòm thư). Hồ sơ
"qmail-rules.txt" có thể dùng để quy định những e-mail domains hoặc
một chuỗi địa chỉ bạn không muốn nhận mail. Ðây là có thể là một cách
chống bom thư nhưng thiếu tính "tự động hoá" vì bạn phải thường xuyên
theo dõi cập nhật các dữ kiện trong hồ sơ này.
Ðể nâng cao khả năng chống bom mail với tính "tự động hoá" trong phần này chúng ta bàn về vấn đề dùng các RBL (realtime black list) database phối hợp với "qmail-rules.txt" để chống bom thư một cách hữu hiệu hơn.
Trong phần 3.4.2 trước đây chúng ta nói đến chương trình
"tcpserver" được sử dụng trong script "run" cho qmail-smtpd. Hãy xem
lại đoạn script chạy "tcpserver" của phần 3.4.2: #!/bin/sh
# concurincoming is not standard qmail control file
# it is created manually to specify the allowed concurrent incoming messages
#
QMAILDUID=`id -u qmaild`
NOFILESGID=`id -g qmaild`
MAXSMTPD=`cat /var/qmail/control/concurincoming`
if [ -z "$QMAILDUID" -o -z "$NOFILESGID" -o -z "$MAXSMTPD" ]; then
echo QMAILDUID NOFILESGID or MAXSMTPD is not set in
echo /var/qmail/supervise/qmail-smtpd/run
echo "Have you set qmaild UID & qmaild GID yet?"
exit 1
fi
exec /usr/local/bin/softlimit -m 6291456
/usr/local/bin/tcpserver -v -p -x /etc/tcp.smtp.cdb -c "$MAXSMTPD"
-u "$QMAILDUID" -g "$NOFILESGID" 0 smtp /var/qmail/bin/qmail-smtpd 2>&1
Ở trên tcpserver chỉ dùng "tcp.smtp.cdb" hồ sơ này được "hash" từ "qmail-rules.txt" để chống relay và bom thư theo dạng đơn giản. Cũng với cơ chế này chúng ta có thể dùng "rblsmtpd" cùng với "tcpserver" để báo cho qmail server biết nó có trách nhiệm phải kiểm tra các mail đi xuyên qua mail gateway có thuộc dạng "SPAM" trước khi được chấp nhận. Phương thức kiểm tra bằng cách đối chiếu dữ kiện ở một trong những RBL servers. Có một số RBL database miễn phí trên internet. Có hai RBL cá nhân tôi dùng là: ordb.org và osirusoft.com (bạn có thể đọc thêm một số tin tức về RBL từ hai site này).
Cách dùng rblsmtpd trong script run của "qmail-smtpd" đơn giản như sau:
exec /usr/local/bin/softlimit -m 6291456
/usr/local/bin/tcpserver -v -p -x /etc/tcp.smtp.cdb -c "$MAXSMTPD"
-u "$QMAILDUID" -g "$NOFILESGID" 0 smtp /usr/local/bin/rblsmtpd -r
relays.ordb.org -r relays.osirusoft.com /var/qmail/bin/qmail-smtpd
>> /var/log/qmail/rblsmtpd.log 2>&1
Chương trình rblsmtpd ở trên dùng hai tham số "relays.ordb.org" và
"relays.osirusoft.com" chính là hai RBL database mà qmail phải đối
chiếu mỗi khi nhận mail vào. Nếu Qmail nhận được dữ kiện từ một trong
hai RBL database trên cho biết mail nào đó thuộc dạng "SPAM" nó sẽ
không tiếp nhận. Bạn có thể thêm các tham số cho rblsmtpd tùy thích.
Có lẽ bạn sẽ tự hỏi: vậy cứ mỗi lần mail đi vào đều phải được kiểm tra từ RBL thì chắc phải chậm lắm? Ðây là câu hỏi đã được đặt ra nhiều lần. Cá nhân tôi khôn g thấy mức độ hoạt động của Qmail giảm sút khi đi qua giai đoạn kiểm tra này vì thật sự đây chỉ là một quy trình đối chiếu đơn giản. Nói cho cùng dẫu có chậm hơn một tí vẫn còn nhanh hơn thời gian bạn phải ngồi xoá những bom thư bằng tay.
Một điểm cần lưu ý khi dùng các RBL database là nên theo dõi sự hiện diện của các RBL này. Lý do các RBL này thường hoạt động theo tính thiện nguyện trên căn bản không lợi nhuận hoặc rất ít lợi nhuận nên tính trường tồn của chúng có phần bấp bênh. Nếu một trong những RBL bạn đang dùng không còn tồn tại thì nên cập nhật run script của "qmai-smtpd" nếu muốn duy trì nhiệm vụ kiểm tra SPAM của rblsmtpd. Tất nhiên bạn cũng có thể dùng RBL thương mại (phải trả tiền để dùng RBL database). Ðể cho tiện theo dõi đây là danh sách cách RBL dabase cho chính Dan Bernstein người viết Qmail và các phần mềm ứng dụng cho Qmail: http://cr.yp.to/ucspi-tcp/rblsmtpd.html
Hy vọng bạn sẽ hình thành một mail relay server bằng Qmail một cách hữu hiệu và tiện ích.
(kết thúc)
Nguồn từ HVA.
Students must be aware of the creating assignment with good structure. Various resources are producing you assignment papers securely at any time you need. Personal information never disclose to any third parties.