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 1  XML
  [Article]   Làm mail server với Postfix - Phần 1 12/07/2006 20:50:51 (+0700) | #1 | 6091
[Avatar]
tranvanminh
HVA Friend

Joined: 04/06/2003 06:36:35
Messages: 516
Location: West coast
Offline
[Profile] [PM]
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



-------------------

http://vnhacker.org/hvaonline/posts/list/2550.html
http://vnhacker.org/hvaonline/posts/list/2551.html
http://vnhacker.org/hvaonline/posts/list/2552.html
http://vnhacker.org/hvaonline/posts/list/2553.html
http://vnhacker.org/hvaonline/posts/list/2554.html
[Up] [Print Copy]
  [Question]   Re: Làm mail server với Postfix 12/07/2006 20:52:12 (+0700) | #2 | 6092
[Avatar]
tranvanminh
HVA Friend

Joined: 04/06/2003 06:36:35
Messages: 516
Location: West coast
Offline
[Profile] [PM]
Kiểm tra open relay

* http://www.abuse.net/relay.html
* http://spamlart.homeunix.org/
* http://www.ordb.org/submit/
* http://members.iinet.net.au/~remmie/relay/
[Up] [Print Copy]
  [Question]   Re: Làm mail server với Postfix 12/07/2006 21:00:41 (+0700) | #3 | 6098
[Avatar]
tranvanminh
HVA Friend

Joined: 04/06/2003 06:36:35
Messages: 516
Location: West coast
Offline
[Profile] [PM]
Theo dõi maillog

bằng pflogsumm

http://jimsun.linxnet.com/postfix_contrib.html


[Up] [Print Copy]
  [Article]   cau hình external mail address? 12/01/2012 02:13:24 (+0700) | #4 | 252286
caochivicm
Member

[Minus]    0    [Plus]
Joined: 06/07/2011 23:01:18
Messages: 17
Offline
[Profile] [PM]
chào các bạn, mình đang cấu hình mail postfix trên Centos 5, giả sử mình có local domain của mình là abc.com, va external domain là camau.com, mình muốn khi gửi mail trong cty thì sẻ có địa chỉ là user@abc.com, và khi gửi ra internet thì sẻ la user@camau.com, như vậy thì phải cấu hình như thế nào?
Thanks các bạn
[Up] [Print Copy]
  [Article]   cau hình external mail address? 12/01/2012 07:44:00 (+0700) | #5 | 252293
[Avatar]
tranhuuphuoc
Moderator

Joined: 05/09/2004 06:08:09
Messages: 865
Location: Lầu Xanh
Offline
[Profile] [PM] [WWW]

caochivicm wrote:
chào các bạn, mình đang cấu hình mail postfix trên Centos 5, giả sử mình có local domain của mình là abc.com, va external domain là camau.com, mình muốn khi gửi mail trong cty thì sẻ có địa chỉ là user@abc.com, và khi gửi ra internet thì sẻ la user@camau.com, như vậy thì phải cấu hình như thế nào?
Thanks các bạn  


Xem ở đây
http://wiki.excito.org/wiki/index.php/Setting-up-postfix-for-sending-mail-using-an-external-SMTP-server

P/s : Cho hỏi vấn đề ngoài phạm vi bài viết này, bro ở Cà Mau , làm việc ở công ty nào vậy ?
[Up] [Print Copy]
  [Article]   Làm mail server với Postfix - Phần 1 12/01/2012 19:49:42 (+0700) | #6 | 252360
caochivicm
Member

[Minus]    0    [Plus]
Joined: 06/07/2011 23:01:18
Messages: 17
Offline
[Profile] [PM]
mình làm ở cty phần mềm giải trí toàn cầu, ở Etown, chắc bạn củng o cà mau quá, smilie
[Up] [Print Copy]
  [Article]   Làm mail server với Postfix - Phần 1 14/01/2012 09:02:13 (+0700) | #7 | 252437
thuank51cc
Member

[Minus]    0    [Plus]
Joined: 13/01/2012 03:44:56
Messages: 26
Offline
[Profile] [PM]
Chào bạn tranvanminh.

Bạn đã từng làm authenticate cho mail postfix server chưa..
Nều làm rồi thì hướng dẫn mình với nha.. Mình đang làm mà hơi bí vẫn chưa thể authenticate được. Mô hình mail bên mình là : client ==> Mail server ==> Mail relay(send mail).
Mình đang làm postfix authenticate dùng cyrus sasl..
Và có cách nào sử dụng bằng file pass không cần dùng đến mysql không bạn?
Thanks bạn nhiều
[Up] [Print Copy]
  [Article]   Làm mail server với Postfix - Phần 1 14/01/2012 09:27:35 (+0700) | #8 | 252440
[Avatar]
tranhuuphuoc
Moderator

Joined: 05/09/2004 06:08:09
Messages: 865
Location: Lầu Xanh
Offline
[Profile] [PM] [WWW]

thuank51cc wrote:
Chào bạn tranvanminh.

Bạn đã từng làm authenticate cho mail postfix server chưa..
Nều làm rồi thì hướng dẫn mình với nha.. Mình đang làm mà hơi bí vẫn chưa thể authenticate được. Mô hình mail bên mình là : client ==> Mail server ==> Mail relay(send mail).
Mình đang làm postfix authenticate dùng cyrus sasl..
Và có cách nào sử dụng bằng file pass không cần dùng đến mysql không bạn?
Thanks bạn nhiều 


Bạn cần tạo như sau :
Code:
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_type = cyrus


Sau đó bạn tạo tập tin
Code:
/etc/postfix/sasl_passwd:
    hvaonline.net                    tranhuuphuoc:emyeu


#chmod 600 /etc/postfix/sasl_passwd
#postmap /etc/postfix/sasl_passwd

Lúc này nó sẽ tạo ra 1 tập tin passwd.db cho bạn.

Tuy nhiên nếu điều chỉnh kiểu này thì mất thời gian lắm vì phải điều chỉnh nhân công, nếu công ty của bạn có hàng ngày, hàng trăm nhân sự thì việc quả thật không nên dùng do vậy giải pháp dùng MySQL, OpenLDAP là điều cần được tính đến.
[Up] [Print Copy]
  [Article]   Làm mail server với Postfix - Phần 1 14/01/2012 11:24:38 (+0700) | #9 | 252450
thuank51cc
Member

[Minus]    0    [Plus]
Joined: 13/01/2012 03:44:56
Messages: 26
Offline
[Profile] [PM]
Dear Phước!
Thanks Phước nhiều nhé.. Mình cũng hiểu việc đó. Tại bên mình chỉ cần làm một cái mail server để active tài khoản trên webserver thôi. Liên quan đến code web nên phải xác thực cho account đó..
Trước đó Mình đã làm cấu hình như phước nhưng vẫn chưa được. P có thể hướng dẫn chi tiết hơn cho mình không.
Mình telnet thử đến mail và xác thực bằng câu lệnh: "auth login". Nhưng nhập user vào. Lập tức server báo lỗi là " Error: authentication failed: another step is needed in authentication quit"

Dưới đây là 2 file cấu hình của mình:
+main.cf:
relay_domains = $mydestination

smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = example.com
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtp_sasl_type = cyrus
smtpd_recipient_restrictions = permit_sasl_authenticated permit_mynetworks permit_mydestination reject_unauth_destination permit_inet_interfaces
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd


sender_dependent_relayhost_maps = hash:/etc/postfix/relayhost_map
message_size_limit = 0
mailbox_size_limit = 0

transport_maps = hash:/etc/postfix/transport

Đã tạo ra sasl_passwd.db. Mình chưa hiểu postfix nó kêt nối cyrus sasl như thế nào "smtp_sasl_type = cyrus"
thanks Phước nhiều smilie
[Up] [Print Copy]
  [Article]   Làm mail server với Postfix - Phần 1 16/01/2012 07:42:46 (+0700) | #10 | 252559
[Avatar]
tranhuuphuoc
Moderator

Joined: 05/09/2004 06:08:09
Messages: 865
Location: Lầu Xanh
Offline
[Profile] [PM] [WWW]
Cấu hình Postfix + Cyrus SASL bạn có thể xem ở liên kết dưới đây
http://www.linuxtopia.org/online_books/mail_systems/postfix_documentation/SASL_README_008.html

Đại loại như thế này bạn muốn cấu hình Internal authentication (local users) thì trong tập tin cấu hình của saslauthd thì MECH=shadow , nếu bạn dùng PAM thì MECH=pam và cần chú ý đến smtpd.conf cho từng trường hợp, với điều kiện SASL Authentication.

Code:
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = cyrus
smtpd_sasl_path = smtpd
smtpd_sasl_security_options = noanonymous
smtpd_sasl_authenticated_header = yes


Nếu có thêm LDAP thì thêm vào
Code:
pwcheck_method: auxprop
auxprop_plugin: ldapdb
mech_list: DIGEST-MD5 PLAIN LOGIN
ldapdb_uri: ldap://localhost
ldapdb_id: postfix
ldapdb_pw: highsecuritypassword
ldapdb_mech: DIGEST-MD5
[Up] [Print Copy]
  [Article]   Làm mail server với Postfix - Phần 1 17/01/2012 09:54:06 (+0700) | #11 | 252621
docong1010
Member

[Minus]    0    [Plus]
Joined: 28/12/2004 14:11:13
Messages: 72
Offline
[Profile] [PM]
Dear Anh Phước

Cho mình hỏi nếu có một mail server gỏi vào theo kiểu bruteforce để tìm user trong mail server . Nếu server gởi email mà không có user quá 3 lần thì nó sẽ tự đông block lại .

Anh có giải pháp nào về vấn đề này không ?
Thank Anh
[Up] [Print Copy]
  [Article]   Làm mail server với Postfix - Phần 1 17/01/2012 09:58:39 (+0700) | #12 | 252622
[Avatar]
tranhuuphuoc
Moderator

Joined: 05/09/2004 06:08:09
Messages: 865
Location: Lầu Xanh
Offline
[Profile] [PM] [WWW]

docong1010 wrote:
Dear Anh Phước

Cho mình hỏi nếu có một mail server gỏi vào theo kiểu bruteforce để tìm user trong mail server . Nếu server gởi email mà không có user quá 3 lần thì nó sẽ tự đông block lại .

Anh có giải pháp nào về vấn đề này không ?
Thank Anh 


Được dùng Fail2ban
http://www.fail2ban.org/wiki/index.php/Main_Page
[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|