Visual RFC.
ALL RFCs / RFC 6647
Read the RFC ↗
RFC 6647 / GREYLISTING

Track the retry window separately from record expiry

03

The age of an attempt and the lifetime of known-source history answer different questions.

RFC 6647 · § 5EXAMPLE
4 / 4
Track the retry window separately from record expiryTwo expressly independent examples: an86401-second pending retry resets first seen; an already known IP with604800 seconds inactivity loses its exemption. These are different record types and clocks.Keep two different clocks apartTwo independent expiry examplesPending tuple: first seen0, retry86401After chosen window: reset first seen86401Different clock and different recordKnown IP: last traffic0, idle604800Chosen seven-day idle timeout: deleteRange and boundary convention are examplesRFC6647 · chapter 3 · state 4 · offline example
04
Separate two expiry cases

Independent branches: a pending retry at86401 resets first seen; a known IP idle for the chosen seven-day timeout loses its exemption. Neither event is automatic mail delivery.

Source for this drawing: RFC 6647 · Read RFC section 5 ↗

Protocol participantThreat or exceptionProtocol controlSimplified drawings · precise section references
New to this? Start hereA quick picture + helpful background

A message needs an address.

Think of a packet as a small addressed envelope. Devices pass it onward; transport protocols decide what delivery promises an application gets.

Helpful first, if these ideas are unfamiliar

These pictures are analogies to help you learn. The linked RFC explains the actual rules.

Related RFCs and changes

“Updates” changes part of an earlier RFC. “Obsoletes” replaces it. This list shows selected related documents.

KEY POINT

A retry too soon is not the same as a stale record.

  • Section5 item2 recommends a configurable range in which a retry qualifies. Its default SHOULD be one minute to24hours. A retry after the end SHOULD count as new for greylisting evaluation, resetting first seen. The model chooses inclusive endpoints at60 and86400seconds; this boundary convention and five-minute example are local illustration choices, not new RFC MUSTs.
  • In this chosen policy a first sighting at time0 creates a pending tuple and defers. A retry at30seconds is too early: retain first seen0. A retry at300seconds falls in the range and passes the greylisting test (§5 item2). This is elapsed time, not a prescribed wall-clock date or SMTP retry schedule.
  • After a successful retry, section5 item1 recommends allowing all further SMTP traffic from that IP regardless of envelope information. The model promotes the IP to known-source history; another envelope from it bypasses this greylisting test, not all other mail filters. A mere first attempt or too-early retry must not make that promotion in this selected policy.
  • Section5 item3 recommends a separate inactivity timeout deleting history of IPs with no recent traffic; its default SHOULD be at least one week. The model chooses seven days and deletes at an age greater than or equal to that chosen timeout. Successful known-source traffic refreshes its last-seen time. These selected implementation details do not define universal expiration semantics.
  • A late retry at86401seconds is shown as a separate branch from successful promotion: it resets first seen rather than retrospectively proving an earlier success. A site can configure other ranges; retry-range expiry and inactivity expiry must not be presented as one timer (§§3,5).
DETAILS

Fictional offline IPv4 mail examples. This is an applicability statement, not a new SMTP extension or a complete mail server. Timings and decisions in the drawing select one recommended policy; passing this gate is not message acceptance, delivery or proof of a trustworthy sender. No mail is sent.

Read the RFC section ↗

All chapters in RFC 6647

Drawing view

Scroll the drawing to see every part. Playback controls stay above it.

RFC 9700 / CHAPTERS

Chapters

For full details, tables, algorithms, and exceptions, read the original RFC.

RFC status and corrections ↗