安装iredmail之后,由于需要在路由器上做端口映射以便在外网访问webmail,因此端口不能和WEB服务的端口好冲突,所以需要修改邮件服务器的httpd服务的端口。
一、apache/httpd的http服务和https服务端口号都要修改。
基本服务端口好办,iredmail默认安装下,修改/etc/httpd/conf/httpd.conf中的Listen一行即可,这里我改为8090
#Listen
Listen
可是,roundcube的webmail服务都是使用的https服务,我们都知道https的默认端口是443,这个在哪里修改呢?后来找到这篇文章修改apache http/https 端口号,却发现我的/etc/httpd/conf目录下没extra子目录,更别提那个httpd-ssl.conf!我估计可能版本不同,经过一番搜索,找到/etc/conf.d/ssl.conf,估计就是他了,这里修改443为8093。
#Listen
Listen
.
.
.
##
## SSL Virtual Host Context
## #<VirtualHost _default_:443> <VirtualHost _default_:8093>
修改保存后,重新启动httpd服务
[root@mail2 ~]# service httpd restart
二、添加iptables防火墙规则,开放新的端口号
这个没啥可说的,新建两条规则,开放新修改的端口,注意保存就行。
[root@mail2 ~]# iptables -A INPUT -p tcp -m tcp --dport -j ACCEPT
[root@mail2 ~]# iptables -A INPUT -p tcp -m tcp --dport -j ACCEPT
[root@mail2 ~]# service iptables save
三、修改roundcube的配置文件和小bug
此时如果直接用https端口去访问webmail已经可以了,但是如果使用http方式访问,然后由roundcube实现https强制跳转,则roundcube形成的还是默认的https端口地址形式,所以访问失败。比如,我现在的http地址为
http://192.168.5.26:8090/mail
则roundcube自动跳转为
https://192.168.5.26/mail
此时需要修改roundcube的配置文件,在我的版本中为/var/www/roundcubemail/config/config.inc.php(新版本是这个文件,而不是网上所说的旧版文件main.inc.php)
$config['force_https'] = true;
将上面这行修改为:
$config['force_https'] = ;
另外,还要修改index.php中的一个小bug(可能是,我用chrome浏览时报错说本页有循环跳转代码)
代开/var/www/roundcubemail/index.php文件,找到下面这行
// check if https is required (for login) and redirect if necessary
if (empty($_SESSION['user_id']) && ($force_https = $RCMAIL->config->get('force_https', false))) {
修改为下面这行(就是加了一个判断,当前地址是否处于https模式)
// check if https is required (for login) and redirect if necessary
if ($_SERVER["HTTPS"]<>"on" && empty($_SESSION['user_id']) && ($force_https = $RCMAIL->config->get('force_https', false))) {
四、没有第四,打完收工:)
最后,别忘了重起一下服务
[root@mail2 roundcubemail]# apachectl restart