Code Monkey home page Code Monkey logo

haraka-plugin-limit's Introduction

haraka-plugin-limit

Tests Code Climate

NPM

Apply many types of limits to SMTP connections:

- concurrent connections
- max recipients
- max unrecognized commands
- max SMTP errors
- outbound concurrency
- rate limits
    - max connections / period
    - max recipients / period
        - by host
        - by sender
    - max null recipients / period

Installation

cd /etc/haraka
npm i haraka-plugin-limit
grep -q ^redis config/plugins || echo 'redis' >> config/plugins
echo 'limit' >> config/plugins

Configure

Each limit type has values that can be defined in limit.ini. See the default limit.ini in this packages config directory.

Each limit type is disabled until enabled=true is set within its block in limit.ini.

Haraka's config loader loads the defaults from limit.ini within this plugins installed config directory and applies any overrides found in the limit.ini within your Haraka install/config directory.

[main]

  • tarpit_delay = seconds (optional)

Set this to the length in seconds that you want to delay every SMTP response to a remote client that has exceeded the rate limits.

[redis]

Redis is the cluster-safe storage backend for maintaining the counters necessary to impose limits reliably.

  • host (default: 127.0.0.1)
  • port (default: 6379)
  • db (default: 0)

If this [redis] section or any values are missing, the defaults from redis.ini are used.

concurrency

When [concurrency]max is defined, it limits the maximum number of simultaneous connections per IP address. Connection attempts in excess of the limit are optionally delayed before being disconnected.

This works well in conjunction with a history / reputation database, so that one can assign very low concurrency (1) to bad or unknown senders and higher limits for reputable mail servers.

History

History: when enabled, the history setting is the name of a plugin that stores IP history / reputation results. The result store must have a positive value for good connections and negative integers for poor / undesirable connections. Karma is one such plugin.

recipients

When [recipients]max is defined, each connection is limited to that number of recipients. The limit is imposed against all recipient attempts. Attempts in excess of the limit are issued a temporary failure.

unrecognized_commands

When [unrecognized_commands]max is set, a connection that exceeeds the limit is disconnected.

Unrecognized commands are normally SMTP verbs invalidly issued by the client. Examples:

  • issuing AUTH when we didn't advertise AUTH extension
  • issuing STARTTLS when we didn't advertise STARTTLS
  • invalid SMTP verbs

Limitations

The unrecognized_command hook is used by the tls and auth plugins, so running this plugin before those would result in valid operations getting counted against that connections limits. The solution is simple: list limit in config/plugins after those.

errors

When [errors]max is set, a connection that exceeeds the limit is disconnected. Errors that count against this limit include:

  • issuing commands out of turn (MAIL before EHLO, RCPT before MAIL, etc)
  • attempting MAIL on port 465/587 without AUTH
  • MAIL or RCPT addresses that fail to parse

Rate Limits

By default DENYSOFT will be returned when rate limits are exceeded. You can also tarpit the connection delaying every response.

Missing sections disable that particular test.

They all use a common configuration format:

  • <lookup> = <limit>[/time[unit]] (optional)

'lookup' is based upon the limit being enforced and is either an IP address, rDNS name, sender address or recipient address either in full or part.

The lookup order is as follows and the first match in this order is returned and is used as the record key in Redis (except for 'default' which always uses the full lookup for that test as the record key):

IPv4/IPv6 address or rDNS hostname:

   fe80:0:0:0:202:b3ff:fe1e:8329
   fe80:0:0:0:202:b3ff:fe1e
   fe80:0:0:0:202:b3ff
   fe80:0:0:0:202
   fe80:0:0:0
   fe80:0:0
   fe80:0
   fe80
   1.2.3.4
   1.2.3
   1.2
   1
   host.part.domain.com
   part.domain.com
   domain.com
   com
   default

Sender or Recipient address:

   [email protected]
   host.sub.part.domain.com
   sub.part.domain.com
   part.domain.com
   domain.com
   com
   default

In all tests 'default' is used to specify a default limit if nothing else has matched.

'limit' specifies the limit for this lookup. Specify 0 (zero) to disable limits on a matching lookup.

'time' is optional and if missing defaults to 60 seconds. You can optionally specify the following time units (case-insensitive):

  • s (seconds)
  • m (minutes)
  • h (hours)
  • d (days)

[rate_conn]

This section limits the number of connections per interval from a given host or set of hosts.

IP and rDNS names are looked up by this test.

[rate_rcpt_host]

This section limits the number of recipients per interval from a given host or set of hosts.

IP and rDNS names are looked up by this test.

[rate_rcpt_sender]

This section limits the number of recipients per interval from a sender or sender domain.

The sender is looked up by this test.

[rate_rcpt]

This section limits the rate which a recipient or recipient domain can receive messages over an interval.

Each recipient is looked up by this test.

[rate_rcpt_null]

This section limits the rate at which a recipient can receive messages from a null sender (e.g. DSN, MDN etc.) over an interval.

Each recipient is looked up by this test.

[outbound]

enabled=true ; delay=30 ;example.com=10

The number after the domain is the maximum concurrency limit for that domain.

Delay is the number of seconds to wait before retrying this message. Outbound concurrency is checked on every attempt to deliver.

CAUTION

Applying strict connection and rate limits is an effective way to reduce spam delivery. It's also an effective way to inflict a stampeding herd on your mail server. When spam/malware is delivered by MTAs that have queue retries, if you disconnect early (which the rate limits do) with a 400 series code (a sane default), the remote is likely to try again. And again. And again. And again. This can cause an obscene rise in the number of connections your mail server handles. Plan a strategy for handling that.

Strategies

  • Don't enforce limits early. I use karma and wait until DATA before disconnecting. By then, the score of the connection is determinate and I can return a 500 series code telling the remote not to try again.
  • enforce rate limits with your firewall instead

haraka-plugin-limit's People

Contributors

divine avatar gramakri avatar greenkeeper[bot] avatar jonmz avatar leadbi avatar msimerson avatar snyk-bot avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

haraka-plugin-limit's Issues

limit: standardize & modernize

  • populate [files] in package.json. Delete .npmignore.
  • automated code linting. #3308
    • dep: eslint-plugin-haraka -> @haraka/eslint-config
    • update 'lint' script in package.json
    • verify 'lint' CI test config
  • lint: remove duplicate / stale rules from .eslintrc
  • automated code formatting (see also #3308)
  • automated CI testing.
    • mostly done, verify that local copy of ci.yml is up-to-date.
  • CONTRIBUTORS: see 3309
  • consistent naming of "special" files like CHANGELOG.md.
  • CHANGELOG: verify links at bottom (due to inconsistent tag naming)
    • latest .release does this, fixes most, and warns of errors it can't fix
  • verify GitHub repo About link points to npm package
  • convert test suites to mocha "style"
    • works great today and with node --test in v18+

Add support for pool_concurrency_max in version 3

Is your feature request related to a problem? Please describe.
We are having issues with delivering emails to some hosts that limit the number of connection that can be opened.
In the version 2 it was possible to limit the number of connections opened using pool_concurrency_max.

Example error:

421 smtp-19.iol.local smtp-19.iol.local Too many connections, slow down [smtp-19.iol.local; 

Will it be possible to add support for it in v3?

Describe the solution you'd like
Add the generic-pool implementation from version 2, with this added, the number of connections open to a host can be controlled from a plugin as well.

Also implemented a plugin to limit the delivery speed to some domains and that fixed error messages related to Too many messages, slow down error.

But for connections is not possible to control the number of connections open to a host from a plugin (without forking haraka).

Describe alternatives you've considered
Tried to fix the issue using concurrency_max setting, but lowering this value slows the delivery for all hosts and I want to be able to lower only for domains that don't support a higher number of connections.

Additional context
We are using haraka to send email campaigns and when we warmup new ips some email providers impose limitations regarding the number of emails sent and the number of connection opened.

Let me know if this is a good idea, maybe there was a good reason why it was removed.

Redis camel case errors

Hi @msimerson, Happy New Year!

I've observed redis errors with the plugin (using Haraka 2.8.28), looking like that:

err:TypeError: this.db.hIncrBy is not a function, rate_conn:TypeError: this.db.hGetAll is not a function

For frequent clients, rate_conn data in Redis grows forever

Describe the bug

When enabling the rate_conn setting, the limit plugin creates/updates a Redis key named rate_conn:<IP> which has a hash as its value. The hash uses timestamps as keys, with a counter updated by HINCRBY.

The TTLS of the rate_conn:<IP> key is being set/reset to the configured window of time times two on every connection, e.g. for a setting of 60m it's 7200, and every new connection from the same IP resets the TTL.

The hash keys, however, have no TTLs on their own, which means, they only expire when the whole key rate_conn:<IP> expires.

This leads to a situation where a client that connects regularly within the configured time window, the hash is only growing all the time. One very prominent and common case of a client that connects regularly is: Monitoring!

Expected behavior

I expected outdated timestamps within the rate_conn:<IP> Redis key to expire by some plugin logic, as Redis doesn't have a TTL per hash key (AFAIK), keeping the dataset current and small.

Observed behavior

No expiration of hash keys is ever happening. The hash grows forever, as long as the same IP address connects again within 7200 seconds.

In our case, our monitoring does a short SMTP check every minute, each one generating a timestamp hash key under the according rate_conn:<IP> key. This is 60 new hash keys per hour, 1.400 a day, 43.200 a month, 511.000 per year. In our case, after about 2,5 years, we discovered about 1.300.000 timestamped hash keys for our monitoring IP in Redis.

This explained why the Haraka processes over time used immense CPU resources and immense memory: Reading 1,3 million hash keys on every monitoring connection into memory, doing 1,3 million quick calculations if the timestamp lies within the configured 60m and hence ignoring basically all of them except the most current 60 - that took a quite a toll on our servers. The moment we stopped monitoring our Haraka ports, cluster load basically halved and Haraka memory usage dropped by about 2 GB - per host.

Steps To Reproduce

  1. Assuming an already configured Redis, configure a limit in config/limit.ini, in our case:
[rate_conn]
enabled=true
default=200/60m
  1. Regularly make SMTP connections from the same IP, e.g. every minute. In our case we set up a blackbox_exporter on localhost:9115 as we're using Prometheus for monitoring, and do a request every minute:
$ for REQ in `seq 1 1000` ; do curl "http://localhost:9115/probe?target=our.test.host:465&module=smtp_c2s_tls_v4" ; sleep 60 ; done

Any other means of SMTP should work as well, e.g. using Swaks.

  1. Check the actual Redis data, replacing 111.222.333.444 with the actual IP you use for testing:
$ redis-cli -s /path/to/your/redis.socket -n 4 hkeys rate_conn:111.222.333.444 | wc -l

Expectation would be to find timestamps no older than the configured 60m, so in this case, about 60. Reality is you'll find timestamps of any age.

System Info

Haraka Haraka.js — Version: 3.0.1
Node v18.20.3
OS Linux fairydust.uberspace.de 3.10.0-1160.119.1.el7.x86_64 #1 SMP Tue Jun 4 14:43:51 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
openssl OpenSSL 1.0.2k-fips 26 Jan 2017

(It's an old CentOS 7 host which is about to be replaced soon, but I don't think the environment is relevant here anyway.)

Outbound rate limiting does not seem to work

Since we're getting issues delivering too much mail to the Outlook / Hotmail / Live / MSN services, we're looking into rate limiting the amount of mail that goes to these providers. This plugin seems to provide that functionality, but it doesn't seem to work correctly.

I've been debugging for a while, and found out that the variable hmail.domain in the outbound_increment hook is NULL. After inspecting the hmail object and looking in the documentation, the domain variable can be accessed by using the hmail.todo.domain variable.

The documentation also mentions the always_split configuration option, but this option does not seem to have impact on the contents of the hmail.domain variable.

Is this an issue in our environment, or is it a compatability issue with the Haraka version we're using (the latest - 2.8.13)? I've fixed it for now by writing a custom plugin which hooks into the outbound hooks before the limit plugin and copies the hmail.todo.domain variable to hmail.domain.

An in-range update of eslint-plugin-haraka is breaking the build 🚨

Version 1.0.8 of eslint-plugin-haraka just got published.

Branch Build failing 🚨
Dependency eslint-plugin-haraka
Current Version 1.0.7
Type devDependency

This version is covered by your current version range and after updating it in your project the build failed.

As eslint-plugin-haraka is “only” a devDependency of this project it might not break production or downstream projects, but “only” your build or test tools – preventing new deploys or publishes.

I recommend you give this issue a high priority. I’m sure you can resolve this 💪

Status Details
  • continuous-integration/travis-ci/push The Travis CI build failed Details
  • continuous-integration/appveyor/branch AppVeyor build succeeded Details

Commits

The new version differs by 4 commits.

  • a5b007d import lint updates from haraka/.eslintrc (#13)
  • 1d563c2 Repo badges (#11)
  • e1d8fe0 docs(readme): add Greenkeeper badge (#10)
  • a4947f1 add appveyor.yml (#9)

See the full diff

Not sure how things should work exactly?

There is a collection of frequently asked questions and of course you may always ask my humans.


Your Greenkeeper Bot 🌴

Not able to install hiredis for the rate_limit plugin

Hello

When trying to install Hiredis, I encountered the following error: Initially, I tried with Python 3.9 (the latest version), but it failed because hiredis only supports up to Python 2.9(link). After switching to Python 2.7, I am still encountering errors because node-gyp does not support versions lower than 3.6. How can I successfully install hiredis?

[root@relay ~]# npm install redis hiredis ipaddr.js
npm ERR! code 1
npm ERR! path /root/node_modules/hiredis
npm ERR! command failed
npm ERR! command sh -c node-gyp rebuild
npm ERR! gyp info it worked if it ends with ok
npm ERR! gyp info using [email protected]
npm ERR! gyp info using [email protected] | linux | x64
npm ERR! gyp ERR! find Python
npm ERR! gyp ERR! find Python checking Python explicitly set from NODE_GYP_FORCE_PYTHON
npm ERR! gyp ERR! find Python - process.env.NODE_GYP_FORCE_PYTHON is "/usr/local/bin/python2.7"
npm ERR! gyp ERR! find Python - executable path is "/usr/local/bin/python2.7"
npm ERR! gyp ERR! find Python - version is "2.7.18"
npm ERR! gyp ERR! find Python - version is 2.7.18 - should be >=3.6.0
npm ERR! gyp ERR! find Python - THIS VERSION OF PYTHON IS NOT SUPPORTED
npm ERR! gyp ERR! find Python - "/usr/local/bin/python2.7" could not be run
npm ERR! gyp ERR! find Python
npm ERR! gyp ERR! find Python **********************************************************
npm ERR! gyp ERR! find Python You need to install the latest version of Python.
npm ERR! gyp ERR! find Python Node-gyp should be able to find and use Python. If not,
npm ERR! gyp ERR! find Python you can try one of the following options:
npm ERR! gyp ERR! find Python - Use the switch --python="/path/to/pythonexecutable"
npm ERR! gyp ERR! find Python (accepted by both node-gyp and npm)
npm ERR! gyp ERR! find Python - Set the environment variable PYTHON
npm ERR! gyp ERR! find Python - Set the npm configuration variable python:
npm ERR! gyp ERR! find Python npm config set python "/path/to/pythonexecutable"
npm ERR! gyp ERR! find Python For more information consult the documentation at:
npm ERR! gyp ERR! find Python https://github.com/nodejs/node-gyp#installation
npm ERR! gyp ERR! find Python **********************************************************
npm ERR! gyp ERR! find Python
npm ERR! gyp ERR! configure error
npm ERR! gyp ERR! stack Error: Could not find any Python installation to use
npm ERR! gyp ERR! stack at PythonFinder.fail (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/find-python.js:306:11)
npm ERR! gyp ERR! stack at PythonFinder.findPython (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/find-python.js:164:17)
npm ERR! gyp ERR! stack at async configure (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:23:18)
npm ERR! gyp ERR! stack at async run (/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js:81:18)
npm ERR! gyp ERR! System Linux 5.14.0-362.24.2.el9_3.x86_64
npm ERR! gyp ERR! command "/usr/bin/node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
npm ERR! gyp ERR! cwd /root/node_modules/hiredis
npm ERR! gyp ERR! node -v v21.7.3
npm ERR! gyp ERR! node-gyp -v v10.0.1
npm ERR! gyp ERR! not ok

npm ERR! A complete log of this run can be found in: /root/.npm/_logs/2024-04-16T12_13_06_125Z-debug-0.log
[root@relay ~]#

Limiting the sending speed for each recipient domain separately

Hey!

I just started to study your very cool product - Haraka.

I have a few questions. I need to limit/increase the speed of sending letters for each recipient domain individually.
For example, for the domain @gmail.com - 10/min, @hotmail.com - 25/min, @yahoo.com - 50/min

I found the file /usr/lib/node_modules/Haraka/node_modules/haraka-plugin-limit/config/limit.ini
But I don’t understand what recording format should be done?

Please give me a sample of how to correctly write down the speed limit for sending letters for each recipient domain individually?

[rate_rcpt]
what should I write here?

Thanks!

how to define rate limit for a single domain

Hi,
No matter where I looked and how I've configured the limit.ini file I cant limit a single domain for rate limit

example.com = 1/30s
where is that need to be placed? docs not suggesting how to implement it

Thank you.

Version 10 of node.js has been released

Version 10 of Node.js (code name Dubnium) has been released! 🎊

To see what happens to your code in Node.js 10, Greenkeeper has created a branch with the following changes:

  • Added the new Node.js version to your .travis.yml

If you’re interested in upgrading this repo to Node.js 10, you can open a PR with these changes. Please note that this issue is just intended as a friendly reminder and the PR as a possible starting point for getting your code running on Node.js 10.

More information on this issue

Greenkeeper has checked the engines key in any package.json file, the .nvmrc file, and the .travis.yml file, if present.

  • engines was only updated if it defined a single version, not a range.
  • .nvmrc was updated to Node.js 10
  • .travis.yml was only changed if there was a root-level node_js that didn’t already include Node.js 10, such as node or lts/*. In this case, the new version was appended to the list. We didn’t touch job or matrix configurations because these tend to be quite specific and complex, and it’s difficult to infer what the intentions were.

For many simpler .travis.yml configurations, this PR should suffice as-is, but depending on what you’re doing it may require additional work or may not be applicable at all. We’re also aware that you may have good reasons to not update to Node.js 10, which is why this was sent as an issue and not a pull request. Feel free to delete it without comment, I’m a humble robot and won’t feel rejected 🤖


FAQ and help

There is a collection of frequently asked questions. If those don’t help, you can always ask the humans behind Greenkeeper.


Your Greenkeeper Bot 🌴

An in-range update of eslint-plugin-haraka is breaking the build 🚨

The devDependency eslint-plugin-haraka was updated from 1.0.9 to 1.0.10.

🚨 View failing branch.

This version is covered by your current version range and after updating it in your project the build failed.

eslint-plugin-haraka is a devDependency of this project. It might not break your production code or affect downstream projects, but probably breaks your build or test tools, which may prevent deploying or publishing.

Status Details
  • continuous-integration/appveyor/branch: AppVeyor build succeeded (Details).
  • continuous-integration/travis-ci/push: The Travis CI build failed (Details).

FAQ and help

There is a collection of frequently asked questions. If those don’t help, you can always ask the humans behind Greenkeeper.


Your Greenkeeper Bot 🌴

An in-range update of eslint-plugin-haraka is breaking the build 🚨

The devDependency eslint-plugin-haraka was updated from 1.0.11 to 1.0.12.

🚨 View failing branch.

This version is covered by your current version range and after updating it in your project the build failed.

eslint-plugin-haraka is a devDependency of this project. It might not break your production code or affect downstream projects, but probably breaks your build or test tools, which may prevent deploying or publishing.

Status Details
  • continuous-integration/appveyor/branch: AppVeyor build succeeded (Details).
  • continuous-integration/travis-ci/push: The Travis CI build failed (Details).

Commits

The new version differs by 1 commits.

See the full diff

FAQ and help

There is a collection of frequently asked questions. If those don’t help, you can always ask the humans behind Greenkeeper.


Your Greenkeeper Bot 🌴

Emails received are delayed

I m running haraka server and it only receives emails. I get 50+ emails/sec on my server. Some emails are being delayed and are received in 10 or 5 min how can I raise this limit using this plugin to 5000 emails/sec.
I m confused if this plugin is for inbound or outbound specific

Way to limit the number of emails sent to 10 / min

Hello,

I have integrated Haraka on a virtual server and I ma happy to use it. The host switches the server off if too much emails are sent. They recommend not more than 10 emails per minute.

I do not see how to make tests in this field so I would like to double-check before... is it enough to use the following parameters of the limit.ini file :

[outbound]
enabled=true 
delay=60 
my-domain.com=10

Many thanks

Matthieu

An in-range update of haraka-test-fixtures is breaking the build 🚨

Version 1.0.20 of haraka-test-fixtures just got published.

Branch Build failing 🚨
Dependency haraka-test-fixtures
Current Version 1.0.19
Type devDependency

This version is covered by your current version range and after updating it in your project the build failed.

As haraka-test-fixtures is “only” a devDependency of this project it might not break production or downstream projects, but “only” your build or test tools – preventing new deploys or publishes.

I recommend you give this issue a high priority. I’m sure you can resolve this 💪

Status Details
  • continuous-integration/appveyor/branch AppVeyor build succeeded Details
  • continuous-integration/travis-ci/push The Travis CI build failed Details

Commits

The new version differs by 6 commits ahead by 6, behind by 1.

  • 6432dbb update eslint with es6 declaration
  • e768f99 travis-ci: node 4 -> 8
  • 450ad00 sprinkle some es6 around
  • 069e01c use haraka-notes
  • f32da45 fix appveyor image URL (#23)
  • 0530cd3 remove version from haraka-results (#22)

See the full diff

Not sure how things should work exactly?

There is a collection of frequently asked questions and of course you may always ask my humans.


Your Greenkeeper Bot 🌴

An in-range update of eslint is breaking the build 🚨

The devDependency eslint was updated from 6.7.1 to 6.7.2.

🚨 View failing branch.

This version is covered by your current version range and after updating it in your project the build failed.

eslint is a devDependency of this project. It might not break your production code or affect downstream projects, but probably breaks your build or test tools, which may prevent deploying or publishing.

Status Details
  • continuous-integration/travis-ci/push: The Travis CI build passed (Details).
  • continuous-integration/appveyor/branch: AppVeyor build failed (Details).

Release Notes for v6.7.2
  • bc435a9 Fix: isSpaceBetweenTokens() recognizes spaces in JSXText (fixes #12614) (#12616) (Toru Nagashima)
  • 4928d51 Fix: don't ignore the entry directory (fixes #12604) (#12607) (Toru Nagashima)
  • b41677a Docs: Clarify suggestion's data in Working with Rules (refs #12606) (#12617) (Milos Djermanovic)
  • ea16de4 Fix: Support tagged template literal generics in no-unexpected-multiline (#11698) (Brad Zacher)
  • fa6415d Sponsors: Sync README with website (ESLint Jenkins)
  • e1e158b Sponsors: Sync README with website (ESLint Jenkins)
Commits

The new version differs by 8 commits.

  • dbbba83 6.7.2
  • bc54d15 Build: changelog update for 6.7.2
  • bc435a9 Fix: isSpaceBetweenTokens() recognizes spaces in JSXText (fixes #12614) (#12616)
  • 4928d51 Fix: don't ignore the entry directory (fixes #12604) (#12607)
  • b41677a Docs: Clarify suggestion's data in Working with Rules (refs #12606) (#12617)
  • ea16de4 Fix: Support tagged template literal generics in no-unexpected-multiline (#11698)
  • fa6415d Sponsors: Sync README with website
  • e1e158b Sponsors: Sync README with website

See the full diff

FAQ and help

There is a collection of frequently asked questions. If those don’t help, you can always ask the humans behind Greenkeeper.


Your Greenkeeper Bot 🌴

An in-range update of eslint is breaking the build 🚨

The devDependency eslint was updated from 5.16.0 to 6.0.0.

🚨 View failing branch.

This version is covered by your current version range and after updating it in your project the build failed.

eslint is a devDependency of this project. It might not break your production code or affect downstream projects, but probably breaks your build or test tools, which may prevent deploying or publishing.

Status Details
  • continuous-integration/appveyor/branch: AppVeyor build succeeded (Details).
  • continuous-integration/travis-ci/push: The Travis CI build failed (Details).

Release Notes for v6.0.0
  • 81aa06b Upgrade: [email protected] (#11869) (Teddy Katz)
  • 5f022bc Fix: no-else-return autofix produces name collisions (fixes #11069) (#11867) (Milos Djermanovic)
  • ded9548 Fix: multiline-comment-style incorrect message (#11864) (golopot)
  • cad074d Docs: Add JSHint W047 compat to no-floating-decimal (#11861) (Timo Tijhof)
  • 41f6304 Upgrade: sinon (#11855) (Toru Nagashima)
  • 167ce87 Chore: remove unuseable profile command (#11854) (Toru Nagashima)
  • c844c6f Fix: max-len properly ignore trailing comments (fixes #11838) (#11841) (ZYSzys)
  • 1b5661a Fix: no-var should not fix variables named 'let' (fixes #11830) (#11832) (Milos Djermanovic)
  • 4d75956 Build: CI with Azure Pipelines (#11845) (Toru Nagashima)
  • 1db3462 Chore: rm superfluous argument & fix perf-multifiles-targets (#11834) (薛定谔的猫)
  • c57a4a4 Upgrade: @babel/polyfill => core-js v3 (#11833) (薛定谔的猫)
  • 65faa04 Docs: Clarify prefer-destructuring array/object difference (fixes #9970) (#11851) (Oliver Sieweke)
  • 81c3823 Fix: require-atomic-updates reports parameters (fixes #11723) (#11774) (Toru Nagashima)
  • aef8ea1 Sponsors: Sync README with website (ESLint Jenkins)
Commits

The new version differs by 134 commits.

  • a7985a6 6.0.0
  • be74dd9 Build: changelog update for 6.0.0
  • 81aa06b Upgrade: [email protected] (#11869)
  • 5f022bc Fix: no-else-return autofix produces name collisions (fixes #11069) (#11867)
  • ded9548 Fix: multiline-comment-style incorrect message (#11864)
  • cad074d Docs: Add JSHint W047 compat to no-floating-decimal (#11861)
  • 41f6304 Upgrade: sinon (#11855)
  • 167ce87 Chore: remove unuseable profile command (#11854)
  • c844c6f Fix: max-len properly ignore trailing comments (fixes #11838) (#11841)
  • 1b5661a Fix: no-var should not fix variables named 'let' (fixes #11830) (#11832)
  • 4d75956 Build: CI with Azure Pipelines (#11845)
  • 1db3462 Chore: rm superfluous argument & fix perf-multifiles-targets (#11834)
  • c57a4a4 Upgrade: @babel/polyfill => core-js v3 (#11833)
  • 65faa04 Docs: Clarify prefer-destructuring array/object difference (fixes #9970) (#11851)
  • 81c3823 Fix: require-atomic-updates reports parameters (fixes #11723) (#11774)

There are 134 commits in total.

See the full diff

FAQ and help

There is a collection of frequently asked questions. If those don’t help, you can always ask the humans behind Greenkeeper.


Your Greenkeeper Bot 🌴

Outbound rate limits

Hi guys, I'm having a problem during the implementation of outbound rate limits, it seems to work just for the first time for the outbound part.

Example :

If I'm using the following Config in limit.ini :

[outbound]
enabled=true
domain=1
delay=10

Then queuing 5 mails.

Expected :
Deliver 1 mail every 10 seconds.

Current behaviour :
Deliver the first mail then delayed the rest '4' mails for 10 seconds (as expected), but after the first 10 seconds the 'send_mail' hook will be called and delayed the '4' mails another time and keep delay the delivery every 10 seconds... without delivering.

NOTE : I think that happen because of the TOTAL that will be incremented every time so the count variable will be always greater than limit and will reach the delivered condition just the first time :

if (count <= limit) return next();

Thanks in advance.

An in-range update of haraka-test-fixtures is breaking the build 🚨

Version 1.0.21 of haraka-test-fixtures just got published.

Branch Build failing 🚨
Dependency haraka-test-fixtures
Current Version 1.0.20
Type devDependency

This version is covered by your current version range and after updating it in your project the build failed.

As haraka-test-fixtures is “only” a devDependency of this project it might not break production or downstream projects, but “only” your build or test tools – preventing new deploys or publishes.

I recommend you give this issue a high priority. I’m sure you can resolve this 💪

Status Details
  • continuous-integration/travis-ci/push The Travis CI build failed Details
  • continuous-integration/appveyor/branch AppVeyor build succeeded Details

Commits

The new version differs by 2 commits ahead by 2, behind by 4.

See the full diff

Not sure how things should work exactly?

There is a collection of frequently asked questions and of course you may always ask my humans.


Your Greenkeeper Bot 🌴

An in-range update of ipaddr.js is breaking the build 🚨

The dependency ipaddr.js was updated from 1.9.0 to 1.9.1.

🚨 View failing branch.

This version is covered by your current version range and after updating it in your project the build failed.

ipaddr.js is a direct dependency of this project, and it is very likely causing it to break. If other packages depend on yours, this update is probably also breaking those in turn.

Status Details
  • continuous-integration/appveyor/branch: AppVeyor build succeeded (Details).
  • continuous-integration/travis-ci/push: The Travis CI build failed (Details).

Commits

The new version differs by 3 commits.

  • 760416b Update version to 1.9.1
  • ffd9633 Include LICENSE file in published package
  • a3a0bcc Update TypeScript definitions.

See the full diff

FAQ and help

There is a collection of frequently asked questions. If those don’t help, you can always ask the humans behind Greenkeeper.


Your Greenkeeper Bot 🌴

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.