XMPP Component Host and S2S Proxy
C++ Other
Latest commit ee7f2a1 Dec 20, 2016 @dwd committed with Correct logic error in SRV handling
If a DNS error occured first, it was ignored, and then the callback was never triggered.


Metre :: An XMPP Server (Sort Of)

Metre (check that spelling) is an XMPP Server, of sorts. Unlike traditional XMPP servers which host services internally, Metre is specifically designed to connect between servers, mediating connections and traffic.

It's written in C++11 (ie, modern C++), and aims to provide a semantically-aware filter between domains, to avoid exposing your internal XMPP fully to the world.

You'll probably want to read the FAQ, and you may wish to find some BUILD instructions. There is also a documentation file on FILTERS

The LICENCE is MIT, and the copyright rests (mostly - see the Base 64 code) jointly with Surevine Ltd and Dave Cridland.

In particular, this is not (yet) finished.

Currently working:

  • Component hosting XEP-0114
  • TLS
  • X.509 auth (PKIX)
  • Dialback and S2S XEP-0220
  • Dialback without Dialback XEP-0344
  • Basic forwarding/routing
  • DNSSEC (Including RFC 6125 additional reference identifiers)
  • S2S <-> S2S proxying
  • DNS overrides (SRV, A, and TLSA per-domain)
  • DANE (including via TLSA overrides as above)
  • Basic Filtering
  • Daemonizing
  • IPv6

Currently poorly tested:

Currently unimplemented but planned:

  • Semantic filtering