module Mail
grammar RFC2822Obsolete
rule obs_qp
"\\" [\x00-\x7F]
end
rule obs_text
LF* CR* (obs_char LF* CR*)*
end
rule obs_char
[\x00-\x09] / # %d0-127 except CR and
[\x0B-\x0C] / # LF
[\x0E-\x7F]
end
rule obs_utext
obs_text
end
rule obs_phrase
(word / "." / "@")+
end
rule obs_phrase_list
phrase / (phrase? CFWS? "," CFWS?)+ phrase?
end
rule obs_FWS
WSP+ (CRLF WSP+)*
end
rule obs_day_of_week
CFWS? day_name CFWS?
end
rule obs_year
CFWS? (DIGIT DIGIT) CFWS?
end
rule obs_month
CFWS month_name CFWS
end
rule obs_day
CFWS? (DIGIT / (DIGIT DIGIT)) CFWS?
end
rule obs_hour
CFWS? (DIGIT DIGIT) CFWS?
end
rule obs_minute
CFWS? (DIGIT DIGIT) CFWS?
end
rule obs_second
CFWS? (DIGIT DIGIT) CFWS?
end
rule obs_zone
"UT" / "GMT" / # Universal Time
# North American UT
# offsets
"EST" / "EDT" / # Eastern: - 5/ - 4
"CST" / "CDT" / # Central: - 6/ - 5
"MST" / "MDT" / # Mountain: - 7/ - 6
"PST" / "PDT" / # Pacific: - 8/ - 7
#
[\x41-\x49] / # Military zones - "A"
[\x4B-\x5A] / # through "I" and "K"
[\x61-\x69] / # through "Z", both
[\x6B-\x7A] # upper and lower case
end
rule obs_angle_addr
CFWS? "<" obs_route? addr_spec ">" CFWS?
end
rule obs_route
CFWS? obs_domain_list ":" CFWS?
end
rule obs_domain_list
"@" domain (("," )* CFWS? "@" domain)*
end
rule obs_local_part
word ("." word)*
end
rule obs_domain
atom ("." atom)*
end
rule obs_mbox_list
(mailbox? CFWS? "," CFWS?)+ mailbox?
end
rule obs_addr_list
(address? CFWS? "," CFWS?)+ address?
end
rule obs_fields
(obs_return /
obs_received /
obs_orig_date /
obs_from /
obs_sender /
obs_reply_to /
obs_to /
obs_cc /
obs_bcc /
obs_message_id /
obs_in_reply_to /
obs_references /
obs_subject /
obs_comments /
obs_keywords /
obs_resent_date /
obs_resent_from /
obs_resent_send /
obs_resent_rply /
obs_resent_to /
obs_resent_cc /
obs_resent_bcc /
obs_resent_mid /
obs_optional)*
end
rule obs_orig_date
"Date" WSP* ":" date_time CRLF
end
rule obs_from
"From" WSP* ":" mailbox_list CRLF
end
rule obs_sender
"Sender" WSP* ":" mailbox CRLF
end
rule obs_reply_to
"Reply-To" WSP* ":" mailbox_list CRLF
end
rule obs_to
"To" WSP* ":" address_list CRLF
end
rule obs_cc
"Cc" WSP* ":" address_list CRLF
end
rule obs_bcc
"Bcc" WSP* ":" (address_list / CFWS?) CRLF
end
rule obs_message_id
"Message-ID" WSP* ":" msg_id CRLF
end
rule obs_in_reply_to
"In-Reply-To" WSP* ":" (phrase / msg_id)* CRLF
end
rule obs_references
"References" WSP* ":" (phrase / msg_id)* CRLF
end
rule obs_id_left
local_part
end
rule obs_id_right
domain
end
rule obs_subject
"Subject" WSP* ":" unstructured CRLF
end
rule obs_comments
"Comments" WSP* ":" unstructured CRLF
end
rule obs_keywords
"Keywords" WSP* ":" obs_phrase_list CRLF
end
rule obs_resent_from
"Resent-From" WSP* ":" mailbox_list CRLF
end
rule obs_resent_send
"Resent-Sender" WSP* ":" mailbox CRLF
end
rule obs_resent_date
"Resent-Date" WSP* ":" date_time CRLF
end
rule obs_resent_to
"Resent-To" WSP* ":" address_list CRLF
end
rule obs_resent_cc
"Resent-Cc" WSP* ":" address_list CRLF
end
rule obs_resent_bcc
"Resent-Bcc" WSP* ":" (address_list / CFWS?) CRLF
end
rule obs_resent_mid
"Resent-Message-ID" WSP* ":" msg_id CRLF
end
rule obs_resent_rply
"Resent-Reply-To" WSP* ":" address_list CRLF
end
rule obs_return
"Return-Path" WSP* ":" path CRLF
end
rule obs_received
"Received" WSP* ":" name_val_list CRLF
end
rule obs_path
obs_angle_addr
end
rule obs_optional
field_name WSP* ":" unstructured CRLF
end
end
end