17.6 Pitfalls

  • Avoid accidentally creating an empty-looking line (one that contains only invisible space and tab characters) in the sendmail.cf file when you really intend to create a blank line (one that contains only the newline character). The empty-looking line is joined by sendmail to the line above it and is likely to cause mysterious problems that are difficult to debug. One way to find such lines is to run a command such as the following, where there is a single space between the ^ and the dot:

    % grep '^ .*$' /etc/mail/sendmail.cf
  • Prior to V8 sendmail the maximum length of any given sendmail.cf line of text was defined in conf.h as MAXLINE. That maximum length was usually 1024 characters, which included the end-of-line character and any continuation lines. If sendmail read a line that was longer than MAXLINE, it silently truncated that line to MAXLINE-1 and terminated the result with a zero value. Note that sendmail read the entire line but ignored the excess characters. This allowed it to accurately keep track of where the next line started. V8 sendmail has no limit for line lengths.

  • Prior to V8 sendmail the last line in your sendmail.cf file had to end with a newline character. Some editors, such as emacs(1), are capable of writing a file in which the last line does not end with a newline character. If that trailing newline was missing from the last line, sendmail silently ignored it, thus treating that line as though it didn't exist. This has been fixed in V8 sendmail.

  • Under V8 sendmail, it is a mistake to edit your configuration file directly because that file is generated from m4 source. The correct way to change your configuration file is to edit the m4 source and generate a new configuration file from that source (see Chapter 4).

  • Avoid the temptation to devise tools that parse the sendmail configuration file. Future versions of sendmail might dramatically change the internals of the configuration file and might obsolete your work.

    Part I: Build and Install
    Part II: Administration
    Part III: The Configuration File
    Chapter 21. The D (Define a Macro) Configuration Command
    Chapter 24. The O (Options) Configuration Command