
Security News
Astral Launches pyx: A Python-Native Package Registry
Astral unveils pyx, a Python-native package registry in beta, designed to speed installs, enhance security, and integrate deeply with uv.
zimbra_intercepting_proxy
Advanced tools
This software is used to intercept and apply modifications to the traffic between a Zimbra Proxy and Zimbra Mailboxes. If you don't know what a Zimbra Proxy is, You can read about it here: https://wiki.zimbra.com/wiki/Zimbra_Proxy_Guide
This work for all kind of client access:
Suppose you need to move a lot of users and data from one Zimbra Platform to another, like we do at ZBox, and given the size of the migration, you can't move all the mailboxes at once, so you have to do it in groups.
This procedure have the following inconvenients:
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.
The main problem with this is that you have to configure your clients with to kind of information.
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.
Based on this information, ZIP
tell the Zimbra Proxy to which Mailbox it should communicate with.
This has been tested with:
You need to have direct access to the 7072
port of both Mailboxes.
It's recommended to install it on the same Zimbra Proxy server. All you need to do is run:
$ gem install zimbra_intercepting_proxy
Since version 8, Zimbra has a DDoS protection system that blocks IP's address with many failed login connections. It's adviced by the Zimbra Docs to Whitelist the IP's address that you trust.
You have to do this on the NEW_MAILBOX
to whitelist connections from the IP from where you are migrating
$ zmprov mcf +zimbraHttpThrottleSafeIPs NEW_MAILBOX_IP
$ zmmailboxdctl restart
Important Note You are going to modify Zimbra template files, used to build the configuration files of Nginx. Take some backups!!
/opt/zimbra/conf/nginx/templates
.<
, config being replaced>
, new configYou have to make this modifications
# nginx.conf.mail.template
19c19,20
< ${mail.:auth_http}
---
>
> auth_http localhost:9072/service/extension/nginx-lookup;
# nginx.conf.web.template
17c17
< #${web.upstream.:servers}
---
> server localhost:9080;
23c23
< #${web.:routehandlers}
---
> zmroutehandlers localhost:9072/service/extension/nginx-lookup;
Next restart. You should restart memcached and nginx, but just to be sure:
$ zmcontrol restart
You have to start 2 instances of ZIP
:
9080
for Web and SOAP Auth Requests, and9072
for Route-Handler
, this is how the Proxy knows to which Mailbox redirect the traffic.So the first one:
$ 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.
And the second one:
$ 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.
-d
, the domain, in case the user only enters the username,-o
, the default or old Mailbox,--newmailbox
, the other or new Mailbox,-f
, the YAML
map file, with the list of users on the --newmailbox
,-b
, the bind port--newmailboxlocalip
, the LAN IP address of the --newmailbox
It's a simple YAML file with a email:zimbraId
pair, like
max@example.com: "7b562c60-be97-0132-9a66-482a1423458f"
moliery@example.com: "7b562ce0-be97-0132-9a66-482a1423458f"
watson@example.com: "251b1902-2250-4477-bdd1-8a101f7e7e4e"
sherlock@example.com: "7b562dd0-be97-0132-9a66-482a1423458f"
Updating the file does not require a restart.
You can get the zimbraId
with:
$ zmprov ga watson@example.com zimbraId
If you have an error in your file, ZIP
will return the on memory Map, this way we can keep the service up. In this event you should see this on STDOUT
:
ERROR Yaml File: (./test/fixtures/users.yml): could not find expected ':' while scanning a simple key at line 7
In the examples
directory you have the following files:
zip_9072
, to start the server on port 9072zip_9080
, you knowCopy both files to the /etc/init.d/
directory and then enable the services like this:
$ chkconfig --add zip_9072
$ chkconfig --add zip_9080
It may be posible that ZIP
crash for some reason, it's a new software after all. To reduce the down time we recomend to use Monit to monitor and restart the ZIP
in case of trouble.
Check the examples directory for config files.
git checkout -b my-new-feature
)git commit -am 'Add some feature'
)git push origin my-new-feature
)FAQs
Unknown package
We found that zimbra_intercepting_proxy demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Astral unveils pyx, a Python-native package registry in beta, designed to speed installs, enhance security, and integrate deeply with uv.
Security News
The Latio podcast explores how static and runtime reachability help teams prioritize exploitable vulnerabilities and streamline AppSec workflows.
Security News
The latest Opengrep releases add Apex scanning, precision rule tuning, and performance gains for open source static code analysis.