Table of Contents

No table of contents

Cách cài đặt và định cấu hình Postfix trên Ubuntu 22.04

Posted on: 17 tháng 4 năm 2023

Ubuntu

Giới thiệu

Postfix là một Mail Transfer Agent (MTA) nguồn mở phổ biến có thể được sử dụng để định tuyến và gửi email trên hệ thống Linux. Người ta ước tính rằng khoảng 25% máy chủ thư công cộng trên internet chạy Postfix.

Trong hướng dẫn này, bạn sẽ tìm hiểu cách cài đặt và định cấu hình Postfix trên máy chủ Ubuntu 22.04. Sau đó, bạn sẽ kiểm tra xem Postfix có thể định tuyến thư chính xác hay không bằng cách cài đặt s-nail, Mail User Agent (MUA), còn được gọi là email client.

Lưu ý rằng mục tiêu của hướng dẫn này là giúp bạn thiết lập và chạy Postfix nhanh chóng chỉ với một số chức năng email cơ bản. Bạn sẽ không có một máy chủ email đầy đủ tính năng khi kết thúc hướng dẫn này, nhưng bạn sẽ có một số thành phần cơ bản của một thiết lập như vậy để giúp bạn bắt đầu.

Điều kiện tiên quyết

Việc thiết lập và duy trì máy chủ mail của riêng bạn rất phức tạp và tốn thời gian. Đối với hầu hết người dùng, việc dựa vào dịch vụ mail trả phí sẽ thực tế hơn. Nếu bạn đang cân nhắc chạy máy chủ mail của riêng mình, chúng tôi khuyên bạn nên xem lại bài viết này về lý do tại sao bạn có thể không muốn làm như vậy.

Nếu bạn chắc chắn muốn làm theo hướng dẫn này để cài đặt và định cấu hình Postfix thì trước tiên bạn phải có những thứ sau:

  • Máy chủ chạy Ubuntu 22.04 để hoạt động như máy chủ mail Postfix của bạn. Máy chủ này phải có non-root user với quyền sudo và tường lửa được định cấu hình bằng UFW. Bạn có thể làm theo hướng dẫn thiết lập máy chủ ban đầu Ubuntu 22.04 của chúng tôi để thiết lập điều này.
  • Tên miền đủ điều kiện trỏ vào máy chủ Ubuntu 22.04 của bạn. Xin lưu ý rằng nếu bạn định truy cập mail từ một vị trí bên ngoài, bạn sẽ cần đảm bảo rằng bạn cũng có một bản ghi MX trỏ đến máy chủ mail của mình.

Lưu ý rằng hướng dẫn này giả định rằng bạn đang định cấu hình máy chủ lưu trữ có FQDN là mail.example.com. Bất cứ khi nào cần thiết, hãy nhớ thay đổi example.com hoặc mail.example.com để phản ánh FQDN của riêng bạn.

Bước 1 — Cài đặt Postfix

Postfix được bao gồm trong kho lưu trữ mặc định của Ubuntu, vì vậy bạn có thể cài đặt nó bằng APT.

Để bắt đầu, hãy cập nhật bộ đệm gói apt cục bộ của bạn:

  1. sudo apt update

Sau đó cài đặt gói postfix bằng lệnh dưới đây. Lưu ý rằng ở đây chúng tôi chuyển biến môi trường DEBIAN_PRIORITY=low vào lệnh cài đặt này. Điều này sẽ khiến quá trình cài đặt nhắc bạn định cấu hình một số tùy chọn bổ sung:

  1. sudo DEBIAN_PRIORITY=low apt install postfix

Quá trình cài đặt này sẽ mở ra một loạt lời nhắc tương tác. Đối với mục đích của hướng dẫn này, hãy sử dụng thông tin sau để điền vào lời nhắc của bạn:

  • General type of mail configuration? (Loại cấu hình mail chung?): Đối với điều này, hãy chọn Internet Site vì điều này phù hợp với nhu cầu cơ sở hạ tầng của chúng tôi.
  • System mail name (Tên mail hệ thống): Đây là miền cơ sở được sử dụng để tạo địa chỉ email hợp lệ khi chỉ cung cấp phần tài khoản của địa chỉ. Chẳng hạn, giả sử tên máy chủ của máy chủ của bạn là mail.example.com. Bạn có thể muốn đặt tên mail hệ thống thành example.com để, với tên người dùng user1, Postfix sẽ sử dụng địa chỉ user1@example.com.
  • Root and postmaster mail recipient (Người nhận mail root và postmaster): Đây là tài khoản Linux sẽ được chuyển tiếp mail đến địa chỉ root@postmaster@. Sử dụng tài khoản chính của bạn cho việc này. Trong trường hợp ví dụ này, sammy.
  • Other destinations to accept mail for (Các điểm đến khác để chấp nhận mail): Điều này xác định các điểm đến mail mà phiên bản Postfix này sẽ chấp nhận. Nếu bạn cần thêm bất kỳ miền nào khác mà máy chủ này sẽ chịu trách nhiệm nhận, hãy thêm những miền đó tại đây. Nếu không, mặc định sẽ là đủ.
  • Force synchronous updates on mail queue? (Buộc cập nhật đồng bộ trên hàng đợi mail?): Vì có khả năng bạn đang sử dụng hệ thống tệp được ghi nhật ký, hãy chấp nhận No ở đây.
  • Local networks (Mạng cục bộ): Đây là danh sách các mạng mà máy chủ mail của bạn được định cấu hình để chuyển tiếp thư. Mặc định sẽ hoạt động cho hầu hết các tình huống. Tuy nhiên, nếu bạn chọn sửa đổi nó, hãy đảm bảo rất hạn chế về phạm vi mạng.
  • Mailbox size limit (Giới hạn kích thước hộp thư): Điều này có thể được sử dụng để giới hạn kích thước của thư. Đặt nó thành 0 sẽ vô hiệu hóa mọi hạn chế về kích thước.
  • Local address extension character (Ký tự mở rộng địa chỉ cục bộ): Đây là ký tự có thể được sử dụng để phân tách phần thông thường của địa chỉ khỏi phần mở rộng (được sử dụng để tạo bí danh động). Mặc định, + sẽ hoạt động cho hướng dẫn này.
  • Internet protocols to use (Giao thức Internet sẽ sử dụng): Chọn có hạn chế phiên bản IP mà Postfix hỗ trợ. Đối với mục đích của hướng dẫn này, hãy chọn all.

Nói rõ hơn, đây là các cài đặt được sử dụng trong hướng dẫn này:

  • General type of mail configuration?: Internet Site
  • System mail name: example.com (không phải mail.example.com)
  • Root and postmaster mail recipient: Tên người dùng của tài khoản Linux chính của bạn (sammy trong các ví dụ của chúng tôi)
  • Other destinations to accept mail for: $myhostname, example.com, mail.example.com, localhost.example.com, localhost
  • Force synchronous updates on mail queue?: No
  • Local networks: 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
  • Mailbox size limit: 0
  • Local address extension character: +
  • Internet protocols to use: all

Lưu ý: Nếu bạn cần quay lại để thay đổi các cài đặt này, bạn có thể thực hiện bằng cách nhập:

  1. sudo dpkg-reconfigure postfix

Lời nhắc sẽ được điền sẵn các câu trả lời trước đó của bạn.

Khi bạn được nhắc khởi động lại dịch vụ, hãy chấp nhận các giá trị mặc định và chọn OK.

Khi quá trình cài đặt kết thúc, bạn đã sẵn sàng thực hiện một vài cập nhật cho cấu hình Postfix của mình.

Bước 2 — Thay đổi cấu hình Postfix

Giờ đây, bạn có thể điều chỉnh một số cài đặt mà quá trình cài đặt gói không nhắc bạn. Nhiều cài đặt cấu hình của Postfix được xác định trong tệp /etc/postfix/main.cf. Thay vì chỉnh sửa tệp này trực tiếp, bạn có thể sử dụng lệnh postconf của Postfix để truy vấn hoặc đặt cài đặt cấu hình.

Để bắt đầu, hãy đặt vị trí cho hộp thư của non-root Ubuntu user của bạn. Trong hướng dẫn này, chúng tôi sẽ sử dụng định dạng Maildir, định dạng này sẽ phân tách thư thành các tệp riêng lẻ, sau đó được di chuyển giữa các thư mục dựa trên hành động của người dùng. Tùy chọn thay thế không được đề cập trong hướng dẫn này là định dạng mbox, định dạng lưu trữ tất cả thư trong một tệp.

Đặt biến home_mailbox thành Maildir/. Sau đó, bạn sẽ tạo cấu trúc thư mục dưới tên đó trong thư mục chính của người dùng. Định cấu hình home_mailbox bằng cách nhập:

  1. sudo postconf -e 'home_mailbox= Maildir/'

Tiếp theo, đặt vị trí của bảng virtual_alias_maps, bảng ánh xạ các tài khoản email tùy ý sang các tài khoản hệ thống Linux. Chạy lệnh sau, lệnh này ánh xạ vị trí bảng tới tệp cơ sở dữ liệu băm có tên /etc/postfix/virtual:

  1. sudo postconf -e 'virtual_alias_maps= hash:/etc/postfix/virtual'

Bây giờ bạn đã xác định vị trí của tệp bản đồ ảo trong tệp main.cf của mình, bạn có thể tự tạo tệp đó và bắt đầu ánh xạ tài khoản email tới tài khoản người dùng trên hệ thống Linux của mình. Tạo tệp bằng trình soạn thảo văn bản ưa thích của bạn; trong ví dụ này, chúng tôi sẽ sử dụng nano:

  1. sudo nano /etc/postfix/virtual

Liệt kê bất kỳ địa chỉ nào mà bạn muốn chấp nhận email, theo sau là khoảng trắng và người dùng Linux mà bạn muốn thư đó được gửi đến.

Ví dụ: nếu bạn muốn chấp nhận email tại contact@example.comadmin@example.com và muốn những email đó được gửi tới sammy Linux user, bạn có thể thiết lập tệp của mình như sau:

/etc/postfix/virtual
contact@example.com sammy
admin@example.com sammy

Sau khi bạn đã ánh xạ tất cả các địa chỉ tới các tài khoản máy chủ thích hợp, hãy lưu và đóng tệp. Nếu bạn đã sử dụng nano, hãy thực hiện việc này bằng cách nhấn CTRL + X, Y, rồi ENTER.

Áp dụng ánh xạ bằng cách gõ:

  1. sudo postmap /etc/postfix/virtual

Khởi động lại quy trình Postfix để đảm bảo rằng tất cả các thay đổi của bạn đã được áp dụng:

  1. sudo systemctl restart postfix

Giả sử bạn đã làm theo hướng dẫn Thiết lập Máy chủ Ban đầu tiên quyết, bạn sẽ cấu hình tường lửa với UFW. Theo mặc định, tường lửa này sẽ chặn các kết nối bên ngoài tới các dịch vụ trên máy chủ của bạn trừ khi các kết nối đó được cho phép một cách rõ ràng, do đó, bạn sẽ phải thêm một quy tắc tường lửa để cho phép một ngoại lệ cho Postfix.

Bạn có thể cho phép kết nối với dịch vụ bằng cách gõ:

  1. sudo ufw allow Postfix

Cùng với đó, Postfix được cấu hình và sẵn sàng chấp nhận các kết nối bên ngoài. Tuy nhiên, bạn vẫn chưa sẵn sàng để thử nghiệm nó với mail client. Trước khi bạn có thể cài đặt ứng dụng khách và sử dụng nó để tương tác với thư được gửi đến máy chủ của mình, bạn cần thực hiện một số thay đổi đối với thiết lập máy chủ Ubuntu của mình.

Bước 3 — Cài đặt mail client và khởi tạo cấu trúc Maildir

Để tương tác với thư được gửi, bước này sẽ hướng dẫn bạn quá trình cài đặt gói s-nail. Đây là một biến thể giàu tính năng của BSD xmail client có thể xử lý chính xác định dạng Maildir.

Tuy nhiên, trước khi cài đặt ứng dụng khách, bạn nên thận trọng đảm bảo biến môi trường MAIL của mình được đặt chính xác. s-nail sẽ tìm biến này để tìm ra nơi tìm thư cho người dùng của bạn.

Để đảm bảo rằng biến MAIL được đặt bất kể bạn truy cập tài khoản của mình bằng cách nào — chẳng hạn như thông qua ssh, su, su - hoặc sudo — bạn sẽ cần đặt biến trong tệp /etc/bash.bashrc và thêm nó vào một tệp trong /etc/profile.d để đảm bảo rằng nó được đặt cho tất cả người dùng theo mặc định.

Để thêm biến vào các tệp này, hãy nhập:

  1. echo 'export MAIL=~/Maildir' | sudo tee -a /etc/bash.bashrc | sudo tee -a /etc/profile.d/mail.sh

Để đọc biến vào phiên hiện tại của bạn, hãy tìm nguồn tệp /etc/profile.d/mail.sh:

  1. source /etc/profile.d/mail.sh

Khi hoàn tất, hãy cài đặt email client s-nail với APT:

  1. sudo apt install s-nail

Trước khi chạy ứng dụng khách, bạn cần điều chỉnh một vài cài đặt. Mở tệp /etc/s-nail.rc trong trình chỉnh sửa của bạn:

  1. sudo nano /etc/s-nail.rc

Ở dưới cùng của tệp, thêm các tùy chọn sau:

/etc/s-nail.rc
. . .
set emptystart
set folder=Maildir
set record=+sent

Đây là những gì những dòng này làm:

  • set emptystart: cho phép máy khách mở ngay cả khi hộp thư đến trống
  • set folder=Maildir: đặt thư mục Maildir thành biến folder nội bộ
  • set record=+sent tạo một tệp mbox sent để lưu trữ thư đã gửi trong bất kỳ thư mục nào được đặt làm biến folder, trong trường hợp này là Maildir

Lưu và đóng tệp khi bạn hoàn tất. Bây giờ bạn đã sẵn sàng khởi tạo cấu trúc Maildir của hệ thống.

Một cách nhanh chóng để tạo cấu trúc Maildir trong thư mục chính của bạn là gửi email cho chính bạn bằng lệnh s-nail. Vì tệp sent sẽ chỉ khả dụng sau khi Maildir được tạo, bạn nên tắt tính năng ghi vào tệp cho email ban đầu này. Thực hiện việc này bằng cách chuyển tùy chọn -Snorecord.

Gửi email bằng cách chuyển một chuỗi tới lệnh s-nail. Điều chỉnh lệnh để đánh dấu người dùng Linux của bạn là người nhận:

  1. echo 'init' | s-nail -s 'init' -Snorecord sammy

Lưu ý: Bạn có thể nhận được phản hồi sau:

Output
Can't canonicalize "/home/sammy/Maildir"

Điều này là bình thường và có thể chỉ xuất hiện khi gửi tin nhắn đầu tiên này.

Bạn có thể kiểm tra để đảm bảo thư mục đã được tạo bằng cách tìm thư mục ~/Maildir của mình:

  1. ls -R ~/Maildir

Bạn sẽ thấy cấu trúc thư mục đã được tạo và một tệp tin nhắn mới nằm trong thư mục ~/Maildir/new:

Output
/home/sammy/Maildir/: cur new tmp /home/sammy/Maildir/cur: /home/sammy/Maildir/new: 1650294586.Vfc01I7e11dM993645.mail.example.com /home/sammy/Maildir/tmp:

Bây giờ cấu trúc thư mục đã được tạo, bạn đã sẵn sàng kiểm tra ứng dụng khách s-nail bằng cách xem tin nhắn init bạn đã gửi và gửi tin nhắn đến một địa chỉ email bên ngoài.

Bước 4 - Kiểm tra ứng dụng khách

Để mở ứng dụng khách, hãy chạy lệnh s-nail:

  1. s-nail

Trong bảng điều khiển của mình, bạn sẽ thấy một hộp thư đến thô sơ với thông báo init đang chờ:

Output
s-nail version v14.9.15. Type `?' for help "/home/sammy/Maildir": 1 message 1 new >N 1 sammy@example.com 2022-04-18 15:09 14/452 init

Nhấn ENTER để hiển thị thông báo:

Output
[-- Message 1 -- 14 lines, 452 bytes --]: Date: Mon, 18 Apr 2022 15:09:46 +0000 To: sammy@example.com Subject: init Message-Id: <20220418150946.EE6897E11A@@mail.example.com> From: sammy@example.com init

Bạn có thể quay lại danh sách tin nhắn bằng cách nhập h, rồi ENTER:

  1. h
Output
>R 1 sammy@example.com 2022-04-18 15:09 14/452 init

Lưu ý rằng tin nhắn hiện có trạng thái R, cho biết rằng nó đã được đọc.

Vì thông báo này không hữu ích lắm nên bạn có thể xóa nó bằng cách nhấn d, rồi ENTER:

  1. d

Để quay lại terminal, gõ q rồi ENTER:

  1. q

Là thử nghiệm cuối cùng, hãy kiểm tra xem s-nail có thể gửi email chính xác hay không. Để thực hiện việc này, bạn có thể đưa nội dung của tệp văn bản vào quy trình s-nail, giống như bạn đã làm với thông báo init mà bạn đã gửi ở bước trước.

Bắt đầu bằng cách viết một tin nhắn thử nghiệm trong trình soạn thảo văn bản:

  1. nano ~/test_message

Bên trong, nhập một số văn bản bạn muốn gửi:

~/test_message
Hello,

This is a test.  Please confirm receipt!

Lưu và đóng tệp sau khi viết tin nhắn của bạn.

Sau đó, sử dụng lệnh cat để gửi thông báo tới quy trình s-nail. Bạn có thể làm như vậy với ví dụ sau, sử dụng các tùy chọn này:

  • -s: Điều này xác định dòng chủ đề của thông báo email
  • -r: Một thay đổi tùy chọn đối với trường “From:” của email. Theo mặc định, người dùng Linux mà bạn đã đăng nhập sẽ được sử dụng để điền vào trường này. Tùy chọn -r cho phép bạn ghi đè địa chỉ này bằng một địa chỉ hợp lệ, chẳng hạn như một trong những địa chỉ bạn đã xác định trong tệp etc/postfix/virtual. Để minh họa, lệnh sau sử dụng contact@example.com

Ngoài ra, hãy đảm bảo thay đổi user@email.com thành địa chỉ email hợp lệ mà bạn có quyền truy cập:

  1. cat ~/test_message | s-nail -s 'Test email subject line' -r contact@example.com user@email.com

Sau đó, điều hướng đến hộp thư đến cho địa chỉ email mà bạn đã gửi tin nhắn. Bạn sẽ thấy tin nhắn của mình đang chờ ở đó gần như ngay lập tức.

Lưu ý: Nếu thư không có trong hộp thư đến của bạn, thì thư đó có thể đã được chuyển đến thư mục Thư rác.

Bạn có thể xem các tin nhắn đã gửi trong ứng dụng khách s-nail của mình. Bắt đầu lại ứng dụng khách tương tác:

  1. s-nail

Từ ứng dụng email, xem thư đã gửi của bạn bằng cách nhập:

  1. file +sent

Bạn sẽ thấy đầu ra như thế này:

Output
+[/home/sammy/Maildir/]sent: 1 message 1 new ▸N 1 To contact@example.com 2022-04-18 15:12 10/211 Test email subject line

Bạn có thể quản lý thư đã gửi bằng các lệnh giống như bạn sử dụng cho thư đến.

Kết luận

Bây giờ bạn đã cấu hình Postfix trên máy chủ Ubuntu 22.04 của mình. Quản lý máy chủ email có thể là một nhiệm vụ khó khăn đối với quản trị viên hệ thống mới, nhưng với cấu hình này, bạn sẽ có đủ chức năng email MTA để bắt đầu.

0 replies