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.
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
# rpm -ivh postfix-***.i386.rpm
// trong Fedora, có thể cài đặt bằng yum
# yum install postfix
# yum install postfix
// cách cài đặt trong Trustix
# swup –install postfix
# 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
/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
root: james
// update thông tin của aliases database, gõ lệnh
# /usr/bin/newaliases
# /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
myhostname = mail.domain.name
// nếu máy chủ gửi nhận mail cho cả domain
mydomain = domain.name
mydomain = domain.name
// nhận mail đến interface nào?
inet_interfaces = all
inet_interfaces = all
// chỉ nhận mail đến domain của tôi
mydestination = $myhostname, localhost.$mydomain, $mydomain
mydestination = $myhostname, localhost.$mydomain, $mydomain
// địa chỉ mạng riêng
mynetworks = 127.0.0.0, 172.16.0.0/12
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
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
# 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”
$ 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
// 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
// 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/
# 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
$ 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
$ 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?
2. Nên dùng Mailbox hay 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!
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
Nguồn : http://james.dyndns.ws/index.php
Tác giả : James Nguyen
Tác giả : James Nguyen
Blogger Comment
Facebook Comment