Mail server đàng sau Nginx reverse proxy

Giả sử chúng ta có mail server mail.domain.com (eg. iRedMail) trên RPi tại 192.168.1.222, đã mở port 25, 993, 587 về IP này. Chúng ta muốn mail server chạy độc lập với các web server khác tại cùng public IP.

Cách đơn giản nhất là giữ nguyên cài đặt của mail server, sửa một chút trên webserver Nginx và NAT port trên router.

Giả sử có webserver Nginx trên RPi tại 192.168.1.111, sửa file /etc/nginx/nginx.conf bằng cách thêm vào các dòng sau

mail {
  server_name mail.domain.com;
  auth_http   192.168.1.222:9000/cgi-bin/nginxauth.cgi;
  proxy_pass_error_message on;
  include /etc/nginx/ssl.conf;
}

Như vậy webserver tại 192.168.1.111 lo phần chứng thực mail user, bằng cách chuyển thông tin user/password về mailserver tại 192.168.1.222. Dịch vụ IMAP và SMTP trên mailserver làm việc trực tiếp với client.

Mailserver có webmail (eg. Roundcube) nên webserver cũng sẽ chuyển thông tin về cho Roundcube trên mailserver

server {
  listen      443 ssl;
  server_name mail.domain.com;
  include     ssl.conf;
  location / {
    proxy_pass https://mail.domain.com:8443;
  }
}

Cấu hình NAT như như sau:

  • mail.domain.com trỏ về public IP của RPi
  • 443 –> 192.168.1.111:443 #webserver
  • 8443 –> 192.168.1.222:443 #mailserver

Ngoài ra không động chạm gì đến mailserver tại 192.168.1.222

Comments Off on Mail server đàng sau Nginx reverse proxy

Filed under Software

Comments are closed.