Snapshot release 20030306-1521
Charles Cazabon <[email protected]> 6 Mar 2003 21:21:58 -0000
| Newsgroups | gmane.mail.bikini.devel |
|---|---|
| Message-ID | <[email protected]> |
Snapshot 20030306-1521 released and uploaded. From the CHANGELOG:
2003-03-06
Change default SEND method to newinject. Bruce is right, servers should
make sure messages are valid for SMTP. Remove qmailqueue as a
consequence.
Add note to SEND that servers MUST ensure message header is valid for SEND.
Further cleanups of formal grammar in spec document to make it compliant
with rfc2234's definition of ABNF.
Additions to formal grammar. Still not complete.
Clarify meaning of MESSAGE-SIZE capability token in spec.
Diff follows.
diff -urN --exclude=bikini.html --exclude=bikini.txt --exclude=CHANGELOG bikini-20030306-1134/bikini.texi bikini-20030306-1521/bikini.texi
--- bikini-20030306-1134/bikini.texi Thu Mar 6 11:34:36 2003
+++ bikini-20030306-1521/bikini.texi Thu Mar 6 15:21:33 2003
@@ -362,8 +362,8 @@
@item U
Not supported. The command was recognized, but is not supported by the server
-for technical or policy reasons.
-The additional information section is optional, free-form, and continues to the
+for technical or policy reasons.
+The additional information section is optional, free-form, and continues to the
end of the line. Servers MAY use this to describe the condition in more detail.
@item +
@@ -667,9 +667,9 @@
@node capabilities
@section Capability Tokens
-BikINI is designed to be an extensible protocol; clients should continue to work
-even if servers are upgraded to support new protocol features and vice versa.
-To accomplish this, clients need a way to determine what capabilities are
+BikINI is designed to be an extensible protocol; clients should continue to work
+even if servers are upgraded to support new protocol features and vice versa.
+To accomplish this, clients need a way to determine what capabilities are
supported by a given server.
The @samp{CAPS} command provides this information. The server's response is
@@ -684,7 +684,7 @@
@itemize @bullet
-@item AUTH=PLAIN
+@item AUTH=PLAIN
The server accepts @samp{PLAIN} as an @samp{AUTH} method.
This capability contains no additional information.
See [AUTH-PLAIN].
@@ -715,14 +715,20 @@
@item AUTH=ANONYMOUS
The server accepts @samp{ANONYMOUS} as an @samp{AUTH} method.
-This capability's additional information is an optional list of mail folder
+This capability's additional information is an optional list of mail folder
paths available for anonymous reading separated by single spaces.
See [AUTH-ANONYMOUS].
-@item MESSAGE-SIZE
+@item MESSAGE-SIZE
Servers MAY advertise their maximum incoming message size using this capability.
This capability's additional information is the maximum allowed size of incoming
-messages (octets) in decimal format, without leading zeroes or other padding.
+messages (octets) in decimal format, without leading zeroes or other padding. A
+single @samp{0} (zero) character means the server does not impose a static limit
+on message size. The absence of this capability in the resonse to the
+@samp{CAPS} command does @emph{not} necessarily mean the server imposes no limit
+on message size, but simply that any possible limit is not advertised.
+Clients MUST be prepared for a server to refuse the @samp{SEND} command based
+on the message size in this case.
@end itemize
@@ -1507,6 +1513,13 @@
MAY choose to modify the message to enable it to be delivered (i.e. add
a trailing newline to the message when it is delivered via SMTP), or it MAY
choose to refuse to deliver the message.
+@item When delivering a message via SMTP, a BikINI server MUST ensure that
+the message to be delivered meets at least the basic requirements of
+messages according to [RFC-2822]. In particular, the server MUST ensure that
+the message header contains all required fields, and that all fields are
+syntactically correct. The server MAY choose to enforce stricter requirements
+(such as ensuring that the envelope sender or @samp{From:} header addresses
+belong to the user).
@end itemize
@strong{Examples:}
@@ -1519,8 +1532,7 @@
@c ****************************************************************************
@chapter Formal Syntax
-This syntax is written according to the form described in [RFC-2234] except
-that strings are not case-insensitive.
+This syntax is written according to the ABNF form described in [RFC-2234].
@c ============================================================================
@section Definitions
@@ -1538,7 +1550,7 @@
CR = %x0D
; Carriage Return
-LF = %0A
+LF = %x0A
; Line Feed
CRLF = CR LF
@@ -1559,8 +1571,8 @@
SP = %x20
; space
-@c VCHAR = %x21-7E
-@c ; Visible (printing) characters
+VCHAR = %x21-7E
+ ; Visible (printing) characters
@c WSP = SP / HTAB
@c ; White Space
@@ -1572,6 +1584,9 @@
NONZERODIGIT = %x31-39
; Digit One-Digit Nine
+NORMCHAR = %x20-7E
+ ; VCHAR plus SP
+
path-separator = "/"
; may not occur in path components
@@ -1590,11 +1605,7 @@
folder-path = *(<path-component> <path-separator>) <mail-folder>
; complete path from mail store root to mail folder name
-user-identifier = ???
- ; ??? require this to be [email protected] to allow operation of multiple
- ; domains on a single server IP address?
-
-auth-token = ???
+auth-token = 0*NORMCHAR
; ??? what restrictions? No CR or LF, probably, but what about other
; nonprinting characters?
@@ -1609,11 +1620,11 @@
; in LISTDIRS output, the trailing "/" indicates a directory
; instead of a mail folder
-flag = "D" / "F" / "N" / "R" / "S" / "T"
- ; current flags are uppercase only ; because of case-sensitivity,
- ; new flags can be added later using "r", etc.
+flag = %x44 / %x46 / %x4E / %x52 / %x53 / %x54
+ ; current flags D, F, N, R, S, and T are uppercase only ; because of
+ ; case-sensitivity, new flags can be added later using "r", etc.
-flags = *flag
+flags = [%x44] [%x46] [%x4E] [%x52] [%x53] [%x54]
; flags are in any order but cannot be repeated
content-size = NONZERODIGIT *DIGIT
@@ -1638,13 +1649,68 @@
second = 2DIGIT
; valid values are 00 - 59 ; leading zero is required for < 10
-message-timestamp = <year> <month> <day> "T" <hour> <minute> <second> "Z"
- ; this is in UTC
+message-timestamp = <year> <month> <day> %x54 <hour> <minute> <second> %x5A
+ ; this is in UTC. Example: 20020304T134508Z
message-listing = <message-identifier> SP <flags> ":" <content-size> ":" <message-timestamp>
; If a flag is present, that means it is set.
; Note flags are optional and may not be present if all flags are
; cleared.
+
+response-code-char = %x2B / %x41 / %x45 / %x4B / %x55 / %x58
+ ; single character response code +, A, E, K, U, or X
+
+response-modifier-char = %x43
+ ; single character response modifier C. New modifiers may be added
+ ; later.
+
+response-modifier = [%x43]
+ ; modifiers in any order but cannot be repeated
+
+response-info = *NORMCHAR
+ ; zero or more visible characters and spaces
+
+response-line = <response-code-char> <response-modifier> SP <response-info> CR LF
+ ; space is required even though response-info can be empty
+
+continuation-line = %x2B SP 1*NORMCHAR
+ ; "+" SP ...
+
+command = ( %x41 %x55 %x54 %x48 ) ; AUTH
+command =/ ( %x43 %x41 %x50 %x53 ) ; CAPS
+command =/ ( %x43 %x4C %x45 %x41 %x52 %x46 %x4C %x41 %x47) ; CLEARFLAG
+command =/ ( %x47 %x45 %x54 ) ; GET
+command =/ ( %x47 %x45 %x54 %x48 %x44 %x52 ) ; GETHDR
+command =/ ( %x4C %x49 %x53 %x54 %x44 %x49 %x52 %x53 ) ; LISTDIRS
+command =/ ( %x4C %x49 %x53 %x54 %x4D %x53 %x47 %x53 ) ; LISTMSGS
+command =/ ( %x4D %x4B %x44 %x49 %x52 ) ; MKDIR
+command =/ ( %x4D %x4B %x46 %x4F %x4C %x44 %x45 %x52 ) ; MKFOLDER
+command =/ ( %x4D %x56 %x46 %x4F %x4C %x44 %x45 %x52 ) ; MVFOLDER
+command =/ ( %x4D %x56 %x4D %x53 %x47 ) ; MVMSG
+command =/ ( %x50 %x55 %x54 ) ; PUT
+command =/ ( %x51 %x55 %x49 %x54 ) ; QUIT
+command =/ ( %x52 %x4D %x44 %x49 %x52 ) ; RMDIR
+command =/ ( %x52 %x4D %x46 %x4F %x4C %x44 %x45 %x52 ) ; RMFOLDER
+command =/ ( %x52 %x4D %x4D %x53 %x47 ) ; RMMSG
+command =/ ( %x53 %x45 %x41 %x52 %x43 %x48 ) ; SEARCH
+command =/ ( %x53 %x45 %x4E %x44 ) ; SEND
+command =/ ( %x53 %x45 %x54 %x46 %x4C %x41 %x47 ) ; SETFLAG
+command =/ ( %x53 %x54 %x41 %x52 %x54 %x54 %x4C %x53 ) ; STARTTLS
+
+auth-method = ( %x41 %x4E %x4F %x4E %x59 %x4D %x4F %x55 %x53 ) ; ANONYMOUS
+auth-method =/ ( %x43 %x52 %x41 %x4D %x2D %x4D %x44 %x35 ) ; CRAM-MD5
+auth-method =/ ( %x44 %x49 %x47 %x45 %x53 %x54 %x2D %x4D %x44 %x35 ) ; DIGEST-MD5
+auth-method =/ ( %x47 %x53 %x53 %x41 %x50 %x49 ) ; GSSAPI
+auth-method =/ ( %x4B %x45 %x52 %x42 %x45 %x52 %x4F %x53 %x5F %x56 %x34 ) ; KERBEROS_V4
+auth-method =/ ( %x4C %x4F %x47 %x49 %x4E ) ; LOGIN
+auth-method =/ ( %x50 %x4C %x41 %x49 %x4E ) ; PLAIN
+auth-method =/ ( %x4D %x45 %x53 %x53 %x41 %x47 %x45 %x2D %x53 %x49 %x5A %x45 ) ; MESSAGE-SIZE
+
+auth-command = ( %x41 %x55 %x54 %x48 ) auth-method *(SP auth-token)
+
+argument = 1*VCHAR
+
+command-line = <command> *(SP argument) CR LF
@end example