mail 2.5.5 → 2.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/MIT-LICENSE +1 -1
- data/README.md +170 -108
- data/lib/mail/attachments_list.rb +13 -10
- data/lib/mail/body.rb +105 -91
- data/lib/mail/check_delivery_params.rb +30 -22
- data/lib/mail/configuration.rb +3 -0
- data/lib/mail/constants.rb +79 -0
- data/lib/mail/elements/address.rb +118 -174
- data/lib/mail/elements/address_list.rb +16 -56
- data/lib/mail/elements/content_disposition_element.rb +12 -22
- data/lib/mail/elements/content_location_element.rb +9 -17
- data/lib/mail/elements/content_transfer_encoding_element.rb +8 -19
- data/lib/mail/elements/content_type_element.rb +20 -30
- data/lib/mail/elements/date_time_element.rb +10 -21
- data/lib/mail/elements/envelope_from_element.rb +23 -31
- data/lib/mail/elements/message_ids_element.rb +22 -20
- data/lib/mail/elements/mime_version_element.rb +10 -21
- data/lib/mail/elements/phrase_list.rb +13 -15
- data/lib/mail/elements/received_element.rb +26 -21
- data/lib/mail/elements.rb +1 -0
- data/lib/mail/encodings/7bit.rb +10 -14
- data/lib/mail/encodings/8bit.rb +5 -18
- data/lib/mail/encodings/base64.rb +15 -10
- data/lib/mail/encodings/binary.rb +4 -22
- data/lib/mail/encodings/identity.rb +24 -0
- data/lib/mail/encodings/quoted_printable.rb +13 -7
- data/lib/mail/encodings/transfer_encoding.rb +47 -28
- data/lib/mail/encodings/unix_to_unix.rb +20 -0
- data/lib/mail/encodings.rb +102 -93
- data/lib/mail/envelope.rb +12 -19
- data/lib/mail/field.rb +143 -71
- data/lib/mail/field_list.rb +73 -19
- data/lib/mail/fields/bcc_field.rb +42 -48
- data/lib/mail/fields/cc_field.rb +29 -50
- data/lib/mail/fields/comments_field.rb +28 -37
- data/lib/mail/fields/common_address_field.rb +170 -0
- data/lib/mail/fields/common_date_field.rb +58 -0
- data/lib/mail/fields/common_field.rb +77 -0
- data/lib/mail/fields/common_message_id_field.rb +42 -0
- data/lib/mail/fields/content_description_field.rb +8 -14
- data/lib/mail/fields/content_disposition_field.rb +20 -44
- data/lib/mail/fields/content_id_field.rb +25 -51
- data/lib/mail/fields/content_location_field.rb +12 -25
- data/lib/mail/fields/content_transfer_encoding_field.rb +31 -36
- data/lib/mail/fields/content_type_field.rb +51 -80
- data/lib/mail/fields/date_field.rb +24 -52
- data/lib/mail/fields/from_field.rb +29 -50
- data/lib/mail/fields/in_reply_to_field.rb +39 -49
- data/lib/mail/fields/keywords_field.rb +19 -32
- data/lib/mail/fields/message_id_field.rb +26 -71
- data/lib/mail/fields/mime_version_field.rb +20 -30
- data/lib/mail/fields/named_structured_field.rb +11 -0
- data/lib/mail/fields/named_unstructured_field.rb +11 -0
- data/lib/mail/fields/optional_field.rb +10 -7
- data/lib/mail/fields/{common/parameter_hash.rb → parameter_hash.rb} +16 -13
- data/lib/mail/fields/received_field.rb +44 -57
- data/lib/mail/fields/references_field.rb +36 -49
- data/lib/mail/fields/reply_to_field.rb +29 -50
- data/lib/mail/fields/resent_bcc_field.rb +29 -50
- data/lib/mail/fields/resent_cc_field.rb +29 -50
- data/lib/mail/fields/resent_date_field.rb +6 -30
- data/lib/mail/fields/resent_from_field.rb +29 -50
- data/lib/mail/fields/resent_message_id_field.rb +6 -29
- data/lib/mail/fields/resent_sender_field.rb +28 -57
- data/lib/mail/fields/resent_to_field.rb +29 -50
- data/lib/mail/fields/return_path_field.rb +51 -55
- data/lib/mail/fields/sender_field.rb +35 -56
- data/lib/mail/fields/structured_field.rb +4 -30
- data/lib/mail/fields/subject_field.rb +10 -11
- data/lib/mail/fields/to_field.rb +29 -50
- data/lib/mail/fields/unstructured_field.rb +43 -51
- data/lib/mail/fields.rb +1 -0
- data/lib/mail/header.rb +78 -129
- data/lib/mail/indifferent_hash.rb +1 -0
- data/lib/mail/mail.rb +18 -11
- data/lib/mail/matchers/attachment_matchers.rb +44 -0
- data/lib/mail/matchers/has_sent_mail.rb +81 -4
- data/lib/mail/message.rb +142 -139
- data/lib/mail/multibyte/chars.rb +24 -180
- data/lib/mail/multibyte/unicode.rb +32 -27
- data/lib/mail/multibyte/utils.rb +27 -43
- data/lib/mail/multibyte.rb +56 -16
- data/lib/mail/network/delivery_methods/exim.rb +6 -4
- data/lib/mail/network/delivery_methods/file_delivery.rb +12 -10
- data/lib/mail/network/delivery_methods/logger_delivery.rb +34 -0
- data/lib/mail/network/delivery_methods/sendmail.rb +63 -21
- data/lib/mail/network/delivery_methods/smtp.rb +76 -50
- data/lib/mail/network/delivery_methods/smtp_connection.rb +4 -4
- data/lib/mail/network/delivery_methods/test_mailer.rb +5 -2
- data/lib/mail/network/retriever_methods/base.rb +9 -8
- data/lib/mail/network/retriever_methods/imap.rb +37 -18
- data/lib/mail/network/retriever_methods/pop3.rb +6 -3
- data/lib/mail/network/retriever_methods/test_retriever.rb +4 -2
- data/lib/mail/network.rb +2 -0
- data/lib/mail/parser_tools.rb +15 -0
- data/lib/mail/parsers/address_lists_parser.rb +33242 -0
- data/lib/mail/parsers/address_lists_parser.rl +179 -0
- data/lib/mail/parsers/content_disposition_parser.rb +901 -0
- data/lib/mail/parsers/content_disposition_parser.rl +89 -0
- data/lib/mail/parsers/content_location_parser.rb +822 -0
- data/lib/mail/parsers/content_location_parser.rl +78 -0
- data/lib/mail/parsers/content_transfer_encoding_parser.rb +522 -0
- data/lib/mail/parsers/content_transfer_encoding_parser.rl +71 -0
- data/lib/mail/parsers/content_type_parser.rb +1048 -0
- data/lib/mail/parsers/content_type_parser.rl +90 -0
- data/lib/mail/parsers/date_time_parser.rb +891 -0
- data/lib/mail/parsers/date_time_parser.rl +69 -0
- data/lib/mail/parsers/envelope_from_parser.rb +3675 -0
- data/lib/mail/parsers/envelope_from_parser.rl +89 -0
- data/lib/mail/parsers/message_ids_parser.rb +5161 -0
- data/lib/mail/parsers/message_ids_parser.rl +93 -0
- data/lib/mail/parsers/mime_version_parser.rb +513 -0
- data/lib/mail/parsers/mime_version_parser.rl +68 -0
- data/lib/mail/parsers/phrase_lists_parser.rb +884 -0
- data/lib/mail/parsers/phrase_lists_parser.rl +90 -0
- data/lib/mail/parsers/received_parser.rb +8782 -0
- data/lib/mail/parsers/received_parser.rl +91 -0
- data/lib/mail/parsers/rfc2045_content_transfer_encoding.rl +13 -0
- data/lib/mail/parsers/rfc2045_content_type.rl +25 -0
- data/lib/mail/parsers/rfc2045_mime.rl +16 -0
- data/lib/mail/parsers/rfc2183_content_disposition.rl +15 -0
- data/lib/mail/parsers/rfc3629_utf8.rl +19 -0
- data/lib/mail/parsers/rfc5234_abnf_core_rules.rl +22 -0
- data/lib/mail/parsers/rfc5322.rl +74 -0
- data/lib/mail/parsers/rfc5322_address.rl +72 -0
- data/lib/mail/parsers/rfc5322_date_time.rl +37 -0
- data/lib/mail/parsers/rfc5322_lexical_tokens.rl +60 -0
- data/lib/mail/parsers.rb +13 -0
- data/lib/mail/part.rb +11 -12
- data/lib/mail/parts_list.rb +90 -14
- data/lib/mail/smtp_envelope.rb +57 -0
- data/lib/mail/utilities.rb +415 -76
- data/lib/mail/values/unicode_tables.dat +0 -0
- data/lib/mail/version.rb +8 -15
- data/lib/mail/yaml.rb +30 -0
- data/lib/mail.rb +9 -32
- metadata +127 -79
- data/CHANGELOG.rdoc +0 -742
- data/CONTRIBUTING.md +0 -45
- data/Dependencies.txt +0 -3
- data/Gemfile +0 -32
- data/Rakefile +0 -21
- data/TODO.rdoc +0 -9
- data/lib/VERSION +0 -4
- data/lib/load_parsers.rb +0 -35
- data/lib/mail/core_extensions/nil.rb +0 -19
- data/lib/mail/core_extensions/object.rb +0 -13
- data/lib/mail/core_extensions/smtp.rb +0 -24
- data/lib/mail/core_extensions/string/access.rb +0 -145
- data/lib/mail/core_extensions/string/multibyte.rb +0 -78
- data/lib/mail/core_extensions/string.rb +0 -33
- data/lib/mail/fields/common/address_container.rb +0 -16
- data/lib/mail/fields/common/common_address.rb +0 -140
- data/lib/mail/fields/common/common_date.rb +0 -42
- data/lib/mail/fields/common/common_field.rb +0 -57
- data/lib/mail/fields/common/common_message_id.rb +0 -48
- data/lib/mail/multibyte/exceptions.rb +0 -8
- data/lib/mail/parsers/address_lists.rb +0 -64
- data/lib/mail/parsers/address_lists.treetop +0 -19
- data/lib/mail/parsers/content_disposition.rb +0 -535
- data/lib/mail/parsers/content_disposition.treetop +0 -46
- data/lib/mail/parsers/content_location.rb +0 -139
- data/lib/mail/parsers/content_location.treetop +0 -20
- data/lib/mail/parsers/content_transfer_encoding.rb +0 -201
- data/lib/mail/parsers/content_transfer_encoding.treetop +0 -18
- data/lib/mail/parsers/content_type.rb +0 -971
- data/lib/mail/parsers/content_type.treetop +0 -68
- data/lib/mail/parsers/date_time.rb +0 -114
- data/lib/mail/parsers/date_time.treetop +0 -11
- data/lib/mail/parsers/envelope_from.rb +0 -194
- data/lib/mail/parsers/envelope_from.treetop +0 -32
- data/lib/mail/parsers/message_ids.rb +0 -45
- data/lib/mail/parsers/message_ids.treetop +0 -15
- data/lib/mail/parsers/mime_version.rb +0 -144
- data/lib/mail/parsers/mime_version.treetop +0 -19
- data/lib/mail/parsers/phrase_lists.rb +0 -45
- data/lib/mail/parsers/phrase_lists.treetop +0 -15
- data/lib/mail/parsers/received.rb +0 -71
- data/lib/mail/parsers/received.treetop +0 -11
- data/lib/mail/parsers/rfc2045.rb +0 -421
- data/lib/mail/parsers/rfc2045.treetop +0 -35
- data/lib/mail/parsers/rfc2822.rb +0 -5397
- data/lib/mail/parsers/rfc2822.treetop +0 -408
- data/lib/mail/parsers/rfc2822_obsolete.rb +0 -3768
- data/lib/mail/parsers/rfc2822_obsolete.treetop +0 -241
- data/lib/mail/patterns.rb +0 -35
- data/lib/mail/version_specific/ruby_1_8.rb +0 -119
- data/lib/mail/version_specific/ruby_1_9.rb +0 -147
- data/lib/tasks/corpus.rake +0 -125
- data/lib/tasks/treetop.rake +0 -10
@@ -1,408 +0,0 @@
|
|
1
|
-
module Mail
|
2
|
-
grammar RFC2822
|
3
|
-
|
4
|
-
include RFC2822Obsolete
|
5
|
-
|
6
|
-
rule ALPHA
|
7
|
-
[a-zA-Z]
|
8
|
-
end
|
9
|
-
|
10
|
-
rule DIGIT
|
11
|
-
[0-9]
|
12
|
-
end
|
13
|
-
|
14
|
-
rule DQUOTE
|
15
|
-
'"'
|
16
|
-
end
|
17
|
-
|
18
|
-
rule LF
|
19
|
-
"\n"
|
20
|
-
end
|
21
|
-
|
22
|
-
rule CR
|
23
|
-
"\r"
|
24
|
-
end
|
25
|
-
|
26
|
-
rule CRLF
|
27
|
-
"\r\n"
|
28
|
-
end
|
29
|
-
|
30
|
-
rule WSP
|
31
|
-
[\x09\x20]
|
32
|
-
end
|
33
|
-
|
34
|
-
rule FWS # Folding white space
|
35
|
-
(WSP* CRLF WSP+) / (CRLF WSP+) / obs_FWS
|
36
|
-
end
|
37
|
-
|
38
|
-
rule CFWS
|
39
|
-
(FWS* comment)* FWS?
|
40
|
-
end
|
41
|
-
|
42
|
-
rule NO_WS_CTL
|
43
|
-
[\x01-\x08] / # US-ASCII control characters
|
44
|
-
[\x0B-\x0C] / # that do not include the
|
45
|
-
[\x0E-\x1F] / # carriage return, line feed,
|
46
|
-
[\x7f] # and white space characters
|
47
|
-
end
|
48
|
-
|
49
|
-
rule specials
|
50
|
-
"(" / ")" / # Special characters used in
|
51
|
-
"<" / ">" / # other parts of the syntax
|
52
|
-
"[" / "]" /
|
53
|
-
":" / ";" /
|
54
|
-
"@" / '\\' /
|
55
|
-
"," / "." /
|
56
|
-
DQUOTE
|
57
|
-
end
|
58
|
-
|
59
|
-
rule ctext
|
60
|
-
NO_WS_CTL / # Non white space controls
|
61
|
-
[\x21-\x27] / # The rest of the US-ASCII
|
62
|
-
[\x2a-\x5b] / # characters not including "(",
|
63
|
-
[\x5d-\x7e] # ")", or "\"
|
64
|
-
end
|
65
|
-
|
66
|
-
rule ccontent
|
67
|
-
ctext / quoted_pair / comment
|
68
|
-
end
|
69
|
-
|
70
|
-
rule comment
|
71
|
-
"(" ( FWS? ccontent )* FWS? ")"
|
72
|
-
end
|
73
|
-
|
74
|
-
rule atext
|
75
|
-
ALPHA / DIGIT / # Any character except controls,
|
76
|
-
"!" / "#" / # SP, and specials.
|
77
|
-
"$" / "%" / # Used for atoms
|
78
|
-
"&" / "'" /
|
79
|
-
"*" / "+" /
|
80
|
-
"-" / "/" /
|
81
|
-
"=" / "?" /
|
82
|
-
"^" / "_" /
|
83
|
-
"`" / "{" /
|
84
|
-
"|" / "}" /
|
85
|
-
"~"
|
86
|
-
end
|
87
|
-
|
88
|
-
rule mtext
|
89
|
-
(atext / ".")+
|
90
|
-
end
|
91
|
-
|
92
|
-
rule atom
|
93
|
-
CFWS? atext+ CFWS?
|
94
|
-
end
|
95
|
-
|
96
|
-
rule dot_atom
|
97
|
-
CFWS? dot_atom_text CFWS?
|
98
|
-
end
|
99
|
-
|
100
|
-
rule local_dot_atom
|
101
|
-
CFWS? local_dot_atom_text CFWS?
|
102
|
-
end
|
103
|
-
|
104
|
-
rule message_id_text
|
105
|
-
mtext+
|
106
|
-
end
|
107
|
-
|
108
|
-
rule dot_atom_text
|
109
|
-
(domain_text "."?)+
|
110
|
-
end
|
111
|
-
|
112
|
-
rule local_dot_atom_text
|
113
|
-
("."* domain_text "."*)+
|
114
|
-
end
|
115
|
-
|
116
|
-
rule domain_text
|
117
|
-
(DQUOTE (FWS? quoted_domain)+ FWS? DQUOTE) / atext+
|
118
|
-
end
|
119
|
-
|
120
|
-
rule quoted_domain
|
121
|
-
qdcontent / "\\" text
|
122
|
-
end
|
123
|
-
|
124
|
-
rule qdcontent
|
125
|
-
NO_WS_CTL / # Non white space controls
|
126
|
-
[\x21] / # The rest of the US-ASCII
|
127
|
-
[\x23-\x45] / # characters not including "\"
|
128
|
-
[\x47-\x5b] / # or the "." or the
|
129
|
-
[\x5d-\x7e] # double quote character
|
130
|
-
end
|
131
|
-
|
132
|
-
rule phrase
|
133
|
-
obs_phrase / word+
|
134
|
-
end
|
135
|
-
|
136
|
-
rule word
|
137
|
-
atom / quoted_string
|
138
|
-
end
|
139
|
-
|
140
|
-
rule phrase_list
|
141
|
-
first_phrase:phrase other_phrases:("," FWS* phrase_value:phrase)*
|
142
|
-
end
|
143
|
-
|
144
|
-
rule domain_literal
|
145
|
-
CFWS? "[" (FWS? dcontent)* FWS? "]" CFWS?
|
146
|
-
end
|
147
|
-
|
148
|
-
rule dcontent
|
149
|
-
dtext / quoted_pair
|
150
|
-
end
|
151
|
-
|
152
|
-
rule dtext
|
153
|
-
NO_WS_CTL / # Non white space controls
|
154
|
-
[\x21-\x5a] / # The rest of the US-ASCII characters
|
155
|
-
[\x5e-\x7e] # not including "[", "]", or "\"
|
156
|
-
end
|
157
|
-
|
158
|
-
rule angle_addr
|
159
|
-
CFWS? "<" addr_spec ">" CFWS? / obs_angle_addr
|
160
|
-
end
|
161
|
-
|
162
|
-
rule addr_spec
|
163
|
-
(local_part "@" domain) / local_part
|
164
|
-
end
|
165
|
-
|
166
|
-
rule local_part
|
167
|
-
local_dot_atom / quoted_string / obs_local_part
|
168
|
-
end
|
169
|
-
|
170
|
-
rule domain
|
171
|
-
dot_atom / domain_literal / obs_domain
|
172
|
-
end
|
173
|
-
|
174
|
-
rule group
|
175
|
-
group_name:display_name ":" group_list:(mailbox_list_group / CFWS)? ";" CFWS?
|
176
|
-
end
|
177
|
-
|
178
|
-
rule mailbox_list_group
|
179
|
-
mailbox_list {
|
180
|
-
def addresses
|
181
|
-
[first_addr] + other_addr.elements.map { |o| o.addr_value }
|
182
|
-
end
|
183
|
-
}
|
184
|
-
end
|
185
|
-
|
186
|
-
rule quoted_string
|
187
|
-
CFWS? DQUOTE quoted_content:(FWS? qcontent)* FWS? DQUOTE CFWS?
|
188
|
-
end
|
189
|
-
|
190
|
-
rule qcontent
|
191
|
-
qtext / quoted_pair
|
192
|
-
end
|
193
|
-
|
194
|
-
rule quoted_pair
|
195
|
-
("\\" text) / obs_qp
|
196
|
-
end
|
197
|
-
|
198
|
-
rule qtext
|
199
|
-
NO_WS_CTL / # Non white space controls
|
200
|
-
[\x21] / # The rest of the US-ASCII
|
201
|
-
[\x23-\x5b] / # characters not including "\"
|
202
|
-
[\x5d-\x7e] # or the quote character
|
203
|
-
end
|
204
|
-
|
205
|
-
rule text
|
206
|
-
[\x01-\x09] / # Characters excluding CR and LF
|
207
|
-
[\x0b-\x0c] /
|
208
|
-
[\x0e-\x7e] /
|
209
|
-
obs_text
|
210
|
-
end
|
211
|
-
|
212
|
-
rule display_name
|
213
|
-
phrase
|
214
|
-
end
|
215
|
-
|
216
|
-
rule name_addr
|
217
|
-
display_name angle_addr / angle_addr
|
218
|
-
end
|
219
|
-
|
220
|
-
rule mailbox_list
|
221
|
-
(first_addr:mailbox other_addr:(("," / ";") addr_value:mailbox)*) / obs_mbox_list
|
222
|
-
end
|
223
|
-
|
224
|
-
rule mailbox
|
225
|
-
(name_addr / addr_spec) {
|
226
|
-
def dig_comments(comments, elements)
|
227
|
-
elements.each { |elem|
|
228
|
-
if elem.respond_to?(:comment)
|
229
|
-
comments << elem.comment
|
230
|
-
end
|
231
|
-
dig_comments(comments, elem.elements) if elem.elements
|
232
|
-
}
|
233
|
-
end
|
234
|
-
|
235
|
-
def comments
|
236
|
-
comments = []
|
237
|
-
dig_comments(comments, elements)
|
238
|
-
comments
|
239
|
-
end
|
240
|
-
}
|
241
|
-
end
|
242
|
-
|
243
|
-
rule address
|
244
|
-
group {
|
245
|
-
|
246
|
-
def dig_comments(comments, elements)
|
247
|
-
elements.each { |elem|
|
248
|
-
if elem.respond_to?(:comment)
|
249
|
-
comments << elem.comment
|
250
|
-
end
|
251
|
-
dig_comments(comments, elem.elements) if elem.elements
|
252
|
-
}
|
253
|
-
end
|
254
|
-
|
255
|
-
def comments
|
256
|
-
comments = []
|
257
|
-
dig_comments(comments, elements)
|
258
|
-
comments
|
259
|
-
end
|
260
|
-
|
261
|
-
} /
|
262
|
-
mailbox
|
263
|
-
end
|
264
|
-
|
265
|
-
rule address_list
|
266
|
-
first_addr:address? other_addr:(FWS* ("," / ";") FWS* addr_value:address?)*
|
267
|
-
end
|
268
|
-
|
269
|
-
rule date_time
|
270
|
-
( day_of_week ",")? date FWS time CFWS?
|
271
|
-
end
|
272
|
-
|
273
|
-
rule day_of_week
|
274
|
-
(FWS? day_name) / obs_day_of_week
|
275
|
-
end
|
276
|
-
|
277
|
-
rule day_name
|
278
|
-
"Mon" / "Tue" / "Wed" / "Thu" /
|
279
|
-
"Fri" / "Sat" / "Sun"
|
280
|
-
end
|
281
|
-
|
282
|
-
rule date
|
283
|
-
day month year
|
284
|
-
end
|
285
|
-
|
286
|
-
rule year
|
287
|
-
DIGIT DIGIT DIGIT DIGIT / obs_year
|
288
|
-
end
|
289
|
-
|
290
|
-
rule month
|
291
|
-
(FWS month_name FWS) / obs_month
|
292
|
-
end
|
293
|
-
|
294
|
-
rule month_name
|
295
|
-
"Jan" / "Feb" / "Mar" / "Apr" /
|
296
|
-
"May" / "Jun" / "Jul" / "Aug" /
|
297
|
-
"Sep" / "Oct" / "Nov" / "Dec"
|
298
|
-
end
|
299
|
-
|
300
|
-
rule day
|
301
|
-
(FWS? DIGIT DIGIT?) / obs_day
|
302
|
-
end
|
303
|
-
|
304
|
-
rule time
|
305
|
-
time_of_day FWS zone
|
306
|
-
end
|
307
|
-
|
308
|
-
rule time_of_day
|
309
|
-
hour ":" minute ( ":" second )?
|
310
|
-
end
|
311
|
-
|
312
|
-
rule hour
|
313
|
-
DIGIT DIGIT / obs_hour
|
314
|
-
end
|
315
|
-
|
316
|
-
rule minute
|
317
|
-
DIGIT DIGIT / obs_minute
|
318
|
-
end
|
319
|
-
|
320
|
-
rule second
|
321
|
-
DIGIT DIGIT / obs_second
|
322
|
-
end
|
323
|
-
|
324
|
-
rule zone
|
325
|
-
(( "+" / "-" ) DIGIT DIGIT DIGIT DIGIT) / obs_zone
|
326
|
-
end
|
327
|
-
|
328
|
-
rule return
|
329
|
-
path CRLF
|
330
|
-
end
|
331
|
-
|
332
|
-
rule path
|
333
|
-
((CFWS)? "<" ((CFWS)? / addr_spec) ">" (CFWS)?) / obs_path
|
334
|
-
end
|
335
|
-
|
336
|
-
rule received
|
337
|
-
name_val_list ";" date_time CRLF
|
338
|
-
end
|
339
|
-
|
340
|
-
rule name_val_list
|
341
|
-
(CFWS)? (name_val_pair (CFWS name_val_pair)*)?
|
342
|
-
end
|
343
|
-
|
344
|
-
rule name_val_pair
|
345
|
-
item_name CFWS item_value
|
346
|
-
end
|
347
|
-
|
348
|
-
rule item_name
|
349
|
-
ALPHA (("-")? (ALPHA / DIGIT))*
|
350
|
-
end
|
351
|
-
|
352
|
-
rule item_value
|
353
|
-
(angle_addr)+ / addr_spec / atom / domain / msg_id
|
354
|
-
end
|
355
|
-
|
356
|
-
rule message_ids
|
357
|
-
first_msg_id:msg_id other_msg_ids:( CFWS msg_id_value:msg_id )*
|
358
|
-
end
|
359
|
-
|
360
|
-
rule msg_id
|
361
|
-
(CFWS)? "<" msg_id_value ">" (CFWS)?
|
362
|
-
end
|
363
|
-
|
364
|
-
rule msg_id_value
|
365
|
-
id_left "@" id_right
|
366
|
-
end
|
367
|
-
|
368
|
-
rule id_left
|
369
|
-
message_id_text / no_fold_quote / obs_id_left
|
370
|
-
end
|
371
|
-
|
372
|
-
rule id_right
|
373
|
-
msg_id_dot_atom_text / no_fold_literal / obs_id_right
|
374
|
-
end
|
375
|
-
|
376
|
-
rule msg_id_dot_atom_text
|
377
|
-
(msg_id_domain_text "."?)+
|
378
|
-
end
|
379
|
-
|
380
|
-
rule msg_id_domain_text
|
381
|
-
(DQUOTE (FWS? quoted_domain)+ FWS? DQUOTE) / msg_id_atext+
|
382
|
-
end
|
383
|
-
|
384
|
-
rule msg_id_atext
|
385
|
-
ALPHA / DIGIT / # Any character except controls,
|
386
|
-
"!" / "#" / # SP, and specials.
|
387
|
-
"$" / "%" / # Used for atoms
|
388
|
-
"&" / "'" /
|
389
|
-
"*" / "+" /
|
390
|
-
"-" / "/" /
|
391
|
-
"=" / "?" /
|
392
|
-
"^" / "_" /
|
393
|
-
"`" / "{" /
|
394
|
-
"|" / "}" /
|
395
|
-
"~" / "@"
|
396
|
-
end
|
397
|
-
|
398
|
-
rule no_fold_quote
|
399
|
-
DQUOTE (qtext / quoted_pair)+ DQUOTE
|
400
|
-
end
|
401
|
-
|
402
|
-
rule no_fold_literal
|
403
|
-
"[" (dtext / quoted_pair)+ "]"
|
404
|
-
end
|
405
|
-
|
406
|
-
|
407
|
-
end
|
408
|
-
end
|