:

$:

Rewrite once and continue RHS prefix

Ordinarily, the RHS of a rule continues to rewrite the workspace for as long as the workspace continues to match the LHS. This looping behavior can be useful when intended, but can be a disaster if unintended . But consider what could happen, under older versions of sendmail , if you wrote a rule such as the following, which seeks to match a domain address with at least one first dot:

 R $+ . $*          .OK 

An address such as wash.dc.gov will match the LHS and will be rewritten by the RHS into wash.OK . But because rules continue to match until they fail, the new address, wash.OK , will be matched by the LHS again, and again rewritten to be wash.OK . As you can see, this rule sets up an infinite loop. [11] To prevent such infinite looping on this rule, you should prefix the RHS with the $ : operator:

[11] Fortunately modern sendmail detects and breaks such infinite loops for you now.

 R $+ . $*  $:  .OK 

The $ : prefix tells sendmail to rewrite the workspace only once. With the $ : prefix added to our example, the domain address wash.dc.gov would be rewritten to wash.OK exactly once. Progress would then proceed to the next following rule (if there is one).

The $ : prefix is described in full in Section 18.7.2 of this chapter.



Sendmail
sendmail, 4th Edition
ISBN: 0596510292
EAN: 2147483647
Year: 2002
Pages: 1174

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net