Piping Through Programs
The ~/.forward file can contain
the names of programs to run. A program name is
indicated by a leading pipe (
|) character, which
might or might not be quoted (Delivery Via Programs on page 468).
For example, a user might be away on a trip and want
mail to be handled by the
\user, "|/usr/ucb/vacation user"
Recall that prefixing a local address with a backslash
tells sendmail to skip
additional alias transformations. For
\user, this causes
sendmail to deliver the
message (via the
local delivery agent) directly to the
user’s spool mailbox.
The quotes around the vacation
program are necessary to prevent the program and its
single argument (
user) from being viewed as two separate
addresses. The vacation program
is run with the command-line argument
user, and the mail
message is given to it via its standard
Beginning with V8 sendmail, a user must have a valid shell to run programs from the ~/.forward file and to write files via the ~/.forward file. See The /etc/shells File on page 180 for a description of this process and for methods to circumvent it at the system level.
Because sendmail sorts all addresses and deletes duplicates before delivering to any of them, it is important that programs in ~/.forward files be unique. Consider a program that doesn’t take an argument and suppose that two users both specified that program in their ~/.forward files:
user 1 → \user1, "|/bin/notify" user 2 → \user2, "|/bin/notify"
Prior to V8 sendmail, when ...