Hướng dẫn cấu hình Cpanel Exim gửi mail với các smarthost khác nhau

  • Saturday 16/11/2024

Để định tuyến gửi mail trên mỗi tài khoản cpanel (per domain) thông qua các server trung gian (smarthost) hay còn gọi lại relay mail, chúng ta cần thêm 1 số code xử lý vào cấu hình của Exim trên Cpanel. Trong bài này PA Việt Nam sẽ hướng dẫn các bạn cấu hình gửi mail thông qua smarthost theo 2 cách: Xác thực dựa trên user của server smarthost và xác thực dựa trên IP gửi.

Cấu hình Cpanel Exim xác thực dựa trên user của server smarthost

Login vào Cpanel => Exim Configuration Manager => Chọn Advanced Editor

cpanel_smarthost_01

 

Tìm đến mục : “Section: AUTH” , copy đoạn code bên dưới vào :

#Section: AUTH
#Smart Host Sending
sendbysmarthosts:
driver = plaintext
public_name = LOGIN
hide client_send = : ${extract{user}{${lookup{$sender_address_domain}lsearch{/etc/exim_smarthosts}}}}: ${extract{pass}{${lookup{$sender_address_domain}lsearch{/etc/exim_smarthosts}}}}

 

cpanel_smarthost_02

Lưu ý sau khi dán code vào cần kiểm tra lại 1 lần nữa trên cpanel phải có tick xanh xác nhận code đúng thì mới làm các bước tiếp theo, nếu không có tick xanh thì cần kiểm tra lại code xem copy có bị thiếu phần nào không ?

Tiếp tục tìm đến mục : “Section: PREROUTERS” , copy đoạn code này vào:

#Section: PREROUTERS
#Smart Host Sending
sendbysmarthostsrouter:
driver = manualroute
domains = ! +local_domains
condition =  "${if eq{${lookup{$sender_address_domain}partial-lsearch{/etc/exim_smarthosts}{$value}}}{}{false}{true}}"
ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
headers_add = "${perl{mailtrapheaders}}"
transport = sendbysmarthoststransport
route_list = * ${extract{smtp}{${lookup{$sender_address_domain}lsearch{/etc/exim_smarthosts}}}}

 

Kế tiếp vào mục: “Section: TRANSPORTSTART” , copy đoạn code bên dưới:

#Section: TRANSPORTSTART
#Smart Host Sending
sendbysmarthoststransport:
driver = smtp
port = ${extract{port}{${lookup{$sender_address_domain}lsearch{/etc/exim_smarthosts}}}}
hosts_require_auth = $host_address
hosts_require_tls = $host_address

 

Kéo xuống dưới cùng trên trang cấu hình của Cpanel Exim, nhấn vào nút Save để lưu lại cấu hình.

cpanel_smarthost_03

 

Sau đó chúng ta sẽ remote vào server mail, tạo file “/etc/exim_smarthosts” với nội dung như sau:

# sending by sendgrid
domain1.com: domain=domain1.com user=SENDGRID_smtp_user pass=SENDGRID_api_password smtp=smtp.sendgrid.net port=587
domain2.com: domain=domain2.com user=SENDGRID_smtp_user pass=SENDGRID_api_password smtp=smtp.sendgrid.net port=587

# sending by Mailjet
domain3.com: domain=domain3.com user=MAILJET_smtp_user pass=MAILJET_api_password smtp=in-v3.mailjet.com port=587
domain4.com: domain=domain4.com user=MAILJET_smtp_user pass=MAILJET_api_password smtp=in-v3.mailjet.com port=587

 

Với ví dụ trong file exim_smarthosts này thì 4 domain bên trên sẽ gửi mail ra đối tác thông qua server smarthost của sendgrid , mailjet, các domain còn lại trên server sẽ tiếp tục gửi mail trực tiếp bằng chính IP server mail.

Cấu hình Cpanel Exim xác thực dựa trên IP gửi:

Trong trường hợp chúng ta muốn gửi mail qua smarthost chứng thực bằng chính IP server gửi , không chứng thực bằng User thì sẽ thay đổi cấu hình trong Cpanel => Exim Configuration Manager lại như sau:

Phần “Section: AUTH” Do chứng thực bằng IP nên chúng ta cho xóa hết thông số, để trống phần này.

Phần “Section: PREROUTERS” , chúng ta dùng đoạn code bên dưới:

# Smart Host Sending based on IP authentication
sendbysmarthostsrouter:
driver = manualroute
domains = ! +local_domains
condition = "${if eq{${lookup{$sender_address_domain}partial-lsearch{/etc/exim_smarthosts}{$value}}}{}{false}{true}}"
ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
headers_add = "${perl{mailtrapheaders}}"
transport = sendbysmarthoststransport
route_list = * ${extract{smtp}{${lookup{$sender_address_domain}lsearch{/etc/exim_smarthosts}}}}::${extract{port}{${lookup{$sender_address_domain}lsearch{/etc/exim_smarthosts}}}}

 

Phần Section: TRANSPORTSTART , sẽ cấu hình với code sau:

# Smart Host Sending with DKIM Signing and TLS, authenticated by IP
sendbysmarthoststransport:
driver = smtp
# hosts_require_tls = *
dkim_domain = ${extract{domain}{${lookup{$sender_address_domain}lsearch{/etc/exim_smarthosts}}}}
dkim_selector = default
dkim_canon = relaxed
dkim_private_key = "/var/cpanel/domain_keys/private/${dkim_domain}"

 

Trong file /etc/exim_smarthosts lúc này sẽ khai báo lại như sau:

domain1.com: domain=domain1.com smtp=x.x.x.x port=25
domain2.com: domain=domain2.com smtp=y.y.y.y port=25

với x.x.x.x và y.y.y.y là các IP của server smarthost.

 

PS: Phần code xử lý bên trên được test trên phiên bản Exim 4.97 hoạt động tốt, các phiên bản Exim khác có thể bị lượt bỏ hoặc thay thế bằng các tham số xử lý khác, các bạn tham khảo thêm tài liệu các phiên bản của Exim ở link này để điều chỉnh lại code.

=================================

Xem thêm nhiều kiến thức về dịch vụ Email Server tại đây:

P.A Việt Nam cung cấp giải pháp Email Server dành cho Doanh Nghiệp
Email Server Pro
Email Server Riêng

Tham khảo các ưu đãi: https://www.pavietnam.vn/vn/tin-khuyen-mai/

 

Rate this post