NAME

eximpp - Exim configuration file preprocessor.


SYNOPSIS

  eximpp [-?] [-3] [-4] [-o <output>] [-I <include path>] ... [--<var>=<val>] ... <file> ...


DESCRIPTION

This Perl script generates a configuration file for Exim (<http://www.exim.org>) from several input files. It recognizes some preprocess directives, and provides standard preprocessor features -- inclusion of other files and conditional setup.

eximpp (14KB, 2019-02-28 13:42:20)
is the latest version.


Command line options

This script accept following command line options.

-3

Specifies to generate configuration file for Exim 3 or prior.

-4

Specifies to generate configuration file for Exim 4 or later.

-o output file

Specifies the output file.

-I include directory

Add include directory to the search path of input files.

-?

Displays one line short help, and then exits.

--variable name=value

Assigns the value value to the variable with the name variable name.


Directives

Most lines in input files are copied to output without any changes, but each line with '#' at the beginning of the line, followed by optional spaces and one of the following keywords -- preprocessor directives -- with some arguments, is treated in a special manner.

All the keywords are case sensitive.

INCLUDE file name

Contents of the file file name is inserted into the output, after preprocessing. Note that file name is used after being evaluated as a Perl expression.

BEGIN section name[_a word]
END section name[_a word]

section name must be one of the following words, each of which corresponds to each part of Exim configuration file:

main - main configuration settings,
transport - settings for transports,
director - settings for directors (only for Exim 3),
router - settigs for routers,
retry - retry rules,
rewrite - address rewriting rules,
ACL - settings for access control lists (only for Exim 4),
authenticators - settings for authenticators (only for Exim 4).

In Exim 3 or prior, what is configured by a configuration item is strictly determined by which part the item belongs to. Even in Exim 4, contents of each section must be contiguous. The above 2 directives relaxes this feature, that is, the lines between the directives are kept in memory, and are inserted into the corresponding part of output after preprocessing.

If the optional _a word (one underscore and a word) is specified, the lines are inserted into the place at which #LABEL a word directive below appears.

IF condition0
ELSIF condition1

...

ELSIF conditionN
ELSE
END IF

If condition0 generates a true value as a Perl expression, the lines until next #ELSIF, #ELSE, or #END IF line are inserted into output after preprocessing, else if condition1 generates a true value as a Perl expression, the lines until next #ELSIF, #ELSE, or #END IF line are inserted into output after preprocessing, ... and so on. If none of condition0 ... conditionN generates a true value, the lines between #ELSE line and #END IF line are inserted into output after preprocessing.

#ELSIF and #ELSE are optional.

LABEL a word

Defines a label for #BEGIN directive.


Duplicate settings

Exim aborts when it finds a duplicate setting. This preprocessor relaxes this feature.

If the preprocessor finds a duplicate main configuration setting, or a option setting of transport, director, or router, it overrides the old setting with new one.

If it find a duplicate specification of transport, director, or router driver, it removes the old specification, and processes the new specification as if old one didn't apear at all.

But if new specification has the form driver name:a word, this default behavior may be changed.

a word must be one of the following words, and is case sensitive.

OVERRIDE

The succeeding settings of the driver override those of the old one, that is, the old settings are removed, and then new settings are inserted into the place at which the old ones were.

REMOVE

Old settings are removed.

REPLACE

Explicitly specifies default behavior.


AUTHOR

Kiyokazu SUTO <suto@ks-and-ks.ne.jp>


Any questions or comments about this page are greatly appreciated.

Almost all contents in this site are written by Kiyokazu SUTO (i.e. me) unless especially noted. I want to put all of them into the PUBLIC DOMAIN, even though some lawyers mention that it is impossible in my country.