We have some sendmail aliases configured to distribute meeting minutes to a mailing list AND copied to an archive file for later reference, using the following lines in /etc/aliases: computer: :include:/etc/mail.lists/computer computer-minutes: computer, "|/usr/local/sbin/minutes \ /home/minutes/computer" The minutes script is as follows: #! /bin/sh # # minutes - add mail message to a minutes directory # # This script reads the standard input and appends it to a file in # the directory specified by the first command line argument and the # current year.. The file # name is always the current year, month, and day in the form YYYYMMDD # and will be created if it does not already exist. The purpose of this # script is to facilitate the automatic archiving of committee minutes # sent to a mailing list. year=`date +%Y` date=`date +%Y-%m-%d` fname=$1/$year/$date if [ ! -d $1/$year ] ; then mkdir $1/$year fi touch $fname cat >>$fname and has permissions -rwxrwxr-- 1 root mail 607 May 15 15:46 /usr/local/sbin/minutes If we send an email to computer-minutes, it bounces back with error messages: ----- The following addresses had permanent fatal errors ----- "|/usr/local/sbin/minutes /home/minutes/computer" (expanded from: <computer-minutes.upenn.edu>) ----- Transcript of session follows ----- sh: minutes not available for sendmail programs 554 "|/usr/local/sbin/minutes /home/minutes/computer"... Service unavailable procmail: Lock failure on "/var/spool/mail/gao.lock" procmail: Lock failure on "/var/spool/mail/gur.lock" procmail: Lock failure on "/var/spool/mail/macy.lock" procmail: Lock failure on "/var/spool/mail/brensing.lock" gao, gur, macy, brensing, and hughett are the names given in the computer mailing list. Mailing to plain computer (without the minutes archiving) works without any problems and produces no complaints about lock files. This same setup worked fine under RH 5.1. Paul Hughett
It's not a bug, it's a feature: The pipes were often abused to launch malicious programs. Newer versions of sendmail permit you to launch programs only when they're located in the /etc/smrsh directory, so the admin can make sure only approved programs can be launched.