群辉NAS之mailstation的升级操作(使用docker升级到最新roundcube-webmail)

@TOC最近使用群辉7.2做企业内部的电子邮件服务器,其他都挺好,到了电话本这里,需要安装globaladdressbook,这个插件,而且也需要用到composer去安装。倒是可以装上,可不起用。后来发现是mail station所使用的roundcube,版本太低,已经无法兼容插件。以下是的群辉7.0平台部署前后端电子邮件的过程:
步骤:

  1. 自然安装好docker,mail server mail station,并且做一些简单测试,如打开smtp iimap pop3,fqnm指定域名。,mailstation 用超级用户登录,默认host,localhost,不用变,然后在ssh中,
sudo docker run -e ROUNDCUBEMAIL_DEFAULT_HOST=mail -e ROUNDCUBEMAIL_SMTP_SERVER=mail -p 8000:80 -d roundcube/roundcubemail

https://hub.docker.com/r/roundcubeorg/roundcubemail

  1. 这样运行会有一个random erorr报错,卡死,原因是appach服务器不支持naslinux内核。所以带标签建立docker,去除apach。标签使用 -d roundcube/roundcubemail:latest-fpm-alpine
    这是我使用的版本,因为只有fpm php的解释器。所以

  2. docker exec -it containIDfirechar bash 修复nginx环境,apk add nginx。 在/etc/nginx/config类似目录修改配置,加入php的9000的解析代理,并指定/var/www/html 这个工作目录。php配置代码按端口来应该是9000.也可用sock文件,我不会,基本复制了nas里面nginx配置的信息。vi /etc/hosts加入邮件服务器的解析。邮件服务器ip和域名。需要/endpoint.sh里加入nginx

  3. DSM 打开docker面板,停止本容器,打开编辑,高级设置,在环境变量中修改使用的端口,SMTP,25.server和host用/etc/hosts指向上条中hosts的名字。只要这三个参数

  4. 这时就能打开映射过来的端口,登录一下新版的邮件系统了。用nas的用户也就就mai server所使用的local验证,到此没有差错就能用户间收发邮件了。

  5. 让mailstation指向新服务 http://ip/mail 里的默认页面写成跳转到新端口,ssh 登录NAS vi /var/@appstore/mailstation/index.php, 改成写成location(http://ip:port) ,原网页备份,无此需要跳过。

  6. 安装丰富的插件,docker exec -it containIDfirechar bash 然后composer require --no-dev pluginname开心的使用吧。
    注意事项:

  1. mailstation用管理员登录后有高级设置菜单可以改变mail server的地址,直接输入localhost,或者IP也行。端口默认的就能用。Docker中有需要修改config.ini.php,或者环境变量的地方。这个docker可以异地运行,毕竟只是webemail,一个前端。.
    只是在docker下端口好像只能是25,别的不行,在容器里没有高级用户设置的功能,只能靠config文件,而且保险起见用了域名,因为电子邮件毕竟需要一个后缀。而hosts正好可以在本机下起作用了。 所以mail server FQCN这里,设定成那个域名。

简单记录我接下来的操作:
… 第一个加入password插件,这是一个自带插件,可以在setting里修改密码,从config.ini.php启用它。然后修改插件的配置文件,指定使用的driver,我用了httpapi。这里指定一个url,一个user,一个password。就能完成修改密码的操作了。的nas的后台,用任何一个web前端加入一个网址,接受这两个参数,然后调用sudo指令 sudo synouser --setpasswd user password、正常返回0, status 200、其他为非正常。 我用的python。感觉php更适合。毕竟mailstation本身就带一个运行环境,稍微修改就行。 在password的README中有使用sudo 不输入密码的说明,大概就的/etc/sudoer 中加入php或自己的web运行者,然后指定nopass 和synouser。
. … 第二个是电话本 composer require,globaladressbook,安装,config.ini.php. $config[‘plgins’]中加入globaladdressbook、可以加一个全局电话本,配置中group=true。可以使用分组。在导入中选择选项有一个selecter,选加入新分组。导入格式csv,列中有name,mail,group。这三个可以自动对应新user。这样一个带分组功能的电话本就有了。
这个电话本可以无限多个,取不同的名字和权限相录于加入了一级分组,也就够用了了方法是confg[‘globaladdressbooks’][‘global_n’=[仿照第一全局本的写法],这个方法比carddav,ldap 都来来的快速简单。下面还有我的简单扩展方法,和后台取动维护可登陆人员名单。
. . 第三 启用ldap遇到困难,电话本的分组是两级的,只能分组用户,不能再分,于是打起了ldap的主意。目前还没成功。 的群辉安装ladp server套件。进行简单的(恶心)配置,可以无缝集成到群辉中,DSM控制面板-域/ldap,设置base-dn:dc=NAME, link-dn:uuid=root,cn=users,dc=name。密码就是主页输入的密码。这就能加入了。我测试发现ldap server里的群组是可以嵌套的,然而,
roundcube 里有个ldap addressbook 功能,并不能取出里面的分组,虽然它说支持,但是很久以前的消息了,缺乏一个现成的办法。 而使用ldap client经过相似的操作可以,取得用户数据。
这个ldap,是一个分级的系统,所以需要好好定义一下它的节点信息,比如,对群晖来说群组在 cn=groups,dn=name,用户在cn=users,dn=name。(name是一个域名相似在系统,如三组域名就有三个dn,应该是directory node。的意思。cn可能是某个树干在名字。ou是一个组织的意思)通过使用LAM7.2这个工具,可以方便的管理和浏览本ldap在具体信息。

猜你喜欢

转载自blog.csdn.net/wjcroom/article/details/131448946