X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=doc%2Fdoc-src%2Fspec.src;h=69ebca07deb03565ece8599542dcccee8ce5f770;hb=bc60667eb5b62a4d70806a02b8fb745a054a396e;hp=0819e718bf0eead16012ff97edd711b4c26c7ea3;hpb=d43194dfaff6028b9755250a5ef16c8ee2dbcd28;p=exim.git diff --git a/doc/doc-src/spec.src b/doc/doc-src/spec.src index 0819e718b..69ebca07d 100644 --- a/doc/doc-src/spec.src +++ b/doc/doc-src/spec.src @@ -1,4 +1,4 @@ -. $Cambridge: exim/doc/doc-src/spec.src,v 1.4 2005/01/26 14:52:08 ph10 Exp $ +. $Cambridge: exim/doc/doc-src/spec.src,v 1.6 2005/01/27 15:00:38 ph10 Exp $ . .set version "4.50" .set previousversion "4.40" @@ -10673,21 +10673,29 @@ terminating newline. .em .section Use of standard output and error by Perl +.index Perl||standard output and error You should not write to the standard error or output streams from within your -Perl code, as it is not defined how these are set up. In versions of Exim up to -at least 4.50, it is possible for the standard output or error to refer to the -SMTP connection during message reception. Writing to this stream is likely to -cause chaos. Something may be done about this in later releases. - -Unfortunately, the Perl \warn\ statment writes to the standard error stream, -and this may be embedded in Perl modules that you use, but over which you have -no control. One way round this is to ensure that the following Perl magic is -obeyed before \warn\ is used: -.display asis -$SIG{__WARN__} = sub { Exim::log_write($_[0]) }; -.endd -This causes the output of the \warn\ statement to be written to Exim's log -file. +Perl code, as it is not defined how these are set up. In versions of Exim +before 4.50, it is possible for the standard output or error to refer to the +SMTP connection during message reception via the daemon. Writing to this stream +is certain to cause chaos. From Exim 4.50 onwards, the standard output and +error streams are connected to \(/dev/null)\ in the daemon. The chaos is +avoided, but the output is lost. + +.index Perl||\warn\, use of +The Perl \warn\ statement writes to the standard error stream by default. Calls +to \warn\ may be embedded in Perl modules that you use, but over which you have +no control. When Exim starts up the Perl interpreter, it arranges for output +from the \warn\ statement to be written to the Exim main log. You can change +this by including appropriate Perl magic somewhere in your Perl code. For +example, to discard \warn\ output completely, you need this: +.display asis +$SIG{__WARN__} = sub { }; +.endd +Whenever a \warn\ is obeyed, the anonymous subroutine is called. In this +example, the code for the subroutine is empty, so it does nothing, but you can +include any Perl code that you like. The text of the \warn\ message is passed +as the first subroutine argument. .nem @@ -22236,6 +22244,7 @@ sender address in the ACL that is run for a \\VRFY\\ command. .section ACL verbs The ACL verbs are as follows: .numberpars $. +.index \accept\, ACL verb \accept\: If all the conditions are met, the ACL returns `accept'. If any of the conditions are not met, what happens depends on whether \endpass\ appears among the conditions (for syntax see below). If the failing condition is before @@ -22252,6 +22261,7 @@ to the next statement. If it does match, the recipient is verified, and the command is accepted if verification succeeds. However, if verification fails, the ACL yields `deny', because the failing condition is after \endpass\. .nextp +.index \defer\, ACL verb \defer\: If all the conditions are met, the ACL returns `defer' which, in an SMTP session, causes a 4\*xx*\ response to be given. For a non-SMTP ACL, \defer\ is the same as \deny\, because there is no way of sending a temporary @@ -22259,6 +22269,7 @@ error. For a \\RCPT\\ command, \defer\ is much the same as using a \%redirect%\ router and \":defer:"\ while verifying, but the \defer\ verb can be used in any ACL, and even for a recipient it might be a simpler approach. .nextp +.index \deny\, ACL verb \deny\: If all the conditions are met, the ACL returns `deny'. If any of the conditions are not met, control is passed to the next ACL statement. For example, @@ -22267,6 +22278,7 @@ deny dnslists = blackholes.mail-abuse.org .endd rejects commands from hosts that are on a DNS black list. .nextp +.index \discard\, ACL verb \discard\: This verb behaves like \accept\, except that it returns `discard' from the ACL instead of `accept'. It is permitted only on ACLs that are concerned with receiving messages, and it causes recipients to be discarded. @@ -22279,6 +22291,7 @@ message's recipients are discarded. Recipients that are discarded before \\DATA\\ do not appear in the log line when the \log@_recipients\ log selector is set. .nextp +.index \drop\, ACL verb \drop\: This verb behaves like \deny\, except that an SMTP connection is forcibly closed after the 5\*xx*\ error message has been sent. For example: .display asis @@ -22291,6 +22304,7 @@ drop message = I don't take more than 20 RCPTs There is no difference between \deny\ and \drop\ for the connect-time ACL. The connection is always dropped after sending a 550 response. .nextp +.index \require\, ACL verb \require\: If all the conditions are met, control is passed to the next ACL statement. If any of the conditions are not met, the ACL returns `deny'. For example, when checking a \\RCPT\\ command, @@ -22300,6 +22314,7 @@ require verify = sender passes control to subsequent statements only if the message's sender can be verified. Otherwise, it rejects the command. .nextp +.index \warn\, ACL verb \warn\: If all the conditions are met, a header line is added to an incoming message and/or a line is written to Exim's main log. In all cases, control passes to the next ACL statement. The text of the added header line and the log @@ -22447,6 +22462,7 @@ The ACL modifiers are as follows: .startitems .item "control = <>" +.index \control\, ACL modifier .em This modifier affects the subsequent processing of the SMTP connection or of an incoming message that is accepted. The effect of the first type of control @@ -22501,6 +22517,7 @@ require control = no_multiline_response .endp .item "delay = <