home | O'Reilly's CD bookshelfs | FreeBSD | Linux | Cisco | Cisco Exam  


Previous Section Next Section

-C

Location of the configuration file All versions

The -C command-line switch tells sendmail where to find its configuration file. The form of the -C switch is:

-C path

With V8 sendmail, space between the -C and the path is optional. The path specifies the location of the configuration file. That location can be either a relative or a full pathname. If path is missing, the location becomes the file sendmail.cf in the current directory.

The -C command-line switch causes sendmail to internally mark the configuration file as unsafe. An unsafe configuration file prevents all but root from setting certain options and causes sendmail to change its uid and gid to that of the user that ran it. If it is used by someone other than the superuser (and if in other than -bt rule-testing mode), the -OQueueDirectory=path switch should also be used to set the location of the queue directory. If that location is not changed, sendmail fails because it cannot chdir(2) into its queue directory.

Prior to V8 the -C command-line switch also prevented sendmail from "thawing" its frozen configuration file.

One practical use for this command-line switch might be as part of a make(1) file that is used to generate a cf file from your mc file. Consider, for example, that you maintain the mc source for your configuration file in a directory that is separate from the sendmail source directory. If such a directory were /usr/local/src/sendmail/cf, and if the sendmail source were located in /usr/local/src/sendmail/8.12.7, you could create a Makefile something like this in the cf directory:

M4=/usr/ccs/bin/m4                       for Solaris 5.4
CFDIR=../sendmail-8.12.7/cf/
MC_FILE=yourhost                         the base name of your mc file
SENDMAIL=/usr/sbin/sendmail              where your sendmail is located

create:
        @echo building
        @$(M4) -D_CF_DIR_=$(CFDIR) $(CFDIR)m4/cf.m4 ${MC_FILE}.mc > ${MC_FILE}.cf
        @echo testing
        @$(SENDMAIL) -C${MC_FILE}.cf -bt < /dev/null > /dev/null;
install:
        mv /etc/mail/sendmail.cf /etc/mail/sendmail.cf.save
        cp ${MC_FILE}.cf /etc/mail/sendmail.cf

Thereafter, to generate and install a new configuration file you just run the following commands:

% cd /usr/local/src/sendmail/cf
% make
building
testing
% sudo make install
mv /etc/mail/sendmail.cf /etc/mail/sendmail.cf.save
cp yourhost.cf /etc/mail/sendmail.cf
%

As you gather more machines to administer, you can centralize many mc files in one place and update the configuration files with a single command.

    Previous Section Next Section