RFC 3894
Sieve Extension: Copying Without Side Effects
Sieve Extension: Copying Without Side Effects ๐
RFC 3894, Network Working Group, dated October 2004. It's written by Jutta Degener of Sendmail, Inc. and filed as a Standards Track document. The header doesn't list anything it obsoletes or updates. ๐
Status of this Memo ๐
This document specifies an Internet standards track protocol for the 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. ๐ธ
Copyright Notice ยฉ๏ธ
Copyright (C) The Internet Society (2004). ๐ฆ
Abstract โจ
okay so the Sieve scripting language lets users control what happens to their incoming e-mail ๐ By default, a message that a Sieve script processes gets saved in the owner's "inbox". Actions like "fileinto" and "redirect" cancel that default behavior ๐ โโ๏ธ
This document defines a new keyword parameter, :copy, for use with the Sieve "fileinto" and "redirect" actions. Adding :copy to an action stops it from cancelling the default "inbox" save. The result is that users can add commands to an existing script without changing what the rest of the script does. It's giving clean edits, no cap ๐ซถ
1. Introduction ๐
The Sieve scripting language [SIEVE] lets users control how their incoming e-mail is handled and disposed of ๐ฌ Two commands people use all the time are "fileinto" (saving into a local message store, such as an IMAP server) and "redirect" (forwarding to another e-mail address). Both of them cancel the Sieve default behavior of saving into the user's "inbox" ๐ญ
But some users want to forward an extra copy of a message to another address for safekeeping, or save a copy in a folder. They want that to happen in addition to regular delivery, and the regular delivery shouldn't be affected by the copy. Literally the most normal request ever ๐ฅบ
If saving an extra copy is all the user wanted to do, this would do the job:
fileinto "unfiltered";
keep;
The keep command does explicitly what the cancelled default behavior did. But the explicit keep is a bad stand-in for the implicit keep once more processing follows:
fileinto "unfiltered";
keep;
if header "Subject" "MAKE MONEY FAST!!!"
{
discard;
}
In this example, the discard does nothing against the explicit keep. The discarded message still ends up in the user's inbox ๐
It's possible to write Sieve code that perfectly expresses what a user wants. The problem is that the code gets unwieldy fast, because it has to keep track of the state that the implicit keep would have had without the fileinto or redirect command ๐ตโ๐ซ
This extension makes life easier for user interface designers and script writers by letting them express the "copy" semantics directly. Main character energy ๐
2. Conventions used ๐
The conventions for notation are the same as in [SIEVE] section 1.1. That includes the use of [KEYWORDS] and the "Syntax:" label for defining action and tagged argument syntax ๐ง
The capability string for the extension defined in this document is "copy" ๐
3. ":copy" extension to the "fileinto" and "redirect" commands ๐
Syntax:
"fileinto" [":copy"] <folder: string>
"redirect" [":copy"] <address: string>
If the optional :copy keyword is specified with "fileinto" or "redirect", the tagged command does not cancel the implicit keep. Instead, it just files or redirects a copy in addition to whatever else is happening to the message โจ
Example:
require ["copy", "fileinto"];
fileinto :copy "incoming";
# ... more processing follows ...
4. Security Considerations ๐
ngl this section is serious, bestie ๐ค
The copy extension makes it easier to eavesdrop on a user's message stream without the user noticing. This was technically possible before, if an attacker gained read/write access to a user's Sieve scripts. But now an attacker doesn't need to parse a script in order to modify it. Write access to Sieve scripts must be protected as strongly as read/write access to e-mail, for example by using secure directory protocols such as correctly parameterized LDAP over TLS [LDAP] ๐ก๏ธ
Organizations that want to monitor their users' e-mail traffic must learn their local data protection laws before creating stores of old e-mail traffic without control over, or perhaps even knowledge of, the senders or intended recipients ๐
Organizations that legally use redirect :copy to eavesdrop on correspondence (for example, by keeping a log to answer questions about insider trading at a later time) can avoid future problems by setting users' privacy expectations correctly ๐
5. IANA Considerations ๐๏ธ
The following template specifies the IANA registration of the "copy" Sieve extension specified in this document ๐
To: iana@iana.org
Subject: Registration of new Sieve extension
Capability name: copy
Capability keyword: copy
Capability arguments: N/A
Standards Track: RFC 3894
Person and email address to contact for further information:
Jutta Degener
Sendmail, Inc.
6425 Christie Ave, 4th Floor
Emeryville, CA 94608
Email: jutta@sendmail.com
This information has been added to the list of Sieve extensions given on http://www.iana.org/assignments/sieve-extensions ๐ธ
6. Acknowledgments ๐ซถ
Thanks to Eric Allman, Ned Freed, Will Lee, Nigel Swinson, and Rand Wacker for corrections and comments. Iconic group chat ๐
7. References ๐
7.1. Normative References
[KEYWORDS] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.
[SIEVE] Showalter, T., "Sieve: A Mail Filtering Language", RFC 3028, January 2001.
7.2. Informative References
[LDAP] Wahl, M., Alvestrand, H., Hodges, J., and R. Morgan, "Authentication Methods for LDAP", RFC 2829, May 2000.
Author's Address ๐ฎ
Jutta Degener Sendmail, Inc. 6425 Christie Ave, 4th Floor Emeryville, CA 94608
EMail: jutta@sendmail.com
Full Copyright Statement โ๏ธ
Copyright (C) The Internet Society (2004).
This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights.
This document and the information contained herein are provided on an "AS IS" basis, and THE CONTRIBUTOR, THE ORGANIZATION HE/S HE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. ๐
Intellectual Property ๐
The IETF takes no position regarding the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document, or the extent to which any license under such rights might or might not be available. Nor does it represent that it has made any independent effort to identify any such rights. Information on the IETF's procedures with respect to rights in IETF Documents can be found in BCP 78 and BCP 79.
Copies of IPR disclosures made to the IETF Secretariat, any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification can be obtained from the IETF on-line IPR repository at http://www.ietf.org/ipr.
The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required to implement this standard. Please address the information to the IETF at ietf-ipr@ietf.org.
Acknowledgement ๐
Funding for the RFC Editor function is currently provided by the Internet Society. ๐
๐ฆ where this page comes from
- ietf: rfc3894 2004-10
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms