NỘI DUNG
I. Mail Relay là gì?
Email Relay được định nghĩa theo từng ý như sau:
- Email là thư điện tử.
- Relay là chuyển tiếp.
Hoặc dễ hiểu hơn thì Email Relay là dịch vụ chuyển tiếp email. Email Relay còn gọi là SMTP Relay, là dịch vụ cho phép người khác dùng chương trình email kiên kết. Bạn có thể dùng Email Server của bạn để gửi email (người này có thể không có tài khoản mail trong mail server của bạn)
II. Đăng ký và thiết lập Mail Relay
Hiện có rất nhiều đơn vị cung cấp Mail Relay uy tín, và trong bài viết này mình chọn smtp2go để đăng ký dịch vụ mail relay miễn phí. Trong gói miễn phí này hỗ trợ:
- 5 domain
- 1.000 mail/ngày
Và để đăng ký bạn có thể truy cập vào trang chủ của smtp2go, sau đó tạo tài khoản và sử dụng.
Khi tài khoản đã được kích hoạt sử dụng bạn chọn Settings => Sender Domains => Add Domain => Nhập vào domain và chọn Continue with this domain
Sau đó thực hiện các bước theo hướng dẫn của smtp2go.
III. Cấu hình Email Relay trên WHM/cPanel
Bước 1: Mở cấu hình Exim
Bạn truy cập Home WHM => Service Configuration => Exim Configuration Manager => Advanced Editor
Bước 2: Cấu hình thông số Relay
Tìm nhập thông tin trong mục Section: AUTH. Và thực hiện thay
- UserRelay: User đã tạo dùng để relay
- PasswdRelay: Mật khẩu của User
mail_login:
driver = plaintext
public_name = LOGIN
client_send = :UserRelay:PasswdRelay
Tìm nhập thông tin trong mục Section: POSTMAILCOUNT hoặc Section: ROUTERSTART (Lưu ý không cấu hình cả 2).
- Section: POSTMAILCOUNT
remoteserver_route:
driver = manualroute
transport = mail_smtp
domains = !+local_domains
route_list = * mail.smtp2go.com::587 randomize byname
Tìm nhập thông tin trong mục Section: TRANSPORTSTART
mail_smtp:
driver = smtp
hosts_require_auth = *
tls_tempfail_tryclear = true
headers_add = X-AuthUser: ${if match {$authenticated_id}{.*@.*}\
{$authenticated_id} {${if match {$authenticated_id}{.+}\
{$authenticated_id@$primary_hostname}{$authenticated_id}}}}
Sau khi add đầy đủ các thông tin các bạn Save lại nội dung cập nhật, nếu máy chủ Exim reset thành công là các bạn đã cấu hình xong Email Relay và có thể kiểm tra lại gửi nhận email qua hệ thống Relay.
Bước 3: Kiểm tra mail gửi ra
Bây giờ sẽ thực hiện gửi mail để kiểm tra xem thử đã hoạt động hay chưa. Bằng cách soạn một mail và gửi ra ngoài Gmail thử. Kết quả là mail đã gửi được vào inbox.
Bây giờ bạn hãy check header bằng cách nhấn vào dấu 3 chấm và chọn Hiển thị thư gốc.
Bạn tìm đến dòng Received sẽ thấy máy chủ đi qua Relay. Như vậy đã hoàn tất bước cấu hình.
Bươc 4: Cấu hình Exim nâng cao (Không bắt buộc)
- Cấu hình danh sách gửi thư X-Header
Nếu bạn đã thiết lập danh sách gửi thư trong môi trường cPanel của mình, bạn cần bật X-MC-MailingList headers để cho phép hệ thống xác định tài khoản gửi.
Các bạn chỉnh sửa file exim.conf
trong /etc/exim.conf
, thêm dòng sau vào phần mailman_virtual_transport là được.
headers_add = "X-MC-MailingList: $original_local_part@$original_domain\n"
Cấu hình cho một email tên miền hoặc một người dùng cụ thể được gửi thư qua hệ thống Relay
- Cấu hình cho phép một tên miền
senders = *@mydomain.com
- Cấu hình cho phép một người dùng
senders = user@mydoamin.com
- Chặn một tên miền, không cho phép gửi mail qua hệ thống Relay
Thêm dòng sau vào cấu hình mục Section: ROUTERSTART
senders = !*@mydomain1.com : !*@mydomain2.com
Cấu hình
send_via_mail:
driver = manualroute
domains = ! +local_domains
senders = !*@mydomain1.com : !*@mydomain2.com
transport = mail_smtp
route_list = "* mail.smtp2go.com::587 byname"
host_find_failed = defer
no_more
- Cấu hình chặn gửi thư đến một số tên miền nhất định.
Thêm cấu hình vào mục Section: ROUTERSTART
domains = ! receivingdomain.com: +local_domains
Cấu hình
send_via_mail:
driver = manualroute
domains = ! recevingdomain.com : ! +local_domains
senders = !*@mydomain1.com : !*@mydomain2.com
transport = mail_smtp
route_list = "* mail.smtp2go.com::25 byname"
host_find_failed = defer
no_more
Bước 5: Tối ưu hoá Exim
- Thay đổi khoảng thời gian thử lại.
Under section: RETRYSTART
* data_4xx F,4h,1m
* rcpt_4xx F,4h,1m
* timeout F,4h,1m
* refused F,1h,5m
* lost_connection F,1h,1m
* * F,6h,5m
- Xóa bỏ thư rác trong hàng đợi theo chu kỳ.
Chỉnh sửa file /etc/crontab
và thêm cấu hình xóa Exim retry trong ngày.
25 5 * * * root /usr/sbin/exim_tidydb -t 1d /var/spool/exim retry
35 5 * * * root /usr/sbin/exim_tidydb -t 1d /var/spool/exim wait-remote_smtp
- Cấu hình hàng đợi Exim
Thay đổi số lượng User chạy trong hàng đợi. Chỉnh sửa file /etc/default/exim
hoặc cập nhật /etc/sysconfig/exim
giá trị
QUEUE= 60s
Thay đổi số lượng User tối đa tồn tại đồng thời trong hàng đợi trong /etc/exim.conf
queue_run_max = 50
- Khởi động lại Exim
Service exim restart
- Set “timeout_frozen_after” to 12 hours
Type: time
Default: 0s
Nếu timeout_frozen_ after được đặt thành thời gian lớn hơn 0, thì thông báo cố định của bất kỳ mô tả nào đã ở trên hàng đợi lâu hơn thời gian nhất định sẽ tự động bị hủy ở lần chạy hàng tiếp theo. Nếu đó là một tin nhắn bị trả lại, nó chỉ bị loại bỏ; nếu không, một thư bị trả lại sẽ được gửi đến người gửi, theo cách tương tự như việc hủy bằng tùy chọn dòng lệnh -Mg.
- Set “ignore_bounce_errors_after” parameter to 1 hour
Lựa chọn này ảnh hưởng đến việc xử lý các thư trả lại không thể gửi được, tức là những thư lỗi bị lỗi gửi vĩnh viễn và sẽ gửi lại theo cách thông thường.