Thiết lập Mail Server trên nền tảng Debian (Phần 1)



Trong bài viết sau, chúng tôi sẽ hướng dẫn các bạn cách thiết lập hệ thống mail server đầy đủ tính năng, an toàn bảo mật, dễ dàng mở rộng và thay thế một số chức năng khác nếu cần. Mô hình này cung cấp các dịch vụ host ảo dành cho mailbox với nhiều định dạng khác nhau, chế độ lọc quota và server – side, alias domain, alias address, forward address và catchall address. Quá trình chuyển tiếp được đảm bảo an ninh với giao thức STARTTLS và SMTP-AUTH. Các email nhận sẽ được kiểm soát chặt chẽ bằng những bộ lọc virus, spam, mã độc đồng thời nhanh chóng loại bỏ các SPF policy và DNSBL.

Và toàn bộ quá trình này sẽ được trải qua 3 server chính:

  • 1 server MX, tại đây sẽ tập trung toàn bộ các tính năng bảo mật (faramir.middle.earth)
  • 1 giao thức chuyển tiếp SMTP, cho phép người dùng gửi email ra bên ngoài (ectelion.middle.earth)
  • 1 server Mailstore dùng để chứa toàn bộ dữ liệu của mailbox (denetor.middle.earth)

Tất nhiên, bạn có thể gán thêm nhiều bản ghi MX tùy thích sử dụng DNS MX tới domain, các dịch vụ chuyển tiếp bằng DNS round-robin, chức năng lưu trữ, chuyển tiếp và phân nhánh email… sẽ được đề cập đầy đủ trong bài viết.

Tất cả các thao tác đều được thực hiện trên hệ thống sử dụng hệ điều hành Debian server.

Thiết lập LDAP

Toàn bộ thông tin của người sử dụng đều được lưu trữ trong thư mục LDAP. Và đây là cách chúng ta cài đặt trên server làm nhiệm vụ chuyển tiếp. Hệ thống yêu cầu những gói cần thiết sau:

sudo apt-get install slapd ldap-utils

Tại đây, chúng ta sẽ sử dụng những thông số LDAP sau đây:

  • ldapBase: dc=middle,dc=earth
  • adminDn: cn=admin,dc=middle,dc=earth
  • adminPwd: thirdAge

Bên cạnh đó, ta cần dùng giản đồ LDAP có sẵn. Hầu hết các thuộc tính và đối tượng phải theo chuẩn, lưu ý rằng có rất nhiều thuộc tính chuẩn người sử dụng cần chú ý tránh trường hợp trùng lặp xảy ra.

Ghép giản đồ có sẵn vào openldap trong /etc/ldap/schema/mailMEO.schema:

attributetype ( 2.16.840.1.113730.3.1.13

NAME 'mailLocalAddress'

DESC 'RFC822 email address of this recipient'

EQUALITY caseIgnoreIA5Match

SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )

attributetype ( 2.16.840.1.113730.3.1.16

NAME 'mailQuota'

DESC 'Maiximal amount of disk space for a mailbox in kilobytes'

EQUALITY integerMatch

SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )

attributetype ( 2.16.840.1.113730.3.1.18

NAME 'mailHost'

DESC 'FQDN of the SMTP/MTA of this recipient'

EQUALITY caseIgnoreIA5Match

SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256}

SINGLE-VALUE )

attributetype ( 2.16.840.1.113730.3.1.22

NAME 'mailCopyAddress'

DESC 'RFC822 email shadow copy address'

EQUALITY caseIgnoreIA5Match

SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )

attributetype ( 2.16.840.1.113730.3.1.47

NAME 'mailRoutingAddress'

DESC 'RFC822 routing address of this recipient'

EQUALITY caseIgnoreIA5Match

SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )

attributetype ( 2.16.840.1.113730.3.1.49

NAME 'spamassassinUserPrefs'

DESC 'SpamAssassin user preferences'

EQUALITY caseIgnoreIA5Match

SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )

objectclass ( 2.16.840.1.113730.3.2.147

NAME 'inetLocalMailRecipient'

DESC 'Internet local mail recipient'

SUP top AUXILIARY

MAY    ( mailLocalAddress $ mailHost $ mailRoutingAddress $ mailCopyAddress $ mailQuota $ spamassassinUserPrefs ) )

objectclass ( 2.16.840.1.113730.3.2.148

NAME 'inetMailForwarder'

DESC 'Internet mail Forward Address'

SUP top AUXILIARY

MAY    ( mailHost $ mailRoutingAddress ) )

và gán đúng giản đồ cần thiết bên trong /etc/ldap/slapd.conf:

...

include /etc/ldap/schema/inetorgperson.schema

include /etc/ldap/schema/mailMEO.schema

...

Kiểm tra lại các hậu tố (khi cài đặt slapd thì debconf đã được cấu hình sẵn):

suffix          "dc=middle,dc=earth"

Sau đó, gán thêm các ACLs của daemon cần sử dụng để truyền dữ liệu tới LDAP. Khởi tạo thuộc tính readonly để truy cập tới userPassword dành cho devecot:

access to attrs=userPassword,shadowLastChange

by dn="cn=admin,dc=middle,dc=earth" write

by dn="uid=dovecot,dc=middle,dc=earth" read

by anonymous auth

by self write

by * none

Thiết lập thuộc tính tương tự đối với exim và dovecot:

access to *

by dn="cn=admin,dc=middle,dc=earth" write

by dn="uid=dovecot,dc=middle,dc=earth" read

by dn="uid=exim,dc=middle,dc=earth" read

by * read

by anonymous none

Thông số ACL cuối cùng đảm nhận nhiệm vụ ngăn chặn khả năng đọc dữ liệu từ các tài khoản anonymous nhưng lại được phép chỉnh sửa với các tài khoản được xác nhận. Khởi động lại slapd để áp dụng các thay đổi trên:

sudo /etc/init.d/slapd restart

Sau đó, chúng ta phải tạo ra các tài khoản người dùng với các ACL trước đó. Để làm được việc này, ta phải sử dụng file user.ldif sau:

dn: uid=exim,dc=middle,dc=earth

objectClass: account

objectClass: simpleSecurityObject

objectClass: top

uid: exim

userPassword::e01ENX1hOElTeXAwV2hnVzFSVnhHd0hCNDF3PT0=

dn: uid=dovecot,dc=middle,dc=earth

objectClass: account

objectClass: simpleSecurityObject

objectClass: top

uid: dovecot

userPassword::e01ENX1yZGp2Q1lPNmtDRm1scXAyVWQwa0xBPT0=
Tài khoản này sẽ có user / pass là: dovecot / dovecotpopper và exim4 / eximmta

Để cung cấp thông tin, dữ liệu cho thư mục gốc, sử dụng lệnh sau:

ldapadd -x -D cn=admin,dc=middle,dc=earth -W < users.ldif

Dưới đây là mẫu 1 file ldif có chứa các dữ liệu khác:

dn: ou=domains,dc=middle,dc=earth

objectClass: organizationalUnit

objectClass: top

ou: domains

dn:dc=middle.earth,ou=domains,dc=middle,dc=earth

dc: middle.earth

objectClass: dNSDomain

objectClass: top

objectClass: inetLocalMailRecipient

objectClass: domainRelatedObject

objectClass: posixAccount

mailLocalAddress: catchall@middle.earth

cn: catchall

gidNumber: 8

homeDirectory: /var/mail/middle.earth/c/catchall

uid: catchall

uidNumber: 8

userPassword::e01ENX1EV3RteGErOFROanJKNUFXZWt1Z0tBPT0=

mailQuota: 102400

mailHost: denetor.middle.earth

associatedDomain: middle.earth

associatedDomain: lotr.middle.earth

dn:uid=sam,dc=middle.earth,ou=domains,dc=middle,dc=earth
cn: sam

displayName: Sam Gamji

gidNumber: 8

homeDirectory: /var/mail/middle.earth/s/sam

mail: sam@middle.earth

mailHost: 172.16.16.23

mailQuota: 102400

objectClass: inetLocalMailRecipient

objectClass: inetOrgPerson

objectClass: posixAccount

objectClass: top

sn: Gamji

uidNumber: 8

uid: sam

userPassword::e01ENX1NeVV5M1BxaHkvWWVLaVpyMXlOaExBPT0=

mailLocalAddress: sam@middle.earth

mailLocalAddress: gamji@middle.earth

mailLocalAddress: shire@middle.earth

dn:uid=frodo,dc=middle.earth,ou=domains,dc=middle,dc=earth
cn: frodo

displayName: Frodo Baggins

gidNumber: 8

givenName: Frodo

homeDirectory: /var/mail/middle.earth/f/frodo

mail: frodo@middle.earth

mailHost: 172.16.16.23

mailQuota: 102400

objectClass: inetLocalMailRecipient

objectClass: inetOrgPerson

objectClass: posixAccount

objectClass: top

sn: Baggins

uidNumber: 8

uid: frodo

userPassword::e01ENX04UGlDRHVnWEdCMmNhRktnbDljTmpRPT0=

mailLocalAddress: frodo@middle.earth

mailLocalAddress: baggins@middle.earth

mailLocalAddress: shire@middle.earth

dn:uid=gmail,dc=middle.earth,ou=domains,dc=middle,dc=earth

cn: gmail

mail: alxgomz@gmail.com

mailHost: 172.16.16.23

mailRoutingAddress: alxgomz@gmail.com

objectClass: inetMailForwarder

objectClass: inetOrgPerson

objectClass: top

sn: alias to Gmail address

uid: gmail




Được tạo bởi liennp
Lần sửa cuối 08/10/10

Giới thiệu PLANETPhản hồi trực tuyến Mua hàng ở đâySơ đồ WebsiteEnglish  

Sử dụng bộ phần mềm TVIS 3.0
© Bản quyền của công ty máy tính NETCOM Co.,Ltd 2000-2016

Số lần truy cập:

Mọi kết nối tới Website này cũng như việc tái sử dụng lại nội dung phải được sự đồng ý của công ty NETCOM Co.,Ltd.
Mọi chi tiết xin liên hệ theo địa chỉ sau: Công ty máy tính NETCOM Co.,Ltd Số 46A/120 Đường Trường Chinh - Phương Mai - Đống Đa - Hà Nội.
Tel: (04)35737747 , Fax: (04)35737748 , Email: support@netcom.com.vn