Limitations

memory use
mdforward is implemented in perl, and will read an incoming message entirely into memory. A more sophisticated design would use a temporary file. In practice, on the types of servers mdforward is used on (web servers with virtual hosting) there will be reasonable limits on maximum message size already in place.

Delivered-To
mdforward uses the user name and host name of the account it is running in for the Delivered-To line when forwarding mail and for $ENV{DTLINE} when running commands. This is overly conservative, but is prompted by:
  • sendmail not supplying accurate envelope recipient information
  • recognition that local forwarding via sendmail is too expensive
The first implication of this is that delivery instructions cannot be separated for success/failure as they would be under qmail by forwarding to multiple local addresses with separate control files.

Secondly, mail cannot be forwarded to other users within the same domain, or to other domains controlled via the same account.

The best guess envelope recipient address is used in Delivered-To for file delivery.

no spool directory
mdforward has no spool directory of its own. Any temporary failure causes the whole delivery to be deferred. Actions which were successfully carried out prior to the temporary failure will be duplicated when sendmail retries the delivery.