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
{ 0 nhận xét... read them below or add one }
Đăng nhận xét