When sendmail collects addresses, it discards duplicates. Prior to V8 sendmail, program entries in a ~/.forward file had to be unique; otherwise, an identical entry in another user's ~/.forward caused one or the other to be ignored. Usually, this is solved by requiring the program to take an argument. If the program won't accept an argument, add a shell comment inside the quotes.
The database forms of the aliases(5) file contain binary integers. As a consequence, those database files cannot be shared via network-mounted file systems by machines of differing architectures. This has been fixed with V8 sendmail, which can use the 4.4 BSD UNIX db(3) form of database.
As network-mounted file systems become increasingly common, the likelihood
that a user's home directory will be temporarily unavailable
increases. Prior to V8 sendmail this problem was not handled
well. Instead of queueing mail until a user's home
directory could be accessed, sendmail wrongly assumed that the
~/.forward didn't exist. This caused mail to be delivered
locally when it should have been forwarded to another site.
This can be fixed by using the
ForwardPath (J) option (see Section 34.8.27)
of V8 sendmail.
Prior to V8 sendmail
there was no way to disable user forwarding via ~/.forward
files. At sites with proprietary or confidential information
there was no simple way to prevent local users from arbitrarily
forwarding confidential mail offsite.
But ~/.forward files can be centrally administered
by using the
ForwardPath (J) option (see Section 34.8.27)
of V8 sendmail, even to the point of
completely disabling forwarding with OJ/dev/null.
Programs run from ~/.forward files should take care to clear or reset all untrusted environment variables. Only V8 properly presets the environment.
If a user's ~/.forward file evaluates to an empty address, the mail will be silently discarded. This has been fixed in IDA and V8 sendmail.
A program run from a ~/.forward file is always run on the machine running sendmail. That machine is not necessarily the same as the machine housing the ~/.forward file. When user home directories are network-mounted, it is possible that one machine may support the program (such as /usr/ucb/vacation), while another may lack the program or call it something else (such as /usr/bsd/vacation). Note that if smrsh(1) is used, the path is ignored.