Cách cài đặt và cấu hình Postfix làm server SMTP chỉ gửi trên Ubuntu 18.04
Postfix là một đại lý chuyển thư (MTA), một ứng dụng được sử dụng để gửi và nhận email. Nó có thể được cấu hình để chỉ được dùng để gửi email bằng ứng dụng local . Điều này hữu ích trong các tình huống khi bạn cần thường xuyên gửi thông báo qua email từ ứng dụng của bạn hoặc đơn giản là có nhiều lưu lượng gửi đi mà nhà cung cấp dịch vụ email bên thứ ba sẽ không cho phép. Nó cũng là một giải pháp thay thế nhẹ hơn để chạy một server SMTP toàn diện, trong khi vẫn giữ được chức năng cần thiết.Trong hướng dẫn này, bạn sẽ cài đặt và cấu hình Postfix làm server SMTP chỉ gửi. Bạn cũng sẽ certificate request TLS miễn phí từ Let's Encrypt cho domain của bạn và mã hóa các email gửi đi bằng chúng.
Yêu cầu
- Một server Ubuntu 18.04 được cài đặt với Cài đặt server ban đầu với Ubuntu 18.04 , bao gồm cả việc tạo user không phải root có quyền sudo .
- Tên domain đã đăng ký đầy đủ. Hướng dẫn này sẽ sử dụng
your_domain
xuyên suốt. Bạn có thể mua domain trên Namecheap , nhận một domain miễn phí trên Freenom hoặc sử dụng công ty đăng ký domain mà bạn chọn. - Một bản ghi DNS với
your_domain
trỏ đến địa chỉ IP công cộng của server của bạn. Bạn có thể theo dõi phần giới thiệu này về DigitalOcean DNS để biết chi tiết về cách thêm chúng.
Lưu ý: Tên server của server và tên của Server phải trùng với your_domain
, vì DigitalOcean tự động đặt các bản ghi PTR cho địa chỉ IP của Server theo tên của nó.
Bạn có thể xác minh tên server của server bằng lệnh hostname
tại dấu nhắc lệnh. Đầu ra phải trùng với tên bạn đã đặt cho Server khi nó được tạo.
Bước 1 - Cài đặt Postfix
Trong bước này, bạn sẽ cài đặt Postfix. Cách nhanh nhất là cài đặt gói mailutils
, gói Postfix với một vài chương trình bổ sung mà bạn sẽ sử dụng để kiểm tra việc gửi email.
Đầu tiên, hãy cập nhật database gói:
- sudo apt update
Sau đó, cài đặt Postfix bằng cách chạy lệnh sau:
- sudo apt install mailutils
Gần cuối quá trình cài đặt, bạn sẽ thấy cửa sổ cấu hình Postfix:
Tùy chọn mặc định là Internet Site
. Đó là tùy chọn được đề xuất cho trường hợp sử dụng của bạn, vì vậy hãy nhấn TAB
, sau đó nhấn ENTER
. Nếu bạn chỉ thấy văn bản mô tả, hãy nhấn TAB
để chọn OK
, sau đó ENTER
.
Nếu nó không tự động hiển thị, hãy chạy lệnh sau để khởi động nó:
- sudo dpkg-reconfigure postfix
Sau đó, bạn sẽ nhận được một dấu nhắc cấu hình khác liên quan đến tên Thư hệ thống :
Tên thư hệ thống phải giống với tên bạn đã gán cho server của bạn khi tạo. Khi bạn hoàn thành, nhấn TAB
, sau đó nhấn ENTER
.
Đến đây bạn đã cài đặt Postfix và sẵn sàng bắt đầu cấu hình nó.
Bước 2 - Cấu hình Postfix
Trong bước này, bạn sẽ cấu hình Postfix chỉ gửi và nhận email từ server mà nó đang chạy — tức là từ localhost
.
Để điều đó xảy ra, Postfix cần được cấu hình để chỉ lắng nghe trên giao diện loopback , network interface ảo mà server sử dụng để giao tiếp nội bộ. Để áp dụng các thay đổi , bạn cần chỉnh sửa file cấu hình Postfix chính có tên là main.cf
, được lưu trữ trong etc/postfix
.
Mở nó để chỉnh sửa bằng editor yêu thích của bạn:
- sudo nano /etc/postfix/main.cf
Tìm các dòng sau:
. . . mailbox_size_limit = 0 recipient_delimiter = + inet_interfaces = all . . .
Đặt giá trị của cài đặt inet_interfaces
thành chỉ loopback-only
:
. . . mailbox_size_limit = 0 recipient_delimiter = + inet_interfaces = loopback-only . . .
Một chỉ thị khác mà bạn cần sửa đổi là mydestination
, được sử dụng để chỉ định danh sách các domain được phân phối qua phương tiện vận chuyển gửi thư local_transport
. Theo mặc định, các giá trị tương tự như sau:
. . . mydestination = $myhostname, your_domain, localhost.com, , localhost . . .
Thay đổi dòng trông như thế này:
. . . mydestination = localhost.$mydomain, localhost, $myhostname . . .
Nếu domain của bạn thực sự là một domain phụ và bạn muốn các email trông như thể chúng được gửi từ domain chính, bạn có thể thêm dòng sau vào cuối main.cf
:
... masquerade_domains = your_main_domain
Cài đặt masquerade_domains
tùy chọn chỉ định domain phụ sẽ bị loại bỏ phần domain phụ trong địa chỉ email.
Khi bạn hoàn tất, hãy lưu file .
Lưu ý: Nếu bạn đang lưu trữ nhiều domain trên một server , các domain khác cũng có thể được chuyển tới Postfix bằng cách sử dụng chỉ thị mydestination
.
Sau đó, khởi động lại Postfix bằng cách chạy lệnh sau:
- sudo systemctl restart postfix
Bạn đã cấu hình Postfix để chỉ gửi email từ server của bạn . Đến đây bạn sẽ kiểm tra nó bằng cách gửi một tin nhắn mẫu đến một địa chỉ email.
Bước 3 - Kiểm tra Server SMTP
Trong bước này, bạn sẽ kiểm tra xem Postfix có thể gửi email đến account email bên ngoài hay không bằng lệnh mail
, là một phần của gói mailutils
mà bạn đã cài đặt ở bước đầu tiên.
Để gửi email thử nghiệm, hãy chạy lệnh sau:
- echo "This is the body of the email" | mail -s "This is the subject line" your_email_address
Bạn có thể thay đổi nội dung và chủ đề của email theo ý thích của bạn . Hãy nhớ thay your_email_address
bằng một địa chỉ email hợp lệ mà bạn có thể truy cập.
Bây giờ, hãy kiểm tra địa chỉ email mà bạn đã gửi tin nhắn này. Bạn sẽ thấy tin nhắn trong hộp thư đến của bạn . Nếu nó không có ở đó, hãy kiểm tra folder spam của bạn. Đến đây, tất cả các email bạn gửi đều không được mã hóa, điều này khiến các nhà cung cấp dịch vụ nghĩ rằng đó có thể là thư rác. Bạn sẽ cài đặt mã hóa sau, ở bước 5.
Nếu bạn nhận được lỗi từ lệnh mail
hoặc bạn không nhận được thư sau một khoảng thời gian dài, hãy kiểm tra xem cấu hình Postfix bạn đã chỉnh sửa có hợp lệ không và tên server và tên server của bạn đã được đặt thành domain của bạn chưa.
Lưu ý với cấu hình này, địa chỉ trong trường From
cho các email thử nghiệm bạn gửi sẽ ở dạng your_user_name @ your_domain
, trong đó your_user_name
là tên user của user server mà bạn đã chạy lệnh.
Đến đây bạn đã gửi một email từ server của bạn và xác minh nó đã được nhận thành công. Trong bước tiếp theo, bạn sẽ cài đặt chuyển tiếp email cho root
.
Bước 4 - Hệ thống chuyển tiếp thư
Trong bước này, bạn sẽ cài đặt chuyển tiếp email cho user root
, để các thư do hệ thống tạo được gửi đến nó trên server của bạn sẽ được chuyển tiếp đến một địa chỉ email bên ngoài.
Tệp /etc/aliases
chứa danh sách các tên thay thế cho người nhận email. Mở nó để chỉnh sửa:
- sudo nano /etc/aliases
Ở trạng thái mặc định, nó trông như thế này:
# See man 5 aliases for format postmaster: root
Chỉ thị duy nhất hiện tại chỉ định rằng các email do hệ thống tạo sẽ được gửi tới root
.
Thêm dòng sau vào cuối file :
... root: your_email_address
Với dòng này, bạn chỉ định rằng các email được gửi tới root
sẽ được chuyển tiếp đến một địa chỉ email. Hãy nhớ thay your_email_address
bằng địa chỉ email cá nhân của bạn. Khi bạn hoàn tất, hãy lưu file .
Để thay đổi có hiệu lực, hãy chạy lệnh sau:
- sudo newaliases
Chạy newaliases
sẽ xây dựng database các alias mà lệnh mail
sử dụng, các alias này được lấy từ file cấu hình bạn vừa chỉnh sửa.
Kiểm tra xem việc gửi email tới root
hoạt động không bằng lệnh:
- echo "This is the body of the email" | mail -s "This is the subject line" root
Bạn sẽ nhận được email tại địa chỉ email của bạn. Nếu nó không có ở đó, hãy kiểm tra folder spam của bạn.
Trong bước này, bạn đã cài đặt chuyển tiếp các thư do hệ thống tạo đến địa chỉ email của bạn . Bây giờ, bạn sẽ bật mã hóa thư để tất cả các email mà server của bạn gửi đi đều không bị giả mạo khi chuyển tiếp và sẽ được coi là hợp lệ hơn.
Bước 5 - Bật mã hóa SMTP
Đến đây bạn sẽ bật mã hóa SMTP bằng cách certificate request TLS miễn phí từ Let's Encrypt cho domain của bạn (sử dụng Certbot) và cấu hình Postfix để sử dụng nó khi gửi tin nhắn.
Ubuntu bao gồm Certbot trong repository mặc định của họ, nhưng có thể xảy ra trường hợp nó đã lỗi thời. Thay vào đó, bạn sẽ thêm repository chính thức bằng cách chạy lệnh sau:
- sudo add-apt-repository ppa:certbot/certbot
Nhấn ENTER
khi được yêu cầu chấp nhận. Sau đó, cập nhật cache ẩn trình quản lý gói của server của bạn:
- sudo apt update
Cuối cùng, cài đặt version mới nhất của Certbot:
- sudo apt install certbot -y
Là một phần của cài đặt server ban đầu trong yêu cầu , bạn đã cài đặt ufw
, firewall không phức tạp. Bạn cần phải cấu hình nó để cho phép cổng HTTP 80
, để có thể hoàn tất quá trình xác minh domain . Chạy lệnh sau để kích hoạt nó:
- sudo ufw allow 80
Đầu ra sẽ như thế này:
OutputRule added Rule added (v6)
Bây giờ cổng đã mở, hãy chạy Certbot để nhận certificate :
- sudo certbot certonly --standalone --rsa-key-size 4096 --agree-tos --preferred-challenges http -d your_domain
Lệnh này ra lệnh cho Certbot cấp certificate với kích thước khóa RSA là 4096 bit, để chạy một web server độc lập tạm thời ( --standalone
) để xác minh và kiểm tra qua cổng 80
( --preferred-challenges http
). Hãy nhớ thay your_domain
bằng domain của bạn trước khi chạy lệnh và nhập địa chỉ email của bạn khi được yêu cầu .
Đầu ra sẽ tương tự như sau:
OutputSaving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator standalone, Installer None Obtaining a new certificate Performing the following challenges: http-01 challenge for `your_domain` Waiting for verification... Cleaning up challenges IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/your_domain/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/your_domain/privkey.pem Your cert will expire on 2020-07-11. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew *all* of your certificates, run "certbot renew" - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
Như đã viết trong ghi chú, certificate và file private key của bạn đã được lưu trong /etc/letsencrypt/live/ your_domain
.
Đến đây bạn đã có certificate của bạn , hãy mở main.cf
để chỉnh sửa:
- sudo nano /etc/postfix/main.cf
Tìm phần sau:
# TLS parameters smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key smtpd_use_tls=yes smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
Sửa đổi nó để trông giống như thế này, thay thế your_domain
bằng domain của bạn nếu cần, điều này sẽ cập nhật cài đặt TLS của bạn cho Postfix:
# TLS parameters smtpd_tls_cert_file=/etc/letsencrypt/live/your_domain/fullchain.pem smtpd_tls_key_file=/etc/letsencrypt/live/your_domain/privkey.pem smtp_use_tls=yes smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
Sau khi hoàn tất, hãy lưu file .
Áp dụng các thay đổi bằng cách khởi động lại Postfix:
- sudo systemctl restart postfix
Bây giờ, hãy thử gửi lại một email:
- echo "This is the body of an encrypted email" | mail -s "This is the subject line" your_email_address
Sau đó, kiểm tra địa chỉ email bạn đã cung cấp. Có thể bạn sẽ thấy thư trong hộp thư đến của bạn ngay lập tức, vì các nhà cung cấp dịch vụ email có nhiều khả năng đánh dấu thư không được mã hóa là thư rác.
Bạn có thể kiểm tra thông tin kỹ thuật về thư email trong ứng dụng client của bạn để xem thư đó có thực sự được mã hóa hay không.
Kết luận
Đến đây bạn có một server email chỉ gửi, được cung cấp bởi Postfix. Mã hóa tất cả các thư đi là một bước đầu tiên tốt để các nhà cung cấp dịch vụ email không đánh dấu thư của bạn là spam hoàn toàn. Nếu bạn đang làm điều này trong một kịch bản phát triển, thì biện pháp này là đủ.
Tuy nhiên, nếu trường hợp sử dụng của bạn là gửi email cho user trang web tiềm năng (chẳng hạn như email xác nhận đăng ký bảng tin), bạn nên xem xét việc cài đặt bản ghi SPF , để email của server của bạn thậm chí có nhiều khả năng bị xem là hợp lệ .
Các tin liên quan
Cách thiết lập Nền tảng Cloud IDE server mã trên CentOS 72020-06-12
Cách thiết lập Nền tảng Cloud IDE server mã trên Debian 10
2020-06-11
Sử dụng Grep & Biểu thức chính quy để tìm kiếm các mẫu văn bản trong Linux
2020-06-05
Cách sử dụng ngôn ngữ AWK để thao tác văn bản trong Linux
2020-05-26
Cách thiết lập Nền tảng Cloud IDE server mã trên Ubuntu 20.04
2020-05-20
Khái niệm cơ bản về việc sử dụng Sed Stream Editor để thao tác văn bản trong Linux
2020-05-19
Sedan trung gian: Thao tác các dòng văn bản trong môi trường Linux
2020-05-19
Cách cài đặt Linux, Nginx, MySQL, PHP ( LEMP) trên Ubuntu 20.04 [Quickstart]
2020-05-14
Cách thiết lập Nền tảng Cloud IDE server mã trên Ubuntu 18.04
2020-05-13
Cách tạo server Minecraft trên Ubuntu 18.04
2020-05-07