主题: 关于限制一部分人只能在一个网段使用邮件的收发

我这里现在碰到一个问题,就是我现在要限制一部分人只能在公司的局域网内使用邮件服务功能,不能在家里使用公司的邮件服务器。
我在网上找到的都是控制整个邮件域的使用网段,不能控制部分人在指定的网段内使用。

回复: 关于限制一部分人只能在一个网段使用邮件的收发

这样的情况似乎用 iptables 和 iRedAPD 都不好控制,试试 Dovecot 的 Post Login 功能。
参考:
http://www.iredmail.org/forum/topic379- … tocol.html
http://wiki.dovecot.org/PostLoginScripting

简单描述实现流程:
*) 配置好 Post Login 脚本,测试并确认它能正常工作。
*) 修改 Post Login 脚本,对用户名及网段进行检测。如果不符合条件,就拒绝执行后续的操作。这个在上面给出的 Dovecot 官网链接里有示例。

如果不需要保存最后登陆时间,可以删除原来的 Post Login 脚本里保存最后登陆时间相关的代码。

不足之处:它只控制了 POP3/IMAP,没有控制 SMTP 和 WEBMAIL。

回复: 关于限制一部分人只能在一个网段使用邮件的收发

谢谢斑竹,我试试看。

控制了imap,WEBMAIL就不能登陆了。

回复: 关于限制一部分人只能在一个网段使用邮件的收发

zyf76123 写道:

控制了imap,WEBMAIL就不能登陆了。

如果 Webmail 和 Dovecot 是运行在同一台服务器上,那么 Dovecot 看到的统一都是 127.0.0.1 这个地址。

回复: 关于限制一部分人只能在一个网段使用邮件的收发

修改完dovcot.conf文件后,重启出现错误
Starting Dovecot Imap: Error: imap dump-capability process returned 2
Fatal: Invalid configuration in /etc/dovecot.conf

这个是dovcot.conf中的设置。
# IMAP configuration
protocol imap {
    mail_plugins = quota imap_quota autocreate

    mail_drop_priv_before_exec = yes
#     mail_executable = /usr/bin/login-intranet-imap.sh imap
     mail_executable = /usr/bin/login-intranet-imap.sh
    imap_client_workarounds = tb-extra-mailbox-sep

    # number of connections per-user per-IP
    #mail_max_userip_connections = 10
}

# POP3 configuration
protocol pop3 {
    mail_plugins = quota
    pop3_uidl_format = %08Xu%08Xv
    pop3_client_workarounds = outlook-no-nuls oe-ns-eoh

    mail_drop_priv_before_exec = yes
#     mail_executable = /usr/bin/login-intranet-pop3.sh pop3
     mail_executable = /usr/bin/login-intranet-pop3.sh

    # number of connections per-user per-IP
    #mail_max_userip_connections = 10
}

Post's attachments

login-intranet-imap.sh.1.txt 5.3 kb, file has never been downloaded. 

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

回复: 关于限制一部分人只能在一个网段使用邮件的收发

检查一下dovecot的日志文件,看看具体错误是什么。
如果日志里没有信息,将修改前和修改后的配置文件进行对比,逐一排查。

回复: 关于限制一部分人只能在一个网段使用邮件的收发

日志里面没有错误信息。
我只要加上这两行,就报错。
mail_drop_priv_before_exec = yes
mail_executable = /usr/bin/login-intranet-imap.sh
不知道是什么问题?