X-Git-Url: https://git.exim.org/users/jgh/exim.git/blobdiff_plain/0d7911ea3aa8124490bd9272474aeba8b4a6313e..089fc87a02b0c682ace3afc2f597f5e5b3b8f076:/doc/doc-txt/experimental-spec.txt?ds=inline diff --git a/doc/doc-txt/experimental-spec.txt b/doc/doc-txt/experimental-spec.txt index 0eeb939bf..64916e4a9 100644 --- a/doc/doc-txt/experimental-spec.txt +++ b/doc/doc-txt/experimental-spec.txt @@ -1271,12 +1271,101 @@ $tls_out_tlsa_usage (detailed above). -SMTPUTF8 +INTERNATIONAL ------------------------------------------------------------ +SMTPUTF8 Internationalised mail name handling. RFCs 6530, 6533, 5890 -Compile with libidn. +Compile with EXPERIMENTAL_INTERNATIONAL and libidn. + +New main config option smtputf8_advertise_hosts, default '*', +a host list. If this matches the sending host and +accept_8bitmime is true (the default) then the ESMTP option +SMTPUTF8 will be advertised. + +If the sender specifies the SMTPUTF8 option on a MAIL command +international handling for the message is enabled and +the expansion variable $message_smtputf8 will have value TRUE. + +The option allow_utf8_domains is set to true for this +message. All DNS lookups are converted to a-label form +whatever the setting of allow_utf8_domains. + +Both localparts and domain are maintained as the original +utf8 form internally; any matching or regex use will +require appropriate care. Filenames created, eg. by +the appendfile transport, will have utf8 name. + +Helo names sent by the smtp transport will have any utf8 +components expanded to a-label form. + +Any certificate name checks will be done using the a-label +form of the name. + +Log lines and Received-by: header lines will aquire a "utf8" +prefix on the protocol element, eg. utf8esmtp. + +New expansion operators: + ${utf8_domain_to_alabel:str} + ${utf8_domain_from_alabel:str} + ${utf8_localpart_to_alabel:str} + ${utf8_localpart_from_alabel:str} + +New "control = utf8_downconvert" ACL modifier, +sets a flag requiring that addresses are converted to +a-label form before smtp delivery, for use in a +Message Submission Agent context. Can also be +phrased as "control = utf8_downconvert/1" and is +mandatory. The flag defaults to zero and can be cleared +by "control = utf8_downconvert/0". The value "-1" +may also be used, to use a-label for only if the +destination host does not support SMTPUTF8. + +If mua_wrapper is set, the utf8_downconvert control +defaults to -1 (convert if needed). + + +There is no explicit support for VRFY and EXPN. +Configurations supporting these should inspect +$smtp_command_argument for an SMTPUTF8 argument. + +There is no support for LMTP on Unix sockets. +Using the "lmtp" protocol option on an smtp transport, +for LMTP over TCP, should work as expected. + +Known issues: + - DSN unitext handling is not present + - no provision for converting logging from or to UTF-8 + +---- +IMAP folder names + +New expansion operator: + +${imapfolder {} {} {}} + +The string is converted from the charset specified by the headers charset +command (in a filter file) or headers_charset global option, to the +modified UTF-7 encoding specified by RFC 2060, with the following +exception: All occurences of (which has to be a single character) +are replaced with periods ("."), and all periods and slashes that aren't + and are not in the string are BASE64 encoded. + +The third argument can be omitted, defaulting to an empty string. +The second argument can be omitted, defaulting to "/". + +This is the encoding used by Courier for Maildir names on disk, and followed +by many other IMAP servers. + + Example 1: ${imapfolder {Foo/Bar}} yields "Foo.Bar". + Example 2: ${imapfolder {Foo/Bar}{.}{/}} yields "Foo&AC8-Bar". + Example 3: ${imapfolder {Räksmörgås}} yields "R&AOQ-ksm&APY-rg&AOU-s". + +Note that the source charset setting is vital, and also that characters +must be representable in UTF-16. + + --------------------------------------------------------------