maildir_tag hint provided by Heiko Schlittermann.
[exim.git] / doc / doc-docbook / spec.xfpt
index b75e36ba4ba6540491ea1a3211b6db1f27fc4d63..34205b4f4c260800656bdf65da58a09312c585bf 100644 (file)
@@ -11137,8 +11137,17 @@ number of lines received. Before delivery happens (that is, before filters,
 routers, and transports run) the count is increased to include the
 &'Received:'& header line that Exim standardly adds, and also any other header
 lines that are added by ACLs. The blank line that separates the message header
-from the body is not counted. Here is an example of the use of this variable in
-a DATA ACL:
+from the body is not counted.
+
+.new
+As with the special case of &$message_size$&, during the expansion of the
+appendfile transport's maildir_tag option in maildir format, the value of
+&$message_linecount$& is the precise size of the number of newlines in the
+file that has been written (minus one for the blank line between the
+header and the body).
+.wen
+
+Here is an example of the use of this variable in a DATA ACL:
 .code
 deny message   = Too many lines in message header
      condition = \
@@ -20183,6 +20192,7 @@ The regular expression should not assume that the length is at the end of the
 file name (even though &%maildir_tag%& puts it there) because maildir MUAs
 sometimes add other information onto the ends of message file names.
 
+Section &<<SECID136>>& contains further information.
 
 
 .option quota_warn_message appendfile string&!! "see below"
@@ -20597,6 +20607,7 @@ tag is added to its name. However, if adding the tag takes the length of the
 name to the point where the test &[stat()]& call fails with ENAMETOOLONG,
 the tag is dropped and the maildir file is created with no tag.
 
+.new
 .vindex "&$message_size$&"
 Tags can be used to encode the size of files in their names; see
 &%quota_size_regex%& above for an example. The expansion of &%maildir_tag%&
@@ -20606,8 +20617,20 @@ forced to fail, the tag is ignored, but a non-forced failure causes delivery to
 be deferred. The expanded tag may contain any printing characters except &"/"&.
 Non-printing characters in the string are ignored; if the resulting string is
 empty, it is ignored. If it starts with an alphanumeric character, a leading
-colon is inserted.
+colon is inserted; this default has not proven to be the path that popular
+maildir implementations have chosen (but changing it in Exim would break
+backwards compatibility).
 
+For one common implementation, you might set:
+.code
+maildir_tag = ,S=${message_size}
+.endd
+but you should check the documentation of the other software to be sure.
+
+It is advisable to also set &%quota_size_regex%& when setting &%maildir_tag%&
+as this allows Exim to extract the size from your tag, instead of having to
+&[stat()]& each message file.
+.wen
 
 
 .section "Using a maildirsize file" "SECID136"
@@ -32110,8 +32133,10 @@ log_file_path = $spool_directory/log/%slog
 If you do not specify anything at build time or run time, that is where the
 logs are written.
 
-A log file path may also contain &`%D`& if datestamped log file names are in
-use &-- see section &<<SECTdatlogfil>>& below.
+.new
+A log file path may also contain &`%D`& or &`%M`& if datestamped log file names
+are in use &-- see section &<<SECTdatlogfil>>& below.
+.wen
 
 Here are some examples of possible settings:
 .display
@@ -32151,18 +32176,20 @@ renamed.
 
 
 
+.new
 .section "Datestamped log files" "SECTdatlogfil"
 .cindex "log" "datestamped files"
 Instead of cycling the main and reject log files by renaming them
 periodically, some sites like to use files whose names contain a datestamp,
-for example, &_mainlog-20031225_&. The datestamp is in the form &_yyyymmdd_&.
-Exim has support for this way of working. It is enabled by setting the
-&%log_file_path%& option to a path that includes &`%D`& at the point where the
-datestamp is required. For example:
+for example, &_mainlog-20031225_&. The datestamp is in the form &_yyyymmdd_& or
+&_yyyymm_&. Exim has support for this way of working. It is enabled by setting
+the &%log_file_path%& option to a path that includes &`%D`& or &`%M`& at the
+point where the datestamp is required. For example:
 .code
 log_file_path = /var/spool/exim/log/%slog-%D
 log_file_path = /var/log/exim-%s-%D.log
 log_file_path = /var/spool/exim/log/%D-%slog
+log_file_path = /var/log/exim/%s.%M
 .endd
 As before, &`%s`& is replaced by &"main"& or &"reject"&; the following are
 examples of names generated by the above examples:
@@ -32170,6 +32197,7 @@ examples of names generated by the above examples:
 /var/spool/exim/log/mainlog-20021225
 /var/log/exim-reject-20021225.log
 /var/spool/exim/log/20021225-mainlog
+/var/log/exim/main.200212
 .endd
 When this form of log file is specified, Exim automatically switches to new
 files at midnight. It does not make any attempt to compress old logs; you
@@ -32178,15 +32206,18 @@ run &'exicyclog'& with this form of logging.
 
 The location of the panic log is also determined by &%log_file_path%&, but it
 is not datestamped, because rotation of the panic log does not make sense.
-When generating the name of the panic log, &`%D`& is removed from the string.
-In addition, if it immediately follows a slash, a following non-alphanumeric
-character is removed; otherwise a preceding non-alphanumeric character is
-removed. Thus, the three examples above would give these panic log names:
+When generating the name of the panic log, &`%D`& or &`%M`& are removed from
+the string. In addition, if it immediately follows a slash, a following
+non-alphanumeric character is removed; otherwise a preceding non-alphanumeric
+character is removed. Thus, the four examples above would give these panic
+log names:
 .code
 /var/spool/exim/log/paniclog
 /var/log/exim-panic.log
 /var/spool/exim/log/paniclog
+/var/log/exim/panic
 .endd
+.wen
 
 
 .section "Logging to syslog" "SECID249"