当前位置: 首页 > 软件库 > 管理和监控 > 安全相关 >

Exchange_proxy

Exchange安全代理
授权协议 GPLv3
开发语言 Google Go
所属分类 管理和监控、 安全相关
软件类型 开源软件
地区 国产
投 递 者 白志勇
操作系统 Windows
开源组织 小米
适用人群 未知
 软件概览

Exchange_proxy是由go语言开发的Exchange安全代理,可以将内网的Exchange服务器的https服务安全地发布出去, 支持的功能如下:

  • WEB端增加OTP二次认证
  • 手机端增加设备激活绑定的功能
  • 屏蔽了PC端的EWS协议

在使用该系统前,需要确保有以下基础设施的接口,并完成与代理的对接:

  • OTP动态口令系统
  • 短信发送接口
  • 通过员工姓名查询员工手机号的接口

以上接口准备并对接完成后,正确配置conf/app.ini即可启动代理服务器了。

[mail]
hosts = mail.xiaomi.com,mail.sec.lu
backend = https://10.10.10.10
port = 443
ssl = true
cert = certs/ca.crt
key = certs/ca.key
; debug level: Fatal, Error, Warn, Info, Debug
debug_level = info

[redis]
host = 10.10.10.20
port = 6379
db = 0
password = redis_passw0rd

[otp]
url = https://otp_api_url/chk_otp

[sms]
url = http://sms_api_url/api/send_sms
header = X-SMS-Token
key = token

[user_info]
user_phone = http://hr_api_url/findMobile
active_url = https://mail.sec.lu/a/

配置文件说明:

  • mail节下的配置项是配置邮箱服务器本身的

    • hosts表示邮箱域名,支持配置多个用英文逗号分割的域名
    • backend表示邮箱服务器地址
    • ssl表示是否启用https,必须设为true
    • cert和key分别表示证书的公、私钥,与nginx的证书完全兼容
    • debug_level表示日志级别,默认为info级别
  • redis节表示redis服务器的配置

  • otp节为动态口令检测API的URL

  • sms节表示短信接口的API

  • user_info节下的user_phone表示查找手机的接口,active_url表示手机中激活连接的URL

设置好配置文件后,可通过./main直接启动代理服务器,如下图所示: 

WEB通过外网访问WEB端时,要求必须输入正确的OTP口令才可以登录,如下图所示: 

通过手机端访问时,只有通过短信中的提示激活后,方可收发邮件,如下图所示:

  • 收到激活短信 

  • 激活确认页面

  • 激活成功页面 

正式上线之前,最好提供相应的管理后台并与内网的管理系统对接,邮件代理管理后台提供以下功能:

  • 管理员可查看、修改每个用户的账户与设备状态
  • 管理员可查看每个设备的激活进程,方便故障排查
  • 用户也可自行管理自己的设备

设备数据保存在redis中,用go/python/php等语言都可以实现,我就不单独提供了。

代理系统的进程可以托管在supervisor或god中,部署了该系统后,可以解决邮件服务器手机端与WEB端的安全,目前的开源版本没有电脑端的安全代理功能,建议在PC端收发邮件时拨入VPN,或者在电脑中用BlueMail客户端收发邮件。

  • Proxy 这个词的原意是代理,可以理解成,在目标对象之前架设一层“拦截”,外界对该目标对象的访问,都必须先通过这层拦截,因此提供了一种机制,可以对外界的访问进行过滤和改写。 let proxy = new Proxy(target,handler); Proxy对象由两个部分组成:target、handler target:目标对象 handler:是一个对象,声明了代理target的指定行为,

  • in my Lab,the net is Education Research net, I need to use a proxy for getting access to foreign country site. and sometimes the proxy of our school is not work well,but I still have a good friend's p

  •     Ext.data.proxy.Ajax代理是一个在应用程序中使用最为广泛的服务端代理,采用Ajax方式通过请求指定的URL来读写数据,但是不能跨域读取数据,如果需要读取跨域数据可以使用Ext.data.proxy.JsonP代理。 Ext.onReady(function () { //创建数据模型 Ext.regModel("Person", { file

  • exchange 描述 (Description) 它原子地替换原子对象的值并获得先前保存的值。 声明 (Declaration) 以下是std :: atomic :: exchange的声明。T exchange( T desired, std::memory_order order = std::memory_order_seq_cst ); C++11T exchange( T desir

  • Warning: the information on this page is not "official". In September 2018, Intel IT published their official page at https://wiki.ith.intel.com/display/proxy/Proxy+Users+Guide+Home WPAD automatic con

  • Putty.exe -D 1080 URL Login Go to Firefox Tools -> Options -> Advanced -> Network -> Setting -> Manual proxy configuration SOCKS Host = www.example.com ; Port = 1080  

  • Proxy 代理 Proxy 用于修改某些操作的默认行为,等同于在语言层面做出修改,所以属于一种“元编程”,即对编程语言进行编程。 讲通俗一点就是扩展(增强)了对象,方法(函数)的一些功能 ES6 原生提供 Proxy 构造函数,用来生成 Proxy 实例。 Proxy其实是设计模式的一种,代理模式 1. 语法使用 直接通过操作代理对象来操作原对象 new Proxy(target,handle)

  • Proxy 对象用于定义基本操作的自定义行为(如属性查找、赋值、枚举、函数调用等)。说白了就是对目标进行代理! 操作语法: // 创建代理,指定代理对象和代理对象操作对象 let py1 = new Proxy(target, handler) 参数:target 要使用 Proxy 包装的目标对象(可以是任何类型的对象,包括原生数组,函数,甚至另一个代理)。 handler 一个通常以函数作为属

  • @GetMapping("/putByText") @ApiOperation(value = "远程更新资源", position = 1, httpMethod = "GET", response = Result.class) public Result putByText(@ApiParam(value = "text参数", name = "text") @RequestParam(na

 相关资料
  • 问题内容: 除了迷惑之外,还有其他方法可以防止罐子被其他人打开吗?问题是我不希望任何人访问代码,这就是为什么我不喜欢Java。从我使用的反编译器来看,用C#和Java编写的程序具有完好无损的功能,就像变量名一样,这使得访问非免费程序变得容易。更糟糕的是,给出源代码。 问题答案: 上面的评论涵盖了大多数这些要点,但是我将在这里对其进行扩展: 如果您的代码在用户的计算机上运行,​​则用户可以反编译您的

  • Rust 主要魅力是它强大的静态行为保障。不过安全检查天性保守:有些程序实际上是安全的,不过编译器不能验证它是否是真的。为了写这种类型的程序,我们需要告诉编译器稍微放松它的限制。为此,Rust 有一个关键字,unsafe。使用unsafe的代码比正常代码有更少的限制。 让我们过一遍语法,接着我们讨论语义。unsafe用在两个上下文中。第一个标记一个函数为不安全的: unsafe fn danger

  • 第一章 SonarQube简介 1.1 SonarQube介绍 Sonar 是一个用于代码质量管理的开源平台,用于管理源代码的质量 通过插件形式,可以支持包括 java,C#,C/C++,PL/SQL,Cobol,JavaScrip,Groovy,HTML,Python,PHP,XML等等二十几种编程语言的代码质量管理与检测 Sonar可以从以下七个维度检测代码质量 不遵循代码标准 sonar可以

  • 当C#被unsafe修饰符标记时,C#允许在代码块的函数中使用指针变量。 unsafe code或非托管代码是使用pointer变量的代码块。 Note - 要在codingground执行本章中提到的程序,请在Project 》》 Compile Options 》》 Compilation Command设置编译选项。 mcs *.cs -out:main.exe -unsafe" Point

  • 当代码段被 unsafe 修饰符标记时,C# 允许该代码段中的函数使用指针变量,故使用了指针变量的代码块又被称为不安全代码或非托管代码。 注意: 若要在 codingground 中执行本章的程序,请将 Project >> Compile Options >> Compilation Command to 中的编辑项设置为 mcs *.cs -out:main.exe -unsafe” 指针 指

  • 问题内容: 在javadoc中,ConcurrentHashMap如下: 检索操作(包括get)通常不会阻塞,因此可能与更新操作(包括put和remove)重叠。检索反映了自启动以来最新完成的更新操作的结果。对于诸如putAll和clear的聚合操作,并发检索可能仅反映某些条目的插入或删除。同样,迭代器和枚举返回的元素反映了在创建迭代器/枚举时或此后某个时刻哈希表的状态。他们不抛出Concurre

  • 我在Azure Service Bus中使用代理消息传递(主题/订阅),我很好奇如何(或者是否)使用SSL保护通信。

  • 安全在Web应用开发中是一项至关重要的话题,Django提供了多种保护手段和机制: