24.2 Command-Line Options
Beginning with V8.7 sendmail, command-line
options can have multicharacter option names. Prior to V8.7, only
single-character names were allowed. We describe the old form first,
then the new.
24.2.1 Pre-V8.7 Command-Line Option Declarations
Prior to V8.7, option names that are declared on the command line
could be only a single character long:
-oXargument prior to V8.7
The -o switch (lowercase o) is
immediately followed (with no intervening space) by the one-letter
name of the option (here, X). The one-letter names
are case-sensitive (x is not the same as
X). Depending on the option selected, an
argument might be required. If that
argument is present, it must immediately
follow the option name with no intervening space. Only one option can
be specified for each -o switch.
Under V8 sendmail a space can appear between the
-o and the X, but no space can
exist between the X and its
argument. This is because V8
sendmail uses getopt(3) to
parse its command line.
If an unknown single-character option name is used,
sendmail will print and log the following error:
readcf: unknown option name 0x31
Here, the unknown character was a 1, printed in hexadecimal notation.
24.2.2 Multicharacter Command-Line Options
Beginning
with V8.7, option names can be single-character or multicharacter.
Single-character options are declared with the -o
(lowercase) switch as described earlier. Multicharacter options,
which are preferred, are declared with a -O
(uppercase) switch:
-OLongName=argument beginning with V8.7
uppercase
Space can optionally exist between the -O and the
LongName. In the command line, space cannot exist
between the LongName, the =,
and the argument unless they are quoted:
-O "LongName = argument"
Only one option can be specified for each -O
switch.
The sendmail program ignores case when it
considers multicharacter names. Therefore, the following three
command lines have the same effect, and none produces an error:
-OQueueDirectory=/var/spool/mqueue
-Oqueuedirectory=/var/spool/mqueue
-OQuEuEdIrEcToRy=/var/spool/mqueue
Multicharacter names are beneficial because they allow option names
to have mnemonic recognition. For example, the multicharacter name
ForwardPath, which lists the default path for
~/.forward files, is much more recognizable than
the single-character name J.
If an unknown multicharacter option name is specified, the following
is logged and printed:
readcf: unknown option name bad name here
24.2.2.1 Multicharacter name shorthand
Beginning with V8.7, multicharacter
names in the command line can be specified by using the fewest unique
leftmost characters in the name. For example, you can specify the
queue directory with the complete QueueDirectory
long name:
% /usr/sbin/sendmail -OQueueDirectory=/var/spool/mqueue
But if you need to run this command line frequently, you might find it handy to use an
abbreviation:
% /usr/sbin/sendmail -OQueueDir=/var/spool/mqueue
Option QueueDir used as abbreviation for QueueDirectory
Whenever a multicharacter name is abbreviated,
sendmail prints a warning (the second line in
the previous example) to discourage you from using abbreviations
inside your configuration file. It will also warn you if you specify
too few leftmost letters:
% /usr/sbin/sendmail -OQueue=/var/spool/mqueue
readcf: ambiguous option name Queue (matches QueueFactor and QueueDirectory)
If you misspell the single-character or multicharacter name, the
following error is printed, and the option declaration is skipped:
% /usr/sbin/sendmail -OQueDirectory=/var/spool/mqueue
readcf: unknown option name QueDirectory
Although these abbreviations can be handy on command lines, it is
vital that you always use nonabbreviated names in your configuration
file. New options will be added to sendmail over
time, and the use of abbreviations can lead to future unexpected or
ambiguous effects.
24.2.3 Appropriateness of Options
Some options are intended for use only on
the command line and make little or no sense when used in the
configuration file. Options that are inappropriate in the
configuration file are shown in Table 24-1.
Table 24-1. Options inappropriate to the configuration file
IgnoreDots
|
(i)
|
IgnoreDots
|
Ignore dots. If you need to use this option, use the -i command-line
switch (see IgnoreDots) to set it.
|
(no long name)
|
(M)
|
M
|
Define a macro. Use the D configuration command instead (see Section 21.3).
|
Verbose
|
(v)
|
Verbose
|
Run in verbose mode. Instead use the -v command-line switch (see
-v).
|
24.2.4 Options That Are Safe
Security
considerations normally require that sendmail
give up any special privileges for most command-line options
specified by the ordinary user. But the ordinary user can specify a
few options that allow sendmail to keep its
special privilege. Those options are called
"safe" and are shown in Table 24-2.
For example, the AliasFile option (location of the
aliases file) is unsafe (and is not in Table 24-2). If you were to send mail by specifying a new
location with the AliasFile option,
sendmail would change its identity from
root to an ordinary user (you), thus preventing
sendmail from being able to queue its mail:
/var/spool/mqueue: Permission denied
Note that prior to V8.8.4, the DontInitGroups and
TryNullMXList options were wrongly set to safe.
This is yet another reason to always upgrade to the latest version of
sendmail.
|