zimbra_intercepting_proxy 0.0.4.2 → 0.0.4.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c43322897f826dfb60b13d7f600624311debaa4e
4
- data.tar.gz: 52c6130238ffb9f4d7ab0be5a8381f8ac6238ed5
3
+ metadata.gz: 83d9620bd1aa1ec6ac96f2aa64db725be374daae
4
+ data.tar.gz: 7071c9856422b7ab43172b76c156a4c69ba38f9e
5
5
  SHA512:
6
- metadata.gz: 92ddfc17968639cc7a521e909df6519da27792647441c987571425f22013541348cb6284a103349fb344191d73176b2b0a2687f7a843a08aa06ae711aee58bc9
7
- data.tar.gz: 85976c28eed04ae7b12e105638c7d2d5e44bde9e162467cf5058d4e34800c4925c42bd755134b97565df4fa3fce2ed91a961da309b65cdd8457afaa28443fd21
6
+ metadata.gz: b2fce49c23f5a8a3886e390093e56ff6d3dc7e9ad169c75d2d6204975b2d3af39c83d489d8cc7db60826bb5ae6a991f546bc23cf340fa03d5b44e40d69b3c36b
7
+ data.tar.gz: 63722a2fecf679f020c42afd7c63ee02988993627a38c8c223921c10f7c874c6a96e2cdc46ef36d0fd3440fd5149ef9612b707abf19ad3f8c55782d5336688c2
data/README.md CHANGED
@@ -1,47 +1,148 @@
1
- # ZimbraInterceptingProxy
1
+ # Zimbra Intercepting Proxy
2
2
 
3
- This software is used to Intercept and Transform the traffic to and from the Zimbra Mailboxes when using a Zimbra Proxy.
4
- If you don't know what Zimbra Proxy is, You can read about it here: [https://wiki.zimbra.com/wiki/Zimbra_Proxy_Guide](https://wiki.zimbra.com/wiki/Zimbra_Proxy_Guide)
3
+ This software is used to intercept and apply modifications to the traffic between a Zimbra Proxy and Zimbra Mailboxes.
4
+ If you don't know what a Zimbra Proxy is, You can read about it here: [https://wiki.zimbra.com/wiki/Zimbra_Proxy_Guide](https://wiki.zimbra.com/wiki/Zimbra_Proxy_Guide)
5
5
 
6
- ## What is good for?
6
+ This work for all kind of client access:
7
+
8
+ * POP3
9
+ * IMAP
10
+ * Webmail
11
+ * ActiveSync
12
+ * Zimbra Outlook Connector
13
+
14
+ ## What this try to solve?
7
15
 
8
16
  ### Zimbra Migrations
9
- Suppose you
17
+ Suppose you need to move a lot of users and data from one Zimbra Platform to another, like we do at [ZBox](http://www.zboxapp.com), and given the size of the migration, you can't move all the mailboxes at once, so you have to do it in groups.
18
+
19
+ This procedure have the following inconvenients:
20
+
21
+ * You have to update the configuration of the clients for all the migrated users,
22
+ * Your users will need to learn a new Webmail URL,
23
+ * It's not transparent for the end user,
24
+ * It's a lot of work for you
25
+
26
+ ### Network and OpenSource Deployments
27
+ Not a hot topic for Zimbra Inc., sorry guys, but lets be honest about it, some companies can't afford Zimbra Network for all the employees, so they use two setup platform.
28
+
29
+ The main problem with this is that you have to configure your clients with to kind of information.
30
+
31
+ ### How Zimbra Intercepting Proxy Works
32
+ Zimbra Intercepting Proxy reads a map file, a `YAML` file, in which you indicate the pair `username:zimbraID` of the users located on the _other_ Mailbox.
33
+
34
+ Based on this information, `ZIP` tell the Zimbra Proxy to which Mailbox it should communicate with.
35
+
36
+ ## Instalation and configuration
37
+
38
+ ### Requirements
39
+ This has been tested with:
40
+
41
+ * Zimbra >= 7
42
+ * Ruby >= 2.0
43
+ * Zimbra Proxy
44
+
45
+ **You need to have direct access to the `7072` port of both Mailboxes**.
46
+
47
+ ### Installation
48
+ It's recommended to install it on the same Zimbra Proxy server. All you need to do is run:
49
+
50
+ ```bash
51
+ $ gem install zimbra_intercepting_proxy
52
+ ```
53
+
54
+ ### Zimbra Proxy Modification
55
+
56
+ **Important Note**
57
+ You are going to modify Zimbra template files, used to build the configuration files of Nginx. **Take some backups!!**
58
+
59
+ * All the files are located in `/opt/zimbra/conf/nginx/templates`.
60
+ * `<`, config being replaced
61
+ * `>`, new config
62
+
63
+ You have to make this modifications
64
+
65
+ ```diff
66
+ # nginx.conf.mail.template
67
+ 19c19,20
68
+ < ${mail.:auth_http}
69
+ ---
70
+ >
71
+ > auth_http localhost:9072/service/extension/nginx-lookup;
72
+ ```
73
+
74
+ ```diff
75
+ # nginx.conf.web.template
76
+ 17c17
77
+ < #${web.upstream.:servers}
78
+ ---
79
+ > server localhost:9080;
80
+ 23c23
81
+ < #${web.:routehandlers}
82
+ ---
83
+ > zmroutehandlers localhost:9072/service/extension/nginx-lookup;
84
+ ```
85
+
86
+ Next restart. You should restart memcached and nginx, but just to be sure:
87
+
88
+ ```bash
89
+ $ zmcontrol restart
90
+ ```
91
+
92
+ ### Starting Zimbra Intercepting Proxy
93
+
94
+ You have to start 2 instances of `ZIP`:
95
+
96
+ * One on port `9080` for Web and SOAP Auth Requests, and
97
+ * One on port `9072` for `Route-Handler`, this is how the Proxy knows to which Mailbox redirect the traffic.
10
98
 
11
- ## TODO:
99
+ So the first one:
12
100
 
13
- 1. Logger
14
- 2. Iniciar con parametros
15
- 3. Iniciar el segundo plano
16
- 4. Paquetizar
101
+ ```bash
102
+ $ zimbra_intercepting_proxy -d example.com -f /root/users.yml -o oldmailbox.example.com --newmailbox=190.196.215.125 -b 9080 --newmailboxlocalip=192.168.0.
103
+ ```
17
104
 
18
- ## Configuracion de Zimbra Proxy
105
+ And the second one:
19
106
 
20
- 1. Editar Templates
107
+ ```bash
108
+ $ zimbra_intercepting_proxy -d example.com -f /root/users.yml -o oldmailbox.example.com --newmailbox=190.196.215.125 -b 9072 --newmailboxlocalip=192.168.0.
109
+ ```
21
110
 
22
- 2. Cambiar zimbraMtaAuthHost: localhost
111
+ #### Options
23
112
 
24
- ## Installation
113
+ * `-d`, the domain, in case the user only enters the username,
114
+ * `-o`, the _default_ or old Mailbox,
115
+ * `--newmailbox`, the _other_ or new Mailbox,
116
+ * `-f`, the `YAML` map file, with the list of users on the `--newmailbox`,
117
+ * `-b`, the bind port
118
+ * `--newmailboxlocalip`, the LAN IP address of the `--newmailbox`
25
119
 
26
- Add this line to your application's Gemfile:
27
120
 
28
- gem 'zimbra_proxy_spy'
121
+ #### The Map File
29
122
 
30
- And then execute:
123
+ It's a simple YAML file with a `email:zimbraId` pair, like
31
124
 
32
- $ bundle
125
+ ```yaml
126
+ max@example.com: "7b562c60-be97-0132-9a66-482a1423458f"
127
+ moliery@example.com: "7b562ce0-be97-0132-9a66-482a1423458f"
128
+ watson@example.com: "251b1902-2250-4477-bdd1-8a101f7e7e4e"
129
+ sherlock@example.com: "7b562dd0-be97-0132-9a66-482a1423458f"
130
+ ```
33
131
 
34
- Or install it yourself as:
132
+ You can get the `zimbraId` with:
35
133
 
36
- $ gem install zimbra_proxy_spy
134
+ ```
135
+ $ zmprov ga watson@example.com zimbraId
136
+ ```
37
137
 
38
- ## Usage
138
+ ## Thanks
39
139
 
40
- TODO: Write usage instructions here
140
+ * To the Zimbra folks for a great product, and
141
+ * [@igrigorik](http://twitter.com/igrigorik) for [em-proxy](https://github.com/igrigorik/em-proxy)
41
142
 
42
143
  ## Contributing
43
144
 
44
- 1. Fork it ( https://github.com/[my-github-username]/zimbra_proxy_spy/fork )
145
+ 1. Fork it ( https://github.com/pbruna/zimbra_intercepting_proxy/fork )
45
146
  2. Create your feature branch (`git checkout -b my-new-feature`)
46
147
  3. Commit your changes (`git commit -am 'Add some feature'`)
47
148
  4. Push to the branch (`git push origin my-new-feature`)
@@ -30,8 +30,14 @@ module ZimbraInterceptingProxy
30
30
  @backend[:port] = request.port
31
31
  end
32
32
 
33
- conn.server @backend[:host], :host => @backend[:host], :port => @backend[:port]
34
- conn.relay_to_servers connection.buffer
33
+ begin
34
+ conn.server @backend[:host], :host => @backend[:host], :port => @backend[:port]
35
+ conn.relay_to_servers connection.buffer
36
+ rescue EventMachine::ConnectionError => e
37
+ conn.server @backend[:host], :host => ZimbraInterceptingProxy::Config.old_backend, :port => @backend[:port]
38
+ conn.relay_to_servers connection.buffer
39
+ end
40
+
35
41
 
36
42
  connection.buffer.clear
37
43
 
@@ -1,3 +1,3 @@
1
1
  module ZimbraInterceptingProxy
2
- VERSION = "0.0.4.2"
2
+ VERSION = "0.0.4.3"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zimbra_intercepting_proxy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4.2
4
+ version: 0.0.4.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Patricio Bruna
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-04-14 00:00:00.000000000 Z
11
+ date: 2015-04-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: em-proxy