由于群晖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的中继功能,不过这就是另一个故事了。
One thought on “[DSM]群晖骚操作-MailPlus+HAPROXY实现邮箱服务器映射”