主题: 能否禁止某些用户使用webmail?

==== 必填信息。没有填写将不予回复 ====
- iRedMail 版本号:0.8.1(dovecot 2.0.18-1)
- 使用哪个数据库存储用户帐号(OpenLDAP,MySQL,PostgreSQL):mysql
- 使用的 Linux/BSD 发行版名称及版本号:CentOS 6.0 x64
- 与您的问题相关的日志信息:
====

突然想到能否禁止某些用户通过浏览器登录邮件服务器的web界面,只允许他们在outlook/foxmail之类的客户端上收发邮件?
这样做是不是可以减少webmail上出现“连接到邮件服务器失败”的次数?

回复: 能否禁止某些用户使用webmail?

暂时无法这样限制。
Roundcube 是通过标准的 IMAP 协议做用户验证及邮箱操作,从 IMAP 服务器端无法分辨一个连接到底来自 webmail 还是 outlook。

回复: 能否禁止某些用户使用webmail?

谢谢老大。
我在公司里outlook/foxmail全部设置成pop3/smtp,也就是说连接imap的,只有webmail,在这种情况下是否能做限制?

回复: 能否禁止某些用户使用webmail?

这样的情况是可以的,只要将 MySQL 表 "vmail.mailbox" 里的你希望禁用 IMAP 的用户的两个字段设置为 0 即可。例如:

mysql> USE vmail;
mysql> UPDATE mailbox SET enableimap=0,enableimapsecured=0 WHERE username='user@domain.ltd';

注:如果你购买了 iRedAdmin-Pro,可以直接在用户属性页面的 "Advanced" 标签先去掉该服务的勾选框。截图供参考:

http://www.iredmail.com/images/iredadmin/user_profile_advanced.png

5 最后由 asimplesong (2014-06-28 16:10:56) 编辑

回复: 能否禁止某些用户使用webmail?

sailer.shen 写道:

==== 必填信息。没有填写将不予回复 ====
- iRedMail 版本号:0.8.1(dovecot 2.0.18-1)
- 使用哪个数据库存储用户帐号(OpenLDAP,MySQL,PostgreSQL):mysql
- 使用的 Linux/BSD 发行版名称及版本号:CentOS 6.0 x64
- 与您的问题相关的日志信息:
====

突然想到能否禁止某些用户通过浏览器登录邮件服务器的web界面,只允许他们在outlook/foxmail之类的客户端上收发邮件?
这样做是不是可以减少webmail上出现“连接到邮件服务器失败”的次数?


sailer.shen ,如你的问题,我这边也有考虑过,并且现在已经实现:1公司内网可以允许任何人登入webmail;2.在公网时,只有授权的账户才可以登入webmail。
具体如下:(roundcube 0.9.2)
1.在roundcube/program/include/rcmail.php 文件的登入验证时添加多一个查询Mysql条件:先搜索到

if ($cookiecheck && empty($_COOKIE)) {

在这行之前(注意是这行之前!)添加如下:
    //以下是自己添加的=====================================================
    include "login_check.php";
    include "remote_ip.php";
    $remote_ip = get_remote_ip();
    //$remote_ip = "127.0.0.1";    //测试时手动指定的remort_ip,正式用时要去掉
    if ("Unknown" == $remote_ip)
        {
            echo "Cannot get remote ip...";
            return false;
        }
        else
        {
            if (!check_user_login($username, $remote_ip))
            {
                echo "login reject...";
                return false;
            }
        }
    //以上是自己添加的=====================================================

2.将附件中两个解压的文件:login_check.php、remote_ip.php 一同复制到roundcube/program/include 中。
3.在Mysql数据库 vmail 的mailbox表增加一个字段 auth_flag ,默认值为 0
4.在Mysql数据库vmail 增加一张表 special_ips ,可以使用如下sql:
create table special_ips(
    id int(10) not null primary key auto_increment,
    interval_start_ip  int unsigned  ,
    interval_end_ip    int unsigned
    )

5.在vmail数据库 special_ips 表中插入自己内网(或者允许的IP地址)IP地址,使用如下sql:
insert into special_ips(interval_start_ip,interval_end_ip) value(inet_aton('192.168.1.0'),inet_aton('192.168.1.255'));

昨晚如上后重启httpd服务即可。

说明:
即在roundcube登入条件时增加一个验证客户端IP地址和是否授权webmail登入的条件,
当获取的客户端IP地址属于内部地址或者授权的公网地址时返回true,即可允许登入webmail;
当获取的客户端IP地址不属于内部地址或授权的公网IP地址时,检查vmail 上的mailbox表 auth_flag 是否授权登入(值为 1 表示授权登入用户, 0 表示非授权)。
如此即可限制用户是否可以登入webmail。
当把自己内部IP段放入special_ips时,用户在内部网络使用时,可以不检查是否是授权用户而可以直接登入。
如不把任何IP地址放入special_ips时,都会检查用户的auth_flag 值,判断是否为授权登入用户。
注意:remote_ip.php文件为获取访问webmail时的客户端IP地址(出口IP地址)。
          login_check.php文件为判断是否授权IP和授权用户,请检查次文件的30行和70行中所注释你的数据库账户密码。

Post's attachments

login_check.rar 1016 b, 10 downloads since 2014-06-28 

remote_ip.rar 314 b, 7 downloads since 2014-06-28 

You don't have the permssions to download the attachments of this post.

回复: 能否禁止某些用户使用webmail?

非常好的方法。
谢谢AsimpleSong!!!

asimplesong 写道:
sailer.shen 写道:

==== 必填信息。没有填写将不予回复 ====
- iRedMail 版本号:0.8.1(dovecot 2.0.18-1)
- 使用哪个数据库存储用户帐号(OpenLDAP,MySQL,PostgreSQL):mysql
- 使用的 Linux/BSD 发行版名称及版本号:CentOS 6.0 x64
- 与您的问题相关的日志信息:
====

突然想到能否禁止某些用户通过浏览器登录邮件服务器的web界面,只允许他们在outlook/foxmail之类的客户端上收发邮件?
这样做是不是可以减少webmail上出现“连接到邮件服务器失败”的次数?


sailer.shen ,如你的问题,我这边也有考虑过,并且现在已经实现:1公司内网可以允许任何人登入webmail;2.在公网时,只有授权的账户才可以登入webmail。
具体如下:(roundcube 0.9.2)
1.在roundcube/program/include/rcmail.php 文件的登入验证时添加多一个查询Mysql条件:先搜索到

if ($cookiecheck && empty($_COOKIE)) {

在这行之前(注意是这行之前!)添加如下:
    //以下是自己添加的=====================================================
    include "login_check.php";
    include "remote_ip.php";
    $remote_ip = get_remote_ip();
    //$remote_ip = "127.0.0.1";    //测试时手动指定的remort_ip,正式用时要去掉
    if ("Unknown" == $remote_ip)
        {
            echo "Cannot get remote ip...";
            return false;
        }
        else
        {
            if (!check_user_login($username, $remote_ip))
            {
                echo "login reject...";
                return false;
            }
        }
    //以上是自己添加的=====================================================

2.将附件中两个解压的文件:login_check.php、remote_ip.php 一同复制到roundcube/program/include 中。
3.在Mysql数据库 vmail 的mailbox表增加一个字段 auth_flag ,默认值为 0
4.在Mysql数据库vmail 增加一张表 special_ips ,可以使用如下sql:
create table special_ips(
    id int(10) not null primary key auto_increment,
    interval_start_ip  int unsigned  ,
    interval_end_ip    int unsigned
    )

5.在vmail数据库 special_ips 表中插入自己内网(或者允许的IP地址)IP地址,使用如下sql:
insert into special_ips(interval_start_ip,interval_end_ip) value(inet_aton('192.168.1.0'),inet_aton('192.168.1.255'));

昨晚如上后重启httpd服务即可。

说明:
即在roundcube登入条件时增加一个验证客户端IP地址和是否授权webmail登入的条件,
当获取的客户端IP地址属于内部地址或者授权的公网地址时返回true,即可允许登入webmail;
当获取的客户端IP地址不属于内部地址或授权的公网IP地址时,检查vmail 上的mailbox表 auth_flag 是否授权登入(值为 1 表示授权登入用户, 0 表示非授权)。
如此即可限制用户是否可以登入webmail。
当把自己内部IP段放入special_ips时,用户在内部网络使用时,可以不检查是否是授权用户而可以直接登入。
如不把任何IP地址放入special_ips时,都会检查用户的auth_flag 值,判断是否为授权登入用户。
注意:remote_ip.php文件为获取访问webmail时的客户端IP地址(出口IP地址)。
          login_check.php文件为判断是否授权IP和授权用户,请检查次文件的30行和70行中所注释你的数据库账户密码。