[DSM]群晖骚操作-MailPlus+HAPROXY实现邮箱服务器映射

由于群晖DSM系统没有出云端/虚拟化版,所以大部分DSM并不在机房,多数形况下,这种网络的好多端口一般都是用不了、或者是不合规的,白白浪费DSM好多功能。但是可以通过反代的方式,将DSM上的服务映射到合适的网络上去,实现外网访问DSM服务。

尤其是对于Mail Server或者Mail Plus Server,25端口多数都被禁用,而且邮件服务器由于其特性,多数情况下只能使用默认端口,绕不开网络的限制。所以本篇内容主要介绍骚操作实现把DSM6.2上的MailPlus给映射到合适的公网上去。让邮件服务原地满血复活。

HAProxy篇

主要是设置SMTP服务的代理,注意要发送代理信息(send-proxy)保证后端能知道是谁连进来的,Mail Plus中DSM主要用到了25,465,587三个端口,具体他们做什么用的,可以百度或者啃RFC,这里就不多讲了。

frontend ft_smtp
      bind [::]:25
      bind 0.0.0.0:25
      mode tcp
      timeout client 1m
      log global
      option tcplog
      default_backend bk_smtp

backend bk_smtp
      mode tcp
      log global
      option tcplog
      timeout server 1m
      timeout connect 7s
      server postfix [DSM-IP]:1025 send-proxy

frontend ft_smtp_s
      bind [::]:465
      bind 0.0.0.0:465
      mode tcp
      timeout client 1m
      log global
      option tcplog
      default_backend bk_smtp_s

backend bk_smtp_s
      mode tcp
      log global
      option tcplog
      timeout server 1m
      timeout connect 7s
      server postfix [DSM-IP]:1465 send-proxy

frontend ft_smtp_t
      bind [::]:587
      bind 0.0.0.0:587
      mode tcp
      timeout client 1m
      log global
      option tcplog
      default_backend bk_smtp_t

backend bk_smtp_t
      mode tcp
      log global
      option tcplog
      timeout server 1m
      timeout connect 7s
      server postfix [DSM-IP]:1587 send-proxy

也许你可能会问,为什么转发的是 1025,1465,1587?这里有个坑,后面再讲

DSM篇

开启SSH,SSH登录DSM,sudo -i使用root权限

vi打开/var/packages/MailPlus-Server/target/etc/template/master.template在末尾加入如下内容

1025 inet n - n - 1 postscreen
 -o postscreen_upstream_proxy_protocol=haproxy
1465 inet n - n - - smtpd
 -o smtpd_tls_wrappermode=yes
 -o smtpd_sasl_auth_enable=yes
 -o smtpd_client_restrictions=permit_sasl_authenticated,reject
 -o cleanup_service_name=auth-cleanup
 -o smtpd_upstream_proxy_protocol=haproxy
1587 inet n - n - - smtpd
 -o smtpd_tls_security_level=encrypt
 -o smtpd_sasl_auth_enable=yes
 -o smtpd_client_restrictions=permit_sasl_authenticated,reject
 -o cleanup_service_name=auth-cleanup
 -o smtpd_upstream_proxy_protocol=haproxy

端口号请根据上面的配置和自身需要酌情修改。

PS:为什么要这样写呢?因为MailPlus启动之后会在模板文件下追加一些启动参数,其中包括25、465、587的配置,没办法修改,所以只能让Postfix组件再监听其他端口,在那上面做文章。上述配置就是抄的原有追加配置加上了接受HAProxy数据的启动参数。

PS:这样做还有一个好处就是不影响DSM自身的功能,如果修改了25、465、587的配置,可能影响到MailPlus和APP的发信功能,让Postfix同时监听原有端口和新增端口两者互不影响。

重启MailPlus Server即可使修改生效,可以用netstat工具看一下是否已经监听。

Last But Not Least

最后给服务器发个邮件验证一下,康康是不是成了。

你说发送怎么办?请使用SMTP中继服务器和Mail Plus的中继功能,不过这就是另一个故事了。

 

[DSM]群晖骚操作-MailPlus+HAPROXY实现邮箱服务器映射

One thought on “[DSM]群晖骚操作-MailPlus+HAPROXY实现邮箱服务器映射

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

Scroll to top