Skip to main content

[Thủ Thuật Linux] Hướng dẫn cài đặt Postfix Cơ Bản ( Cập Nhập)

Hướng dẫn cài đặt Postfix Cơ Bản này sẽ hướng dẫn bạn cách thiết lập máy chủ thư Postfix cơ bản với các dịch vụ IMAP và POP3.

Quá trình xử lý email của Postfix 

Trong phạm vi bài viết này, Postfix là package service gửi và nhận thư từ Internet và lưu trữ chúng trong hộp thư của người dùng trong khi client trên Internet có thể truy xuất thư của họ qua Courier IMAP hoặc POP3. 

Việc xác thực người dùng được thực hiện bởi Courier Authdaemon. Sơ đồ sau đây minh họa quá trình này.

Image
sơ đồ hoạt động postfix - hướng dẫn cài đặt postfix cơ bản

Tìm hiểu về Postfix

Các thành phần trong Postfix

Hình dưới đây cho thấy các thành phần chính của hệ thống Postfix và các luồng thông tin chính giữa chúng.

 

Image
Cấu trúc hoạt động của postfix

Trong đó bao gồm: 

  • Elip màu vàng là chương trình thư.
  • Hộp màu vàng là hàng đợi thư hoặc tệp.
  • Các ô màu xanh là bảng tra cứu.
  • Các chương trình trong hộp lớn chạy dưới sự kiểm soát của daemon Postfix.
  • Dữ liệu trong hộp lớn là thuộc tính/ chương trình của hệ thống thư Postfix.

Nhận thư điện tử trong Postfix

Khi một email đi vào hệ thống Postfix, điểm dừng đầu tiên là hàng đợi đến. Hình bên dưới cho thấy các thành phần chính liên quan đến thư mới đến

Image
Nhận email trong Postfix.

 

1. Thư được đưa đến local. Chương trình gửi mail Postfix ("sendmail") gọi chương trình postdrop có đặc quyền gửi thư vào thư mục maildrop , nơi thư nhận được chọn bởi daemon . Daemon này thực hiện một số kiểm tra để bảo vệ phần còn lại của hệ thống Postfix.

2. Thư đến qua mạng. Máy chủ Postfix SMTP nhận thông báo và thực hiện một số kiểm tra để bảo vệ phần còn lại của hệ thống Postfix.

3. Thư được tạo nội bộ bởi chính hệ thống Postfix, để trả lại thư không gửi được cho người gửi. Daemon bị trả lại hoặc trì hoãn hay mang lại report cho email lỗi. (bounce or defer)

4. Thư được chuyển tiếp bởi đại lý phân phối tại local, thông qua một mục nhập trong cơ sở dữ liệu bí danh (alias) trên toàn hệ thống hoặc thông qua một mục nhập trong một tệp .forward cho mỗi người dùng. Điều này được chỉ ra bằng mũi tên không gắn nhãn.

5. Thư được tạo nội bộ bởi chính hệ thống Postfix, để thông báo cho người quản lý postfix (postmaster) về sự cố (đường dẫn này cũng được biểu thị bằng mũi tên không được gắn nhãn). Hệ thống Postfix có thể được định cấu hình để thông báo cho người quản lý postfix về các vấn đề giao thức SMTP, vi phạm chính sách UCE , ...

6. Daemon dọn dẹp thực hiện giai đoạn xử lý cuối cùng cho thư đến. Nó bổ sung thông tin thiếu và cần thiết như các tiêu đề thư bị thiếu, các tiêu đề thư khác, sắp xếp để ghi lại địa chỉ vào user@domain.com đầy đủ, và tùy chọn trích xuất địa chỉ người nhận từ tiêu đề thư ...

Daemon dọn dẹp sẽ chèn kết quả dưới dạng một tệp hàng đợi duy nhất vào hàng đợi đến và thông báo cho người quản lý hàng đợi về sự xuất hiện của thư mới. Daemon dọn dẹp có thể được cấu hình để chuyển đổi địa chỉ trên cơ sở tra cứu bảng chuẩn và bảng ảo .(anonical and virtua table lookups)

7. Theo yêu cầu của daemon dọn dẹp, daemon viết lại tầm thường (trivial-rewrite) sẽ ghi lại các địa chỉ thành dạng user@domain.com đầy đủ.

Cài đặt Postfix

Trong thiết lập này, tôi giả sử rằng miền của bạn là yourdomain.com và nó có thiết lập bản ghi MX hợp lệ là mail.yourdomain.com .

Hãy nhớ thay thế yourdomain.com bằng miền thực của bạn trong các mã ví dụ trong cách làm này. Ngoài ra, tôi giả sử rằng bạn biết bản ghi MX là gì.

Để tìm ra MX loại của bạn trong lệnh:

dig mx yourdomain.com

Cài đặt postfix

sudo apt-get install postfix

Cài đặt gói mailx để sử dụng làm chương trình tiện ích thư lệnh. Lệnh thư được cài đặt với gói này.Cài đặt gói mailx để sử dụng làm chương trình tiện ích thư lệnh. Lệnh thư được cài đặt với gói này.

sudo apt-get install mailutils

Kiểm tra thiết lập mặc định của bạn

Thêm một người dùng trước khi bạn bắt đầu điều này.

sudo useradd -m -s/ bin/bash fmaster
sudo passwd fmaster

Kiểm tra cài đặt mặc định của bạn bằng đoạn mã sau.

telnet localhost 25

(nếu không có gì xảy ra, hãy kiểm tra xem liệu postfix có đang chạy hay không)

sudo postfix status

Nếu nó không chạy, hãy khởi động nó

sudo postfix start

Postfix sẽ nhắc như sau trong terminal để bạn có thể sử dụng để gõ lệnh SMTP.

Trying 127.0.0.1...
Connected to mail.fossedu.org.
Escape character is '^]'.
220 localhost.localdomain ESMTP Postfix (Ubuntu)

Nhập đoạn mã sau vào lời nhắc của Postfix.

ehlo localhost
mail from: root@localhost
rcpt to: fmaster@localhost
data
Subject: My first mail on Postfix

Hi,
Are you there?
regards,
Admin
. (Type the .[dot] in a new Line and press Enter )
quit

Kiểm tra hộp thư của fmaster

su - fmaster
mail

Khi bạn gõ lệnh thư , một kết quả như sau sẽ hiển thị

Mail version 8.1.2 01/15/2001.  Type ? for help.
"/var/mail/fmaster": 2 messages 2 new
>N  1 root@localhost     Mon Mar  6 12:49   13/479   Just a test
 N  2 root@localhost     Mon Mar  6 12:51   15/487   My first mail
&

Bạn sẽ thấy rằng các thư được lập chỉ mục bằng các số và bạn có thể nhập số của thư mà bạn muốn đọc. Ví dụ, gõ không có "2" để đọc thư thứ hai.

Nhập "q" để thoát. Thư sẽ được ghi vào một tệp có tên mbox trong thư mục chính của người dùng. Theo ví dụ của chúng tôi, nó sẽ là / home / fmaster / mbox .

Tất cả các thư trong một loại hộp thư mbox được nối và lưu trữ trong một tệp duy nhất. Đầu mỗi tin nhắn được biểu thị bằng một dòng có năm ký tự đầu tiên là "From " và một dòng trống được nối vào cuối mỗi tin nhắn

Thiết lập Hỗ trợ Postfix cho Hộp thư kiểu Maildir

Maildir là một định dạng cho bộ đệm e-mail không yêu cầu khóa tệp để duy trì tính toàn vẹn của thư vì thư được giữ trong các tệp riêng biệt với tên duy nhất.

Maildir là một thư mục (thường được đặt tên là Maildir) với ba thư mục con có tên tmp, new và cur. Tất cả các thư mục con phải nằm trên cùng một hệ thống tệp.

Một lý do khác để sử dụng định dạng Maildir là các máy chủ Courier IMAP / POP3 chỉ hoạt động với định dạng Maildir của hộp thư.

Hướng dẫn Postfix sử dụng Trình gửi thư thay vì Mbox:

sudo postconf -e "home_mailbox = Maildir /"

Đảm bảo rằng Procmail không được sử dụng: (nếu bước được thực hiện trong khi dpkg-cấu hình lại, do nhầm lẫn)

sudo postconf -e "mailbox_command ="

Khởi động lại Postfix để thay đổi có hiệu lực.

sudo  /etc/init.d/postfix restart

Kiểm tra hộp thư của fmaster

su - fmaster
MAIL=/home/fmaster/Maildir
mail

Cài đặt courier IMAP và POP3

sudo apt-get install courier-pop
sudo apt-get install courier-imap

Thêm các miền cục bộ của bạn vào postfix

Thêm miền của bạn vào mydestination :(đích đến của tôi là một giá trị trong tệp cấu hình postfix. để xem cài đặt hiện có của bạn, hãy nhập sudo postconf mydestination)

sudo postconf -e "mydestination = mail.fossedu.org, localhost.localdomain, localhost, yourdomain.com"

Thêm cả các local networks của bạn:

Postfix đi kèm với mục nhập localhost (127.0.0.1); bạn có thể có những người khác, ở đây chúng tôi giả định rằng mạng LAN của bạn là trên 192.168.1.0/24. Thực hiện các thay đổi để phù hợp với hoàn cảnh của bạn.

sudo postconf -e "mynetworks = 127.0.0.0/8, 192.168.1.0/24"

Tạo Postfix để nhận thư từ Internet

Hướng dẫn Postfix nhận trên tất cả các giao diện:

sudo postconf -e "inet_interfaces = all"

(tùy chọn) Đặt Postfix chấp nhận các giao thức IPv4, IPv6

Nếu bạn chưa sử dụng IPv6 và bạn đang hoang tưởng, hãy sử dụng "ipv4" thay vì "all". Một lần nữa, điều này là để phù hợp với độ nhạy mạng của riêng bạn.

sudo postconf -e "inet_protocols = all"

Bắt đầu courier-authdaemon

Courier-authdaemon không được khởi động sau khi cài đặt. Nếu không có nó, xác thực imap sẽ không thành công:

sudo service courier-authdaemon start

Khởi động courier-authdaemon

sudo systemctl enable courier-authdaemon

Cuối cùng, khởi động lại Postfix;

sudo  /etc/init.d/postfix restart

Kiểm tra lại thiết lập của bạn bằng mã sau:

netcat mail.yourdomain.com 25
ehlo yourdomain.com
mail from: root@yourdomain.com
rcpt to: fmaster@yourdomain.com
data
Subject: My first mail for my domain

Hi,
Are you there?
regards,
Admin
. (and Enter In a new Line)
quit

Kiểm tra lại hộp thư

su - fmaster
cd Maildir / mới
ls

Bây giờ bạn sẽ thấy thư có một tệp riêng biệt.

Test nhanh POP3

Sử dụng lệnh 

netcat mail.yourdomain.com 110

Một đầu ra như sau sẽ hiển thị trong thiết bị đầu cuối của bạn.

Connected to mail.yourdomain.com (208.77.188.166).
Escape character is '^]'.
+OK Hello there.

Nhập đoạn mã sau vào lời nhắc do máy chủ Courier POP3 cung cấp. Tôi cho rằng bạn đủ thông minh để không nhập các dòng bắt đầu từ + OK

user fmaster
+OK Password required.
pass password
+OK logged in.
quit

Kiểm tra IMAP của Courier

netcat mail.yourdomain.com 143

bạn sẽ nhận được kết quả

* OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE ACL ACL2=UNION STARTTLS XCOURIEROUTBOX=INBOX.Outbox] Courier-IMAP ready. Copyright 1998-2005 Double Precision, Inc.  See COPYING for distribution information.

Tiếp tục thử

a login fmaster password
a OK LOGIN Ok.
a logout

Local Alias database

Khi thư được gửi cục bộ, đại lý phân phối cục bộ chạy từng tên người nhận cục bộ thông qua cơ sở dữ liệu bí danh. Ánh xạ không ảnh hưởng đến địa chỉ trong tiêu đề thư.

Bí danh cục bộ thường được sử dụng để triển khai danh sách phân phối hoặc gửi thư trực tiếp cho các bí danh tiêu chuẩn như quản trị viên bưu điện đến người thực.

Bảng cũng có thể được sử dụng để ánh xạ địa chỉ Firstname.Lastname thành tên đăng nhập.

Tra cứu bí danh được bật theo mặc định và bạn sẽ thấy đoạn mã sau trong tệp main.cf.

...
alias_maps = hash:/etc/aliases
...

Tạo bí danh cho tài khoản

Các mã sau minh họa cách bạn có thể thiết lập bí danh. Bước này là tùy chọn vì chúng ta sẽ định cấu hình các miền thư ảo ở phần sau trong cách thực hiện này. Tôi đã thêm bước này để đảm bảo bạn hiểu cách bạn có thể thực hiện việc này trong trường hợp bắt buộc.

Tạo người dùng

sudo useradd -m -s /bin/bash sysadmin
sudo passwd sysadmin

Chỉnh sửa bảng bí danh

Mở tệp bí danh bằng:

sudo vi / etc / aliases

Thêm mã sau:

fmaster: sysadmin

Để thay đổi của bạn có hiệu lực, loại:

sudo newaliases

Để kiểm tra các thay đổi của bạn, hãy gửi thư đến fmaster và kiểm tra thư trong thư mục / home / sysadmin / Maildir / new .

.forward mỗi nguời dùng

Người dùng có thể kiểm soát việc gửi thư của riêng họ bằng cách chỉ định các điểm đến trong một tệp có tên là  .forward trong thư mục chính của họ. Cú pháp của những tệp này giống với bí danh hệ thống, ngoại trừ khóa tra cứu và dấu hai chấm không có.

Tôi sẽ minh họa một ví dụ ở đây:

Giả sử rằng bạn cần chuyển tiếp tất cả các thư đến tài khoản sysadmin sang một tài khoản khác. Nhập các lệnh sau:

su - sysadmin
touch .forward

mở file .forward và thêm dòng fossingu@example.com

vi .forward

Hãy nhớ sử dụng địa chỉ email tồn tại trong bài tập này.

Bây giờ, hãy gửi thư đến sysadmin và thư sẽ đến fossingu@example.com

Để tạo bản lưu email tại chúng địa chỉ email sysadmin@example.com, bạn có thể config như mẫu dưới

admin@nguyenphudung.com
sysadmin@example.com, \sysadmin

Bí danh ảo Postfix cho các miền riêng biệt và tài khoản hệ thống Linux

Với cách tiếp cận này, mọi miền được lưu trữ đều có thể có địa chỉ email, v.v. thông tin riêng. Tuy nhiên, nó vẫn sử dụng tài khoản hệ thống Linux để gửi hộp thư cục bộ.

Với miền bí danh ảo, mỗi địa chỉ được lưu trữ được đặt bí danh cho tài khoản hệ thống UNIX cục bộ hoặc cho một địa chỉ từ xa. Ví dụ dưới đây cho thấy cách sử dụng cơ chế này cho miền fossingu.org và linuxelabs.com.

Bên trong tệp main.cf , chúng tôi cho nó biết cách xử lý các miền ảo này:

sudo postconf -e "virtual_alias_domains = fomedu.org linuxelabs.com"
sudo postconf -e "virtual_alias_maps = hash: / etc / postfix / virtual"

Chỉnh sửa tệp / etc / postfix / virtual :

Thêm hai tài khoản hệ thống Linux

sudo useradd -m -s /bin/bash sigiri
sudo useradd -m -s /bin/bash kala

Đặt mật khẩu cho những người dùng trên.

sudo passwd sigiri
sudo passwd kala
sudo vi /etc/postfix/virtual

Thêm đoạn mã sau:

info@fossedu.org sigiri
info@linuxelabs.com kala

Để tạo loại Cơ sở dữ liệu bản đồ:

sudo postmap / etc / postfix / virtual

postmap là chương trình tiện ích sẽ chuyển đổi / etc / postfix / virtual thành /etc/postfix/virtual.db ở định dạng Berkley DB, để Postfix có thể truy cập dữ liệu nhanh hơn.

Khởi động lại Postfix để thay đổi có hiệu lực:

sudo /etc/init.d/postfix restart

Gửi thư đến cả info@fossedu.org và info@linuxelabs.com và những thư đó sẽ đến hộp thư của sigiri và kala tương ứng.

Xem Thêm: https://help.ubuntu.com/community/PostfixBasicSetupHowto