Cấu hình Postfix để gửi email với Gmail và Google Apps trên Ubuntu/Debian

Postfix là chương trình mã nguồn mở và miễn phí (free and open-source) dùng để gửi thư điện tử (Mail Transfer Agent – MTA) được tạo ra ban đầu tại IBM với mục tiêu là thay thế chương trình gửi mail phổ biến là Sendmail.Đặc điểm của Postfix: dễ quản lý, nhanh, an toàn. Chỉ cần một server với phần cứng thông thường, Postfix có thể chuyển giao hàng triệu email một ngày (bechmark).

Một trong những ưu điểm chính của việc kết hợp Postfix với Gmail và Google Apps là việc tận dụng được bộ lọc spam cực kỳ hiệu quả do Google xây dựng, đã được kiểm chứng qua hàng tỷ email. Bên cạnh đó, bạn cũng không phải lo email gửi đi bị đánh dấu spam vì IP của server vô tình bị đưa vào blacklist.

Yêu cầu

  • Một server/VPS cài đặt Ubuntu hoặc Debian, phiên bản Ubuntu >16.04 hoặc Debian >8
  • Hệ thống đã được cập nhật đầy đủ bằng sudo apt-get update && sudo apt-get upgrade
  • Một user với quyền sudo

Cài đặt Postfix

Trước hết, bạn cần cài đặt Postfix và thư viện libsasl2 – gói quản lý SASL (Simple Authentication and Security Layer).

Cài đặt Postfix và gói libsasl2-modules bằng lệnh:

sudo apt-get install libsasl2-modules postfix

Trong quá trình cài đặt Postfix, một thông báo sẽ hiện lên hỏi bạn về General type of mail configuration (Tạm dịch : loại cấu hình mail), hãy chọn Internet Site như dưới đây :

Cấu hình postfix - bước 1

Tiếp theo, Postfix sẽ yêu cầu bạn nhập FQDN của domain (dạng [hostname].[domain].[tld] như dưới đây)

Cấu hình postfix - bước 2

Khi quá trình cài đặt đã hoàn tất, hãy kiểm tra lại nội dung của file /etc/postfix/main.cf xem có chứa tên bạn đã nhập vào hay không như sau :

cat /etc/postfix/main.cf

/etc/postfix/main.cf

myhostname = fqdn.example.com

Tạo ra một mật khẩu dành riêng cho Postfix trên Gmail

Khi tài khoản của bạn được thiết lập bảo mật hai lớp 2FA (Two-Factor Authentication), Gmail sẽ từ chối tất cả các kết nối không được bảo vệ bởi một loại mật khẩu thứ hai, gọi là App Password. Để có thể gửi mail từ Postfix, bạn cần phải tạo cho nó một App Password riêng bằng cách sau đây.

Đầu tiên, đăng nhập vào email, sau đó click vào link sau : Quản lý tài khoản và bảo mật. Kéo xuống đến phần “Password & sign-in method” và bấm vào 2-Step Verification. Ở bước này, hãy chọn bảo mật 2 lớp nếu như nó chưa được bật.

Tiếp theo, click vào link sau : Tạo App Password cho ứng dụng để tới trang quản lý App Password.

Cấu hình app password cho gmail

Chọn Select app và chọn tiếp Other (custom name) từ menu sổ xuống. Gõ “Postfix” và click vào Generate.

App Password sẽ được sinh ra tự động và xuất hiện ở ô màu vàng như hình dưới. Hãy lưu mật khẩu này vào một nơi an toàn hoặc ghi lại để phục vụ bước tiếp theo.

Gmail app password đã được sinh tự động

Cấu hình Postfix với tài khoản của bạn.

Username và mật khẩu được quản lý trong tập tin sasl_passwd trong thư mục /etc/postfix/sasl/. Trong phần này, bạn cần làm 2 bước đơn giản để Postfix có thể quản lý thêm tài khoản của bạn :

  1. Mở /etc/postfix/sasl/sasl_passwd bằng nano và điền vào các thông tin : SMTP Host, username, password như sau:
    sudo nano /etc/postfix/sasl/sasl_passwd
    

    /etc/postfix/sasl/sasl_passwd

    ...
    [smtp.gmail.com]:587 [email protected]:password
    ...
    

Sau đó lưu file này lại bằng Ctrl+O, thoát ra bằng Ctrl+X.

Tạo file hash db cho Postfix bằng cách chạy lệnh postmap:

sudo postmap /etc/postfix/sasl/sasl_passwd

Nếu thành công, bạn sẽ thấy xuất hiện một file mới mang tên sasl_passwd.db trong thư mục /etc/postfix/sasl/.

Bảo mật cho các file quan trọng của Postfix

/etc/postfix/sasl/sasl_passwd/etc/postfix/sasl/sasl_passwd.db là hai tập tin tối quan trọng của Postfix, trong đó chứa những thông tin có thể dùng để đăng nhập vào tài khoản của bạn. Nếu để lộ hai tập tin này, kẻ xấu có thể sử dụng email của bạn để gửi bất kỳ thứ gì mà họ muốn.

Để bảo vệ những tập tin kể trên, bạn cần chmod lại chúng để chỉ có root mới có thể đọc hoặc ghi chúng. Hãy chạy lần lượt các lệnh sau :

sudo chown root:root /etc/postfix/sasl/sasl_passwd /etc/postfix/sasl/sasl_passwd.db
sudo chmod 0600 /etc/postfix/sasl/sasl_passwd /etc/postfix/sasl/sasl_passwd.db

Cấu hình Postfix Relay Server

Postfix cần được cấu hình để có thể kết nối đến SMTP server của Google như sau:

Bạn mở file /etc/postfix/main.cf để tiến hành chỉnh sửa

sudo nano /etc/postfix/main.cf

Sửa lại phần relayhost trong /etc/postfix/main.cf thành:

relayhost = [smtp.gmail.com]:587

Ở cuối file, thêm vào đoạn mã sau :

# Bật SASL
smtp_sasl_auth_enable = yes
# Tắt đăng nhập ẩn danh
smtp_sasl_security_options = noanonymous
# Địa chỉ file sasl_passwd
smtp_sasl_password_maps = hash:/etc/postfix/sasl/sasl_passwd
# Bật STARTTLS encryption
smtp_tls_security_level = encrypt
# Địa chỉ của chứng chỉ bảo mật
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt

Lưu file này lại bằng Ctrl+O, thoát ra bằng Ctrl+X, khởi động lại Postfix để các thay đổi có hiệu lực :

sudo systemctl restart postfix

Khắc phục lỗi bằng cách mở “Less secure apps”

Trong một số trường hợp, Gmail vẫn có thể chặn kết nối của Postfix vì cho rằng nó là ứng dụng kém bảo mật (“Less secure apps”). Bạn phải làm thêm bước sau để mở kết nối cho tài khoản:

Truy cập vào Mở “Less secure apps”, sau đó chọn Turn on. Một thông báo màu vàng sẽ xuất hiện và bạn sẽ nhân được mail xác nhân cho việc “thả cửa” này.
Mở less secure apps cho gmail

Bây giờ hãy kiểm tra lại Postfix xem đã gửi được mail hay chưa. Nếu vẫn chưa nhận và gửi được mail, bạn cần kiểm tra lại log, rất có thể đã có những lỗi khác liên quan đến hệ thống của bạn.

Để lại comment