Install postfix với sendgrid làm relay mail server

Spread the love

Bài tuts này sẽ hướng dẫn các bạn cácg gửi mail bằng sendgrid + postfix

Prerequisite:
* Bạn cần phải có account của sendgrid

Cài đặt Postfix

sudo yum remove sendmail
sudo yum remove sendmail
sudo yum install postfix
sudo alternatives --set mta /usr/sbin/sendmail.postfix

Cài đặt postfix configuration (main.cf)

# Có cho phép sử dụng SASL Authentication hay không
smtp_sasl_auth_enable = yes
# Cho phép gửi mail nặc danh hay không
smtp_sasl_security_options = noanonymous
# Setting TLS
smtp_tls_security_level = may            
# Settings relay cho từng email domain (ở một file riêng biệt)
transport_maps = hash:/etc/postfix/transport
# Thông tin authenticate smtp cho từng domain
smtp_sasl_password_maps = hash:/etc/postfix/relay_password

Cài đặt domain mail mà sẽ dùng relay

Có thể chúng ta muốn email gửi đến 1 số địa chỉ thì dùng relay số khác thì không chẳng hạn. Ta có thể settings như bên dưới

/etc/postfix/transport

gmail.com                  smtp:[smtp.sendgrid.net]:587
*                       :

Như settings như trên thì mình đang muốn nếu gửi mail tới xxx@gmail.com thì sẽ sử dụng relay, còn không thì không sử dụng sendgrid làm relay

Cài đặt authentication cho sendgrid

1. Get API key từ sendgrid

Đầu tiên các bạn cần API key từ sendgrid (Lưu ý: API Key chỉ hiển thị 1 lần, bạn cần lưu vào chỗ nào an toàn nếu không sẽ phải tốn công gen lại)
* Access địa chỉ SendGrid
* Chọn Create API key ở góc trên bên phải
* Thiết lập Api key name và Permissions cho API Key này
* Chọn Create & View

Thiết lập API key cho sendgrid ở server

Tạo một file có ở thư mục /etc/postfix/relay_password
Trong đó thiết lập như bên dưới

[smtp.sendgrid.net]:587 :

Hash file settings

Chúng ta cần hash 2 file relay_passwordtransport như bên dưới

$ sudo postmap /etc/postfix/transport
$ sudo postmap /etc/postfix/relay_password

Khởi động lại Postfix

$ sudo postfix stop
$ sudo postfix start

Trouble Shootings

Có một process khác đang listen port 25:

Thường lỗi này xảy ra do sendmail còn tồn tại lại trong hệ thống. Chúng ta có thể kill process bằng câu lệnh bên dưới

sudo killall sendmail-mta
sudo killall sendmail

Xác nhận rằng đã gửi được mail

echo "Hello sendgrid" | mail -s "Hello sendgrid" -aFrom:from@example.com 

Các bạn có thể check trong /etc/mail/maillog để xác nhận là mail đã được gửi .

Leave a Reply

Your email address will not be published. Required fields are marked *