| < draft-segmuller-sieve-relation-01.txt | draft-segmuller-sieve-relation-02.txt > | |||
|---|---|---|---|---|
| A new Request for Comments is now available in online RFC libraries. | ||||
| Network Working Group W. Segmuller | RFC 3431 | |||
| Internet Draft IBM T.J. Watson Research Center | ||||
| Document: draft-segmuller-sieve-relation-01.txt September 2001 | ||||
| Expires: March 2002 | ||||
| Sieve Extension: Relational Tests | ||||
| Status of this Document | ||||
| This document is an Internet-Draft and is in full conformance with | ||||
| all provisions of Section 10 of RFC2026. Internet-Drafts are working | ||||
| documents of the Internet Engineering Task Force (IETF), its areas, | ||||
| and its working groups. Note that other groups may also distribute | ||||
| working documents as Internet-Drafts. | ||||
| Internet-Drafts are draft documents valid for a maximum of six months | ||||
| and may be updated, replaced, or obsoleted by other documents at any | ||||
| time. It is inappropriate to use Internet-Drafts as reference | ||||
| material or to cite them other than as "work in progress." | ||||
| The list of current Internet-Drafts can be accessed at | ||||
| http://www.ietf.org/ietf/1id-abstracts.txt | ||||
| The list of Internet-Draft Shadow Directories can be accessed at | ||||
| http://www.ietf.org/shadow.html. | ||||
| The protocol discussed in this document is experimental and subject | ||||
| to change. Persons planning on either implementing or using this | ||||
| protocol are STRONGLY URGED to get in touch with the author before | ||||
| embarking on such a project. | ||||
| Discussion and suggestions for improvement are requested, and should | ||||
| be sent to ietf-mta-filters@imc.org. This document will expire | ||||
| before 31 September 2001. Distribution of this memo is unlimited. | ||||
| Abstract | ||||
| This document describes the RELATIONAL extension to the Sieve mail | ||||
| filtering language [SIEVE]. This extension allows relational | ||||
| operators on field values and on the number of entities in header | ||||
| fields and addresses. | ||||
| 0 Change History | ||||
| changes from version -00 | ||||
| - domain names fixed in examples, thanks to Phil Pennock and Tony | ||||
| Hansen. | ||||
| - Strip leading and trailing spaces when using a match-type of | ||||
| ":value". | ||||
| 1 Introduction | ||||
| The RELATIONAL extension provides relational operators on the | ||||
| address, envelope and header tests. This extension also provides a | ||||
| way of counting the entities in a message header or address field. | ||||
| With this extension, the sieve script may now determine if a field is | ||||
| greater than or less than a value instead of just equal to. One use | ||||
| is for the x-priority field: move messages with a priority greater | ||||
| than 3 to the "work on later" folder. Mail could also be sorted by | ||||
| the from address. Those userids that start with 'a'-'m' go to one | ||||
| folder, and the rest go to another folder. | ||||
| The sieve script can also determine the number of fields in the | ||||
| header, or the number of addresses in a recipient field. An example: | ||||
| are there more than 5 addresses in the to and cc fields. | ||||
| 2 Conventions used in this document | ||||
| Conventions for notations are as in [SIEVE] section 1.1, including | ||||
| use of [KEYWORDS] and "Syntax:" label for the definition of action | ||||
| and tagged arguments syntax, and the use of [ABNF] | ||||
| The capability string associated with extension defined in this | ||||
| document is "relational". | ||||
| 3 Match Type | ||||
| This document defines two new match types. They are the VALUE match | ||||
| type and the COUNT match type. | ||||
| The syntax is: | ||||
| MATCH-TYPE =/ COUNT / VALUE | ||||
| COUNT = ":count" relational-match | ||||
| VALUE = ":value" relational-match | ||||
| relational-match = DQUOTE ( "gt" / "ge" / "lt" | ||||
| / "le" / "eq" / "ne" ) DQUOTE | ||||
| 3.1 Match Type Value | ||||
| The VALUE match type does a relational comparison between strings. | ||||
| The VALUE match type may be used with any comparator which returns | ||||
| sort information. | ||||
| Leading and trailing white space MUST be removed from the value from | ||||
| the message for the comparison. White space is defined as | ||||
| SP / HTAB / CRLF / CR / LF | ||||
| A value from the message is considered the left side of the relation. | ||||
| A value from the test expression, the key-list for address, envelope, | ||||
| and header tests, is the right side of the relation. | ||||
| If there are multiple values on either side or both sides, the test | ||||
| is considered true if any pair is true. | ||||
| 3.2 Match Type Count | ||||
| The COUNT match type first determines the number of the specified | ||||
| entities in the message and does a relational comparison of the | ||||
| number of entities to the values specified in the test expression. | ||||
| The COUNT match type SHOULD only be used with numeric comparators. A | ||||
| suitable comparator is "i;ascii-numeric" which is defined in [ACAP]. | ||||
| For the Address Test, this counts the number of recipients in the | ||||
| specified fields. Group names are ignored. | ||||
| For the Envelope Test, this counts the number of recipients in the | ||||
| specified envelope parts. | ||||
| For the Header Test, this counts the total number of instances of the | ||||
| specified fields. This does not count individual addresses in the | ||||
| "to", "cc", and other recipient fields. | ||||
| In all cases, if more than one field name is specified, the counts | ||||
| for all specified fields are added together to obtain the number for | ||||
| comparison. Thus, specifying ["to", "cc"] in an address COUNT test | ||||
| will compare the total number of "to" and "cc" addresses; if separate | ||||
| counts are desired, they must be done in two comparisons, perhaps | ||||
| joined by "allof" or "anyof". | ||||
| 4 Security Considerations | ||||
| Security considerations are discussed in [SIEVE]. | ||||
| It is belived that this extension doesn't introduce any additional | ||||
| security concerns. | ||||
| 5 Example | ||||
| Using the message: | ||||
| received: ... | ||||
| received: ... | ||||
| subject: example | ||||
| to: foo@example.com.invalid, baz@example.com.invalid | ||||
| cc: qux@example.com.invalid | ||||
| The test | ||||
| address :count "ge" :comparator "i;ascii-numeric" ["to", "cc"] | ||||
| ["3"] | ||||
| would be true and the test | ||||
| anyof ( address :count "ge" :comparator "i;ascii-numeric" | ||||
| ["to"] ["3"], | ||||
| address :count "ge" :comparator "i;ascii-numeric" | ||||
| ["cc"] ["3"] ) | ||||
| would be false. | ||||
| To check the number of received fields in the header, the following | ||||
| test may be used: | ||||
| header :count "ge" :comparator "i;ascii-numeric" | ||||
| ["received"] ["3"] | ||||
| This would return false. But | ||||
| header :count "ge" :comparator "i;ascii-numeric" | ||||
| ["received", "subject"] ["3"] | ||||
| would return true. | ||||
| The test: | ||||
| header :count "ge" :comparator "i;ascii-numeric" | ||||
| ["to", "cc"] ["3"] | ||||
| will always return false on an RFC 822 compliant message [RFC822], | ||||
| since a message can have at most one "to" field and at most one "cc" | ||||
| field. This test counts the number of fields, not the number of | ||||
| addresses. | ||||
| 6 Extended Example | ||||
| require "relational"; | ||||
| if header :value "lt" :comparator "i;ascii-numeric" | ||||
| ["x-priority"] ["3"] | ||||
| { | ||||
| fileinto "Priority"; | ||||
| } | ||||
| elseif address :count "gt" :comparator "i;ascii-numeric" | ||||
| ["to"] ["5"] | ||||
| { | ||||
| # everything with more than 5 recipients in the "to" field | ||||
| # is considered SPAM | ||||
| fileinto "SPAM"; | ||||
| } | ||||
| elseif address :value "gt" :all :comparator "i;ascii-casemap" | ||||
| ["from"] ["M"] | ||||
| { | ||||
| fileinto "From N-Z"; | ||||
| } else { | ||||
| fileinto "From A-M"; | ||||
| } | ||||
| if allof ( address :count "eq" :comparator "i;ascii-numeric" | ||||
| ["to", "cc"] ["1"] , | ||||
| address :all :comparator "i;ascii-casemap" | ||||
| ["to", "cc"] ["me@foo.example.com"] | ||||
| { | ||||
| fileinto "Only me"; | ||||
| } | ||||
| 7 Author's Address | ||||
| Wolfgang Segmuller | ||||
| IBM T.J. Watson Research Center | ||||
| 30 Saw Mill River Rd | ||||
| Hawthorne, NY 10532 | ||||
| Phone: 1-914-784-7408 | ||||
| Email: whs@watson.ibm.com | ||||
| Appendix A. References | Title: Sieve Extension: Relational Tests | |||
| Author(s): W. Segmuller | ||||
| Status: Standards Track | ||||
| Date: December 2002 | ||||
| Mailbox: whs@watson.ibm.com | ||||
| Pages: 8 | ||||
| Characters: 12849 | ||||
| Updates/Obsoletes/SeeAlso: None | ||||
| [SIEVE]; Showalter, T.; "Sieve: A Mail Filtering Language"; RFC 3028; | I-D Tag: draft-segmuller-sieve-relation-02.txt | |||
| Mirapoint, Inc.; January 2001 | ||||
| [Keywords]; Bradner, S.; "Key words for use in RFCs to Indicate | URL: ftp://ftp.rfc-editor.org/in-notes/rfc3431.txt | |||
| Requirement Levels"; RFC 2119; Harvard University; March 1997 | ||||
| [ABNF]; Crocker, D.; "Augmented BNF for Syntax Specifications: ABNF"; | This document describes the RELATIONAL extension to the Sieve mail | |||
| RFC 2234; Internet Mail Consortium; November, 1997. | filtering language defined in RFC 3028. This extension extends | |||
| existing conditional tests in Sieve to allow relational operators. | ||||
| In addition to testing their content, it also allows for testing of | ||||
| the number of entities in header and envelope fields. | ||||
| [RFC822]; Crocker, D.; "Standard for the Format of ARPA Internet Text | This is now a Proposed Standard Protocol. | |||
| Messages"; RFC 822; University of Delaware; August 1982 | ||||
| [ACAP]; Newman, C. and J. G. Myers, "ACAP -- Application | This document specifies an Internet standards track protocol for the | |||
| Configuration Access Protocol", RFC 2244, November 1997. | Internet community, and requests discussion and suggestions for | |||
| improvements. Please refer to the current edition of the "Internet | ||||
| Official Protocol Standards" (STD 1) for the standardization state | ||||
| and status of this protocol. Distribution of this memo is unlimited. | ||||
| Appendix B. Full Copyright Statement | This announcement is sent to the IETF list and the RFC-DIST list. | |||
| Requests to be added to or deleted from the IETF distribution list | ||||
| should be sent to IETF-REQUEST@IETF.ORG. Requests to be | ||||
| added to or deleted from the RFC-DIST distribution list should | ||||
| be sent to RFC-DIST-REQUEST@RFC-EDITOR.ORG. | ||||
| Copyright (C) The Internet Society 2001. All Rights Reserved. | Details on obtaining RFCs via FTP or EMAIL may be obtained by sending | |||
| an EMAIL message to rfc-info@RFC-EDITOR.ORG with the message body | ||||
| help: ways_to_get_rfcs. For example: | ||||
| This document and translations of it may be copied and furnished to | To: rfc-info@RFC-EDITOR.ORG | |||
| others, and derivative works that comment on or otherwise explain it | Subject: getting rfcs | |||
| or assist in its implementation may be prepared, copied, published | ||||
| and distributed, in whole or in part, without restriction of any | ||||
| kind, provided that the above copyright notice and this paragraph are | ||||
| included on all such copies and derivative works. However, this | ||||
| document itself may not be modified in any way, such as by removing | ||||
| the copyright notice or references to the Internet Society or other | ||||
| Internet organizations, except as needed for the purpose of | ||||
| developing Internet standards in which case the procedures for | ||||
| copyrights defined in the Internet Standards process must be | ||||
| followed, or as required to translate it into languages other than | ||||
| English. | ||||
| The limited permissions granted above are perpetual and will not be | help: ways_to_get_rfcs | |||
| revoked by the Internet Society or its successors or assigns. | ||||
| This document and the information contained herein is provided on an | Requests for special distribution should be addressed to either the | |||
| "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING | author of the RFC in question, or to RFC-Manager@RFC-EDITOR.ORG. Unless | |||
| TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING | specifically noted otherwise on the RFC itself, all RFCs are for | |||
| BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION | unlimited distribution.echo | |||
| HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF | Submissions for Requests for Comments should be sent to | |||
| MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. | RFC-EDITOR@RFC-EDITOR.ORG. Please consult RFC 2223, Instructions to RFC | |||
| Authors, for further information. | ||||
| End of changes. 13 change blocks. | ||||
| 263 lines changed or deleted | 34 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||