rev |
line source |
yuuji@0
|
1
|
yuuji@0
|
2
|
yuuji@0
|
3
|
yuuji@0
|
4
|
yuuji@0
|
5
|
yuuji@0
|
6
|
yuuji@0
|
7 Network Working Group A. Gulbrandsen
|
yuuji@0
|
8 Request for Comments: 4978 Oryx Mail Systems GmbH
|
yuuji@0
|
9 Category: Standards Track August 2007
|
yuuji@0
|
10
|
yuuji@0
|
11
|
yuuji@0
|
12 The IMAP COMPRESS Extension
|
yuuji@0
|
13
|
yuuji@0
|
14 Status of this Memo
|
yuuji@0
|
15
|
yuuji@0
|
16 This document specifies an Internet standards track protocol for the
|
yuuji@0
|
17 Internet community, and requests discussion and suggestions for
|
yuuji@0
|
18 improvements. Please refer to the current edition of the "Internet
|
yuuji@0
|
19 Official Protocol Standards" (STD 1) for the standardization state
|
yuuji@0
|
20 and status of this protocol. Distribution of this memo is unlimited.
|
yuuji@0
|
21
|
yuuji@0
|
22 Abstract
|
yuuji@0
|
23
|
yuuji@0
|
24 The COMPRESS extension allows an IMAP connection to be effectively
|
yuuji@0
|
25 and efficiently compressed.
|
yuuji@0
|
26
|
yuuji@0
|
27 Table of Contents
|
yuuji@0
|
28
|
yuuji@0
|
29 1. Introduction and Overview .......................................2
|
yuuji@0
|
30 2. Conventions Used in This Document ...............................2
|
yuuji@0
|
31 3. The COMPRESS Command ............................................3
|
yuuji@0
|
32 4. Compression Efficiency ..........................................4
|
yuuji@0
|
33 5. Formal Syntax ...................................................6
|
yuuji@0
|
34 6. Security Considerations .........................................6
|
yuuji@0
|
35 7. IANA Considerations .............................................6
|
yuuji@0
|
36 8. Acknowledgements ................................................7
|
yuuji@0
|
37 9. References ......................................................7
|
yuuji@0
|
38 9.1. Normative References .......................................7
|
yuuji@0
|
39 9.2. Informative References .....................................7
|
yuuji@0
|
40
|
yuuji@0
|
41
|
yuuji@0
|
42
|
yuuji@0
|
43
|
yuuji@0
|
44
|
yuuji@0
|
45
|
yuuji@0
|
46
|
yuuji@0
|
47
|
yuuji@0
|
48
|
yuuji@0
|
49
|
yuuji@0
|
50
|
yuuji@0
|
51
|
yuuji@0
|
52
|
yuuji@0
|
53
|
yuuji@0
|
54
|
yuuji@0
|
55
|
yuuji@0
|
56
|
yuuji@0
|
57
|
yuuji@0
|
58 Gulbrandsen Standards Track [Page 1]
|
yuuji@0
|
59
|
yuuji@0
|
60 RFC 4978 The IMAP COMPRESS Extension August 2007
|
yuuji@0
|
61
|
yuuji@0
|
62
|
yuuji@0
|
63 1. Introduction and Overview
|
yuuji@0
|
64
|
yuuji@0
|
65 A server which supports the COMPRESS extension indicates this with
|
yuuji@0
|
66 one or more capability names consisting of "COMPRESS=" followed by a
|
yuuji@0
|
67 supported compression algorithm name as described in this document.
|
yuuji@0
|
68
|
yuuji@0
|
69 The goal of COMPRESS is to reduce the bandwidth usage of IMAP.
|
yuuji@0
|
70
|
yuuji@0
|
71 Compared to PPP compression (see [RFC1962]) and modem-based
|
yuuji@0
|
72 compression (see [MNP] and [V42BIS]), COMPRESS offers much better
|
yuuji@0
|
73 compression efficiency. COMPRESS can be used together with Transport
|
yuuji@0
|
74 Security Layer (TLS) [RFC4346], Simple Authentication and Security
|
yuuji@0
|
75 layer (SASL) encryption, Virtual Private Networks (VPNs), etc.
|
yuuji@0
|
76 Compared to TLS compression [RFC3749], COMPRESS has the following
|
yuuji@0
|
77 (dis)advantages:
|
yuuji@0
|
78
|
yuuji@0
|
79 - COMPRESS can be implemented easily both by IMAP servers and
|
yuuji@0
|
80 clients.
|
yuuji@0
|
81
|
yuuji@0
|
82 - IMAP COMPRESS benefits from an intimate knowledge of the IMAP
|
yuuji@0
|
83 protocol's state machine, allowing for dynamic and aggressive
|
yuuji@0
|
84 optimization of the underlying compression algorithm's parameters.
|
yuuji@0
|
85
|
yuuji@0
|
86 - When the TLS layer implements compression, any protocol using that
|
yuuji@0
|
87 layer can transparently benefit from that compression (e.g., SMTP
|
yuuji@0
|
88 and IMAP). COMPRESS is specific to IMAP.
|
yuuji@0
|
89
|
yuuji@0
|
90 In order to increase interoperation, it is desirable to have as few
|
yuuji@0
|
91 different compression algorithms as possible, so this document
|
yuuji@0
|
92 specifies only one. The DEFLATE algorithm (defined in [RFC1951]) is
|
yuuji@0
|
93 standard, widely available and fairly efficient, so it is the only
|
yuuji@0
|
94 algorithm defined by this document.
|
yuuji@0
|
95
|
yuuji@0
|
96 In order to increase interoperation, IMAP servers that advertise this
|
yuuji@0
|
97 extension SHOULD also advertise the TLS DEFLATE compression mechanism
|
yuuji@0
|
98 as defined in [RFC3749]. IMAP clients MAY use either COMPRESS or TLS
|
yuuji@0
|
99 compression, however, if the client and server support both, it is
|
yuuji@0
|
100 RECOMMENDED that the client choose TLS compression.
|
yuuji@0
|
101
|
yuuji@0
|
102 The extension adds one new command (COMPRESS) and no new responses.
|
yuuji@0
|
103
|
yuuji@0
|
104 2. Conventions Used in This Document
|
yuuji@0
|
105
|
yuuji@0
|
106 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
|
yuuji@0
|
107 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
|
yuuji@0
|
108 document are to be interpreted as described in [RFC2119].
|
yuuji@0
|
109
|
yuuji@0
|
110 Formal syntax is defined by [RFC4234] as modified by [RFC3501].
|
yuuji@0
|
111
|
yuuji@0
|
112
|
yuuji@0
|
113
|
yuuji@0
|
114 Gulbrandsen Standards Track [Page 2]
|
yuuji@0
|
115
|
yuuji@0
|
116 RFC 4978 The IMAP COMPRESS Extension August 2007
|
yuuji@0
|
117
|
yuuji@0
|
118
|
yuuji@0
|
119 In the examples, "C:" and "S:" indicate lines sent by the client and
|
yuuji@0
|
120 server respectively. "[...]" denotes elision.
|
yuuji@0
|
121
|
yuuji@0
|
122 3. The COMPRESS Command
|
yuuji@0
|
123
|
yuuji@0
|
124 Arguments: Name of compression mechanism: "DEFLATE".
|
yuuji@0
|
125
|
yuuji@0
|
126 Responses: None
|
yuuji@0
|
127
|
yuuji@0
|
128 Result: OK The server will compress its responses and expects the
|
yuuji@0
|
129 client to compress its commands.
|
yuuji@0
|
130 NO Compression is already active via another layer.
|
yuuji@0
|
131 BAD Command unknown, invalid or unknown argument, or COMPRESS
|
yuuji@0
|
132 already active.
|
yuuji@0
|
133
|
yuuji@0
|
134 The COMPRESS command instructs the server to use the named
|
yuuji@0
|
135 compression mechanism ("DEFLATE" is the only one defined) for all
|
yuuji@0
|
136 commands and/or responses after COMPRESS.
|
yuuji@0
|
137
|
yuuji@0
|
138 The client MUST NOT send any further commands until it has seen the
|
yuuji@0
|
139 result of COMPRESS. If the response was OK, the client MUST compress
|
yuuji@0
|
140 starting with the first command after COMPRESS. If the server
|
yuuji@0
|
141 response was BAD or NO, the client MUST NOT turn on compression.
|
yuuji@0
|
142
|
yuuji@0
|
143 If the server responds NO because it knows that the same mechanism is
|
yuuji@0
|
144 active already (e.g., because TLS has negotiated the same mechanism),
|
yuuji@0
|
145 it MUST send COMPRESSIONACTIVE as resp-text-code (see [RFC3501],
|
yuuji@0
|
146 Section 7.1), and the resp-text SHOULD say which layer compresses.
|
yuuji@0
|
147
|
yuuji@0
|
148 If the server issues an OK response, the server MUST compress
|
yuuji@0
|
149 starting immediately after the CRLF which ends the tagged OK
|
yuuji@0
|
150 response. (Responses issued by the server before the OK response
|
yuuji@0
|
151 will, of course, still be uncompressed.) If the server issues a BAD
|
yuuji@0
|
152 or NO response, the server MUST NOT turn on compression.
|
yuuji@0
|
153
|
yuuji@0
|
154 For DEFLATE (as for many other compression mechanisms), the
|
yuuji@0
|
155 compressor can trade speed against quality. When decompressing there
|
yuuji@0
|
156 isn't much of a tradeoff. Consequently, the client and server are
|
yuuji@0
|
157 both free to pick the best reasonable rate of compression for the
|
yuuji@0
|
158 data they send.
|
yuuji@0
|
159
|
yuuji@0
|
160 When COMPRESS is combined with TLS (see [RFC4346]) or SASL (see
|
yuuji@0
|
161 [RFC4422]) security layers, the sending order of the three extensions
|
yuuji@0
|
162 MUST be first COMPRESS, then SASL, and finally TLS. That is, before
|
yuuji@0
|
163 data is transmitted it is first compressed. Second, if a SASL
|
yuuji@0
|
164 security layer has been negotiated, the compressed data is then
|
yuuji@0
|
165 signed and/or encrypted accordingly. Third, if a TLS security layer
|
yuuji@0
|
166 has been negotiated, the data from the previous step is signed and/or
|
yuuji@0
|
167
|
yuuji@0
|
168
|
yuuji@0
|
169
|
yuuji@0
|
170 Gulbrandsen Standards Track [Page 3]
|
yuuji@0
|
171
|
yuuji@0
|
172 RFC 4978 The IMAP COMPRESS Extension August 2007
|
yuuji@0
|
173
|
yuuji@0
|
174
|
yuuji@0
|
175 encrypted accordingly. When receiving data, the processing order
|
yuuji@0
|
176 MUST be reversed. This ensures that before sending, data is
|
yuuji@0
|
177 compressed before it is encrypted, independent of the order in which
|
yuuji@0
|
178 the client issues COMPRESS, AUTHENTICATE, and STARTTLS.
|
yuuji@0
|
179
|
yuuji@0
|
180 The following example illustrates how commands and responses are
|
yuuji@0
|
181 compressed during a simple login sequence:
|
yuuji@0
|
182
|
yuuji@0
|
183 S: * OK [CAPABILITY IMAP4REV1 STARTTLS COMPRESS=DEFLATE]
|
yuuji@0
|
184 C: a starttls
|
yuuji@0
|
185 S: a OK TLS active
|
yuuji@0
|
186
|
yuuji@0
|
187 From this point on, everything is encrypted.
|
yuuji@0
|
188
|
yuuji@0
|
189 C: b login arnt tnra
|
yuuji@0
|
190 S: b OK Logged in as arnt
|
yuuji@0
|
191 C: c compress deflate
|
yuuji@0
|
192 S: d OK DEFLATE active
|
yuuji@0
|
193
|
yuuji@0
|
194 From this point on, everything is compressed before being
|
yuuji@0
|
195 encrypted.
|
yuuji@0
|
196
|
yuuji@0
|
197 The following example demonstrates how a server may refuse to
|
yuuji@0
|
198 compress twice:
|
yuuji@0
|
199
|
yuuji@0
|
200 S: * OK [CAPABILITY IMAP4REV1 STARTTLS COMPRESS=DEFLATE]
|
yuuji@0
|
201 [...]
|
yuuji@0
|
202 C: c compress deflate
|
yuuji@0
|
203 S: c NO [COMPRESSIONACTIVE] DEFLATE active via TLS
|
yuuji@0
|
204
|
yuuji@0
|
205 4. Compression Efficiency
|
yuuji@0
|
206
|
yuuji@0
|
207 This section is informative, not normative.
|
yuuji@0
|
208
|
yuuji@0
|
209 IMAP poses some unusual problems for a compression layer.
|
yuuji@0
|
210
|
yuuji@0
|
211 Upstream is fairly simple. Most IMAP clients send the same few
|
yuuji@0
|
212 commands again and again, so any compression algorithm that can
|
yuuji@0
|
213 exploit repetition works efficiently. The APPEND command is an
|
yuuji@0
|
214 exception; clients that send many APPEND commands may want to
|
yuuji@0
|
215 surround large literals with flushes in the same way as is
|
yuuji@0
|
216 recommended for servers later in this section.
|
yuuji@0
|
217
|
yuuji@0
|
218 Downstream has the unusual property that several kinds of data are
|
yuuji@0
|
219 sent, confusing all dictionary-based compression algorithms.
|
yuuji@0
|
220
|
yuuji@0
|
221
|
yuuji@0
|
222
|
yuuji@0
|
223
|
yuuji@0
|
224
|
yuuji@0
|
225
|
yuuji@0
|
226 Gulbrandsen Standards Track [Page 4]
|
yuuji@0
|
227
|
yuuji@0
|
228 RFC 4978 The IMAP COMPRESS Extension August 2007
|
yuuji@0
|
229
|
yuuji@0
|
230
|
yuuji@0
|
231 One type is IMAP responses. These are highly compressible; zlib
|
yuuji@0
|
232 using its least CPU-intensive setting compresses typical responses to
|
yuuji@0
|
233 25-40% of their original size.
|
yuuji@0
|
234
|
yuuji@0
|
235 Another type is email headers. These are equally compressible, and
|
yuuji@0
|
236 benefit from using the same dictionary as the IMAP responses.
|
yuuji@0
|
237
|
yuuji@0
|
238 A third type is email body text. Text is usually fairly short and
|
yuuji@0
|
239 includes much ASCII, so the same compression dictionary will do a
|
yuuji@0
|
240 good job here, too. When multiple messages in the same thread are
|
yuuji@0
|
241 read at the same time, quoted lines etc. can often be compressed
|
yuuji@0
|
242 almost to zero.
|
yuuji@0
|
243
|
yuuji@0
|
244 Finally, attachments (non-text email bodies) are transmitted, either
|
yuuji@0
|
245 in binary form or encoded with base-64.
|
yuuji@0
|
246
|
yuuji@0
|
247 When attachments are retrieved in binary form, DEFLATE may be able to
|
yuuji@0
|
248 compress them, but the format of the attachment is usually not IMAP-
|
yuuji@0
|
249 like, so the dictionary built while compressing IMAP does not help.
|
yuuji@0
|
250 The compressor has to adapt its dictionary from IMAP to the
|
yuuji@0
|
251 attachment's format, and then back. A few file formats aren't
|
yuuji@0
|
252 compressible at all using deflate, e.g., .gz, .zip, and .jpg files.
|
yuuji@0
|
253
|
yuuji@0
|
254 When attachments are retrieved in base-64 form, the same problems
|
yuuji@0
|
255 apply, but the base-64 encoding adds another problem. 8-bit
|
yuuji@0
|
256 compression algorithms such as deflate work well on 8-bit file
|
yuuji@0
|
257 formats, however base-64 turns a file into something resembling 6-bit
|
yuuji@0
|
258 bytes, hiding most of the 8-bit file format from the compressor.
|
yuuji@0
|
259
|
yuuji@0
|
260 When using the zlib library (see [RFC1951]), the functions
|
yuuji@0
|
261 deflateInit2(), deflate(), inflateInit2(), and inflate() suffice to
|
yuuji@0
|
262 implement this extension. The windowBits value must be in the range
|
yuuji@0
|
263 -8 to -15, or else deflateInit2() uses the wrong format.
|
yuuji@0
|
264 deflateParams() can be used to improve compression rate and resource
|
yuuji@0
|
265 use. The Z_FULL_FLUSH argument to deflate() can be used to clear the
|
yuuji@0
|
266 dictionary (the receiving peer does not need to do anything).
|
yuuji@0
|
267
|
yuuji@0
|
268 A client can improve downstream compression by implementing BINARY
|
yuuji@0
|
269 (defined in [RFC3516]) and using FETCH BINARY instead of FETCH BODY.
|
yuuji@0
|
270 In the author's experience, the improvement ranges from 5% to 40%
|
yuuji@0
|
271 depending on the attachment being downloaded.
|
yuuji@0
|
272
|
yuuji@0
|
273 A server can improve downstream compression if it hints to the
|
yuuji@0
|
274 compressor that the data type is about to change strongly, e.g., by
|
yuuji@0
|
275 sending a Z_FULL_FLUSH at the start and end of large non-text
|
yuuji@0
|
276 literals (before and after '*CHAR8' in the definition of literal in
|
yuuji@0
|
277 RFC 3501, page 86). Small literals are best left alone. A possible
|
yuuji@0
|
278 boundary is 5k.
|
yuuji@0
|
279
|
yuuji@0
|
280
|
yuuji@0
|
281
|
yuuji@0
|
282 Gulbrandsen Standards Track [Page 5]
|
yuuji@0
|
283
|
yuuji@0
|
284 RFC 4978 The IMAP COMPRESS Extension August 2007
|
yuuji@0
|
285
|
yuuji@0
|
286
|
yuuji@0
|
287 A server can improve the CPU efficiency both of the server and the
|
yuuji@0
|
288 client if it adjusts the compression level (e.g., using the
|
yuuji@0
|
289 deflateParams() function in zlib) at these points, to avoid trying to
|
yuuji@0
|
290 compress incompressible attachments. A very simple strategy is to
|
yuuji@0
|
291 change the level to 0 at the start of a literal provided the first
|
yuuji@0
|
292 two bytes are either 0x1F 0x8B (as in deflate-compressed files) or
|
yuuji@0
|
293 0xFF 0xD8 (JPEG), and to keep it at 1-5 the rest of the time. More
|
yuuji@0
|
294 complex strategies are possible.
|
yuuji@0
|
295
|
yuuji@0
|
296 5. Formal Syntax
|
yuuji@0
|
297
|
yuuji@0
|
298 The following syntax specification uses the Augmented Backus-Naur
|
yuuji@0
|
299 Form (ABNF) notation as specified in [RFC4234]. This syntax augments
|
yuuji@0
|
300 the grammar specified in [RFC3501]. [RFC4234] defines SP and
|
yuuji@0
|
301 [RFC3501] defines command-auth, capability, and resp-text-code.
|
yuuji@0
|
302
|
yuuji@0
|
303 Except as noted otherwise, all alphabetic characters are case-
|
yuuji@0
|
304 insensitive. The use of upper or lower case characters to define
|
yuuji@0
|
305 token strings is for editorial clarity only. Implementations MUST
|
yuuji@0
|
306 accept these strings in a case-insensitive fashion.
|
yuuji@0
|
307
|
yuuji@0
|
308 command-auth =/ compress
|
yuuji@0
|
309
|
yuuji@0
|
310 compress = "COMPRESS" SP algorithm
|
yuuji@0
|
311
|
yuuji@0
|
312 capability =/ "COMPRESS=" algorithm
|
yuuji@0
|
313 ;; multiple COMPRESS capabilities allowed
|
yuuji@0
|
314
|
yuuji@0
|
315 algorithm = "DEFLATE"
|
yuuji@0
|
316
|
yuuji@0
|
317 resp-text-code =/ "COMPRESSIONACTIVE"
|
yuuji@0
|
318
|
yuuji@0
|
319 Note that due the syntax of capability names, future algorithm names
|
yuuji@0
|
320 must be atoms.
|
yuuji@0
|
321
|
yuuji@0
|
322 6. Security Considerations
|
yuuji@0
|
323
|
yuuji@0
|
324 As for TLS compression [RFC3749].
|
yuuji@0
|
325
|
yuuji@0
|
326 7. IANA Considerations
|
yuuji@0
|
327
|
yuuji@0
|
328 The IANA has added COMPRESS=DEFLATE to the list of IMAP capabilities.
|
yuuji@0
|
329
|
yuuji@0
|
330
|
yuuji@0
|
331
|
yuuji@0
|
332
|
yuuji@0
|
333
|
yuuji@0
|
334
|
yuuji@0
|
335
|
yuuji@0
|
336
|
yuuji@0
|
337
|
yuuji@0
|
338 Gulbrandsen Standards Track [Page 6]
|
yuuji@0
|
339
|
yuuji@0
|
340 RFC 4978 The IMAP COMPRESS Extension August 2007
|
yuuji@0
|
341
|
yuuji@0
|
342
|
yuuji@0
|
343 8. Acknowledgements
|
yuuji@0
|
344
|
yuuji@0
|
345 Eric Burger, Dave Cridland, Tony Finch, Ned Freed, Philip Guenther,
|
yuuji@0
|
346 Randall Gellens, Tony Hansen, Cullen Jennings, Stephane Maes, Alexey
|
yuuji@0
|
347 Melnikov, Lyndon Nerenberg, and Zoltan Ordogh have all helped with
|
yuuji@0
|
348 this document.
|
yuuji@0
|
349
|
yuuji@0
|
350 The author would also like to thank various people in the rooms at
|
yuuji@0
|
351 meetings, whose help is real, but not reflected in the author's
|
yuuji@0
|
352 mailbox.
|
yuuji@0
|
353
|
yuuji@0
|
354 9. References
|
yuuji@0
|
355
|
yuuji@0
|
356 9.1. Normative References
|
yuuji@0
|
357
|
yuuji@0
|
358 [RFC1951] Deutsch, P., "DEFLATE Compressed Data Format Specification
|
yuuji@0
|
359 version 1.3", RFC 1951, May 1996.
|
yuuji@0
|
360
|
yuuji@0
|
361 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
|
yuuji@0
|
362 Requirement Levels", BCP 14, RFC 2119, March 1997.
|
yuuji@0
|
363
|
yuuji@0
|
364 [RFC3501] Crispin, M., "INTERNET MESSAGE ACCESS PROTOCOL - VERSION
|
yuuji@0
|
365 4rev1", RFC 3501, March 2003.
|
yuuji@0
|
366
|
yuuji@0
|
367 [RFC4234] Crocker, D. and P. Overell, "Augmented BNF for Syntax
|
yuuji@0
|
368 Specifications: ABNF", RFC 4234, October 2005.
|
yuuji@0
|
369
|
yuuji@0
|
370 9.2. Informative References
|
yuuji@0
|
371
|
yuuji@0
|
372 [RFC1962] Rand, D., "The PPP Compression Control Protocol (CCP)",
|
yuuji@0
|
373 RFC 1962, June 1996.
|
yuuji@0
|
374
|
yuuji@0
|
375 [RFC3516] Nerenberg, L., "IMAP4 Binary Content Extension", RFC 3516,
|
yuuji@0
|
376 April 2003.
|
yuuji@0
|
377
|
yuuji@0
|
378 [RFC3749] Hollenbeck, S., "Transport Layer Security Protocol
|
yuuji@0
|
379 Compression Methods", RFC 3749, May 2004.
|
yuuji@0
|
380
|
yuuji@0
|
381 [RFC4346] Dierks, T. and E. Rescorla, "The Transport Layer Security
|
yuuji@0
|
382 (TLS) Protocol Version 1.1", RFC 4346, April 2006.
|
yuuji@0
|
383
|
yuuji@0
|
384 [RFC4422] Melnikov, A. and K. Zeilenga, "Simple Authentication and
|
yuuji@0
|
385 Security Layer (SASL)", RFC 4422, June 2006.
|
yuuji@0
|
386
|
yuuji@0
|
387 [V42BIS] ITU, "V.42bis: Data compression procedures for data
|
yuuji@0
|
388 circuit-terminating equipment (DCE) using error correction
|
yuuji@0
|
389 procedures", http://www.itu.int/rec/T-REC-V.42bis, January
|
yuuji@0
|
390 1990.
|
yuuji@0
|
391
|
yuuji@0
|
392
|
yuuji@0
|
393
|
yuuji@0
|
394 Gulbrandsen Standards Track [Page 7]
|
yuuji@0
|
395
|
yuuji@0
|
396 RFC 4978 The IMAP COMPRESS Extension August 2007
|
yuuji@0
|
397
|
yuuji@0
|
398
|
yuuji@0
|
399 [MNP] Gilbert Held, "The Complete Modem Reference", Second
|
yuuji@0
|
400 Edition, Wiley Professional Computing, ISBN 0-471-00852-4,
|
yuuji@0
|
401 May 1994.
|
yuuji@0
|
402
|
yuuji@0
|
403 Author's Address
|
yuuji@0
|
404
|
yuuji@0
|
405 Arnt Gulbrandsen
|
yuuji@0
|
406 Oryx Mail Systems GmbH
|
yuuji@0
|
407 Schweppermannstr. 8
|
yuuji@0
|
408 D-81671 Muenchen
|
yuuji@0
|
409 Germany
|
yuuji@0
|
410
|
yuuji@0
|
411 Fax: +49 89 4502 9758
|
yuuji@0
|
412 EMail: arnt@oryx.com
|
yuuji@0
|
413
|
yuuji@0
|
414
|
yuuji@0
|
415
|
yuuji@0
|
416
|
yuuji@0
|
417
|
yuuji@0
|
418
|
yuuji@0
|
419
|
yuuji@0
|
420
|
yuuji@0
|
421
|
yuuji@0
|
422
|
yuuji@0
|
423
|
yuuji@0
|
424
|
yuuji@0
|
425
|
yuuji@0
|
426
|
yuuji@0
|
427
|
yuuji@0
|
428
|
yuuji@0
|
429
|
yuuji@0
|
430
|
yuuji@0
|
431
|
yuuji@0
|
432
|
yuuji@0
|
433
|
yuuji@0
|
434
|
yuuji@0
|
435
|
yuuji@0
|
436
|
yuuji@0
|
437
|
yuuji@0
|
438
|
yuuji@0
|
439
|
yuuji@0
|
440
|
yuuji@0
|
441
|
yuuji@0
|
442
|
yuuji@0
|
443
|
yuuji@0
|
444
|
yuuji@0
|
445
|
yuuji@0
|
446
|
yuuji@0
|
447
|
yuuji@0
|
448
|
yuuji@0
|
449
|
yuuji@0
|
450 Gulbrandsen Standards Track [Page 8]
|
yuuji@0
|
451
|
yuuji@0
|
452 RFC 4978 The IMAP COMPRESS Extension August 2007
|
yuuji@0
|
453
|
yuuji@0
|
454
|
yuuji@0
|
455 Full Copyright Statement
|
yuuji@0
|
456
|
yuuji@0
|
457 Copyright (C) The IETF Trust (2007).
|
yuuji@0
|
458
|
yuuji@0
|
459 This document is subject to the rights, licenses and restrictions
|
yuuji@0
|
460 contained in BCP 78, and except as set forth therein, the authors
|
yuuji@0
|
461 retain all their rights.
|
yuuji@0
|
462
|
yuuji@0
|
463 This document and the information contained herein are provided on an
|
yuuji@0
|
464 "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
|
yuuji@0
|
465 OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND
|
yuuji@0
|
466 THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS
|
yuuji@0
|
467 OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
|
yuuji@0
|
468 THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
|
yuuji@0
|
469 WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
|
yuuji@0
|
470
|
yuuji@0
|
471 Intellectual Property
|
yuuji@0
|
472
|
yuuji@0
|
473 The IETF takes no position regarding the validity or scope of any
|
yuuji@0
|
474 Intellectual Property Rights or other rights that might be claimed to
|
yuuji@0
|
475 pertain to the implementation or use of the technology described in
|
yuuji@0
|
476 this document or the extent to which any license under such rights
|
yuuji@0
|
477 might or might not be available; nor does it represent that it has
|
yuuji@0
|
478 made any independent effort to identify any such rights. Information
|
yuuji@0
|
479 on the procedures with respect to rights in RFC documents can be
|
yuuji@0
|
480 found in BCP 78 and BCP 79.
|
yuuji@0
|
481
|
yuuji@0
|
482 Copies of IPR disclosures made to the IETF Secretariat and any
|
yuuji@0
|
483 assurances of licenses to be made available, or the result of an
|
yuuji@0
|
484 attempt made to obtain a general license or permission for the use of
|
yuuji@0
|
485 such proprietary rights by implementers or users of this
|
yuuji@0
|
486 specification can be obtained from the IETF on-line IPR repository at
|
yuuji@0
|
487 http://www.ietf.org/ipr.
|
yuuji@0
|
488
|
yuuji@0
|
489 The IETF invites any interested party to bring to its attention any
|
yuuji@0
|
490 copyrights, patents or patent applications, or other proprietary
|
yuuji@0
|
491 rights that may cover technology that may be required to implement
|
yuuji@0
|
492 this standard. Please address the information to the IETF at
|
yuuji@0
|
493 ietf-ipr@ietf.org.
|
yuuji@0
|
494
|
yuuji@0
|
495
|
yuuji@0
|
496
|
yuuji@0
|
497
|
yuuji@0
|
498
|
yuuji@0
|
499
|
yuuji@0
|
500
|
yuuji@0
|
501
|
yuuji@0
|
502
|
yuuji@0
|
503
|
yuuji@0
|
504
|
yuuji@0
|
505
|
yuuji@0
|
506 Gulbrandsen Standards Track [Page 9]
|
yuuji@0
|
507
|