Cách cài đặt máy chủ email với ISPConfig trên Debian 10

theanh

Administrator
Nhân viên
Hướng dẫn này sử dụng thiết lập máy chủ đơn lẻ làm ví dụ. ISPConfig 3.1 được cài đặt trên Debian 10.0, Buster (xem hướng dẫn cài đặt ISPConfig Perfect Server để biết cách cài đặt máy chủ thực tế), mục đích của hướng dẫn này là chỉ cho bạn các bước sau khi đã cài đặt máy chủ ban đầu để thiết lập hệ thống thư hoạt động cho tên miền của riêng bạn. Tôi đã nâng cấp ISPConfig lên 3.1.15 trong khi thử nghiệm hướng dẫn này.

Những gì cần thiết​

Để sử dụng Hướng dẫn này thành công cho máy chủ email hoạt động bình thường, bạn cần
  • một máy chủ nơi bạn cài đặt ISPConfig (và Hệ điều hành)
  • Tôi khuyên bạn nên sử dụng bộ nhớ 2 GB với bộ nhớ trao đổi 4 GB, đủ cho máy chủ email.
  • máy chủ phải có kết nối Internet với cổng 25 mở cả hai chiều
  • máy chủ có địa chỉ IP cố định
  • máy chủ phải có bản ghi A cho địa chỉ IP của nó (hoặc AAAA nếu sử dụng IPv6)
  • bạn phải tạo bản ghi MX cho dịch vụ tên DNS cho máy chủ
  • bạn phải có dịch vụ tên DNS ngược của máy chủ PTR bản ghi khớp với FQDN của máy chủ
Yêu cầu về bộ nhớ dành cho bộ lọc SPAM. Bạn có thể sử dụng bộ nhớ 1 GB ngay cả khi bộ lọc SPAM đang chạy nếu có bộ trao đổi 4 GB để tránh tình trạng hết bộ nhớ.

Cổng mở​

Máy chủ thư phải mở cổng 25 cho cả cổng vào và cổng ra. Hãy đảm bảo máy chủ của bạn mở cổng đó trước khi thiết lập máy chủ email trên máy chủ đó.

Có nhiều cách để email hoạt động ngay cả khi cổng 25 không mở, nhưng cách này liên quan đến việc gửi email qua một máy chủ khác mở cổng 25. Có thể hợp lý hơn khi cài đặt máy chủ email trên máy chủ khác đó và quên hẳn cái đầu tiên khi nói đến email.

Mục Dịch vụ tên DNS​

Máy chủ thư cần có FQDN, tên miền đủ điều kiện (Đọc về nó trên Wikipedia: FQDN). Trong ví dụ này, tên miền là taleman.ovh. Để chỉ ra rằng tên máy chủ thư không nhất thiết phải là mail, chúng tôi sử dụng posti làm tên máy chủ. Vì vậy, FQDN là posti.taleman.ovh.

Máy chủ này được cài đặt trên hệ thống của nhà cung cấp dịch vụ, họ cung cấp dịch vụ đăng ký tên miền, dịch vụ tên miền và dịch vụ tên miền ngược. Tôi đã sử dụng những dịch vụ đó.

Địa chỉ IP là 178.33.154.66. Tôi đã thực hiện như sau:
  • đã đăng ký tên miền taleman.ovh
  • đã thêm địa chỉ IP này làm bản ghi A vào dịch vụ tên miền DNS có tên posti.taleman.ovh
  • đã thêm bản ghi MX cho tên miền taleman.ovh có giá trị posti.taleman.ovh
  • đã thêm bản ghi PTR dịch vụ tên miền ngược cho địa chỉ IP đó, trỏ đến posti.taleman.ovh
Bản ghi MX được tạo cho tên miền email. Vì vậy, tôi tạo nó cho taleman.ovh và nó trỏ đến posti.taleman.ovh, máy chủ email nhận email cho tên miền đó.

Dịch vụ tên ngược​

Đọc về dịch vụ tên ngược từ hướng dẫn Dịch vụ tên. Trong trường hợp ví dụ này, dịch vụ tên ngược phải trả về posti.taleman.ovh.

Nhà cung cấp dịch vụ của tôi đã kiểm tra sự tồn tại của bản ghi A trước khi có thể thêm PTR tương ứng, tôi đã gặp một chút vấn đề trước khi tôi nghĩ rằng đó là lý do tại sao việc thêm không thành công.

Kiểm tra dịch vụ tên​

Tốt hơn là kiểm tra dịch vụ tên ngay bây giờ, vì việc gửi và nhận email sẽ không hoạt động nếu dịch vụ tên không được thiết lập đúng cách. Nếu máy trạm của bạn là Windows thay vì Linux hoặc Unix, hãy sử dụng lệnh nslookup thay vì host.
Mã:
$ host taleman.ovh[B] taleman.ovh có địa chỉ 188.165.143.5
 taleman.ovh mail được xử lý bởi 10 posti.taleman.ovh.
Kết quả trên cho thấy tên miền có một số IP được liên kết (trong trường hợp này khác với số IP của máy chủ email, nhưng điều đó không ảnh hưởng đến email) và có một bản ghi MX trỏ đến posti.taleman.ovh. Phần "mail được xử lý bởi" xuất phát từ bản ghi MX. Bản ghi MX này là cần thiết nếu email gửi đến địa chỉ @taleman.ovh được nhận tại posti.taleman.ovh.

Sau đó, hãy kiểm tra mục nhập dịch vụ tên cho FQDN của máy chủ thư (trong trường hợp này là posti.taleman.fi) là bản ghi A và trỏ đến số IP chính xác.
Mã:
$ dig posti.taleman.ovh |grep "ANSWER SECTION" --after-context=3 
;; ANSWER SECTION:
 posti.taleman.ovh. 3600 IN A 178.33.154.66 
;; Thời gian truy vấn: 56 msec
Cuối cùng hãy kiểm tra xem dịch vụ tên ngược có phân giải số IP trở lại FQDN của máy chủ thư không.
Mã:
$ host 178.33.154.66
 66.154.33.178.in-addr.arpa con trỏ tên miền posti.taleman.ovh.
Thay vì các lệnh host và dig, bạn có thể sử dụng các trang web kiểm tra dịch vụ tên. Tôi biết intoDNSMXToolbox.

Nếu bạn không thể thực hiện các bài kiểm tra trên thành công, bạn có thể thử hướng dẫn Thiết lập Dịch vụ Tên này.

Cài đặt HĐH​

Tôi sử dụng Debian phiên bản 10 Buster, vì vậy tôi làm theo hướng dẫn này:


Thay thế số IP, tên máy chủ và tên miền bằng các giá trị của bạn.

Vì tôi viết hướng dẫn này bằng tiếng Anh, nên tôi chọn Tiếng Anh làm Ngôn ngữ, nhưng Phần Lan là Quốc gia và Vương quốc Anh en_GB.UTF-8 là cài đặt ngôn ngữ.
Mã:
root@posti:/tmp# cat /etc/debian_version 10.0
Mã:
root@posti:~# locale
 LANG=en_GB.UTF-8
 LANGUAGE=en_GB:en
 LC_CTYPE="en_GB.UTF-8"
 LC_NUMERIC="en_GB.UTF-8"
 LC_TIME="en_GB.UTF-8"
 LC_COLLATE="en_GB.UTF-8"
 LC_MONETARY="en_GB.UTF-8"
 LC_MESSAGES="en_GB.UTF-8"
 LC_PAPER="en_GB.UTF-8"
 LC_NAME="en_GB.UTF-8"
 LC_ADDRESS="en_GB.UTF-8"
 LC_TELEPHONE="en_GB.UTF-8"
 LC_MEASUREMENT="en_GB.UTF-8"
 LC_IDENTIFICATION="en_GB.UTF-8"
 LC_ALL=
 root@posti:~# cat /etc/timezone
 Europe/Helsinki
Kiểm tra xem bạn đã thiết lập đúng tên máy chủ chưa. Cấu hình hệ thống thư mà ISPConfig thực hiện sẽ không hoạt động nếu tên máy chủ không đúng.
Mã:
root@posti:~# hostname posti
 root@posti:~# hostname -f posti.taleman.ovh
 root@posti:~#

Cài đặt ISPConfig​

Tôi chọn cài đặt Apache làm máy chủ web, vì vậy đối với Debian Buster, tôi làm theo Hướng dẫn máy chủ hoàn hảo này.

Tôi đã cài đặt openssh-server trên máy chủ và thiết lập đăng nhập root bằng khóa ssh, vì vậy tôi có thể ssh trực tiếp đến máy chủ với tư cách là root. Đăng nhập không cần mật khẩu với OpenSSH hoặc Đăng nhập không cần mật khẩu an toàn với SSH.
Mã:
root@posti:/tmp# free -h


Tôi thích trình chỉnh sửa kiểu Emacs hơn nano, vì vậy tôi cài đặt jed ngay để chỉnh sửa tệp dễ dàng hơn.

Tôi đã thiết lập đúng /etc/host và /etc/hostname sau khi cài đặt hệ điều hành, vì vậy tôi chỉ cần xác minh chúng là chính xác theo Hướng dẫn máy chủ hoàn hảo. Hãy chú ý đến tên máy chủ và FQDN, nếu bạn làm hỏng những thông tin này, cuối cùng bạn sẽ phát hiện ra rằng máy chủ email của bạn không hoạt động. Có thể sửa chữa hư hỏng, nhưng dễ hơn là sửa ngay từ đầu.
Mã:
root@posti:/tmp# hostname
 posti
 root@posti:/tmp# hostname -f
 posti.taleman.ovh
Đối với phần còn lại, tôi chỉ làm theo Hướng dẫn về Máy chủ Hoàn hảo. Lưu ý rằng bạn chủ yếu có thể cắt và dán các lệnh từ hướng dẫn vào dòng lệnh.

Tôi không cài đặt Mailman, tôi không có kế hoạch sử dụng Mailman trên máy chủ này. Tương tự như vậy, tôi đã bỏ qua việc cài đặt BIND DNS Server, Webalizer, AWStats. Tôi đã cài đặt Roundcube Webmail vì máy chủ này trở thành máy chủ email.

Trong chương 18 (Cài đặt Công cụ quản trị cơ sở dữ liệu PHPMyAdmin), tôi đã sử dụng lệnh
Mã:
/usr/bin/apg -m 32 -x 32
để tạo bí mật blowfish dài 32 ký tự.

Sử dụng hệ thống​

Tạo tên miền email và hộp thư​

Bây giờ tôi đăng nhập với tư cách quản trị viên vào ISPConfig và
  • Thêm máy khách mới
  • Thêm tên miền mới (tên miền email!) và điền vào biểu mẫu
  • Thêm hộp thư mới
Tạo khóa DKIM và ghi lại bằng cách nhấp vào các nút theo thứ tự được đánh số trong hình ảnh. Bạn có thể đọc về DKIM trong Wikipedia.



Hình 1: Tạo tên miền Mail

Sau đó, đợi trong hai phút hoặc cho đến khi quả bóng màu đỏ có số ở phần trên của Bảng điều khiển ISPConfig biến mất.

Để kiểm tra đầu tiên, hãy đăng nhập vào Roundcube Webmail bằng hộp thư đã tạo ở trên và gửi email đến cùng địa chỉ đó. ISPConfig gửi tin nhắn Chào mừng đến mọi hộp thư đã tạo, vì vậy sẽ có một tin nhắn ở đó. Sử dụng nút Soạn thư và viết một tin nhắn thử nghiệm ngắn.



Hình 2: Webmail Roundcube



Hình 3: Gửi từ Roundcube

Tin nhắn sẽ sớm xuất hiện trong hộp thư.

Sau đó, hãy thử gửi email đến một hộp thư khác mà bạn có và có thể kiểm tra xem thư có đến đó không. Tiếp theo, hãy thử gửi từ một nơi khác đến hộp thư đã tạo ở trên.

Xin lưu ý rằng nếu bạn bật danh sách xám cho hộp thư, email được gửi từ bên ngoài máy chủ của bạn sẽ không đến hộp thư ngay lập tức. Tuy nhiên, bạn sẽ thấy trong nhật ký thư các mục nhập của lần gửi đã thử ngay lập tức để bạn thấy rằng thư có thể đến máy chủ của bạn. Mục nhập danh sách xám trong tệp /var/log/mail.log trông giống như thế này:
Mã:
29 tháng 8 19:08:42 posti postfix/smtpd[16911]: NOQUEUE: từ chối: RCPT từ mta-out1.inet.fi[62.71.2.194]: 450 4.2.0 : Địa chỉ người nhận bị từ chối: Đã đưa vào danh sách xám, hãy xem http://postgrey.schweikert.ch/help/taleman.ovh.html; from= to= proto=ESMTP helo=
Bạn có thể theo dõi nhật ký thư trong cửa sổ thiết bị đầu cuối như thế này, ví dụ:
Mã:
tail -f /var/log/mail.log
Hoặc sử dụng các lệnh này, nếu bạn chỉ quan tâm đến các mục Greylisting:
Mã:
tail -f /var/log/mail.log | grep Greylisted
hoặc
Mã:
grep Greylisted /var/log/mail.log
Greylisting chỉ trì hoãn e-mail đầu tiên từ cùng một người gửi đến cùng một người nhận. Sau khi nhận được e-mail đầu tiên đó, các e-mail tiếp theo sẽ đến mà không có sự chậm trễ thêm.

Trong trường hợp của tôi, mọi thứ đều hoạt động ngay từ lần thử đầu tiên. Điều này cho thấy ISPConfig Perfect Server Guide thực sự có hiệu quả.

Kết nối máy khách email​

Sử dụng Thunderbird làm máy khách email ví dụ. Các ứng dụng máy khách email khác hoạt động theo cách tương tự.

ISPConfig biến tên tài khoản thành địa chỉ email.



Hình 4: Cài đặt tài khoản Thunderbird



Hình 5: Cài đặt máy chủ Thunderbird

Bảo mật kết nối STARTTLS có nghĩa là kết nối bắt đầu không được bảo vệ và sau đó chuyển sang mã hóa nếu cả hai bên đều hỗ trợ mã hóa. SSL/TSL có nghĩa là phiên được mã hóa ngay từ đầu. SSL/TSL có lẽ an toàn hơn một chút, vì vậy hãy thử xem máy khách của bạn có hoạt động với SSL/TSL không.



Hình 6: Cài đặt máy chủ gửi đi Thunderbird

Sử dụng SPF​

Đọc về Sender Policy Framework từ Wikipedia. Ban đầu SPF là viết tắt của Sender Permitted From, rất hay để nhớ nghĩa của nó. Sau khi đọc về SPF, bạn có thể tự tạo bản ghi, kiểm tra xem nhà cung cấp dịch vụ tên của bạn có thể tạo bản ghi SPF hay không hoặc sử dụng Công cụ tìm kiếm Internet với
Mã:
Trình hướng dẫn SPF
tìm một trang web tạo bản ghi dịch vụ tên SPF cho bạn. Sau đó cắt và dán bản ghi vào dịch vụ tên của bạn. Thêm bản ghi TXT hoặc có thể thêm bản ghi SPF trên một số hệ thống DNS.

Kiểm tra xem SPF trông như thế nào trong dịch vụ tên, như thế này
Mã:
$ dig taleman.ovh -t TXT | grep spf
 taleman.ovh. 3000 IN TXT "v=spf1 mx ~all"
Hoặc như thế này:
Mã:
$ dig +short taleman.ovh TXT
 "v=spf1 mx ~all"
 "1|www.taleman.ovh"

Sử dụng DKIM​

Đọc về Thư được xác định bằng Khóa miền từ Wikipedia. ISPConfig đã tạo khóa DKIM cho bạn khi tạo tên miền email (nếu bạn nhớ đánh dấu vào ô DKIM). Cắt và dán Bản ghi DNS là khóa công khai[/b] vào dịch vụ tên của bạn dưới dạng bản ghi TXT. Nhà cung cấp dịch vụ tên của bạn có thể cung cấp một công cụ giúp tạo bản ghi DKIM dễ dàng hơn. Giữ bí mật khóa riêng DKIM.

Kiểm tra DKIM trông như thế nào trong dịch vụ tên, như thế này:
Mã:
$ host -t txt default._domainkey.taleman.ovh.
 default._domainkey.taleman.ovh văn bản mô tả "v=DKIM1;h=sha256;s=*;p=MIIB(I cut long string shorten)0rp" "sTGLXyK(cut shorten)B;t=s;"
Nếu ISPConfig là bên tạo khóa DKIM, khóa riêng sẽ được sao chép vào đúng vị trí trong cài đặt amavis.

Có trang web mail-tester.com hữu ích để kiểm tra SPF và DKIM có hoạt động không. Truy cập trang web đó, trang web sẽ cung cấp địa chỉ email và bạn sẽ gửi email đến đó từ máy chủ của mình. Sau đó, hãy đợi một phút và kiểm tra lại trang web.

Tạo chứng chỉ​

ISPConfig có thể tạo chứng chỉ tự ký, những chứng chỉ này được tạo trong quá trình cài đặt ISPConfig trừ khi bạn chọn không tạo. Ngay cả khi bạn đã tạo những chứng chỉ tự ký đó, bạn vẫn nên tạo những chứng chỉ phù hợp mà trình duyệt, chương trình email và các máy chủ email khác tin cậy.

Có một hướng dẫn hay: Bảo mật ISPConfig bằng Chứng chỉ SSL Let's Encrypt miễn phí

Thực hiện theo hướng dẫn đó, tôi nhận thấy trang web đã tạo hiển thị trang web mặc định của Debian, cho đến khi tôi tạo chứng chỉ LE cho trang web. Ngoài ra, ISPConfig Panel cũng không ổn định, tôi tin là vì nó có chứng chỉ tự ký và bây giờ có chứng chỉ mới này hoặc không có chứng chỉ nào cả. Làm mới các trang trong trình duyệt đã sắp xếp được vấn đề này.

Khi chứng chỉ được thiết lập, hãy nhập địa chỉ https của máy chủ vào trình duyệt. Nhấp vào biểu tượng ở bên trái thanh địa chỉ của trình duyệt bằng nút chuột khác sẽ hiển thị thông tin về chứng chỉ.

Đi tới tab Hệ thống của ISPConfig Panel, Cấu hình chính của Giao diện và tab Thư. Ở đó, hãy thiết lập
Mã:
Sử dụng kết nối được mã hóa SSL/TLS cho SMTP
thành SSL.

Có thể kiểm tra thêm chứng chỉ bằng các công cụ trên trang web, sử dụng Công cụ tìm kiếm Internet với
Mã:
kiểm tra ssl
làm từ khóa tìm kiếm. Các công cụ này thường kiểm tra trang web, khi kiểm tra chứng chỉ mà máy chủ email có, hãy tìm kiếm bằng
Mã:
ssl testing mail server

ISPConfig Roundcube Plugins​

Các plugin này hữu ích cho người dùng webmail. Ví dụ, chúng cho phép thay đổi mật khẩu email trong Roundcube. Một số cài đặt khác cũng có thể được sửa đổi trong Roundcube. Tất cả chúng đều có thể được sửa đổi trong bảng điều khiển ISPConfig, nhưng một số người dùng email có thể không muốn sử dụng bảng điều khiển.

Tôi đã cài đặt ISPConfig Rouncube Plugins bằng Hướng dẫn ISPConfig 3 Roundcube Plugin trên Debian 9. Hướng dẫn hoạt động chính xác trên Debian 10 Buster, ngoại trừ việc bây giờ ispconfig3_account/config/config.inc.php có thêm một dòng:
Mã:
$config['soap_validate_cert'] = true;
Giá trị này có thể giữ nguyên ở giá trị true, vì chứng chỉ đã được thiết lập và kiểm tra đúng cách trong chương trước của hướng dẫn này. Tuy nhiên, nếu máy chủ không có chứng chỉ hợp lệ, hãy thay đổi cài đặt này thành false.

Tôi đã gặp một sự cố. Một số mục trong Phần Tài khoản đã bật lên thông báo lỗi
Mã:
Đã xảy ra lỗi.Soap Error: Không được phép đăng nhập từ
Tôi đã giải quyết sự cố này bằng cách tích vào Remote Access và viết posti.taleman.ovh cho người dùng rcmail-remote mà tôi đã tạo theo Hướng dẫn. Có vẻ như hướng dẫn đã sai khi không cần tích vào "Remote Access". Bây giờ, với tôi, có vẻ như cần tích vào cả thiết lập máy chủ đơn và thiết lập máy chủ đa ISPConfig với máy chủ email riêng.

Sử dụng thêm​

Bây giờ bạn có thể tạo một tên miền email khác. Hãy nhớ tạo bản ghi MX cho tên miền đó và trỏ đến máy chủ email của bạn. Bạn có thể sử dụng cùng một máy chủ email cho tất cả các tên miền email mà bạn tạo. Đây là cách thường được thực hiện, vì sẽ khá lãng phí nếu tạo một máy chủ email riêng cho mỗi tên miền email.

Khắc phục sự cố​

Làm theo Hướng dẫn này, máy chủ email mới thiết lập của tôi hoạt động. Nếu máy chủ của bạn không hoạt động, hãy kiểm tra xem bạn đã làm theo hướng dẫn này chưa và không bỏ qua một số bước.

Đọc Diễn đàn đã chỉ ra những cách phổ biến khiến máy chủ email không hoạt động là cài đặt sai tên máy chủ và tên máy chủ -f và/hoặc lỗi trong tệp /etc/postfix/main.cf.

Nếu bạn nghi ngờ có sự cố với dịch vụ tên DNS, hãy kiểm tra những sự cố đó bằng DNS với ISPConfig -tutorial. Có các công cụ trên trang web kiểm tra DNS, như intodns.com, dnschecker.com, mxtoolbox.com.

Nếu không nhận được hoặc không gửi được email, postfix sẽ thực hiện các chức năng đó và chúng được ghi vào /var/log/mail.log. Vì vậy, hãy
Mã:
tail -f /var/log/mail.log | grep postfix để xem điều gì xảy ra khi thư được nhận hoặc gửi.
Nếu bạn gặp sự cố khi kết nối với máy khách email (ví dụ: Thunderbird), hãy sử dụng lệnh này để xem điều gì xảy ra:
Mã:
tail -f /var/log/mail.log | grep dovecot
Trong trường hợp một email cụ thể có vấn đề, bạn có thể tìm mục nhật ký email bằng ID của email đó. Ví dụ:
Mã:
23 tháng 9 14:19:34 posti postfix/smtps/smtpd[10260]: A9F2880C76:client=dsl-tkubng21-58c1ce-191.dhcp.inet.fi[99.99.99.99],sasl_method=PLAIN, [emailprotected]
ID cho email đó là A9F2880C76. Bạn có thể tìm mục nhật ký cho email đó bằng cách sử dụng
Mã:
# grep A9F2880C76 /var/log/mail.log
Lệnh mailq hiển thị các email đang trong hàng đợi bị trì hoãn của postfix. Nghĩa là những email chưa được gửi. Việc có một số mục nhập gần đây ở đó là bình thường, email không phải lúc nào cũng có thể được gửi ngay lập tức. Bạn có thể xem nội dung của những email đó bằng cách sử dụng Queue ID, như sau:
Mã:
# postcat /var/spool/postfix/deferred/A/A9F2880C76
Howtoforge có Diễn đàn ISPConfig, hãy hỏi lời khuyên ở đó.
 
Back
Bên trên