I would like all mail sent to a particular alias on a Linux machine to be processed by a perl script but sendmail is giving me a "Service unavailable" error and I don't understand what I'm missing.
I created my handle_email.pl script (right now, this just prints its parameters to /tmp/email.txt
) and added a symbolic link to it in /etc/smrsh
.
Then I added this to /etc/aliases
:
mailtest: |handle_email.pl
and ran newaliases
afterwards. Note that I've also tried mailtest: |/etc/smrsh/handle_email.pl
which gave the same results. I've also tried copying the actual script into /etc/smrsh
rather than a link, same results again.
When I send mail to the mailtest alias, the file in /tmp
never gets created, and I get this in /var/log/maillog:
Nov 1 14:43:59 localhost sendmail[24839]: qA1IhwHm024839: from=<xxx@xxx>, size=284, class=0, nrcpts=1, msgid=<201211011843.qA1IhwHm024839@localhost.localdomain>, proto=ESMTP, daemon=MTA, relay=[10.7.160.180]
Nov 1 14:43:59 localhost smrsh: uid 8: attempt to use "handle_email.pl"
Nov 1 14:43:59 localhost sendmail[24850]: qA1IhwHm024839: to=|handle_email.pl, ctladdr=<mailtest@xxx> (8/0), delay=00:00:00, xdelay=00:00:00, mailer=prog, pri=30570, dsn=5.0.0, stat=Service unavailable
Nov 1 14:43:59 localhost sendmail[24850]: qA1IhwHm024839: qA1IhxHm024850: DSN: Service unavailable
Nov 1 14:44:00 localhost sendmail[24850]: qA1IhxHm024850: to=<xxx@xxx>, delay=00:00:01, xdelay=00:00:01, mailer=esmtp, pri=31594, relay=sy-int-mx.xxx. [<IP addr>], dsn=2.0.0, stat=Sent (qA1Ii4127508 Message accepted for delivery)
I get an email message describing the failure, which says:
The original message was received at Thu, 1 Nov 2012 14:58:16 -0400
from [<ip address>]
----- The following addresses had permanent fatal errors -----
|/etc/smrsh/handle_email.pl
(reason: Service unavailable)
(expanded from: <mailtest@xxx>)
----- Transcript of session follows -----
smrsh: "handle_email.pl" not available for sendmail programs
554 5.0.0 Service unavailable
Why will smrsh not execute my script?
Update: Answering questions in comments.
I've copied the script to /etc/smrsh
and removed the link. The file permissions are 0700 (also tried 0755) and the first line is #!/usr/local/bin/perl
which is correct. There is only one file in /etc/smrsh
. The ls -l output:
[main:g:64] xxx:/etc/smrsh# ls -l
total 4
-rwx------. 1 root root 281 Nov 1 16:35 handle_email.pl
Best Answer
Try changing the permission of /etc/smrsh/handle_email.pl to 755 and I think you'll have more success. You might want to restart sendmail just to be sure things are properly initialized and configured.