diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2007-05-06 08:28:34 +0000 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2007-05-06 08:28:34 +0000 |
commit | 362926c7d0b90773f5dd9f60772063fb78e2c087 (patch) | |
tree | d7ae444b4837c625ccb5f883c5a64327622011be /doc | |
parent | 5d929766e74bf61a5ee324b1ab616d34db2fbee4 (diff) | |
download | mailfromd-362926c7d0b90773f5dd9f60772063fb78e2c087.tar.gz mailfromd-362926c7d0b90773f5dd9f60772063fb78e2c087.tar.bz2 |
update
git-svn-id: file:///svnroot/mailfromd/trunk@1413 7a8a7f39-df28-0410-adc6-e0d955640f24
Diffstat (limited to 'doc')
-rw-r--r-- | doc/gacopyz.texi | 13 | ||||
-rw-r--r-- | doc/mailfromd.texi | 231 | ||||
-rw-r--r-- | doc/mtasim.texi | 12 |
3 files changed, 126 insertions, 130 deletions
diff --git a/doc/gacopyz.texi b/doc/gacopyz.texi index eadb788f..5eecc6f2 100644 --- a/doc/gacopyz.texi +++ b/doc/gacopyz.texi @@ -21,10 +21,10 @@ Kazimierz GrzeĊkowiak @c There is no easy way to represent Polish characters in Texinfo, @c hence this funny notation: @quotation -Gacopyz, panie, to m@'owi@,{a} ze to mysa... Ze to tako +@i{Gacopyz, panie, to m@'owi@,{a} ze to mysa... Ze to tako mysa co @'swieck@,{e} w ko@'sciele zjad@l{}a i wniebowst@,{a}pienia dost@,{a}pi@l{}a. A to nie je mysa, ino gacopyz! To nadprzyrodz@l{}une, -to g@l{}ow@,{a} na d@'o@l{} @'spi! +to g@l{}ow@,{a} na d@'o@l{} @'spi!} Kazimierz Grze@'skowiak @end quotation @@ -32,14 +32,15 @@ Kazimierz Grze@'skowiak @samp{Gacopyz} is the client library implementing Milter protocol. It differs considerably from the Sendmail implementation and offers a -new and more flexible API. The old API is supported for compatibility -with @command{libmilter}. +new and more flexible @acronym{API}. The old @acronym{API} is +supported for compatibility with @command{libmilter}. The library name comes from the song @samp{Rozprawa o robokach} by @uref{http://gray.gnu.org.ua/grzeskowiak.html, Kazimierz Grzeskowiak}. The phrase @samp{A to nie je mysa, ino gacopyz} exactly describes what the library is: @samp{That is no libmilter, but gacopyz}. - Future versions of the documentation will include the detailed API -description. + Future versions of this documentation will include the detailed +description of the library. + diff --git a/doc/mailfromd.texi b/doc/mailfromd.texi index 3a8bf74a..fbbf7a58 100644 --- a/doc/mailfromd.texi +++ b/doc/mailfromd.texi @@ -437,7 +437,7 @@ the expiration timeout in your cache database. @item When verifying the remote address, no attempt to actually deliver the message is made. If @acronym{MTA} accepts the address, -@command{mailfromd} assumes it is OK. However in reality, mail for a +@command{mailfromd} assumes it is @sc{ok}. However in reality, mail for a remote address can bounce @emph{after} the nearest @acronym{MTA} accepts the recipient address. @@ -651,7 +651,7 @@ option port} statement in the filter script (@pxref{pragma port}). @dfn{Expiration interval} defines the period of time during which a record in the @command{mailfromd} database is considered valid. It is described in more detail in @ref{Databases}. The default value is -86400 seconds, i.e. 24 hours. It is OK for most sites. If, however, +86400 seconds, i.e. 24 hours. It is @sc{ok} for most sites. If, however, you wish to change it, use @var{DEFAULT_EXPIRE_INTERVAL} environment variable. @@ -5969,7 +5969,7 @@ in the form of a standard @acronym{URL}: @noindent The @var{proto} part specifies the @dfn{connection protocol}. It should be @samp{tcp} for the @acronym{TCP} connection and @samp{file} -or @samp{socket} for the connection via UNIX socket. In the latter +or @samp{socket} for the connection via @acronym{UNIX} socket. In the latter case the @var{proto} part can be omitted. When using @acronym{TCP} connection, the @var{path} part gives the remote host name or @acronym{IP} address and the optional @var{port} specifies the port number or @@ -5983,7 +5983,7 @@ tcp://remote.filter.net:3314 # @file{/etc/services}):} tcp://remote.filter.net:spamd -# @r{Connect via local UNIX socket (equivalent forms):} +# @r{Connect via a local @acronym{UNIX} socket (equivalent forms):} /var/run/filter.sock file:///var/run/filter.sock socket:///var/run/filter.sock @@ -6116,11 +6116,12 @@ done @cindex greylist_seconds_left, global variable Returns true if the @var{key} is found in the greylist database (controlled by @code{#pragma database greylist} pragma, @pxref{database}). The argument @var{interval} gives the greylisting -interval in seconds. The function sets internal variable -@code{greylist_seconds_left} to the number of seconds left to the end -of greylisting period. @xref{Greylisting}, for the detailed explanation. +interval in seconds. The function stores the number of seconds left to the end +of greylisting period in the internal variable +@code{greylist_seconds_left}. @xref{Greylisting}, for the detailed +explanation. - @code{greylist} function can signal @code{dbfailure} exception. + The function @code{greylist} can signal @code{dbfailure} exception. @end deftypefn @deftypefn {Built-in Function} boolean listens (string @var{host}, [number @var{port}]) @@ -6138,7 +6139,7 @@ discussion. @end deftypefn @deftypefn {Built-in Function} boolean validuser (string @var{name}) - Returns @code{true} if the authenticity of user @var{name} is + Returns @code{true} if authenticity of the user @var{name} is confirmed using mailutils authentication system. @xref{Local Account Verification}, for more details. @end deftypefn @@ -6147,11 +6148,11 @@ Verification}, for more details. @deftypefn {Library Function} boolean valid_domain (string @var{domain}) Returns @code{true} if the domain name @var{domain} has a -corresponding A record or if it has any @samp{MX} records, that is if it can -be possible to send mail to it. +corresponding A record or if it has any @samp{MX} records, i.e. if it +is possible to send mail to it. @flindex valid_domain.mf -To use this function, require include @file{valid_domain.mf} module +To use this function, require @file{valid_domain.mf} module (@pxref{Modules}): @smallexample @@ -6208,13 +6209,13 @@ client @acronym{IP} address. @node Mail Sending Functions @subsubsection Mail Sending Functions - The mail sending functions are new interfaces, introduced with + The mail sending functions are new interfaces, introduced in version 3.1. The underlying mechanism for sending mail, called @dfn{mailer}, is specified by @option{--mailer} command line option. This global setting can be overridden using the last optional argument to a -particular function. In both cases, the mailer is specified in the +particular function. In any case, the mailer is specified in the form of a @acronym{URL}. @cindex @acronym{URL}, mailer @@ -6222,7 +6223,7 @@ form of a @acronym{URL}. @anchor{mailer url} @dfn{Mailer @acronym{URL}} begins with a protocol specification. Two protocol specifications are currently supported: @samp{sendmail} -and @samp{smtp}. The former means to use a +and @samp{smtp}. The former means to use a @command{sendmail}-compatible program to send mails. Such a program must be able to read mail from its standard input and must support the following options: @@ -6239,7 +6240,8 @@ Get recipient addresses from the message. @end table These conditions are met by most existing @acronym{MTA} programs, such -as @command{exim} or @command{postfix}. +as @command{exim} or @command{postfix} (to say nothing of +@command{sendmail} itself). Following the protocol specification is @dfn{mailer location}, which is is separated from it by a colon. For @samp{sendmail} protocol, @@ -6251,15 +6253,17 @@ sendmail:/usr/sbin/sendmail @end smallexample A special form of a sendmail @acronym{URL}, consisting of protocol -specification only -- @samp{sendmail:} -- is also allowed. It means +specification only (@samp{sendmail:}) is also allowed. It means ``use the sendmail binary from the @code{_PATH_SENDMAIL} macro in your @file{/usr/include/paths.h} file''. This is the default mailer. The @samp{smtp} protocol means to use an @acronym{SMTP} server directly. In this case the mailer location consists of two slashes, -the @acronym{IP} address or host name of the @acronym{SMTP} server, and, -optionally, the port number. For example: +followed by the @acronym{IP} address or host name of the @acronym{SMTP} +server, and, optionally, the port number. If the port number is +present, it is separated from the rest of @acronym{URL} by a colon. +For example: @smallexample @group @@ -6271,10 +6275,11 @@ smtp://remote.server.net:24 @deftypefn {Built-in Function} void send_mail (string @var{msg}, @ string @var{to} [, string @var{from}, string @var{mailer}]) - Sends message @var{msg} to the email address @var{to}. @var{msg} -must be a valid @acronym{RFC} 2822 message, consisting of headers and body. -The @var{to} argument can contain several email addresses. In this -case the message will be sent to each recipient specified in @var{to}. + Sends message @var{msg} to the email address @var{to}. The value of +@var{msg} must be a valid @acronym{RFC} 2822 message, consisting of +headers and body. The @var{to} argument can contain several email +addresses. In this case the message will be sent to each recipient +specified in @var{to}. Optional arguments are: @@ -6404,8 +6409,8 @@ zone. @deftypefn {Library Function} boolean match_dnsbl (string @var{address}, @ string @var{zone}, string @var{range}) -This function looks up the @var{address} in the @acronym{DNS} -blacklist zone @var{zone} and checks if the return matches +This function looks up @var{address} in the @acronym{DNS} +blacklist zone @var{zone} and checks if the return falls into the given @var{range} of @acronym{IP} addresses. It is intended as a replacement for the Sendmail macros @samp{dnsbl} and @@ -6442,7 +6447,7 @@ returns @code{false}. This function checks if the @acronym{IP} address, corresponding to the domain part of @var{email} is listed in the @acronym{RHS DNS} blacklist zone -@var{zone}, and if so, whether its record matches the given range of +@var{zone}, and if so, whether its record falls into the given range of @acronym{IP} addresses @var{range}. It is intended as a replacement for the Sendmail macro @samp{rhsbl} @@ -6683,9 +6688,9 @@ additional information in global variables: explanation string as returned by the publishing domain, prefixed with the value of the global variable @code{spf_explanation_prefix}. - For example, if @code{spf_explanation_prefix} contains @samp{%@{o@} -explains: }, and the publishing domain @samp{example.com} returns the -explanation string @samp{Please see + For example, if @code{spf_explanation_prefix} contains @samp{The +domain %@{o@} explains: }, and the publishing domain +@samp{example.com} returns the explanation string @samp{Please see http://www.example.com/mailpolicy.html}, than the value of @code{spf_explanation} will be: @@ -6758,7 +6763,7 @@ Normally it is the domain portion of the @code{MAIL FROM} or The @code{HELO} identity. @end table - Before returning the @code{check_host} function stores + Before returning, the @code{check_host} function stores additional information in the same global variables, as @code{spf_check_host}. @xref{spf-globals, the list}, for the description of these. In addition, it sets the variable @@ -6777,9 +6782,9 @@ representation. explanation string as returned by the publishing domain, prefixed with the value of the global variable @code{spf_explanation_prefix}. - For example, if @code{spf_explanation_prefix} contains @samp{%@{o@} -explains: }, and the publishing domain @samp{example.com} returns the -explanation string @samp{Please see + For example, if @code{spf_explanation_prefix} contains @samp{The +domain %@{o@} explains: }, and the publishing domain +@samp{example.com} returns the explanation string @samp{Please see http://www.example.com/mailpolicy.html}, than the value of @code{spf_explanation} will be: @@ -6837,17 +6842,17 @@ the decision based on the cached data, or to @samp{0} otherwise. @subsubsection Debugging Functions These functions allow to enable debugging and tracing for a certain -pieces of code. +piece of code. @deftypefn {Built-in Function} void debug (string @var{spec}) -Enable debugging. @var{spec} sets the debugging level the format, -described in @ref{debugging level specification}. +Enable debugging. The value of @var{spec} sets the debugging level. +@xref{debugging level specification}, for the description of its format. @end deftypefn @deftypefn {Built-in Function} number debug_level ([string @var{srcname}]) -This function returns the current debugging level for the source +This function returns the debugging level currently in effect for the source module @var{srcname}, or the global debugging level, if called without -argument. +arguments. For example, if the program was started with @option{--debug=20,@/engine=8} option, then: @@ -6877,7 +6882,7 @@ debug_spec("engine,db") @result{} "db=30,engine=8" @end smallexample @noindent -When called without argument, @code{debug_spec} will return full +When called without arguments, @code{debug_spec} returns full debugging level specification, as shown in the example below: @smallexample @@ -6914,8 +6919,8 @@ simultaneously: @smallexample @group - /* @r{Save debugging specifications for the sources we are - * interested in} + /* @r{Save debugging specifications for the sources we are} + * @r{interested in:} */ set dspec debug_spec("dns,dnsbase,db") /* @r{Set new debugging spec} */ @@ -6938,7 +6943,7 @@ Disable tracing for given modules. @end deftypefn This pair of functions is also designed to be used together in -bracket-like fashion. They are useful for debugging +a bracket-like fashion. They are useful for debugging @command{mailfromd}, but are not advised to use otherwise, since tracing slows down the execution considerably. @@ -6953,7 +6958,7 @@ for the detailed description of stack traces. manageable by defining new functions. @cindex function definition, syntax of - Definitions of functions can appear anywhere between the handler + The function definitions can appear anywhere between the handler declarations in a filter program. The only requirement is that the function definition occurs before the place where the function is invoked. @@ -7026,8 +7031,8 @@ done The @code{returns} part in the function declaration is optional. A declaration lacking it defines a @dfn{procedure}, or @dfn{void function}, i.e. a function that is not supposed to return any value. -Such functions cannot be used in expressions, instead they should be -used in statement context (@pxref{Statements}). The following example +Such functions cannot be used in expressions, instead they are +used as statements (@pxref{Statements}). The following example shows a function that emits a customized temporary failure notice: @smallexample @@ -7097,7 +7102,7 @@ and @samp{n} for numeric. The same holds true for @var{rettype} as well. @cindex positional parameters, in functions - The variables declared this way are called @dfn{positional + The parameters declared this way are called @dfn{positional parameters}. The function can access its actual arguments using the notation @code{$@var{n}}, where @var{n} is the ordinal number of the argument@footnote{Well, to tell you the truth, you can access named @@ -7135,7 +7140,8 @@ function, do @code{#require revip}. @enumerate 1 @cindex revip, definition of -@item revip +@item @code{revip}@* + The function @code{revip} (@pxref{revip}) is implemented as follows: @smallexample @@ -7163,7 +7169,8 @@ done @end smallexample @cindex strip_domain_part, definition of -@item strip_domain_part +@item @code{strip_domain_part}@* + This function returns at most @var{n} last components of the domain name @var{domain} (@pxref{strip_domain_part}). @@ -7186,7 +7193,7 @@ done @end smallexample @cindex valid_domain, definition -@item valid_domain +@item @code{valid_domain}@* @xref{valid_domain}, for the description of this function. Its definition follows: @@ -7203,7 +7210,8 @@ done @end smallexample @cindex match_dnsbl, definition -@item match_dnsbl +@item @code{match_dnsbl}@* + The function @code{match_dnsbl} (@pxref{match_dnsbl}) is defined as follows: @@ -7302,7 +7310,6 @@ precedence rules and work as you would expect them to. @subsection Relational Expressions Relational expressions are: - @cindex @code{<} (left angle bracket), @code{<} operator @cindex left angle bracket (@code{<}), @code{<} operator @cindex @code{<} (left angle bracket), @code{<=} operator @@ -7375,7 +7382,7 @@ $f matches '.*@@GNU\.ORG\.UA' @result{} @code{true} @end smallexample The @code{fnmatches} operator compares its left-hand operand with a -globbing pattern (@cite{glob(7)}) given as its right-hand side +globbing pattern (see @cite{glob(7)}) given as its right-hand side operand. For example: @smallexample @@ -7396,9 +7403,9 @@ The expression: @end smallexample @noindent -is evaluated as follows: first, the expression @var{x} is analyzed, if +is evaluated as follows: first, the expression @var{x} is analyzed and, if it is an email address, its domain part is selected. If it is not, -the value is used as is. Then the list of @samp{MX}s for this domain is +its value is used verbatim. Then the list of @samp{MX}s for this domain is looked up. Each of @samp{MX} names is then compared with the regular expression @var{y}. If any of the names matches, the expression returns true. Otherwise, its result is false. @@ -7517,9 +7524,9 @@ condition: if not %x < 2 and %y = 3 @end smallexample -It is understood as ``if x is not lower than 2 and y equals 3'', +It is understood as ``if @code{x} is not less than 2 and @code{y} equals 3'', whereas with the usual precedence for @samp{not} it would have meant -``if negated x is lower than 2 and y equals 3''.} +``if negated @code{x} is less than 2 and @code{y} equals 3''.} The following table lists all operators in order of decreasing precedence: @@ -7600,13 +7607,13 @@ desired type: to cast an expression to string, concatenate an empty string to it, e.g.: @smallexample - %var "" + "" %var @end smallexample Similarly, to cast an expression to numeric, add zero to it: @smallexample - %var + 0 + 0 + %var @end smallexample @node Statements @@ -7774,8 +7781,8 @@ done @node Pass @subsection The @code{pass} statement @kwindex pass - The @code{pass} statement has no effect. It should be used when -no statement is needed but the language syntax requires one: + The @code{pass} statement has no effect. It is used in places +where no statement is needed, but the language syntax requires one: @smallexample @group @@ -7828,9 +7835,9 @@ branches and @dfn{switch} statements. @end smallexample @noindent -The @var{condition} is an expression that governs the control flow +Here, @var{condition} is an expression that governs control flow within the statement. Both @var{then-body} and @var{else-body} are -lists of @command{mailfromd} statements. If the @var{condition} is +lists of @command{mailfromd} statements. If @var{condition} is true, @var{then-body} is executed, if it is false, @var{else-body} is executed. The @samp{else} part of the statement is optional. The condition is considered false if it evaluates to zero, otherwise it is @@ -7850,7 +7857,7 @@ fi This will accept the message if the value of the @command{Sendmail} macro @code{$f} is an empty string, and reject it otherwise. Both @var{then-body} and @var{else-body} can be compound statements -including other @code{if} statements. The nesting level of +including other @code{if} statements. Nesting level of conditional statements is not limited. To facilitate writing complex conditional statements, the @code{elif} @@ -7901,16 +7908,18 @@ eventual @samp{case} branches. This statement is executed as follows: the @var{condition} expression is evaluated and if its value equals @var{x1} or @var{x2} -(or any other @var{x} from the first @code{case}), then the -@var{stmt1} is executed. Otherwise, if the @var{condition} evaluates +(or any other @var{x} from the first @code{case}), then +@var{stmt1} is executed. Otherwise, if @var{condition} evaluates to @var{y1} or @var{y2} (or any other @var{y} from the second -@code{case}), then the @var{stmt2} is executed. Other @code{case} -branches are tried in turn, if none of them matches, the @var{stmt} is -executed. +@code{case}), then @var{stmt2} is executed. Other @code{case} +branches are tried in turn. If none of them matches, @var{stmt} +(called the @dfn{default branch}) is executed. There can be as many @code{case} branches as you wish. The @code{default} branch is optional. There can be at most one -@code{default} branch. Consider the following example: +@code{default} branch. + + An example of @code{switch} statement follows: @smallexample @group @@ -7933,8 +7942,8 @@ header to it. If @code{x} equals 2 or 4 or 6, this code will add @samp{X-Branch: 2} header to the message and will continue processing it. Otherwise, it will reject the message. - The @var{condition} in the @code{switch} statement can be both -numeric and string expression. The type of the condition governs the + The controlling condition of a @code{switch} statement may evaluate +to numeric or string type. The type of the condition governs the type of comparisons used in @code{case} branches: for numeric types, numeric equality will be used, whereas for string types, string equality is used. @@ -8131,7 +8140,7 @@ let's consider the execution of the following code fragment: @smallexample @group - if hasmx domainpart $f + if primitive_hasmx domainpart $f accept fi @end group @@ -8143,7 +8152,7 @@ domain name given as its argument has any @samp{MX} records. It should return a boolean value. However, when querying the Domain Name System, it may fail to get a definite result. For example, the @acronym{DNS} server can be down or temporary unavailable. In other words, -@code{hasmx} can be in a situation when, instead of returning +@code{primitive_hasmx} can be in a situation when, instead of returning @samp{yes} or @samp{no}, it has to return @samp{don't know}. That is exactly then when it signals an @dfn{exception}. @@ -8287,8 +8296,8 @@ done @noindent where @var{exception-list} is the list of exception types, separated -by the word @code{or}. A special form @samp{*} is allowed as well. -It means catch all exceptions. The @var{handler-body} is the list of +by the word @code{or}. A special form @samp{*}, which stands for +all exceptions, is allowed as well. The @var{handler-body} is the list of statements comprising the handler body. For example, the code below installs a handler for exceptions 2 (@samp{failure}) and 3 (@samp{temp_failure}): @@ -8307,9 +8316,9 @@ done @cindex @file{status.mfh}, usage However, using numeric exception codes is not convenient and is not in fact recommended. We recommend to use exception symbolic names -instead. These are declared in header file @file{status.mfh}, which +instead. These are declared in the header file @file{status.mfh}, which should be included in your startup script. Using this approach, the -above code snipped will look like: +above code snippet will look like: @smallexample @group @@ -8345,13 +8354,13 @@ they had when it has been entered. arguments, which can be referenced in @var{handler-body} as @code{$1} and @code{$2}. The first argument gives the numeric code of the exception that has occurred. The second argument is a textual string -containing human-readable description of the exception. A +containing a human-readable description of the exception. A @code{catch} defined within a function must return from it by executing @code{return} statement. If it does not do that explicitly, the default value of 1 is returned. A @code{catch} defined within a milter handler must end execution with any of the following actions: @code{accept}, @code{continue}, @code{discard}, -@code{reject}, @code{tempfail}. By default, @code{continue} will be +@code{reject}, @code{tempfail}. By default, @code{continue} is used. The following example shows an @code{envfrom} handler that catches @@ -8384,7 +8393,7 @@ done @cindex @code{hasmx}, definition of the function The following example defines the function @code{hasmx} that returns true if the domain part of its argument has any @samp{MX} records, and -false if it does not or an exception occurs @footnote{This function is +false if it does not or if an exception occurs @footnote{This function is part of the @code{mailfromd} library, @xref{hasmx}.}. @smallexample @@ -8467,7 +8476,6 @@ for probe messages (@pxref{Predefined variables}). For example, a simplest way to implement standard polling would be: @smallexample -@group prog envfrom do if stdpoll($1, %ehlo_domain, %mailfrom_address) == 0 @@ -8476,7 +8484,6 @@ do reject 550 5.1.0 "Sender validity not confirmed" fi done -@end group @end smallexample However, this does not take into account exceptions that @@ -8484,7 +8491,6 @@ done @code{catch}, for example thus: @smallexample -@group #include <status.mfh> prog envfrom @@ -8506,7 +8512,6 @@ do reject 550 5.1.0 "Sender validity not confirmed" fi done -@end group @end smallexample If polls are used often, one can define a wrapper function, and use @@ -8735,7 +8740,6 @@ Each section is prefaced with a comment explaining its function. The first part defines the configuration settings for this host: @smallexample -@group #pragma option relay /etc/mail/sendmail.cw #pragma option relay /etc/mail/relay-domains #pragma option timeout 33 @@ -8746,7 +8750,6 @@ Each section is prefaced with a comment explaining its function. set mailfrom_address "<>" set ehlo_domain "gnu.org.ua" -@end group @end smallexample The second part includes the necessary header files and loads @@ -8759,12 +8762,11 @@ required source modules: @end group @end smallexample - Next we define a @code{envfrom} handler. In the first two rules, it + Next we define @code{envfrom} handler. In the first two rules, it accepts all mails coming from the null address and from the machines -in which we relay: +which we relay: @smallexample -@group prog envfrom do if $f = "" @@ -8773,7 +8775,6 @@ do accept elif hostname $client_addr = $client_addr reject 550 5.7.7 "IP address does not resolve" -@end group @end smallexample Next rule rejects all messages coming from hosts with dynamic @acronym{IP} @@ -8789,11 +8790,10 @@ ppp|dhcp|dynamic|[-.]cpe[-.]).*" @end group @end smallexample - Messages coming from the machines whose host name contains + Messages coming from the machines whose host names contain something similar to an @acronym{IP} are subject to strict checking: @smallexample -@group elif hostname $client_addr matches ".*[0-9]@{1,3@}[-.][0-9]@{1,3@}[-.][0-9]@{1,3@}[-.][0-9]@{1,3@}.*" on poll host $client_addr for $f do @@ -8804,7 +8804,6 @@ something similar to an @acronym{IP} are subject to strict checking: when temp_failure: tempfail done -@end group @end smallexample If the sender domain is relayed by any of the @indicateurl{yahoo.com} @@ -8823,7 +8822,6 @@ will greylist this message in @code{envrcpt} handler: it is verified by the standard procedure: @smallexample -@group else on poll $f do when success: @@ -8834,7 +8832,6 @@ it is verified by the standard procedure: tempfail done fi -@end group @end smallexample At the end of the handler we check if the sender-client pair does @@ -8854,7 +8851,6 @@ is to greylist messages from some domains that could not be checked otherwise: @smallexample -@group prog envrcpt do set gltime 300 @@ -8873,7 +8869,6 @@ do fi fi done -@end group @end smallexample @node Reserved Words @@ -9006,7 +9001,7 @@ The meaning of each invocation part is described in the table below: The command line options (@pxref{options}). @item asgn - Variable assignments. These are currently meaningful only with + Sendmail macro assignments. These are currently meaningful only with the @option{--test} option (@pxref{test mode}), but this may change in the future. Each assignment has the form: @@ -9015,9 +9010,8 @@ may change in the future. Each assignment has the form: @end smallexample @noindent -where @var{var} is the name of Sendmail macro or @command{mailfromd} -variable (if prefixed with @samp{%}) and @var{value} is the value to -be assigned to it. +where @var{var} is the name of a Sendmail macro and @var{value} is the +value to be assigned to it. @item script The file name of the filter script, if other than the default one. @@ -9043,8 +9037,8 @@ be assigned to it. Compact database (@pxref{compaction}). By default, @samp{cache} database is compacted. To specify another database, use @option{--format} option (@pxref{--format}). Full database name can -be given in the command line, if it differs from the one specified in -the script file. +be given in the command line (see @option{--file} option below), if it +differs from the one specified in the script file. Use with the option @option{--all} (@pxref{--all}) to compact all databases. @@ -9068,7 +9062,8 @@ Delete all expired entries from the database (@pxref{Database Maintenance}). By default, @samp{cache} database is assumed. To specify another database, use @option{--format} option (@pxref{--format}). Full database name can be given in the command -line, if it differs from the one specified in the script file. +line (see @option{--file} option below), if it differs from the one +specified in the script file. Use with the option @option{--all} (@pxref{--all}) to expire all databases. @@ -9138,7 +9133,8 @@ advised to use instead. @opsummary{foreground} @item --foreground Stay in foreground. When given this option, @command{mailfromd} will -not disconnect itself from the controlling terminal and become daemon. +not disconnect itself from the controlling terminal and will run in +the foreground. @opsummary{format} @item -f @var{dbformat} @@ -9170,7 +9166,7 @@ statement. @xref{include}, for the discussion of file inclusion. @opsummary{lock-retry-count} @item --lock-retry-count=@var{number} -Set maximum number of attempts to acquire the lock on the database. +Set maximum number of attempts to acquire the lock on a database. See the description of @code{#pragma option lock-retry-count}, @ref{pragma lock-retry-count}, for more information about the database locking. @@ -9179,7 +9175,7 @@ locking. @item --lock-retry-timeout=@var{interval} Set the time span between the two locking attempts. See the description of @code{#pragma option lock-retry-count}, @ref{pragma -lock-retry-count}, for more information about the database locking. +lock-retry-count}, for more information about database locking. This option overrides the value set by @code{#pragma option lock-retry-timeout} (@pxref{pragma lock-retry-timeout}. @@ -9246,8 +9242,8 @@ relay}, which you are advised to use instead (@pxref{option relay}). @item -r @itemx --remove Force removing local socket file, if it already exists. Unless this -option is specified, @command{mailfromd} will refuse to startup if -the file exists. +option is specified, @command{mailfromd} will refuse to start if +this file exists. @opsummary{state-directory} @item --state-directory=@var{dir} @@ -9359,7 +9355,7 @@ Print a cross-reference of variables used in the filter script. @opsummary{lint} @item --lint -Check script file syntax and exit. If the file is OK, return 0 +Check script file syntax and exit. If the file is @sc{ok}, return 0 to the shell, otherwise print appropriate messages to stderr and exit with code 78 (@samp{configuration error}). @@ -9561,14 +9557,14 @@ option: @kbd{mailfromd --group=smmsp}). following signals: @code{SIGQUIT}, @code{SIGTERM}, @code{SIGINT}. All three signals have the same effect: the program cancels handling any pending requests, uninitializes the communication socket (if it is a -UNIX socket, the program unlinks it) and exits. +@acronym{UNIX} socket, the program unlinks it) and exits. @cindex SIGHUP To restart the running @command{mailfromd} instance, send it @code{SIGHUP}. For restart to be possible, two conditions must be -met: @command{mailfromd} must be invoked with full file name, and the +met: @command{mailfromd} must be invoked with the full file name, and the configuration file name must be full as well. If either of them is not -met, @command{mailfromd} displays the similar warning message: +met, @command{mailfromd} displays a similar warning message: @smallexample @group @@ -9779,7 +9775,7 @@ confMILTER_MACROS_ENVRCPT `, f, @{client_addr@}, @{rcpt_addr@}') wish to make it available elsewhere you will need to use the method described in @ref{HELO Domain} - Now if you are a @emph{really} daring person and prefer to do everything + Now, if you are a @emph{really} daring person and prefer to do everything manually @emph{and} to hack your @file{sendmail.cf} file directly, you certainly don't need any advices. Nonetheless, here's how the two statements above @emph{could} look in this case: @@ -9802,10 +9798,9 @@ f, @{client_addr@} @chapter How to Report a Bug @quotation -Documentation is like sex: when it is good, it is very, very -good; and when it is bad, it is better than nothing. - - --- Dick Brandon +@i{Documentation is like sex: when it is good, it is very, very +good; and when it is bad, it is better than nothing.}@* +Dick Brandon @end quotation Although the author has tried to make this documentation as diff --git a/doc/mtasim.texi b/doc/mtasim.texi index 20d77fa6..580689c7 100644 --- a/doc/mtasim.texi +++ b/doc/mtasim.texi @@ -39,7 +39,7 @@ following: @cindex readline @cindex GNU Readline - The first line is usual @acronym{RFC} 2821 reply. The second one is + The first line is an usual @acronym{RFC} 2821 reply. The second one is a prompt, indicating that @command{mtasim} is in interactive mode and ready for input. The prompt appears only if the package is compiled with GNU Readline and @command{mtasim} determines that its standard @@ -58,7 +58,7 @@ _ @noindent where @samp{_} represents the cursor. Whatever the mode, -@command{mtasim} waits for further input. +@command{mtasim} will wait for further input. @cindex @code{HELP}, @command{mtasim} statement The input is expected to consist of valid @acronym{SMTP} commands @@ -109,7 +109,7 @@ as @samp{rcpt to: <him@@domain>} was eaten without complaints. @command{mailfromd}? Well, that's what we are going to explain. To make @command{mtasim} consult any milter, use @option{--port} (@option{-X}) command line option. This option takes a single -argument that specifies a milter port to use. The port can be given +argument that specifies the milter port to use. The port can be given either in the usual Milter format (@xref{milter port specification}, for a short description), or as a full @file{sendmail.cf} style @code{X} command, in which case it allows to set timeouts as well: @@ -140,7 +140,7 @@ on that port, it may well be some other filter, not necessarily connect to an existing @command{mailfromd} instance, but prefer instead to create a new one and run your tests with it (a preferred way, if you already have a stable filter running but wish to test a -new script, without disturbing it), use @option{--port=auto}. This +new script without disturbing it), use @option{--port=auto}. This option instructs @command{mtasim} to do the following: @enumerate 1 @@ -169,7 +169,7 @@ $ @kbd{mtasim -Xauto -- -I. -I../mflib test.rc} @anchor{statedir mtasim option} @mtasimopt{statedir, described} The @file{/tmp/mtasim-j6tRLC} directory and any files within it will -exist as long as @command{mtasim} is running and will be removed if +exist as long as @command{mtasim} is running and will be removed when you exit from it.@footnote{However, this is true only if the program is exited the usual way (via @code{QUIT} or end-of-file). If it is aborted with a signal like @code{SIGINTR}, the temporary directory is @@ -422,7 +422,7 @@ cases. @mtasimopt{body-chunk, summary} @item --body-chunk=@var{number} - Set the body chunk length (bytes) for xxfi_body calls. + Set the body chunk length (bytes) for @code{xxfi_body} calls. @mtasimopt{daemon, summary} @mtindex bs, -bd, @command{mtasim} option, summary |