Cách xây dựng đám mây của riêng bạn cho bạn và bạn bè của bạn trên Debian Wheezy

theanh

Administrator
Nhân viên

Lấy lại quyền riêng tư và quyền kiểm soát dữ liệu của bạn chỉ trong vài giờ: xây dựng đám mây riêng cho bạn và bạn bè​

của Roudy Jhausse <[emailprotected]>

Hơn 40.000 lượt tìm kiếm trong 8 năm! Đó là lịch sử Tìm kiếm trên Google của tôi. Còn bạn thì sao? (bạn có thể tự tìm hiểu tại đây) Với rất nhiều điểm dữ liệu trong một thời gian dài như vậy, Google có ý tưởng rất chính xác về những gì bạn quan tâm, những gì bạn nghĩ đến, những gì bạn lo lắng và tất cả những điều đó đã thay đổi như thế nào trong những năm qua kể từ khi bạn lần đầu tiên có tài khoản Google.

Một số thông tin cá nhân nhất về danh tính của bạn được lưu trữ trên các máy chủ trên toàn thế giới ngoài tầm kiểm soát của bạn​

Giả sử bạn là người dùng Gmail từ năm 2006 đến năm 2013 giống như tôi, nghĩa là bạn đã nhận được hơn 30.000 email và đã viết khoảng 5.000 email trong khoảng thời gian 7 năm đó. Một số email bạn đã gửi hoặc nhận là rất riêng tư, có thể riêng tư đến mức bạn có thể không muốn ngay cả một số thành viên gia đình hoặc bạn bè thân thiết xem qua chúng một cách có hệ thống. Có thể bạn cũng đã soạn một số email mà bạn chưa bao giờ gửi vì bạn đã thay đổi ý định vào phút cuối. Nhưng ngay cả khi bạn chưa bao giờ gửi chúng, những email này vẫn được lưu trữ ở đâu đó trên máy chủ. Do đó, có thể nói rằng máy chủ của Google biết nhiều hơn về cuộc sống cá nhân của bạn so với những người bạn thân nhất hoặc gia đình bạn.

Theo thống kê, có thể chắc chắn rằng bạn có điện thoại thông minh. Bạn hầu như không thể sử dụng điện thoại mà không sử dụng ứng dụng danh bạ lưu trữ danh bạ của bạn trong Google Contact trên máy chủ Google theo mặc định. Vì vậy, Google không chỉ biết về email của bạn mà còn biết về danh bạ ngoại tuyến của bạn: bạn thích gọi cho ai, ai gọi cho bạn, bạn nhắn tin cho ai và bạn nhắn tin cho họ về điều gì. Bạn không cần phải tin tôi, bạn có thể tự xác minh bằng cách xem các quyền mà bạn đã cấp cho các ứng dụng như Dịch vụ Google Play để đọc danh sách những người đã gọi cho bạn và tin nhắn SMS bạn nhận được. Bạn có sử dụng ứng dụng lịch đi kèm với điện thoại không? Trừ khi bạn đã chọn không sử dụng khi thiết lập lịch, điều này có nghĩa là Google biết chính xác những gì bạn đang làm, vào mọi thời điểm trong ngày, ngày này qua ngày khác, năm này qua năm khác. Điều tương tự cũng áp dụng nếu bạn chọn iPhone thay vì điện thoại Android, ngoại trừ việc Apple biết về thư từ, danh bạ và lịch trình của bạn thay vì Google.

Bạn cũng rất cẩn thận để giữ cho danh bạ trong danh bạ của mình được cập nhật, cập nhật địa chỉ email và số điện thoại của bạn bè, đồng nghiệp và gia đình khi họ chuyển đến công việc mới hoặc thay đổi nhà mạng không? Điều đó cung cấp cho Google một bức tranh cực kỳ chính xác và cập nhật về mạng xã hội của bạn. Và bạn thích GPS của điện thoại thông minh mà bạn sử dụng rất nhiều cùng với Google Maps. Điều này có nghĩa là Google không chỉ biết bạn làm gì từ lịch của mình mà còn biết bạn đang ở đâu, bạn sống ở đâu, bạn làm việc ở đâu. Và bằng cách liên kết dữ liệu vị trí GPS giữa những người dùng, Google cũng có thể biết bạn có thể đang giao lưu với ai ngay lúc này.

Thói quen hàng ngày của bạn là cung cấp thông tin cá nhân nhất của mình sẽ tác động đến cuộc sống của bạn theo cách mà không ai có thể lường trước được​

Tóm lại, nếu bạn là người dùng internet trung bình, Google có thông tin chuyên sâu, mới nhất về sở thích, nỗi lo, đam mê, câu hỏi của bạn trong gần 10 năm. Google có bộ sưu tập một số tin nhắn cá nhân nhất của bạn (email, SMS), thông tin chi tiết từng giờ về các hoạt động và vị trí hàng ngày của bạn và hình ảnh chất lượng cao về mạng xã hội của bạn. Một hiểu biết sâu sắc như vậy về bạn có thể vượt xa những gì bạn bè thân thiết nhất, gia đình hoặc người yêu của bạn biết về bạn.

Sẽ không nghĩ đến việc cung cấp khối lượng thông tin cá nhân sâu sắc này cho những người hoàn toàn xa lạ, chẳng hạn như bằng cách lưu tất cả vào một ổ USB và để trên bàn trong một quán cà phê ngẫu nhiên với một ghi chú ghi rằng 'Dữ liệu cá nhân của Olivier Martin, sử dụng tùy ý'. Ai biết ai có thể tìm thấy nó và họ sẽ làm gì với nó? Tuy nhiên, chúng tôi không gặp vấn đề gì khi giao nộp các thông tin cốt lõi về danh tính của bạn cho những người lạ tại các công ty CNTT có mối quan tâm lớn đến dữ liệu của chúng tôi (đó là cách họ kiếm sống) và các chuyên gia đẳng cấp thế giới về phân tích dữ liệu, có lẽ chỉ vì điều đó xảy ra theo mặc định mà chúng tôi không nghĩ đến khi nhấn nút 'Chấp nhận' màu xanh lá cây.

Với rất nhiều thông tin chất lượng cao, trong những năm qua, Google có thể hiểu bạn hơn cả những gì bạn hy vọng hiểu về chính mình: chà, khi đang lục lọi quá khứ kỹ thuật số của mình ngay lúc này, tôi không nhớ mình đã viết một nửa số email mình đã gửi cách đây năm năm. Tôi ngạc nhiên và vui mừng khi tìm lại được sự quan tâm của mình đối với chủ nghĩa Mác vào năm 2005 và tham gia ATTAC (một tổ chức phấn đấu hạn chế đầu cơ và cải thiện công lý xã hội bằng cách đánh thuế các giao dịch tài chính) vào năm sau. Và Chúa biết tại sao tôi lại thích giày khiêu vũ đến vậy vào năm 2007. Đây là thông tin khá vô hại (bạn không ngờ tôi lại tiết lộ điều gì đó đáng xấu hổ ở đây, phải không? ;-). Nhưng bằng cách kết nối các điểm giữa dữ liệu chất lượng cao về các khía cạnh khác nhau của cuộc sống của bạn (cái gì, khi nào, với ai, ở đâu, ...) trong khoảng thời gian như vậy, người ta có thể suy ra những tuyên bố mang tính dự đoán về bạn. Ví dụ, từ thói quen mua sắm của một cô gái 17 tuổi, các siêu thị có thể biết cô ấy đang mang thai trước khi bố cô ấy biết (câu chuyện có thật). Ai biết được điều gì sẽ trở thành hiện thực với dữ liệu chất lượng cao như Google, vượt xa thói quen mua sắm? Bằng cách kết nối các dấu chấm, có lẽ người ta có thể dự đoán sở thích hoặc quan điểm chính trị của bạn sẽ thay đổi như thế nào trong những năm tới. Ngày nay, các công ty mà bạn chưa từng nghe đến tuyên bố có 500 điểm dữ liệu về bạn, bao gồm tôn giáo, khuynh hướng tình dục và quan điểm chính trị. Nói về chính trị, điều gì sẽ xảy ra nếu bạn quyết định tham gia chính trị trong 10 năm nữa? Cuộc sống của bạn có thể thay đổi, quan điểm của bạn cũng vậy, và bạn thậm chí có thể quên, nhưng Google thì không. Bạn có phải lo lắng rằng đối thủ của bạn sẽ liên lạc với một người nào đó có quyền truy cập vào dữ liệu của bạn tại Google và có thể đào bới ra điều gì đó đáng xấu hổ về bạn từ những giếng dữ liệu cá nhân không đáy mà bạn đã tiết lộ trong nhiều năm qua không? Bao lâu nữa thì Google hoặc Facebook sẽ bị tấn công giống như Sony vừa bị tấn công và tất cả dữ liệu cá nhân của bạn sẽ mãi mãi nằm trong phạm vi công cộng?

Một trong những lý do khiến hầu hết chúng ta giao phó dữ liệu cá nhân của mình cho các công ty này là vì họ cung cấp dịch vụ miễn phí. Nhưng thực sự thì miễn phí đến mức nào? Giá trị của tài khoản Google trung bình thay đổi tùy thuộc vào phương pháp được sử dụng để ước tính: 1000 USD/năm là khoảng thời gian bạn đầu tư vào việc viết email, trong khi giá trị tài khoản của bạn dành cho ngành quảng cáo nằm trong khoảng từ 220 USD/năm đến 500 USD/năm. Vì vậy, dịch vụ này không hoàn toàn miễn phí: bạn phải trả tiền thông qua quảng cáo và các cách sử dụng chưa biết mà dữ liệu của chúng tôi có thể tìm thấy trong tương lai.

Tôi chủ yếu viết về Google vì đó là công ty mà tôi đã giao phó hầu hết thông tin nhận dạng kỹ thuật số của mình cho đến nay và do đó là công ty mà tôi hiểu rõ nhất. Nhưng tôi cũng có thể đã viết về Apple hoặc Facebook. Những công ty này thực sự đã thay đổi thế giới với những tiến bộ tuyệt vời về thiết kế, kỹ thuật và dịch vụ mà chúng ta yêu thích sử dụng hằng ngày. Nhưng điều đó không có nghĩa là chúng ta nên lưu trữ tất cả dữ liệu cá nhân nhất của mình trên máy chủ của họ và giao phó cuộc sống số của mình cho họ: khả năng gây hại là quá lớn.

Đòi lại quyền riêng tư của bạn và của những người bạn quan tâm chỉ trong 5 giờ​

Không nhất thiết phải như vậy. Bạn có thể sống ở thế kỷ 21, có điện thoại thông minh, sử dụng email và GPS hằng ngày và vẫn giữ được quyền riêng tư của mình. Tất cả những gì bạn cần làm là lấy lại quyền kiểm soát dữ liệu cá nhân của mình: email, lịch, danh bạ, tệp, v.v. Trang web Prism-Break.org liệt kê các phần mềm giúp kiểm soát số phận dữ liệu cá nhân của bạn. Ngoài những tùy chọn này, cách an toàn và hiệu quả nhất để lấy lại quyền kiểm soát dữ liệu cá nhân của bạn là tự lưu trữ đám mây của bạn, bằng cách xây dựng máy chủ của riêng bạn. Nhưng bạn có thể không có thời gian và năng lượng để nghiên cứu chính xác cách thực hiện điều đó và làm cho nó hoạt động trơn tru.

Đó chính là nơi bài viết hiện tại phù hợp. Chỉ trong 5 giờ, chúng tôi sẽ thiết lập một máy chủ để lưu trữ email, danh bạ, lịch và tệp cho bạn, bạn bè và gia đình bạn. Máy chủ được thiết kế để hoạt động như một trung tâm hoặc đám mây cho dữ liệu cá nhân của bạn, để bạn luôn giữ được toàn quyền kiểm soát dữ liệu đó. Dữ liệu sẽ tự động được đồng bộ hóa giữa PC/máy tính xách tay, điện thoại và máy tính bảng của bạn. Về cơ bản, chúng tôi sẽ thiết lập một hệ thống thay thế Gmail, Google Drive / Dropbox, Google Contacts, Google Calendar và Picasa.

Chỉ riêng việc tự mình làm điều này đã là một bước tiến lớn rồi. Nhưng sau đó, một phần đáng kể thông tin cá nhân của bạn vẫn sẽ bị rò rỉ và nằm trên một số máy chủ ở thung lũng Silicon, chỉ vì rất nhiều người mà bạn tương tác hàng ngày sử dụng Gmail và có điện thoại thông minh. Vì vậy, tốt nhất là nên rủ một số người thân thiết nhất của bạn tham gia cuộc phiêu lưu này.

Chúng tôi sẽ xây dựng một hệ thống
  1. hỗ trợ một số lượng tên miền và người dùng tùy ý. Điều này giúp bạn dễ dàng chia sẻ máy chủ của mình với gia đình và bạn bè, để họ cũng có thể kiểm soát dữ liệu cá nhân của họ và có thể chia sẻ chi phí máy chủ với bạn. Những người chia sẻ máy chủ của bạn có thể sử dụng tên miền của riêng họ hoặc chia sẻ tên miền của bạn.
  2. cho phép bạn gửi và nhận email từ bất kỳ mạng nào sau khi đăng nhập thành công vào máy chủ. Bằng cách này, bạn có thể gửi email từ bất kỳ địa chỉ email nào, từ bất kỳ thiết bị nào (PC, điện thoại, máy tính bảng) và bất kỳ mạng nào (tại nhà, tại nơi làm việc, từ mạng công cộng, ...)
  3. mã hóa lưu lượng mạng khi gửi và nhận email để những người bạn không tin tưởng sẽ không thể tìm ra mật khẩu của bạn và không thể đọc email riêng tư của bạn.
  4. cung cấp chức năng chống thư rác hiện đại, kết hợp danh sách đen những người gửi thư rác đã biết, danh sách xám tự động và lọc thư rác thích ứng. Việc đào tạo lại bộ lọc thư rác thích ứng nếu email bị phân loại sai chỉ đơn giản bằng cách di chuyển thư rác vào hoặc ra khỏi thư mục Thư rác/Thư rác. Ngoài ra, máy chủ sẽ đóng góp vào nỗ lực chống thư rác dựa trên cộng đồng.
  5. chỉ cần bảo trì vài phút một lần, về cơ bản là để cài đặt các bản cập nhật bảo mật và kiểm tra nhanh nhật ký máy chủ. Việc thêm một địa chỉ email mới chỉ đơn giản là thêm một bản ghi vào cơ sở dữ liệu. Ngoài ra, bạn có thể quên nó đi và sống cuộc sống của mình. Tôi đã thiết lập hệ thống được mô tả trong bài viết này cách đây 14 tháng và mọi thứ vẫn chạy trơn tru kể từ đó. Vì vậy, tôi đã hoàn toàn quên mất nó, cho đến gần đây tôi mỉm cười khi nghĩ rằng việc vô tình nhấn nút 'Kiểm tra email' trên điện thoại của tôi đã khiến các electron di chuyển đến tận Iceland (nơi đặt máy chủ của tôi) và quay trở lại.
Để đọc hết bài viết này, bạn sẽ cần tối thiểu khả năng kỹ thuật. Nếu bạn biết sự khác biệt giữa SMTP và IMAP, DNS là gì và có hiểu biết cơ bản về TCP/IP, bạn sẽ biết đủ để theo dõi. Bạn cũng sẽ cần có kiến thức cơ bản về Unix (làm việc với các tệp từ dòng lệnh, quản trị hệ thống cơ bản). Và bạn sẽ cần tổng cộng 5 giờ để thiết lập.

Sau đây là tổng quan về những gì chúng ta sẽ làm:
  1. Lấy Máy chủ riêng ảo, tên miền và thiết lập chúng
  2. Thiết lập postfix và dovecot để gửi và nhận email
  3. Ngăn SPAM đến HỘP THƯ ĐẾN của bạn
  4. Đảm bảo email bạn gửi đi vượt qua được bộ lọc thư rác
  5. Lưu trữ lịch, danh bạ, tệp với Owncloud và thiết lập webmail
  6. Đồng bộ hóa thiết bị của bạn với đám mây

Bài viết này được lấy cảm hứng từ và xây dựng dựa trên các tác phẩm trước đó​

Bài viết này lấy nhiều ý tưởng từ hai tác phẩm khác các bài viết, cụ thể là bài giới thiệu về dịch vụ tự lưu trữ email của Xavier ClaudeDrew Crawford.

Bài viết bao gồm tất cả các tính năng trong các bài viết của Xavier và Draw, ngoại trừ ba tính năng mà Drew có và tôi không cần, cụ thể là hỗ trợ đẩy cho email (tôi chỉ muốn kiểm tra email khi tôi quyết định, nếu không tôi sẽ bị mất tập trung mọi lúc), tìm kiếm toàn văn trong email (mà tôi không cần dùng đến) và lưu trữ email ở dạng được mã hóa (email và dữ liệu của tôi không quan trọng đến mức tôi phải mã hóa chúng cục bộ trên máy chủ). Nếu bạn cần bất kỳ tính năng nào trong số này, hãy thoải mái thêm chúng bằng cách làm theo phần tương ứng trong bài viết của Drew, tương thích với bài viết hiện tại.

So với công trình của Xavier và Drew, bài viết hiện tại cải thiện ở một số khía cạnh:
  • nó sửa lỗi và lỗi đánh máy dựa trên kinh nghiệm của tôi với bài viết của Drew và nhiều bình luận về bài viết gốc của anh ấy. Tôi cũng đã xem qua bài viết hiện tại, thiết lập máy chủ từ đầu nhiều lần để sao chép và đảm bảo nó sẽ hoạt động ngay khi xuất xưởng.
  • bảo trì thấp: so với công việc của Xavier, bài viết hiện tại bổ sung hỗ trợ cho nhiều tên miền email trên máy chủ. Nó thực hiện như vậy bằng cách yêu cầu lượng bảo trì máy chủ tối thiểu có thể: về cơ bản, để thêm một tên miền hoặc người dùng, chỉ cần thêm một hàng vào bảng mysql và thế là xong (không cần thêm tập lệnh sieve, ...).
  • Tôi đã thêm webmail.
  • Tôi đã thêm một phần về thiết lập đám mây, để lưu trữ không chỉ email của bạn mà còn cả tệp, sổ địa chỉ / danh bạ của bạn (email, số điện thoại, ngày sinh, ...), lịch và hình ảnh để sử dụng trên nhiều thiết bị của bạn.

Lấy Máy chủ riêng ảo, tên miền và thiết lập chúng​

Chúng ta hãy bắt đầu bằng cách thiết lập cơ sở hạ tầng cơ bản: máy chủ riêng ảo và tên miền của chúng ta.

Tôi đã có trải nghiệm tuyệt vời với Máy chủ riêng ảo (VPS) của 1984.isLinode. Trong bài viết này, chúng tôi sẽ sử dụng Debian Wheezy, cả 1984 và Linode đều cung cấp hình ảnh có sẵn để triển khai trên VPS của bạn. Tôi thích 1984 vì các máy chủ được lưu trữ tại Iceland, chạy hoàn toàn bằng năng lượng tái tạo (địa nhiệt và thủy điện) và do đó không góp phần vào biến đổi khí hậu, không giống như các nhà máy điện than mà hầu hết các trung tâm dữ liệu tại Hoa Kỳ hiện đang hoạt động. Ngoài ra, họ nhấn mạnh vào quyền tự do dân sự, tính minh bạch, sự tự doPhần mềm miễn phí.

Có thể là một ý tưởng hay khi bắt đầu một tệp để lưu trữ các mật khẩu khác nhau mà chúng ta sẽ cần đặt trên máy chủ (tài khoản người dùng, tài khoản thư, tài khoản đám mây, tài khoản cơ sở dữ liệu). Chắc chắn là một ý tưởng hay khi mã hóa tệp này (có thể bằng GnuPG), để máy chủ của bạn không dễ bị tấn công ngay cả khi máy tính bạn sử dụng để thiết lập máy chủ bị đánh cắp hoặc bị xâm phạm.

Để đăng ký tên miền, tôi đã sử dụng dịch vụ của gandi trong hơn 10 năm nay và cũng rất hài lòng. Đối với bài viết này, chúng tôi sẽ thiết lập một vùng có tên jhausse.net. Sau đó, chúng tôi thêm một máy chủ có tên cloud.jhausse.net vào đó, đặt bản ghi MX cho máy chủ đó. Trong khi bạn đang thực hiện, hãy đặt Thời gian tồn tại (TTL) ngắn cho các bản ghi của bạn như 300 giây để bạn có thể thực hiện các thay đổi cho vùng của mình và kiểm tra kết quả nhanh chóng trong khi bạn đang thiết lập máy chủ.

Cuối cùng, hãy đặt bản ghi PTR (DNS ngược) để địa chỉ IP của máy chủ ánh xạ trở lại tên của nó. Nếu bạn không hiểu câu trước, hãy đọc bài viết này để biết thông tin cơ bản. Nếu bạn sử dụng Linode, bạn có thể đặt bản ghi PTR trong bảng điều khiển trong phần Truy cập từ xa. Với 1984, hãy liên hệ với bộ phận hỗ trợ kỹ thuật để được trợ giúp.

Trên máy chủ, chúng ta sẽ bắt đầu bằng cách thêm một người dùng không có đặc quyền, để chúng ta không phải làm việc với tư cách là root mọi lúc. Ngoài ra, để đăng nhập với tư cách là root sẽ cần một lớp bảo mật bổ sung.
Mã:
adduser roudy
Sau đó, trong /etc/ssh/sshd_config, chúng ta đặt
Mã:
PermitRootLogin no
và tải lại máy chủ ssh
Mã:
service ssh reload
Sau đó, chúng ta sẽ cần thay đổi tên máy chủ của máy chủ. Chỉnh sửa /etc/hostname để chỉ có một dòng chứa tên máy chủ của bạn, trong trường hợp của chúng tôi là
Mã:
cloud
Sau đó, chỉnh sửa các tệp khóa công khai của máy chủ ssh /etc/ssh/ssh_host_rsa_key.pub, /etc/ssh/ssh_host_dsa_key.pub, /etc/ssh/ssh_host_ecdsa_key.pub để phần cuối của tệp phản ánh tên máy chủ hoặc phiên bản root@cloud của bạn. Sau đó khởi động lại hệ thống để đảm bảo tên máy chủ được cố định ở bất kỳ nơi nào cần
Mã:
khởi động lại
Chúng tôi sẽ cập nhật hệ thống và xóa các dịch vụ không cần thiết để giảm nguy cơ bị tấn công từ xa.
Mã:
apt-get updateapt-get dist-upgradeservice exim4 stopapt-get remove exim4 rpcbindapt-get autoremoveapt-get install vim
Tôi thích sử dụng vim để chỉnh sửa tệp cấu hình từ xa. Đối với việc này, việc tự động bật tô sáng cú pháp sẽ giúp ích. Chúng tôi thực hiện bằng cách thêm
Mã:
syn on
vào ~/.vimrc.

Thiết lập postfix và dovecot để gửi và nhận email​

Mã:
apt-get install postfix postfix-mysql dovecot-core dovecot-imapd dovecot-mysql mysql-server dovecot-lmtpd postgrey
Trong menu cấu hình Postfix, chúng tôi chọn Internet Site và đặt tên thư hệ thống thành jhausse.net.

Bây giờ chúng tôi sẽ thiết lập cơ sở dữ liệu để lưu trữ danh sách các miền được lưu trữ trên máy chủ của chúng tôi, danh sách người dùng cho từng miền này (cùng với mật khẩu của họ) và danh sách các bí danh thư (để chuyển tiếp email từ một địa chỉ nhất định sang một địa chỉ khác).
Mã:
mysqladmin -p create mailservermysql -p mailservermysql> GRANT SELECT ON mailserver.* TO 'mailuser'@'localhost' IDENTIFIED BY 'mailuserpass';mysql> XẢ QUYỀN;mysql> TẠO BẢNG `virtual_domains` ( `id` int(11) KHÔNG NULL auto_increment, `name` varchar(50) KHÔNG NULL, KHÓA CHÍNH (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;mysql> TẠO BẢNG `virtual_users` ( `id` int(11) KHÔNG NULL auto_increment, `domain_id` int(11) KHÔNG NULL, `password` varchar(106) KHÔNG NULL, `email` varchar(100) KHÔNG NULL, KHÓA CHÍNH (`id`), KHÓA DUY NHẤT `email` (`email`), KHÓA NGOẠI (domain_id) THAM CHIẾU virtual_domains(id) TRÊN XÓA CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8;mysql> CREATE TABLE `virtual_aliases` ( `id` int(11) NOT NULL auto_increment, `domain_id` int(11) NOT NULL, `source` varchar(100) NOT NULL, `destination` varchar(100) NOT NULL, PRIMARY KEY (`id`), FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Chúng tôi sẽ lưu trữ tên miền jhausse.net. Nếu có những tên miền khác mà bạn muốn lưu trữ, bạn cũng có thể thêm chúng. Chúng tôi cũng thiết lập một địa chỉ bưu chính cho mỗi tên miền, chuyển tiếp đến [emailprotected].
Mã:
mysql> INSERT INTO virtual_domains (`name`) VALUES ('jhausse.net');mysql> INSERT INTO virtual_domains (`name`) VALUES ('otherdomain.net');mysql> INSERT INTO virtual_aliases (`domain_id`, `source`, `destination`) VALUES ('1', 'postmaster', '[emailprotected]');mysql> INSERT INTO virtual_aliases (`domain_id`, `source`, `destination`) VALUES ('2', 'postmaster', '[emailprotected]');
Bây giờ chúng ta thêm một tài khoản email được lưu trữ cục bộ [emailprotected]. Đầu tiên, chúng ta tạo một hàm băm mật khẩu cho nó:
Mã:
doveadm pw -s SHA512-CRYPT
và sau đó thêm hàm băm vào cơ sở dữ liệu
Mã:
mysql> INSERT INTO `mailserver`.`virtual_users` (`domain_id`, `password`, `email`) VALUES ('1', '$6$YOURPASSWORDHASH', '[emailprotected]');
Bây giờ danh sách các miền, bí danh và người dùng của chúng ta đã có, chúng ta sẽ thiết lập postfix (máy chủ SMTP, cho thư đi). Thay thế nội dung của /etc/postfix/main.cf bằng nội dung sau:
Mã:
myhostname = cloud.jhausse.netmyorigin = /etc/mailnamemydestination = localhost.localdomain, localhostmynetworks_style = host# Chúng tôi vô hiệu hóa chuyển tiếp trong trường hợp chungsmtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination# Yêu cầu đối với máy chủ liên hệ với chúng tôi: chúng tôi xác minh rằng máy khách không phải là# kẻ gửi thư rác đã biết (reject_rbl_client) và sử dụng cơ chế danh sách xám# (postgrey) để giúp giảm thư rác (check_policy_service)smtpd_client_restrictions = permit_mynetworks, reject_rbl_client zen.spamhaus.org, check_policy_service inet:127.0.0.1:10023disable_vrfy_command = cóinet_interfaces = tất cảsmtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)biff = khôngappend_dot_mydomain = khôngreadme_directory = không# Tham số TLSsmtpd_tls_cert_file=/etc/ssl/certs/cloud.crtsmtpd_tls_key_file=/etc/ssl/private/cloud.keysmtpd_use_tls=cósmtpd_tls_auth_only = cósmtp_tls_security_level=cósmtp_tls_loglevel = 1smtpd_tls_loglevel = 1smtpd_tls_received_header = cósmtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scachesmtp_tls_session_cache_database = btree:${data_directory}/smtp_scache# Deliveryalias_maps = hash:/etc/aliasesalias_database = hash:/etc/aliasesmessage_size_limit = 50000000recipient_delimiter = +# Các dòng tiếp theo hữu ích để thiết lập MX dự phòng cho myfriendsdomain.org# relay_domains = myfriendsdomain.org# relay_recipient_maps =# Virtual domainsvirtual_transport = lmtp:unix:private/dovecot-lmtpvirtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cfvirtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cfvirtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cflocal_recipient_maps = $virtual_mailbox_maps
Bây giờ chúng ta cần dạy postfix tìm ra những miền nào chúng ta muốn nó chấp nhận email để sử dụng cơ sở dữ liệu mà chúng ta vừa thiết lập. Tạo một tệp mới /etc/postfix/mysql-virtual-mailbox-domains.cf và thêm nội dung sau:
Mã:
user = mailuserpassword = mailuserpasshosts = 127.0.0.1dbname = mailserverquery = SELECT 1 FROM virtual_domains WHERE name='%s'
Chúng tôi dạy postfix tìm hiểu xem một tài khoản email nhất định có tồn tại hay không bằng cách tạo /etc/postfix/mysql-virtual-mailbox-maps.cf với nội dung sau
Mã:
user = mailuserpassword = mailuserpasshosts = 127.0.0.1dbname = mailserverquery = SELECT 1 FROM virtual_users WHERE email='%s'
Cuối cùng, postfix sẽ sử dụng /etc/postfix/mysql-virtual-alias-maps.cf để tra cứu các bí danh email
Mã:
user = mailuserpassword = mailuserpasshosts = 127.0.0.1dbname = mailserverquery = SELECT virtual_aliases.destination as destination FROM virtual_aliases, virtual_domains WHERE virtual_aliases.source='%u' AND virtual_aliases.domain_id = virtual_domains.id AND virtual_domains.name='%d'
Với tất cả những điều này, giờ là lúc kiểm tra xem postfix có thể truy vấn cơ sở dữ liệu của chúng ta đúng cách hay không. Chúng ta có thể thực hiện điều này bằng cách sử dụng postmap:
Mã:
postmap -q jhausse.net mysql:/etc/postfix/mysql-virtual-mailbox-domains.cfpostmap -q [emailprotected] mysql:/etc/postfix/mysql-virtual-mailbox-maps.cfpostmap -q [emailprotected] mysql:/etc/postfix/mysql-virtual-alias-maps.cfpostmap -q [emailprotected] mysql:/etc/postfix/mysql-virtual-alias-maps.cf
Nếu bạn thiết lập mọi thứ đúng cách, hai truy vấn đầu tiên sẽ trả về 1, truy vấn thứ ba sẽ trả về [emailprotected] và truy vấn cuối cùng sẽ không trả về bất kỳ giá trị nào.

Bây giờ, hãy thiết lập dovecot (máy chủ IMAP, để lấy thư đến trên máy chủ từ các thiết bị của chúng ta). Chỉnh sửa /etc/dovecot/dovecot.conf để thiết lập các tham số sau:
Mã:
# Bật giao thức đã cài đặt# !include_try /usr/share/dovecot/protocols.d/*.protocolprotocols = imap lmtp
chỉ bật imap (cho phép chúng ta lấy email) và lmtp (postfix sẽ sử dụng để chuyển email đến dovecot). Chỉnh sửa /etc/dovecot/conf.d/10-mail.conf để thiết lập các tham số sau:
Mã:
mail_location = maildir:/var/mail/%d/%n[...]mail_privileged_group = mail[...]first_valid_uid = 0
sẽ lưu trữ email trong /var/mail/domainname/username. Lưu ý rằng các thiết lập này được phân bổ ở nhiều vị trí khác nhau trong tệp và đôi khi đã có sẵn để chúng ta thiết lập: chúng ta chỉ cần bình luận chúng. Các thiết lập khác đã có trong tệp, bạn có thể để nguyên. Chúng ta sẽ phải làm tương tự để cập nhật các thiết lập trong nhiều tệp khác trong phần còn lại của bài viết này. Trong /etc/dovecot/conf.d/10-auth.conf, hãy thiết lập các tham số sau:
Mã:
disable_plaintext_auth = yesauth_mechanisms = plain#!include auth-system.conf.ext!include auth-sql.conf.ext
Trong /etc/dovecot/conf.d/auth-sql.conf.ext, hãy thiết lập các tham số sau:
Mã:
passdb { driver = sql args = /etc/dovecot/dovecot-sql.conf.ext}userdb { driver = static args = uid=mail gid=mail home=/var/mail/%d/%n}
nơi chúng ta vừa dạy dovecot rằng người dùng có email của họ trong /var/mail/domainname/username và tra cứu mật khẩu từ cơ sở dữ liệu mà chúng ta vừa tạo. Bây giờ chúng ta vẫn cần dạy dovecot cách sử dụng cơ sở dữ liệu chính xác. Để làm như vậy, hãy đưa nội dung sau vào /etc/dovecot/dovecot-sql.conf.ext:
Mã:
driver = mysqlconnect = host=localhost dbname=mailserver user=mailuser password=mailuserpassdefault_pass_scheme = SHA512-CRYPTpassword_query = SELECT email as user, password FROM virtual_users WHERE email='%u';
Bây giờ chúng ta sửa quyền trên các tệp cấu hình
Mã:
chown -R mail:dovecot /etc/dovecotchmod -R o-rwx /etc/dovecot
Gần xong rồi! Chúng ta chỉ cần chỉnh sửa thêm một vài tệp nữa. Trong /etc/dovecot/conf.d/10-master.conf, hãy đặt các tham số sau:
Mã:
service imap-login { inet_listener imap { #port = 143 port = 0 } inet_listener imaps { port = 993 ssl = yes }}service pop3-login { inet_listener pop3 { #port = 110 port = 0 } inet_listener pop3s { #port = 995 #ssl = yes port = 0 }}service lmtp { unix_listener /var/spool/postfix/private/dovecot-lmtp { mode = 0666 group = postfix user = postfix } user = mail}service auth { unix_listener auth-userdb { mode = 0600 user = mail #group = } # Postfix smtp-auth unix_listener /var/spool/postfix/private/auth { mode = 0666 user = postfix group = postfix } # Quá trình xác thực được chạy với tư cách là người dùng này. #user = $default_internal_user user = dovecot}service auth-worker { user = mail}
Lưu ý rằng chúng tôi đặt cổng cho tất cả các dịch vụ ngoại trừ imaps thành 0, điều này vô hiệu hóa chúng. Sau đó, trong /etc/dovecot/conf.d/15-lda.conf, hãy chỉ định địa chỉ email cho người quản lý bưu điện:
Mã:
postmaster_address = [emailprotected]
Cuối cùng nhưng không kém phần quan trọng, chúng ta cần tạo một cặp khóa công khai và riêng tư cho máy chủ, chúng ta sẽ sử dụng chúng trong cả dovecot và postfix:
Mã:
openssl req -new -newkey rsa:4096 -x509 -days 365 -nodes -out "/etc/ssl/certs/cloud.crt" -keyout "/etc/ssl/private/cloud.key"
Hãy đảm bảo rằng bạn chỉ định Tên miền đủ điều kiện (FQDN) của máy chủ, trong trường hợp của chúng tôi:
Mã:
Tên chung (ví dụ: FQDN của máy chủ hoặc tên CỦA BẠN) []:cloud.jhausse.net
Nếu bạn không chỉ định, khách hàng của chúng tôi có thể phàn nàn rằng tên máy chủ trong chứng chỉ SSL không khớp với tên máy chủ mà họ đang kết nối. Chúng tôi yêu cầu dovecot sử dụng các khóa này bằng cách đặt các tham số sau trong /etc/dovecot/conf.d/10-ssl.conf:
Mã:
ssl = requiredssl_cert =  default:messageshowFactors=on
Bây giờ chúng ta cần kết nối dspam với postfix và dovecot bằng cách thêm hai dòng này vào cuối /etc/postfix/master.cf:
Mã:
dspam unix - n n - 10 pipe flags=Ru user=dspam argv=/usr/bin/dspam --deliver=innocent,spam --user $recipient -i -f $sender -- $recipientdovecot unix - n n - - pipe flags=DRhu user=mail:mail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}
Bây giờ chúng ta sẽ yêu cầu postfix lọc mọi email mới được gửi đến máy chủ trên cổng 25 (lưu lượng SMTP thông thường) thông qua dspam, trừ khi email được gửi từ chính máy chủ (permit_mynetworks). Lưu ý rằng các email chúng ta gửi đến postfix với xác thực SASL cũng sẽ không được lọc qua dspam, vì chúng ta thiết lập một dịch vụ gửi riêng cho những email trong phần trước. Chỉnh sửa /etc/postfix/main.cf để thay đổi smtpd_client_restrictions thành nội dung sau:
Mã:
smtpd_client_restrictions = permit_mynetworks, reject_rbl_client zen.spamhaus.org, check_policy_service inet:127.0.0.1:10023, check_client_access pcre:/etc/postfix/dspam_filter_access
Vào cuối tệp, hãy thêm:
Mã:
# Đối với DSPAM, chỉ quét một thư tại một thời điểmdspam_destination_recipient_limit = 1
Bây giờ chúng ta cần chỉ định bộ lọc mà chúng ta đã xác định. Về cơ bản, chúng ta sẽ yêu cầu postfix gửi tất cả email (/./) đến dspam thông qua một socket unix. Tạo một tệp mới /etc/postfix/dspam_filter_access và đặt dòng sau vào đó:
Mã:
/./ FILTER dspam:unix:/run/dspam/dspam.sock
Vậy là xong phần postfix. Bây giờ chúng ta hãy thiết lập dovecot để lọc thư rác. Trong /etc/dovecot/conf.d/20-imap.conf, chỉnh sửa tham số plugin imap mail_plugins sao cho:
Mã:
mail_plugins = $mail_plugins antispam
và thêm một phần cho lmtp:
Mã:
protocol lmtp {# Danh sách các plugin được phân tách bằng dấu cách để tải (mặc định là global mail_plugins). mail_plugins = $mail_plugins sieve}
Bây giờ chúng ta sẽ định cấu hình plugin dovecot-antispam. Chỉnh sửa /etc/dovecot/conf.d/90-plugin.conf để thêm nội dung sau vào phần plugin:
Mã:
plugin { ... # Antispam (DSPAM) antispam_backend = dspam antispam_allow_append_to_spam = YES antispam_spam = Junk;Spam antispam_trash = Trash;trash antispam_signature = X-DSPAM-Signature antispam_signature_missing = error antispam_dspam_binary = /usr/bin/dspam antispam_dspam_args = --user;%u;--deliver=;--source=error antispam_dspam_spam = --class=spam antispam_dspam_notspam = --class=innocent antispam_dspam_result_header = X-DSPAM-Result}
và trong /etc/dovecot/conf.d/90-sieve.conf, chỉ định một tập lệnh sieve mặc định sẽ áp dụng cho tất cả người dùng của máy chủ:
Mã:
sieve_default = /etc/dovecot/default.sieve
Sieve là gì và tại sao chúng ta cần một tập lệnh mặc định cho tất cả người dùng? Sieve cho phép chúng ta tự động hóa các tác vụ trên máy chủ IMAP. Trong trường hợp của chúng ta, chúng ta sẽ không đưa tất cả các email được xác định là thư rác vào thư mục Junk thay vì vào Inbox. Chúng ta muốn đây là hành vi mặc định cho tất cả người dùng trên máy chủ; đó là lý do tại sao chúng ta chỉ đặt tập lệnh này làm tập lệnh mặc định. Bây giờ, hãy tạo tập lệnh này bằng cách tạo một tệp mới /etc/dovecot/default.sieve với nội dung sau:
Mã:
require ["regex", "fileinto", "imap4flags"];# Bắt thư được gắn thẻ là Thư rác, ngoại trừ Thư rác được đào tạo lại và gửi đến hộp thưif allof (header :regex "X-DSPAM-Result" "^(Spam|Virus|Bl[ao]cklisted)$", not header :contains "X-DSPAM-Reclassified" "Innocent") { # Đánh dấu là đã đọc # setflag "\\Seen"; # Di chuyển vào thư mục Thư rác fileinto "Thư rác"; # Dừng xử lý tại đây stop;}
Bây giờ chúng ta cần biên dịch tập lệnh này để dovecot có thể chạy nó. Chúng ta cũng cần cấp cho nó các quyền thích hợp.
Mã:
cd /etc/dovecotsievec .chown mail.dovecot default.siev*chmod 0640 default.sievechmod 0750 default.svbin
Cuối cùng, chúng ta cần sửa quyền trên hai tệp cấu hình postfix mà dspam cần đọc từ đó:
Mã:
chmod 0644 /etc/postfix/dynamicmaps.cf /etc/postfix/main.cf
Vậy là xong! Hãy khởi động lại dovecot và postfix
Mã:
service dovecot restartservice postfix restart
và kiểm tra phần mềm chống thư rác bằng cách liên hệ với máy chủ từ máy chủ từ xa (ví dụ: máy tính chúng ta đang sử dụng để thiết lập máy chủ):
Mã:
openssl s_client -connect cloud.jhausse.net:25 -starttls smtpEHLO cloud.jhausse.netMAIL FROM:[emailprotected]rcpt to:[emailprotected]DATASubject: DSPAM testChào Roudy, tối nay bạn có muốn ăn giăm bông không? Thân ái, J.QUIT
Hãy kiểm tra xem thư đã đến chưa:
Mã:
openssl s_client -crlf -connect cloud.jhausse.net:9931 login [emailprotected] "mypassword"2 LIST "" "*"3 SELECT INBOX4 UID fetch 3:3 (UID RFC822.SIZE FLAGS BODY.PEEK[])
Điều này sẽ trả về một cái gì đó email với một bộ sưu tập cờ được thiết lập bởi SPAM trông giống như thế này:
Mã:
X-DSPAM-Kết quả: Vô tộiX-DSPAM-Đã xử lý: CN 5 tháng 10 16:25:48 2014X-DSPAM-Độ tin cậy: 1,0000X-DSPAM-Xác suất: 0,0023X-DSPAM-Chữ ký: 5431710c178911166011737X-DSPAM-Các yếu tố: 27, Đã nhận*Hậu tố+với, 0,40000, Đã nhận*với+#+id, 0,40000, như+#+#+#+ham, 0,40000, một số+#+tối nay, 0,40000, Đã nhận*chứng chỉ+đã yêu cầu, 0,40000, Đã nhận*chứng chỉ+khách hàng, 0,40000, Đã nhận*for+roudy, 0,40000, Đã nhận*CN+#+#+#+16, 0,40000, Đã nhận*CN+#+Oct, 0,40000, Đã nhận*roudy+#+#+#+Oct, 0,40000, eat+some, 0,40000, Đã nhận*5+#+#+16, 0,40000, Đã nhận*cloud.jhausse.net+#+#+#+id, 0,40000, Roudy+#+#+#+to, 0,40000, Đã nhận*Oct+#+16, 0,40000, to+#+#+ham, 0,40000, Đã nhận*No+#+#+requested, 0,40000, Đã nhận*jhausse.net+#+#+Oct, 0,40000, Đã nhận*256+256, 0,40000, like+#+#+some, 0,40000, Đã nhận*ESMTPS+id, 0,40000, how'd+#+#+to, 0,40000, tonight+Yours, 0,40000, Đã nhận*có+mã hóa, 0,400005 ĐĂNG XUẤT
Tốt! Bây giờ bạn đã thiết lập bộ lọc thư rác thích ứng cho người dùng máy chủ của mình. Tất nhiên, mỗi người dùng sẽ cần đào tạo bộ lọc trong vài tuần đầu tiên. Để đào tạo một tin nhắn thành thư rác, chỉ cần di chuyển nó đến một thư mục có tên là "Thư rác" hoặc "Thư rác" bằng bất kỳ thiết bị nào của bạn (PC, máy tính bảng, điện thoại). Nếu không, nó sẽ được đào tạo như ham.


Đảm bảo rằng các email bạn gửi đi vượt qua được các bộ lọc thư rác​



Mục tiêu của chúng tôi trong phần này là làm cho máy chủ thư của chúng tôi trông sạch nhất có thể đối với thế giới và khiến những kẻ gửi thư rác khó gửi email dưới tên của chúng tôi hơn. Như một tác dụng phụ, điều này sẽ giúp chúng tôi đưa email của mình qua được các bộ lọc thư rác của các máy chủ thư khác.

Khung chính sách người gửi​

Khung chính sách người gửi (SPF) là một bản ghi mà bạn thêm vào vùng của mình, bản ghi này khai báo máy chủ thư nào trên toàn bộ internet có thể gửi email cho tên miền của bạn. Thiết lập rất dễ dàng, sử dụng trình hướng dẫn SPF tại microsoft.com để tạo bản ghi SPF của bạn, sau đó thêm nó vào vùng của bạn dưới dạng bản ghi TXT. Nó sẽ trông như thế này:
Mã:
jhausse.net. 300 IN TXT v=spf1 mx mx:cloud.jhausse.net -all

PTR ngược​

Chúng ta đã thảo luận về điểm này trước đó trong bài viết này, bạn nên thiết lập DNS ngược cho máy chủ của mình một cách chính xác, để khi thực hiện tra cứu ngược trên địa chỉ IP của máy chủ, bạn sẽ nhận được tên thực của máy chủ.

OpenDKIM​

Khi chúng tôi kích hoạt OpenDKIM, postfix sẽ ký mọi email gửi đi bằng khóa mật mã. Sau đó, chúng tôi sẽ gửi khóa đó vào vùng của mình, trên DNS. Theo cách đó, mọi máy chủ thư trên thế giới sẽ có thể xác minh xem email có thực sự đến từ chúng tôi hay không, hay nó bị kẻ gửi thư rác làm giả. Hãy cài đặt opendkim:
Mã:
apt-get install opendkim opendkim-tools
Và thiết lập bằng cách chỉnh sửa /etc/opendkim.conf để trông như thế này:
Mã:
#### opendkim.conf -- tệp cấu hình cho bộ lọc OpenDKIM##Canonicalization unwind/relaxedExternalIgnoreList refile:/etc/opendkim/TrustedHostsInternalHosts refile:/etc/opendkim/TrustedHostsKeyTable refile:/etc/opendkim/KeyTableLogWhy YesMinimumKeyBits 1024Mode svPidFile /var/run/opendkim/opendkim.pidSigningTable refile:/etc/opendkim/SigningTableSocket inet:8891@localhostSyslog YesSyslogSuccess CóTemporaryDirectory /var/tmpUMask 022UserID opendkim:opendkim
Chúng ta sẽ cần một vài tệp bổ sung mà chúng ta sẽ lưu trữ trong /etc/opendkim:
Mã:
mkdir -pv /etc/opendkim/cd /etc/opendkim/
Hãy tạo một tệp mới /etc/opendkim/TrustedHosts với nội dung sau
Mã:
127.0.0.1
và một tệp mới có tên /etc/opendkim/KeyTable với nội dung sau
Mã:
cloudkey jhausse.net:mail:/etc/opendkim/mail.private
Điều này cho OpenDKIM biết rằng chúng ta muốn sử dụng khóa mã hóa có tên là 'cloudkey' có nội dung có thể tìm thấy trong /etc/opendkim/mail.private. Chúng tôi sẽ tạo một tệp khác có tên /etc/opendkim/SigningTable và thêm dòng sau:
Mã:
*@jhausse.net cloudkey
thông báo cho OpenDKIM rằng mọi email của miền jhausse.net đều phải được ký bằng khóa 'cloudkey'. Nếu chúng ta có các miền khác mà chúng ta muốn ký, chúng ta cũng có thể thêm chúng vào đây.

Bước tiếp theo là tạo khóa đó và sửa quyền trên các tệp cấu hình của OpenDKIM.
Mã:
opendkim-genkey -r -s mail [-t]chown -Rv opendkim:opendkim /etc/opendkimchmod 0600 /etc/opendkim/*chmod 0700 /etc/opendkim
Đầu tiên, bạn nên sử dụng -t để báo hiệu cho các máy chủ thư khác rằng bạn chỉ đang ở chế độ thử nghiệm và họ không nên loại bỏ email dựa trên chữ ký OpenDKIM của bạn (chưa). Bạn có thể lấy khóa OpenDKIM của mình từ tệp mail.txt:
Mã:
cat mail.txt
và sau đó thêm nó vào tệp vùng của bạn dưới dạng bản ghi TXT, trông sẽ như thế này
Mã:
mail._domainkey.cloud1984.net. 300 IN TXT v=DKIM1; k=rsa; p=MIGfMA0GCSqG...
Cuối cùng, chúng ta cần yêu cầu postfix ký các email gửi đi. Vào cuối /etc/postfix/main.cf, thêm:
Mã:
# Bây giờ đối với OpenDKIM: chúng ta sẽ ký tất cả các email gửi đismtpd_milters = inet:127.0.0.1:8891non_smtpd_milters = $smtpd_miltersmilter_default_action = accept
Và tải lại các dịch vụ tương ứng
Mã:
service postfix reloadservice opendkim restart
Bây giờ chúng ta hãy kiểm tra xem khóa công khai OpenDKIM của chúng ta có thể được tìm thấy và khớp với khóa riêng tư hay không:
Mã:
opendkim-testkey -d jhausse.net -s mail -k mail.private -vvv
sẽ trả về
Mã:
opendkim-testkey: key OK
Đối với điều này, bạn có thể cần phải đợi một chút cho đến khi máy chủ tên tải lại vùng (trên Linode, điều này xảy ra sau mỗi 15 phút). Bạn có thể sử dụng dig để kiểm tra xem vùng đã được tải lại chưa.

Nếu cách này hiệu quả, hãy kiểm tra xem các máy chủ khác có thể xác thực chữ ký OpenDKIM và bản ghi SPF của chúng ta hay không. Để thực hiện việc này, chúng ta có thể sử dụng kiểm tra email của Brandon Checkett. Để gửi email đến địa chỉ kiểm tra được cung cấp cho chúng ta trên trang web của Brandon, chúng ta có thể chạy lệnh sau trên máy chủ
Mã:
mail -s CloudCheck [emailprotected]
Trên trang web của Brandon, sau đó bạn sẽ thấy result = pass trong phần 'Chữ ký DKIM' và Result: pass trong phần 'Thông tin SPF'. Nếu email của chúng ta vượt qua bài kiểm tra này, chỉ cần tạo lại khóa OpenDKIM mà không cần công tắc -t, tải khóa mới lên tệp vùng và kiểm tra lại để xem khóa vẫn vượt qua các bài kiểm tra hay không. Nếu vậy, xin chúc mừng! Bạn vừa thiết lập thành công OpenDKIM và SPF trên máy chủ của mình!


Lưu trữ lịch, danh bạ, tệp với Owncloud và thiết lập webmail với Roundcube​



Bây giờ chúng ta đã có máy chủ email hàng đầu, hãy thêm vào đó khả năng lưu trữ danh bạ, lịch và tệp của bạn trên đám mây. Đây là các dịch vụ mà Owncloud cung cấp ngay khi cài đặt. Trong khi chúng ta đang thực hiện, chúng ta cũng sẽ thiết lập một webmail, vì vậy bạn có thể kiểm tra email ngay cả khi bạn đang đi du lịch mà không có thiết bị điện tử, hoặc trong trường hợp điện thoại và máy tính xách tay của bạn hết pin.

Cài đặt Owncloud rất đơn giản và được mô tả rõ ràng tại đây. Trên Debian, nó chỉ đơn giản là thêm kho lưu trữ owncloud vào nguồn apt của bạn, tải xuống khóa phát hành owncloud và thêm nó vào vòng khóa apt của bạn, sau đó cài đặt chính owncloud bằng apt-get:
Mã:
echo 'deb http://download.opensuse.org/repositories/isv:/ownCloud:/community/Debian_7.0/ /' >> /etc/apt/sources.list.d/owncloud.listwget http://download.opensuse.org/repositories/isv:ownCloud:community/Debian_6.0/Release.keyapt-key add - < Release.keyapt-get updateapt-get install apache2 owncloud roundcube
Khi được nhắc, hãy chọn dbconfig rồi nói rằng bạn muốn roundcube sử dụng mysql. Sau đó, cung cấp mật khẩu gốc mysql và đặt mật khẩu tốt cho người dùng mysql roundcube. Sau đó, chỉnh sửa tệp cấu hình roundcube /etc/roundcube/main.inc.php để mặc định khi đăng nhập vào roundcube sẽ sử dụng máy chủ IMAP của bạn:
Mã:
$rcmail_config['default_host'] = 'ssl://localhost';$rcmail_config['default_port'] = 993;
Bây giờ chúng ta sẽ thiết lập máy chủ web apache2 với SSL để có thể giao tiếp với Owncloud và Roundcube bằng mã hóa cho mật khẩu và dữ liệu của chúng ta. Hãy bật mô-đun ssl của Apache:
Mã:
a2enmod ssl
và chỉnh sửa /etc/apache2/ports.conf để thiết lập các tham số sau:
Mã:
NameVirtualHost *:80Listen 80ServerName www.jhausse.net # Nếu bạn thêm NameVirtualHost *:443 tại đây, bạn cũng sẽ phải thay đổi # câu lệnh VirtualHost trong /etc/apache2/sites-available/default-ssl # thành  # Chỉ định tên máy chủ cho máy chủ ảo được đặt tên SSL hiện không được MSIE hỗ trợ trên Windows XP. NameVirtualHost *:443 Listen 443 Nghe 443
Chúng tôi sẽ thiết lập một trang web mặc định cho các kết nối được mã hóa tới máy chủ web là https://www.jhausse.net trong /var/www. Chỉnh sửa /etc/apache2/sites-available/default-ssl:
Mã:
 ServerAdmin webmaster@localhost DocumentRoot /var/www ServerName www.jhausse.net [...]  Deny from all  [...] SSLCertificateFile /etc/ssl/certs/cloud.crt SSLCertificateKeyFile /etc/ssl/private/cloud.key [...]
và chúng ta cũng thiết lập một trang web cho các kết nối không được mã hóa đến http://www.jhausse.net trong /var/www. Chỉnh sửa /etc/apache2/sites-available/default:
Mã:
 DocumentRoot /var/www ServerName www.jhausse.net [...]  Deny from all
Theo cách đó, chúng ta có thể phục vụ các trang cho www.jhausse.net bằng cách đặt chúng vào /var/www. Chỉ thị 'Deny from all' ngăn chặn việc truy cập vào Owncloud thông qua www.jhausse.net: thay vào đó, chúng ta sẽ thiết lập để truy cập thông qua https://cloud.jhausse.net.

Bây giờ, chúng ta sẽ thiết lập webmail (roundcube) để có thể truy cập thông qua https://webmail.jhausse.net. Chỉnh sửa /etc/apache2/sites-available/roundcube để có nội dung sau:
Mã:
 ServerAdmin webmaster@localhost DocumentRoot /var/lib/roundcube # Tên máy chủ mà bạn muốn truy cập vào webmail ServerName webmail.jhausse.net  Options FollowSymLinks AllowOverride None  ErrorLog ${APACHE_LOG_DIR}/error.log # Các giá trị có thể bao gồm: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog ${APACHE_LOG_DIR}/ssl_access.log combined # SSL Engine Switch: # Bật/Tắt SSL cho máy chủ ảo này. SSLEngine bật # không cho phép kết nối không an toàn # SSLRequireSSL SSLCipherSuite CAO: TRUNG BÌNH # Có thể tạo chứng chỉ tự ký (snakeoil) bằng cách cài đặt # gói ssl-cert. Xem # /usr/share/doc/apache2.2-common/README.Debian.gz để biết thêm thông tin. # Nếu cả khóa và chứng chỉ được lưu trữ trong cùng một tệp, chỉ cần chỉ thị # SSLCertificateFile. SSLCertificateFile /etc/ssl/certs/cloud.crt SSLCertificateKeyFile /etc/ssl/private/cloud.key # Các bí danh đó không hoạt động đúng với một số máy chủ trên máy chủ Apache của bạn # Bỏ ghi chú để sử dụng hoặc điều chỉnh chúng cho phù hợp với cấu hình của bạn Bí danh /program/js/tiny_mce/ /usr/share/tinymce/www/ # Truy cập vào các tệp tinymce  Tùy chọn Chỉ mục MultiViews FollowSymLinks AllowOverride None Order allow,deny allow from all   Tùy chọn +FollowSymLinks # Cần có lệnh này để phân tích cú pháp /var/lib/roundcube/.htaccess. Xem # nội dung của lệnh này trước khi đặt AllowOverride thành None. AllowOverride All order allow,deny allow from all  # Bảo vệ các thư mục cơ bản:  Tùy chọn -FollowSymLinks AllowOverride None   Tùy chọn -FollowSymLinks AllowOverride None Order allow,deny Deny from all   Tùy chọn -FollowSymLinks AllowOverride None Order allow,deny Deny from all   SSLOptions +StdEnvVars   SSLOptions +StdEnvVars  # Điều chỉnh Giao thức SSL: # Phương pháp tắt máy an toàn và mặc định nhưng vẫn tuân thủ tiêu chuẩn SSL/TLS # là mod_ssl gửi cảnh báo thông báo đóng nhưng không đợi # cảnh báo thông báo đóng từ máy khách. Khi bạn cần một phương pháp tắt máy khác #, bạn có thể sử dụng một trong các biến sau: # o ssl-unclean-shutdown: # Điều này buộc tắt máy không sạch khi kết nối bị đóng, tức là không # cảnh báo thông báo đóng SSL nào được gửi hoặc được phép nhận. Điều này vi phạm # chuẩn SSL/TLS nhưng lại cần thiết cho một số trình duyệt não chết. Sử dụng # điều này khi bạn nhận được lỗi I/O do phương pháp tiếp cận chuẩn trong đó # mod_ssl gửi cảnh báo đóng thông báo. # o ssl-accurate-shutdown: # Điều này buộc phải tắt chính xác khi kết nối bị đóng, tức là cảnh báo đóng thông báo # SSL được gửi và mod_ssl chờ cảnh báo đóng thông báo # của máy khách. Điều này tuân thủ 100% chuẩn SSL/TLS, nhưng trong # thực tế thường gây ra tình trạng treo kết nối với các trình duyệt não chết. Chỉ sử dụng # điều này cho các trình duyệt mà bạn biết rằng triển khai SSL của chúng # hoạt động chính xác. # Lưu ý: Hầu hết các sự cố của máy khách bị hỏng cũng liên quan đến tiện ích HTTP # keep-alive, vì vậy bạn thường muốn tắt thêm # chức năng keep-alive cho các máy khách đó. Sử dụng biến "nokeepalive" cho trường hợp này. # Tương tự như vậy, người ta phải buộc một số máy khách sử dụng HTTP/1.0 để giải quyết vấn đề triển khai HTTP/1.1 bị hỏng của chúng. Sử dụng các biến "downgrade-1.0" và # "force-response-1.0" cho mục đích này. BrowserMatch "MSIE [2-6]" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 # MSIE 7 trở lên sẽ có thể sử dụng keepalive BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
và khai báo máy chủ trong DNS của bạn, ví dụ:
Mã:
webmail.jhausse.net. 300 IN CNAME cloud.jhausse.net.
Bây giờ hãy bật ba trang web này
Mã:
a2ensite default default-ssl roundcubeservice apache2 restart
và webmail, có thể truy cập tại https://webmail.jhausse.net, về cơ bản sẽ hoạt động. Đăng nhập bằng email đầy đủ (ví dụ: [emailprotected]) và mật khẩu bạn đã đặt trong DB máy chủ thư ở đầu bài viết này. Lần đầu tiên bạn kết nối, trình duyệt sẽ cảnh báo bạn rằng chứng chỉ không được ký bởi cơ quan cấp chứng chỉ. Không sao, chỉ cần thêm ngoại lệ.

Cuối cùng nhưng không kém phần quan trọng, chúng ta sẽ tạo máy chủ ảo cho owncloud bằng cách đưa nội dung sau vào /etc/apache2/sites-available/owncloud:
Mã:
 ServerAdmin webmaster@localhost DocumentRoot /var/www/owncloud ServerName cloud.jhausse.net  Tùy chọn FollowSymLinks AllowOverride Không có   Tùy chọn Indexes FollowSymLinks MultiViews AllowOverride Tất cả Đặt hàng cho phép, từ chối cho phép từ tất cả  ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/  AllowOverride Không có Tùy chọn +ExecCGI -MultiViews +SymLinksIfOwnerMatch Đặt hàng cho phép, từ chối Cho phép từ tất cả  ErrorLog ${APACHE_LOG_DIR}/error.log # Các giá trị có thể bao gồm: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog ${APACHE_LOG_DIR}/ssl_access.log combined # SSL Engine Switch: # Bật/Tắt SSL cho máy chủ ảo này. SSLEngine on # không cho phép kết nối không an toàn # SSLRequireSSL SSLCipherSuite HIGH:MEDIUM SSLCertificateFile /etc/ssl/certs/cloud.crt SSLCertificateKeyFile /etc/ssl/private/cloud.key  SSLOptions +StdEnvVars   SSLOptions +StdEnvVars  BrowserMatch "MSIE [2-6]" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 # MSIE 7 trở lên sẽ có thể sử dụng keepalive BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
và kích hoạt owncloud bằng cách chạy
Mã:
a2ensite owncloudservice apache2 reload
Sau đó, hãy tiếp tục và cấu hình owncloud bằng cách kết nối với https://cloud.jhausse.net/ trong trình duyệt web.

Vậy là xong! Bây giờ bạn đã có Google Drive, Lịch, Danh bạ, Dropbox và Gmail của riêng mình! Hãy tận hưởng quyền riêng tư vừa được khôi phục của bạn! :)


Đồng bộ hóa thiết bị của bạn với đám mây​



Để đồng bộ hóa email, bạn chỉ cần sử dụng ứng dụng email yêu thích của mình: chương trình email chuẩn trên Android hoặc iOS, k9mail hoặc Thunderbird trên PC. Hoặc bạn cũng có thể sử dụng webmail mà chúng tôi đã thiết lập.

Cách đồng bộ hóa lịch và danh bạ của bạn với đám mây được mô tả trong tài liệu của owncloud. Trên Android, tôi đang sử dụng các ứng dụng CalDAV-Sync và CardDAV-Sync đóng vai trò là cầu nối giữa các ứng dụng lịch và danh bạ Android của điện thoại và máy chủ owncloud.

Đối với tệp, có một ứng dụng Android có tên là Owncloud để truy cập tệp của bạn từ điện thoại và tự động tải ảnh và video bạn chụp lên đám mây. Truy cập các tệp của bạn trên máy Mac/PC rất dễ dàng và được mô tả rõ trong tài liệu Owncloud.


Lời khuyên cuối cùng​



Trong vài tuần đầu tiên, bạn nên theo dõi /var/log/syslog và /var/log/mail.log hàng ngày và đảm bảo mọi thứ đều chạy trơn tru. Điều quan trọng là phải làm như vậy trước khi bạn mời những người khác (bạn bè, gia đình, ...) lưu trữ trên máy chủ của bạn; bạn có thể mất lòng tin của họ vào dịch vụ tự lưu trữ nếu họ tin tưởng bạn với dữ liệu của họ và máy chủ đột nhiên không khả dụng.

Để thêm người dùng email khác, chỉ cần thêm một hàng vào bảng virtual_users của DB mailserver.

Để thêm tên miền, chỉ cần thêm một hàng vào bảng virtual_domains. Sau đó, cập nhật /etc/opendkim/SigningTable để có được chữ ký cho email gửi đi, tải khóa OpenDKIM lên vùng và tải lại OpenDKIM.

Owncloud có DB người dùng riêng có thể được quản lý bằng cách đăng nhập vào Owncloud với tư cách là quản trị viên.

Cuối cùng, điều quan trọng là phải suy nghĩ trước về một giải pháp trong trường hợp máy chủ của bạn tạm thời không khả dụng. Ví dụ, thư của bạn sẽ ở đâu cho đến khi máy chủ của bạn hoạt động trở lại? Một giải pháp là tìm một người bạn có thể đóng vai trò là MX dự phòng của bạn, trong khi bạn đóng vai trò là MX dự phòng của người đó (xem thiết lập relay_domains và relay_recipient_maps trong tệp main.cf của Postfix). Tương tự như vậy, nếu máy chủ của bạn bị xâm phạm và một cá nhân có ý đồ xấu xóa tất cả các tệp của bạn ở đó thì sao? Đối với trường hợp đó, điều quan trọng là phải nghĩ đến một hệ thống sao lưu thường xuyên. Linode cung cấp tùy chọn sao lưu. Trên 1984.is, tôi thiết lập một hệ thống sao lưu tự động cơ bản nhưng đủ dùng bằng cách sử dụng crontab và scp.
 
Back
Bên trên