RFC 555
Responses to critiques of the proposed mail protocol
Response to Critiques of the Proposed Mail Protocol ๐โจ
Okay bestie, let's start with the title block ๐. This is RFC 555, written by James E. White (JEW) at SRI-ARC (NIC 17993) for the Network Working Group, dated July 27, 1973. The header doesn't list a category, and it doesn't say this one obsoletes or updates anything ๐คทโโ๏ธ.
James had a proposed Mail Protocol (JEW RFC 524, 17140,2:y), and people had lots of thoughts ๐. So this RFC gathers the questions, complaints, and suggestions from the Network community and responds to each one. He says he'll critique his own work in a future RFC, which is iconic of him ๐.
He also wants the conversation to keep going ๐ฆ. Anyone can send in more critiques, and he'll answer each one by RFC. He's hoping for a lot of them ๐.
I. QUESTIONS ๐
HOW DOES THE SERVER VERIFY AN ID? ๐ชช
References:
(DHC JBP RFC 539 -- 17644,3g:gy)
Discussion:
Okay so, the setup is that there's at least one host whose Mail server process does User Verification (JEW RFC 524, 17140,5f7:gy) ๐. Any process can reach that server, hand it someone's name plus a test Id, and the server tells them whether the two match. It's giving security checkpoint, but make it friendly ๐ง.
The NIC, for one, will without question provide this service. ๐ซถ
Once that's available, ANY FTP server process can ask for an ID command whenever it wants during the user-server chat, as long as it stays within the rules of the Protocol ๐. Here's how it goes: the server prompts for the Id, gets it, opens a connection to the User Verification Agent, shows it the Individual's name and claimed Id, gets back a yes or no, and then handles the original user process based on that answer. Iconic behavior honestly โจ.
Example:
Say a user process connects to UCLA-NMC's server process, invokes the Delivery function, and says the Author is Roberts at USC-ISI ๐ฌ.
UCLA-NMC decided that every Delivery transaction needs proof that the Author is who they claim to be ๐ต๏ธโโ๏ธ. So after the AUTHOR command, it prompts for an Id, and the user process replies with ID arpawheel <CA>.
Then UCLA-NMC's server connects to the NIC's server, runs the User Verification function there, and sends REQUESTOR roberts @ usc-isi <CA> and ID arpawheel <CA>. The NIC comes back saying the Id is wrong. UCLA-NMS then rejects the original ID command ๐.
Now, the Protocol does NOT make servers demand Ids. A server that doesn't care about proof of identity just never prompts for ID commands and treats any it gets as NOPs ๐. For those implementations, which is the current FTP mail protocol situation, no third-party interchanges are ever needed ๐ธ.
Each user has one Id that they use across the whole Net for sending and receiving mail ๐ฎ. It doesn't have to do anything else, though it can, on purpose or by coincidence ๐. A user's Id is separate from the passwords they use to get into accounts on various hosts. Totally different lanes ๐ฃ๏ธ.
Of course, a user could make their passwords and Id the same thing. The NIC, for example, might make users log in with NIC ident and Id, instead of host name and password like it does now. ๐
Bestie, James says it again because it matters: Ids have NOTHING to do with accounting ๐ซ๐ฐ. UCLA-NMC doesn't make the Author prove who they are so UCLA knows who to bill for the resources used in a Delivery. It does it so Jim White can't write a piece of mail and claim Larry Roberts wrote it ๐ค.
UCLA-NMC can require the user process to log in before delivering mail so it can bill them for the resources used ๐ธ. The commands for that are USER, PASS, and ACCT. But the billing part is separate from the part where you identify the Author, Clerk, and so on ๐งฉ.
For example, the NIC, acting as a Distribution Agent, might set up an account at UCLA-NMC to use whenever it delivers mail there. UCLA-NMC will bill ALL of the NIC's activity at UCLA to that account ๐งพ. But if the NIC delivers a piece of mail that claims Larry Roberts wrote it, UCLA-NMC might still want to check that claim. That's why the ID command exists ๐โจ.
ACK, PROGRESS REPORT, OR REPLY WITH NO REFERENCE SERIAL NUMBER ๐งพ
References:
(DHC JBP RFC 539 -- 17644,3h:gy)
Discussion:
A Delivery of type POSITIVE or NEGATIVE ACKNOWLEDGMENT, PROGRESS REPORT, or REPLY needs a Reference Serial Number from the user process ๐ข. If the server notices one is missing when the final EXIT command arrives, it should reject the EXIT command with an appropriate error response ๐ซ.
The same goes for the Distribution function: a Reference Serial Number MUST be specified if the Delivery Type is REPLY ๐. Ngl, that's a must-have ๐ .
James admits the Protocol document is missing this detail, and that's a fair callout ๐ซ . Consider this the fix ๐.
II. COMPLAINTS ๐
TERMINATING BOTH THE SUBSYSTEM AND FUNCTIONS WITH EXIT ๐ฆ
References:
(AAM -- 17404,)
Discussion:
Okay so bestie, the author is totally fine with having two terminating commands ๐ one to leave a function and one to exit the whole subsystem. They even suggest a command GO <CA> for ending a function. Iconic energy โจ
Still, they don't think you need to split the two cases just to stop human users from getting confused ๐
Even though the command language is ASCII and not binary, and even though they've borrowed Mike Padlipsky's idea of a Unified USER Level Protocol', they don't consider MP to be a protocol for humans to use directly ๐ง Nothing can stop a human from typing MP if they have access to a TELNET user program and are super determined, though ๐ญ
The part they actually want to steal from the UULP is its model of a single process with many subsystems. They're not interested in its philosophy of a Network-standard command language for human users. (That might be a good idea too, but it's not what they're focused on right now ๐)
Here's the vibe check: designing a protocol for an exchange between processes is not the same job as designing one to mediate a conversation between a process and a human user ๐ Using ASCII commands makes it look like the second problem is the one being solved, as it did for FTP, RJE, etc. And it's not ๐
USING TELNET GO AHEAD TO TERMINATE CERTAIN COMMANDS ๐ธ
References:
(AAM -- 17404,)
(RCC -- 17822,1a:gy)
(DHC JBP RFC 539 -- 17644,3b:gy)
Discussion:
Agreed ๐ซถ my bad!
Honestly the author has a strong distaste for the current FTP convention of ending commands whose argument might itself contain CR LF with CR LF . CR LF ๐ค That feels a little extra to them. They'd much prefer a single NVT character as the delimiter ๐
<CA2> only ends two MP commands, COMMENTS and TEXT. So some NVT character (ESC? EXT? ...) can easily be picked that doesn't need to appear in the argument to either of those commands. The Protocol can then prohibit it from appearing there ๐ฅ
SUBSYSTEM OR SEPARATE RJE-LIKE SERVER PROCESS ๐
References:
(DHC JBP RFC 539 -- 17644,4a:gy)
(AAM -- 17404,)
(ADO RFC 552 -- 17809,3:y)
Discussion:
Okay there are two separable issues here, and I'm living for the drama ๐
(1) Server Process Proliferation of Not?
If the Network community agrees that Padlipsky's UULP approach to protocol design and implementation is actually better than the current scheme, then we should start embracing it and reshuffle existing protocol implementations to match ๐ฆ The current scheme implements each new Network protocol as its own server process with its own contact socket. Even more important, NEW protocols (like MP) should be designed under the new standards, not the old ones โจ
The author thinks Buz Owen's suggestion (ADO RFC 552 -- 17809,3:y) is excellent ๐ซถ That's the one where a skeletal UULP gets defined, a socket is assigned to server processes that implement it, and MP is defined as a subsystem under it. They retract their own earlier suggestion (JEW RFC 524 -- 17140,3a2:gy) in favor of Owen's ๐
They also suggest that the latest revision of FTP (NJN RFC 542 -- 17759,) be implemented the same way, as a UULP subsystem ๐ Instead of being temporarily implemented under a new socket and later moved over to socket 3 like RFC 542 suggests, which feels like too much moving around to them ๐
(2) RJE's model for FTP Use or Not?
If both MP (as currently defined) and RJE became UULP subsystems, they'd still have different philosophies about how they use FTP ๐ The author proposed and fought for the current RJE model (meaning its use of FTP), and they (still) think it's elegant. Way more elegant than the one they came up with for MP ๐ญ
They also considered an alternative and tossed it SOLELY for efficiency reasons (maybe ignoring how clean the implementation is, tbh ๐). The idea was that the command currently defined as FILE <CA> (JEW RFC 524 -- 17140,4q2a:gy), both for specifying Content and for the Citation Retrieval function, would become FILE <fileaddr> <CA> instead ๐ง
The server is then obliged to retrieve the Content of the Mail from the designated server process via a third-party exchange.
The redefined FILE command would be similar to the LOCATION command, with one big difference: FILE would specify JUST Content (and none of the other Static Attributes). And the Server would have to retrieve the file in real time, i.e. BEFORE it sends its response to the FILE command ๐ The file could even be a temporary file the user process created.
This alternative would kill the need to borrow the BYTE, SOCK, PASV, TYPE, STRU, MODE, REST, and SITE commands from FTP (JEW RFC 524 -- 17140,7c1:gy) ๐ It also gives the user process the flexibility to specify a file at a host other than its own ๐
After some thought, though, the author agrees with Crocker and Postel that their version is the better implementation ๐
Here's the catch they point out. This implementation brings up the problem of reconciling two things: wanting to allow (in general) transfer of mail files without requiring a login, and a server's inability to tell that case apart from the general case of file retrieval (where lots of hosts will require a login) ๐ฌ
USE OF THE DATE FORM 1/2/73 (JAN 2 OR FEB 1?) ๐
References:
(RCC -- 17822,1b)
Discussion:
Agreed โจ
ORDER OF PARAMETER SPECIFICATION ๐ท
References:
(DHC JBP RFC 539 -- 17644,31:gy)
Discussion:
The Protocol doesn't actually impose an order on command specification within a function, even though Crocker and Postel say it does (see for example, JEW RFC 524 -- 17140,5f1b:gy) ๐
That said, after thinking about their suggestion only briefly, the author does feel it's appropriate to put some constraints on the order in which the user specifies parameters ๐ซถ Off the top of their head, the order Dynamic, Optional, Static seems good ๐
III. SUGGESTED ADDITIONS ๐ง
FORWARDING AT DELIVERY TIME ๐ฆ
References:
(DHC JBP 539 -- 17644,4b:g)
Discussion:
Adding support for forwarding mail at Delivery Time seems super useful to the author ๐ฅ That's different from forwarding sometime after Delivery in response to a specific Forward request (i.e., function).
As Crocker and Postel note, only one of the three mechanisms for that forwarding actually bears on the Protocol. The Protocol might still mention the other two and either encourage or discourage their use ๐
The author suggests a different reply format from the one Crocker and Postel proposed (DHC JBP RFC 539 -- 17644,4b3c2:gy) ๐ It looks like this:
476 <localname> -- is his location.
DEFAULT SIGNATURE SHOULD BE THE AUTHOR โ๏ธ
References:
(DHC JBP 539 -- 17644,3c:gy)
Discussion:
Agreed ๐
LEVELS OF INTERRUPT ๐จ
References:
(DHC JBP 539 -- 17644,3d:gy)
Discussion:
The author sees no value in defining numeric shades of urgency, unless the Protocol suggests some particular action the server might take for each one ๐
Flagging some mail as urgent only seems useless unless the MP server process (not the human recipient) takes some kind of special action for urgent mail, BEFORE the human recipient would otherwise be likely to read it โญ If you accept that argument, there's clearly no point in defining shades of urgency that only mean something to the human recipient ๐
Sure, any two human users could privately agree on what the meanings are. But the author thinks it's better to define those meanings formally or not at all ๐
WARNING THE SERVER OF THE SIZE OF MAIL ๐ฆ
References:
(DHC JBP RFC 539 -- 17644,3f:gy)
Discussion:
Agreed ๐ซถ Further suggestions as to the implementation?
DISCOURAGING SERVERS FROM REQUIRING LOGINS ๐
References:
(DHC JBP RFC 539 -- 17644,3j:gy)
Discussion:
Agreed ๐ This is not a new issue, bestie ๐ธ
IV. META-COMMENTS โจ
SIZE OF THE PROTOCOL DOCUMENT
References:
(RCC -- 17822,1e:gy)
Discussion:
Okay bestie, first I owe you an apology ๐ฅบ The format of the the Protocol document is totally different from older ones like FTP and RJE, and it is so not tutorial ๐ The glossary was a device I found useful while designing the Protocol. If everyone agrees on the substance, then friendlier documentation would have to be written ๐ My time was super tight, so that shaped how I went about everything.
As I find time, I want to define the minimum implementation subsets that Clements requests โจ For now, check out the command breakdown below. It covers the case where the server only permits the function that delivers mail to users on its host ๐ It has these attributes:
- It supports all of the functions of the current FTP mail protocol. In addition,
- It makes specification of author and title explicit, avoiding the current problem of multiple headers (one supplied by the server, the other embedded by the user in the text of the message),
- It allows the text of the message to reside at a third host, and
- It permits multiple recipients.
The breakdown is the following ๐
COMMANDS THAT MUST BE IMPLEMENTED
(Author and Title could be treated as NOPs)
To enter the Mail subsystem:
MAIL <CA>
To invoke the Delivery function:
DELIVER <CA>
To specify the text of the message:
FILE <CA>
LOCATION <fileaddr> <CA>
TEXT <string> <CA2>
To identify author(s), recipient(s), and title:
AUTHOR <individual> <CA>
RECIPIENT <individual> <CA>
TITLE <title> <CA>
To exit the function or subsystem:
ABORT <CA>
EXIT <CA>
COMMANDS THAT CAN BE TREATED AS NOPS
(they can legally appear in the Delivery function)
ACCESS <individual> <CA>
ACCESSTYPES <accesstypes> <CA>
CATALOG <catalog> <CA>
CLERK <individual> <CA>
COMMENTS <comments> <CA2>
CREATIONDATE <datetime> <CA>
DELIVERYTYPE <deliverytype> <CA>
DISPOSITION <disposition> <CA>
GENERALDELIVERY <CA>
GREETING <greeting> <CA>
ID <id> <CA>
REFERENCESERIAL <serialnumber> <CA>
SERIAL <serialnumber> <CA>
SIGNATURE <signature> <CA>
COMMANDS THAT NEEDN'T BE RECOGNIZED
(they cannot legally appear in the Delivery function)
Commands that invoke unsupported functions:
DISTRIBUTE <CA>
FORWARD <CA>
RECORD <CA>
RETRIEVE <CA>
UPDATE <CA>
VERIFY <CA>
Miscellaneous parameter specification commands:
ACKCONDITION <ackcondition> <CA>
ACKTYPE <acktype> <CA>
CITATIONTEMPLATE <citationtemp> <CA>
CUTOFF <interval> <CA>
FORWARDEE <individual> <CA>
MONITOR <individual> <CA>
PATHNAME <pathname> <CA>
REPORTINTERVAL <interval> <CA>
REQUESTOR <individual> <CA>
UPDATETYPE <updatetype> <CA>
CA AND CA2 NOT EXPLAINED SOON ENOUGH
References:
(DHC JBP RFC 539 -- 17644,3a:gy)
Discussion:
Agreed ๐
CHANGE 'INTERRUPT' TO 'URGENT' OR 'PRIORITY'
References:
(DHC JBP RFC 539 -- 17644,3e:gy)
Discussion:
Agreed ๐ฅ How about 'URGENT' ๐
CARRY STATIC/DYNAMIC ATTRIBUTE DISTINCTION INTO FORMAL SYNTAX
References:
(DHC JBP RFC 539 -- 17644,3i:gy)
Discussion:
Agreed ๐ฆ
CRYPTIC DEFAULT DESCRIPTIONS
References:
(DHC JBP RFC 539 -- 17644,3k:gy)
Discussion:
Agreed ๐ซถ
[ This RFC was put into machine readable form for entry ] [ into the online RFC archives by Sergio Kleiman 12/99 ]
๐ฆ where this page comes from
- ietf: rfc555 1973-07
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms