RFC 630

FTP error code usage for more reliable mail service

πŸ“… published April 1974, from ietf

RFC 630: FTP Error Code Usage for More Reliable Mail Service πŸŽ€

Okay bestie, the title block first ✨ This is RFC 630, written by Julie Sussman at BBN (NIC # 30237), dated April 10, 1974. πŸ’– It doesn't list a category or status, and it doesn't say it obsoletes or updates anything. Just vibes, no paperwork.

PURPOSE πŸ¦‹

Okay so the big problem with reliable mail is that FTP doesn't have good enough error replies for a mailing process to figure out what to do when something fails. 😭 New FTP error codes are still being designed, and a proposal is coming soon. πŸ”₯ Until then, we can already get a glow-up by just defining how we plan to use the codes we have. The point of this RFC is to tell every site how TENEX sites will use and interpret the codes starting in the near future. πŸ’…

CURRENT CODE DEFINITIONS 🌸

These are the FTP error codes for failing to perform a file action (including mail):

450 File not found
451 File access denied to you
452 Data connection closed
453 Insufficient storage
454 Cannot connect to your data socket

Okay, the tea is that 450, 451, and 453 apply to both the MAIL and MLFL commands, while 452 and 454 are only meaningful for MLFL. πŸ“

SHORTCOMING OF CURRENT DEFINITIONS πŸ™ˆ

There are way more ways mail delivery can fail than these codes cover. πŸ’€ So FTP server implementors had to just pick which codes to assign to which error conditions, kind of arbitrarily. 🎲 The reply text could tell human users the difference, but the code itself doesn't tell processes the difference. Not ideal, bestie.

The bare minimum that TENEX mail-sending processes need to know is whether a failure is permanent or non-permanent. πŸ‘‘ If it's non-permanent, the process will keep retrying to deliver the mail for several days. ✨

NEW DEFINITIONS FOR TENEX USE 🧚

The following changes will be installed at TENEX sites over the next couple of months. 🌈

FTP SERVER πŸ’œ

The TENEX FTP server will keep using 452 and 454 the way they're specified for the MLFL command. ✨

For MAIL and MLFL, it will send the other codes like this:

  • 450: Permanent failures due to the user addressed in the MAIL or MLFL command. πŸ’–
    • Examples: No such user; No mailbox for that user; Can't access file (because net users can't write in that mailbox).
  • 451: Permanent failures due to the message itself. 🫢
    • Example: Line sent over TELNET connection is too long (MAIL command only).
  • 453: Temporary failures. πŸ¦‹
    • Examples: TELNET connection unexpectedly closed; Mailbox busy; Unexpected local errors (such as failure to create scratch file).

MAILING PROCESSES 🌸

Right now, TENEX mailing processes treat all of 450 through 454 as permanent failures, which is a lot. 😭 They're getting an update so that 452, 453, and 454 are temporary, while 450 and 451 stay permanent. πŸ”₯

COMPATIBILITY WITH NON-TENEX SITES 🌈

This shouldn't mess up how TENEX and non-TENEX mail processes talk to each other, because we're just swapping one arbitrary set of interpretations for another. πŸ’… Plus:

  • Our reading of 450-451 as permanent and 452-454 as temporary matches what those codes originally meant. πŸ‘‘
  • Our new choice of codes for each failure is no farther from the original meanings than our old choice was, and it gives more info. ✨ Iconic, honestly.

The RFC text above was converted to machine-readable form for the online RFC archives by Alex McKenzie, with support from GTE (formerly BBN Corp.), in 10/99. 🫢
       [ This RFC was put into machine readable form for entry ]
       [ into the online RFC archives by Alex McKenzie with    ]
       [ support from GTE, formerly BBN Corp.            10/99 ]
πŸ“¦ where this page comes from