GreenArrow Email Software Documentation

Retry Schedule

Before reading this page, be sure you are familiar with the differences between the ram-queue, disk-queue and bounce-queue. These are described on the GreenArrow Concepts page.

Overview

When a message is injected into GreenArrow Engine from an external source, the first delivery attempt occurs in the ram-queue.

When GreenArrow Engine internally generates a messages, such as a bounce, the first delivery attempt occurs in the bounce-queue.

If a message in either the ram-queue or bounce-queue is deferred or throttled, it gets sent to the disk queue, which uses a quadratic formula to schedule future delivery attempts.

An exception to both the ram-queue and bounce-queue behavior is deliveries to local domain names, which are not moved to the disk-queue.

The chart in the next section shows the retry schedule. Details on how this schedule is calculated and implemented can be found in the More Details section.

Chart

Delivery Attempt Seconds HH:MM:SS
1 0 00:00:00
2 400 00:06:40
3 1600 00:26:40
4 3600 01:00:00
5 6400 01:46:40
6 10000 02:46:40
7 14400 04:00:00
8 19600 05:26:40
9 25600 07:06:40
10 32400 09:00:00
11 40000 11:06:40
12 48400 13:26:40
13 57600 16:00:00
14 67600 18:46:40
15 78400 21:46:40
16 90000 24:00:00
17 102400 28:26:40
18 115600 32:06:40
19 129600 36:00:00
20 144400 40:06:40
21 160000 44:26:40
22 176400 49:00:00
23 193600 53:46:40
24 211600 58:46:40
25 230400 64:00:00
26 250000 69:26:40
27 270400 75:06:40
28 291600 81:00:00
29 313600 87:06:40
30 336400 93:26:40
31 360000 100:00:00

More Details

This chart above is not followed precisely. GreenArrow Engine’s scheduling processes introduce some additional variability in order to smooth out the retry schedule for bursts of injected messages.

The retry schedule can be expressed as the following formula, where n is the retry attempt:

((n-1)*20)²

Delivery Attempt Formula Seconds
1 ((1-1)*20)² 0
2 ((2-1)*20)² 400
3 ((3-1)*20)² 1600
4 ((4-1)*20)² 3600

Override

The retry schedule above can be overridden by the retry_time directive on a per-VirtualMTA or per-domain basis.

The retry schedule for each message is the first match in the following list:

  1. The retry_time configured for the recipient’s domain within the VirtualMTA requested at the time of injection.

  2. The retry_time configured for the recipient’s domain within the VirtualMTA that the most recent delivery attempt used.

  3. The retry_time configured for the recipient’s domain within the wildcard * ip_address block.

  4. The default retry schedule.


Copyright © 2012–2024 GreenArrow Email