Git Product home page Git Product logo

haraka-plugin-recipient-routes's Introduction

rcpt_to.routes

Recipient Routes does recipient validation and MX routing.

Build Status Code Climate NPM

Recipient Validation

Recipients can be listed in the [routes] section of the config file config/rcpt_to.routes.ini or in Redis. If Redis is enabled and available, it is checked first. Then the config file is checked.

Entries can be email addresses or domains. If both are present, email addresses are favored.

If no route is discovered, recipient processing continues, allowing other recipient plugins to vouch for the recipient. If none does, the recipient is rejected.

Order of Recipient Search

  1. Redis email
  2. Redis domain
  3. File email
  4. File domain

MX Routing

NOTE: MX routing by default routes only based on domains. To route for email addresses, you must set the preference always_split=true in 'config/outbound.ini'.

Each entry in the [routes] section of config/rcpt_to.routes.ini or in Redis must specify a MX record. The MX record is the same format as outbound.js. Examples:

* hostname
* hostname:port
* ipaddress
* ipaddress:port
* { priority: 0, exchange: hostname, port: 25 }

Configuration

The following options can be specified in config/rcpt_to.routes.ini:

Redis

The [redis] section has optional settings (defaults shown):

[redis]
host=127.0.0.1
port=6379
db=0
enabled=true

Routes

The [routes] section can include routes for domains and email addresses:

[routes]
example.com=mail.example.com:225
[email protected]=some.where.com
[email protected]=honeybucket.where.com:26

You may also use URI format to specify SMTP vs LMTP:

[routes]
[email protected]=lmtp://mail.example.com:2525
[email protected]=smtp://127.0.0.1:4242

Performance

File based

Routes from the config file are loaded into an object at server startup. If the config file changes, the routes automatically update. Key lookups in the object are extremely fast. In 2014, the author measured 450,000 qps against a 92,000 key object on a Xeon E5-2620 @ 2.10GHz.

Redis

The benchmarks published by the author(s) of the Node 'redis' module are about 30,000 qps.

Author

Matt Simerson.

Underwritten and graciously donated to the Haraka community by Serious Mumbo, Inc.

haraka-plugin-recipient-routes's People

Contributors

ainesophaur avatar lnedry avatar msimerson avatar superman20 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

haraka-plugin-recipient-routes's Issues

Redis functionality doesnt appear to ever trigger

Line 108 of index.js seems to prevent redis based functionality. Im assuming its likely an oversight from transitioning to redis v4. Based on haraka-plugin-redis this.redis_pings gets set by calling await this.redis_ping() which seems to only be called in tests within this project.

Wildcard match

Could we use wildcards in email addresses?

[routes]
1*@example.com=lmtp://mail.example.com:2525

Thank you.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.