Powered by Blogger.

Làm mail server với Postfix - Phần 1

Nguồn : http://james.dyndns.ws/index.php
Tác giả : James Nguyen

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

Postfix là một MTA (Mail Transport Agent), được viết bởi Wietse Venema khi ông đang làm việc ở trung tâm nghiên cứu T. J. Watson của IBM. Đặc điểm của Postfix: dễ quản lý, nhanh, an toàn. Chỉ cần một server với hardware thông thường, Postfix có thể chuyển giao hàng triệu email một ngày (đọc ở đâu quên rồi, sẽ tìm URL bổ sung sau).
Bài viết này giới thiệu cách dùng Postfix để dựng một mail server trong Linux.

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

Nhiều distro đóng gói kèm theo Postfix. Nói chung việc cài đặt Postfix khá đơn giản và nhanh chóng. Ở đây chỉ giới thiệu cách cài đặt từ gói RPM.

// tải postfix RPM từ http://rpmfind.net, sau đó cài đặt bằng lệnh
# rpm -ivh postfix-***.i386.rpm

// trong Fedora, có thể cài đặt bằng yum
# yum install postfix

// cách cài đặt trong Trustix
# swup --install postfix

Những file cấu hình của Postfix nằm trong thư mục /etc/postfix. Để cấu hình một mail server cơ bản, chỉ cần vài thay đổi nhỏ trong những file sau đây

/etc/postfix/aliases: thông tin về user
/etc/postfix/main.cf: cấu hình cơ bản

Trước hết, chỉ định người nhận mail cho account root. Tìm trong file aliases dòng bắt đầu bằng "root" và chuyển mail đến người nhận thích hợp (giả sử chuyển cho james)

// chuyển tất cả mail đến root cho james
root: james

// update thông tin của aliases database, gõ lệnh
# /usr/bin/newaliases

Tiếp đến, ghi những thông tin về mail server vào file main.cf

// tên máy chủ, thay đổi cho thích hợp
myhostname = mail.domain.name

// nếu máy chủ gửi nhận mail cho cả domain
mydomain = domain.name

// nhận mail đến interface nào?
inet_interfaces = all

// chỉ nhận mail đến domain của tôi
mydestination = $myhostname, localhost.$mydomain, $mydomain

// địa chỉ mạng riêng
mynetworks = 127.0.0.0, 172.16.0.0/12

// máy này không phải là OPEN RELAY SERVER!!!
relay_domains = $mydestination

Đến lúc này, Postfix đã sẵn sàng hoạt động một cách an toàn. Tiếp theo hãy chuẩn bị khởi động Postfix với những thao tác sau đây.

Kiểm tra xem máy chủ có MTA nào khác đang hoạt động hay không, nếu có hãy tắt MTA đó.

Khởi động Postfix

# /etc/init.d/postfix start

// để postfix tự khởi động mỗi lần bật máy
# chkconfig --level 3 postfix on

Bây giờ đến lúc kiểm tra lại

$ telnet localhost 25
// sẽ thấy những dòng sau đây
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mail.domain.name ESMTP Postfix

// Xong rồi, logout thôi, gõ
quit

// sẽ thấy
221 Bye
Connection closed by foreign host.

Gửi thử một cái mail

// tạo một file testmail.txt với nội dung tùy ý
$ touch testmail.txt
$ vi testmail.txt, gõ vào "Hello, World"


// dùng chương trình mailx gửi mail cho root
// chú ý: mail này sẽ được chuyển đến user james (xem phần aliases)
$ mail root < testmail.txt

// xong kiểm tra log (file /var/log/maillog)
// và kiểm tra hộp mail của james

Chú ý: theo mặc định, Postfix chuyển mail đến Mailbox. Mailbox là kiểu lưu giữ tất cả các mail trong một file (thường ở thư mục /var/spool/mail). Khác với Mailbox, Maildir là kiểu lưu giữ mỗi mail thành một file riêng (tất cả đặt trong thư mục /home/user/Maildir). Bạn cần biết đặc điểm (ưu, khuyết điểm) của mỗi cách và chọn cho mình cách thích hợp. Sẽ có bài viết về vấn đề này.

Cấu hình để Postfix chuyển mail đến Maildir: tìm dòng home_mailbox trong file main.cf, sửa lại như sau

# không dùng kiểu mặc định
# home_mailbox = Mailbox
# thích kiểu Maildir hơn
home_mailbox = Maildir/

Sau đó tạo hộp thư

// chỉ tạo hộp thư cho user james
$ mkdir $HOME/Maildir
$ mkdir $HOME/Maildir/cur
$ mkdir $HOME/Maildir/new
$ mkdir $HOME/Maildir/tmp
$ chmod -R 700 $HOME/Maildir


// tạo hộp thư cho tất cả user: ghi vào /etc/skel
$ su -
# mkdir /etc/skel/Maildir
# mkdir /etc/skel/Maildir/cur
# mkdir /etc/skel/Maildir/new
# mkdir /etc/skel/Maildir/tmp
# chmod -R 700 /etc/skel/Maildir


Đến đây có thể dùng Postfix được rồi. Tuy nhiên, để có được một mail server như ý muốn, hãy còn rất nhiều công việc phía trước. Xem thêm phần "Mở rộng và thông tin thêm".

Mở rộng, thông tin thêm

1. Cho phép gửi mail từ những máy không thuộc relay_domains: SMTP AUTH, POP BEFORE SMTP
2. Nên dùng Mailbox hay Maildir?
http://www.courier-mta.org/mbox-vs-maildir/
3. Ngăn chặn, lọc thư rác (spam)
4. Quét virus kèm theo mail
5. Mã hóa: giải pháp TLS (Transport Layer Security)
6. Làm mailing list
7. Những thay đổi khác: tất cả những cấu hình của Postfix và giá trị mặc định (default) được ghi trong file /etc/postfix/main.cf.default. Tùy theo yêu cầu trong mỗi trường hợp, hãy thay đổi những giá trị mặc định đó.
Chú ý: mọi thay đổi phải được ghi vào file main.cf, không sửa trực tiếp lên file main.cf.default!
* gửi toàn bộ lỗi, cảnh báo cho postmaster
notify_classes = delay, policy, protocol, resource, software
* yêu cầu client phải gửi lệnh HELO (EHLO)
smtpd_helo_required = yes
smtpd_helo_restrictions = permit_mynetworks, reject_invalid_hostname
* không muốn bị scan bằng VRFY
disable_vrfy_command = yes
* giới hạn kích cỡ mỗi e-mail là 2 MiB
message_size_limit = 2048000
* muốn tất cả địa chỉ e-mail đều được chuyển thành dạng @domain.name trước khi gửi đi
masquerade_domains = domain.name

Tham khảo

1. http://www.postfix.org
2. /usr/share/doc/postfix-version/*
3. hỏi Google smilie
    Blogger Comment
    Facebook Comment