RFC 1528
Principles of Operation for the TPC.INT Subdomain: Remote Printing -- Technical Procedures
RFC 1528 ๐ Principles of Operation for the TPC.INT Subdomain: Remote Printing -- Technical Procedures
Okay bestie, let's get into it ๐ This RFC came out of the Network Working Group in October 1993, and it's classed as Experimental ๐งช Carl Malamud (Internet Multicasting Service) and Marshall Rose (Dover Beach Consulting, Inc.) wrote it, and it obsoletes RFC 1486 ๐
Status of This Memo โจ
This memo defines an Experimental Protocol for the Internet community, so it doesn't specify an Internet standard ๐ฆ They're asking for discussion and suggestions for improvement. For the standardization state and status of this protocol, check the current edition of "Internet Official Protocol Standards." Distribution of this memo is unlimited ๐
Table of Contents ๐
1. Introduction .......................................... 2
2. Naming, Addressing, and Routing ....................... 2
2.1 Addressing ........................................... 2
2.2 Routing .............................................. 3
3. Procedure ............................................. 3
3.1 Content-Types ........................................ 4
3.2 Generating a Cover-Sheet ............................. 4
3.3 Return Receipt ....................................... 6
4. Usage Examples ........................................ 6
4.1 Explicit Cover Sheet ................................. 6
4.2 Implicit Cover Sheet ................................. 7
4.3 Minimal, Text-only ................................... 7
5. Prototype Implementation .............................. 7
6. Future Issues ......................................... 9
7. Security Considerations ............................... 9
8. Acknowledgements ...................................... 9
9. References ............................................ 9
10. Authors' Addresses .................................. 10
A. The application/remote-printing Content-Type ......... 11
B. The image/tiff Content-Type .......................... 12
1. Introduction ๐ธ
Email is the preferred way to do third-party communication, but sometimes you need to print something in hard-copy form at a remote location ๐ The remote output device could be a standard line printer, a printer with multiple fonts and faces, a printer that can reproduce graphics, or a facsimile device. The output might also come with info that identifies the intended recipient ๐ซถ This memo describes a technique for "remote printing" that uses the Internet mail infrastructure. It focuses especially on the case where the remote printers are connected to the international telephone network โ๏ธ
2. Naming, Addressing, and Routing ๐ง
A printer is identified by a telephone number that corresponds to a G3-facsimile device connected to the international telephone network, for example:
+1 415 968 2510
Here, "+1" is the IDDD country code, and the rest of the string is a telephone number within that country ๐
2.1 Addressing ๐
The number gets used to build the address of a remote printer server, and that address becomes the recipient address for the message. For example, the address can be either remote-printer@0.1.5.2.8.6.9.5.1.4.1.tpc.int or remote-printer.ATOM@0.1.5.2.8.6.9.5.1.4.1.tpc.int.
Here, "ATOM" is an optional RFC 822 atom [1]. It's an opaque string used for recipient identification when a cover-sheet gets generated. The domain-part is built by reversing the telephone number, converting each digit into a domain-label, and placing those labels under "tpc.int." ๐
Note that the mailbox syntax is purposefully restricted for the sake of pragmatism ๐ ๏ธ To paraphrase RFC 822, an atom is defined as:
atom = 1*atomchar
atomchar= <any upper or lowercase alphabetic character
(A-Z a-z)>
/ <any digit (0-9)>
/ "!" / "#" / "$" / "%" / "&" / "'" / "*" / "+"
/ "-" / "/" / "=" / "?" / "^" / "_" / "`" / "{"
/ "|" / "}" / "~"
Finally, some Internet mail software (especially gateways from outside the Internet) puts strict limits on the size of a mailbox-string ๐ So originating user agents should take care to limit the local-part to no more than 70 or so characters ๐
2.2 Routing ๐ฃ๏ธ
The message gets routed in exactly the same way as all other electronic mail, which means it uses the MX algorithm [2]. A remote printer server might be able to reach lots of printers, so the wildcarding facilities of the DNS [3,4] are used for that ๐ For example, say a remote printer server living at "dbc.mtview.ca.us" is willing to access any printer whose telephone number starts with the prefix +1 415 968. Then this resource record might be present:
*.8.6.9.5.1.4.1.tpc.int. IN MX 10 dbc.mtview.ca.us.
If several remote printer servers were willing to access any printer in that prefix, then multiple MX resource records would be present ๐
It should be noted that a wildcard RR matching a remote printer server's address doesn't mean the telephone number is valid. And even if the number is valid, it doesn't mean a G3-facsimile device is actually connected to it ๐คทโโ๏ธ
3. Procedure ๐
When information is going to be remotely printed, the user application builds an RFC 822 message that contains a "Message-ID" field ๐
If the local-part of the address doesn't contain an opaque string for recipient identification, then the body must consist of "multipart/mixed" content [5] with two parts. The first part is an "application/remote-printing" content-type (defined in Appendix A), which gets used to generate a cover-sheet. The second part is an arbitrary content-type that matches the information to be printed. If the local-part of the address does contain an opaque string for recipient identification, then the body just consists of an arbitrary content-type matching the information to be printed โจ
Either way, the message then gets sent to the remote printer server's electronic mail address ๐จ
3.1 Content-Types ๐
Not all content-types have a natural printing representation, like "audio" or "video" content, and that's the reason for this rule ๐ The second part of the "multipart/mixed" content should be one of the following:
text/plain, message/rfc822, application/postscript image/tiff
(defined in Appendix B), any multipart.
Note that:
- (1) With the "text/plain" content-type, not all character sets may be available for printing.
- (2) With the "message" content-type, the subordinate content will be processed recursively.
- (3) With the "application/postscript" content-type, the remote printer server should evaluate the contents in a safe execution environment ๐
- (4) With the "multipart" content-type, the subordinate contents will be processed recursively. For a "multipart/mixed" or "multipart/digest" content, each subordinate content starts on a new page. For a "multipart/parallel" content, all subordinate contents will, if possible, start on the same page. Naturally, when processing a "multipart/alternative" content, only one subordinate content will be printed ๐
3.2 Generating a Cover-Sheet ๐ช
If the "application/remote-printing" content-type is present, it has all the info needed to generate a cover-sheet. Otherwise, the cover-sheet must be generated from whatever other information is available ๐งพ
Typically, a cover sheet has three sections:
- information identifying the originator;
- information identifying the recipient; and,
- additional information supplied by the remote printer server.
To identify the originator, the remote printer server uses the message headers ๐ It usually strips any trace headers (that is, "Received" and "Return-Path") and then re-orders the remaining headers, starting with the "From" header.
To identify the recipient, the remote printer server consults the opaque string in the local-part of its address. For example, if the address is:
remote-printer.Arlington_Hewes/Room_403@0.1.5.2.8.6.9.5.1.4.1.tpc.int
then the opaque string consulted is Arlington_Hewes/Room_403 ๐
When generating a cover-sheet from this opaque string, the remote printer server interprets an underscore character ("_") as a space, and a solidus character ("/") as an end-of-line sequence. Two consecutive underscore characters in the opaque string get interpreted as a single underscore, and two consecutive solidus characters get interpreted as a single solidus ๐ง So the opaque string Arlington_Hewes/Room_403 might appear on the cover-sheet as:
To: Arlington Hewes
Room 403
3.3 Return Receipt ๐
When the remote printer server finishes processing, a message is sent back to the originator. It says either that the message was successfully sent to the facsimile device, or that it failed, along with an explanation. For example, after several repeated attempts, there was no answer ๐ฌ
Part 1 ends here, bestie! ๐ Part 2 is coming next and it covers Section 4 (Usage Examples) through Appendix B, so stay tuned ๐ง๐
5. Prototype Implementation โจ
okay so good news bestie, there's an openly available prototype implementation ๐ and you can literally go grab it. Here are the MIME instructions for retrieving it:
MIME-Version: 1.0
Content-Type: multipart/alternative;
boundary="----- =_aaaaaaaaaa0"
Content-Description: pointers to ftp and e-mail access
------- =_aaaaaaaaaa0
Content-Type: message/external-body;
access-type="mail-server";
server="archive-server@ftp.ics.uci.edu"
Content-Type: application/octet-stream; type="tar";
x-conversions="x-compress"
Content-ID: <4599.735726126.1@dbc.mtview.ca.us>
mimesend mrose/tpc/rp.tar.Z
------- =_aaaaaaaaaa0
Content-Type: message/external-body;
access-type="anon-ftp"; name="rp.tar.Z";
directory="mrose/tpc"; site="ftp.ics.uci.edu"
Content-Type: application/octet-stream; type="tar";
x-conversions="x-compress"
Content-ID: <4599.735726126.2@dbc.mtview.ca.us>
------- =_aaaaaaaaaa0--
ngl this package is giving UNIX vibes ๐ง. It was built and tested under SunOS, and it pairs with an openly available facsimile package (Sam Leffler's FlexFAX package) ๐ . It has info for sites acting as either client or server participants, plus zone administrators ๐ง.
6. Future Issues ๐ฎ
okay so there are a few things this doc literally doesn't address yet ๐ like:
- determining which content-types and character sets are supported by a remote printer server;
- introduction of authentication, integrity, privacy, authorization, and accounting services;
- preferential selection of a remote printer server; and,
- aggregation of multiple print recipients in a single message.
Future work might dig into these in detail ๐.
7. Security Considerations ๐จ
โ ๏ธ Heads up, bestie: Internet mail may be subject to monitoring by third parties, and in particular, message relays. Yes, that means someone in the middle could be watching ๐. Treat it accordingly ๐ญ.
8. Acknowledgements ๐ซถ
This document is based on RFC 1486, "An Experiment in Remote Printing". Shoutout to the original work that made all of this possible ๐ธ.
9. References ๐
[1] Crocker, D., "Standard for the Format of ARPA Internet Text Messages", STD 11, RFC 822, UDEL, August 1982.
[2] Partridge, C., "Mail Routing and the Domain System" STD 14, RFC 974, CSNET CIC BBN, January 1986.
[3] Mockapetris, P., "Domain Names -- Concepts and Facilities", STD 13, RFC 1034, USC/Information Sciences Institute, November 1987).
[4] Mockapetris, P., "Domain Names -- Implementation and Specification", STD 13, RFC 1035, USC/Information Sciences Institute, November 1987.
[5] Borenstein, N., and N. Freed, "MIME (Multipurpose Internet Mail Extensions) Part One: Mechanisms for Specifying and Describing the Format of Internet Message Bodies", RFC 1521, Bellcore, Innosoft, September 1993.
10. Authors' Addresses ๐
Carl Malamud
Internet Multicasting Service
Suite 1155, The National Press Building
Washington, DC 20045
US
Phone: +1 202 628 2044
Fax: +1 202 628 2042
Email: carl@malamud.com
Marshall T. Rose
Dover Beach Consulting, Inc.
420 Whisman Court
Mountain View, CA 94043-2186
US
Phone: +1 415 968 1052
Fax: +1 415 968 2510
Email: mrose@dbc.mtview.ca.us
Appendix A. The application/remote-printing Content-Type ๐
- (1) MIME type name: application
- (2) MIME subtype name: remote-printing
- (3) Required parameters: none
- (4) Optional parameters: none
- (5) Encoding considerations: 7bit preferred
- (6) Security considerations: none
- (7) Specification:
The "application/remote-printing" content-type contains originator and recipient information used when generating a cover-sheet ๐งพ. Using the ABNF notation of RFC 822, the syntax for this content is:
<content> ::= <recipient-info> CRLF
<originator-info>
[CRLF <cover-info>]
<recipient-info> ::= "Recipient" ":" <value> CRLF
<address-info>
<originator-info> ::= "Originator" ":" <value> CRLF
<address-info>
<address-info> ::= ["Title" ":" <value> CRLF]
["Department" ":" <value> CRLF]
["Organization" ":" <value> CRLF]
["Mailstop" ":" <value> CRLF]
["Address" ":" <value> CRLF]
["Telephone" ":" <value> CRLF]
"Facsimile" ":" <value> CRLF
["Email" ":" <value> CRLF]
<value> ::= *text
[CRLF LWSP-char <value> ]
<cover-info> ::= *(*text CRLF)
Note that the value of the Email field is an RFC 822 mailbox address ๐.
Appendix B. The image/tiff Content-Type ๐ฆ
- (1) MIME type name: image
- (2) MIME subtype name: tiff
- (3) Required parameters: none
- (4) Optional parameters: none
- (5) Encoding considerations: base64
- (6) Security considerations: none
- (7) Published specification: TIFF class F, as defined in:
Tag Image File Format (TIFF) revision 6.0
Developer's Desk
Aldus Corporation
411 First Ave. South
Suite 200
Seattle, WA 98104
206-622-5500
that's the whole thing bestie ๐โจ we did it ๐
๐ฆ where this page comes from
- ietf: rfc1528 1993-10
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms