Mam bardzo prosty proces procmail, który pobiera wiadomość e-mail i przekierowuje ją do skryptu:
LOGFILE=/home/foo/procmail-log
VERBOSE=yes
MAILDIR=/var/spool/mail/foo
DEFAULT=/var/spool/mail/foo
SHELL=/bin/sh
:0
! `/home/foo/scripts/blah/blah.sh`
Skrypt powłoki ma warunek, który greps pliku dla adresu e-mail nadawcy, a jeśli go znajdzie, kończy działanie:
grep i "$SENDER" /home/foo/scripts/blah/blah2.txt
if [[ $? -eq 0 ]] ; then
exit 1
fi
Kiedy tak się stanie, chcę, aby procmail po prostu porzucił / odrzucił wiadomość.
Co ciekawe, jeśli to się uruchomi, procmail przyjmuje wartość, którą właśnie grepowałem, i próbuję wysłać na nią wiadomość e-mail.
W dzienniku procmail widzę:
procmail: Notified comsat: "foo@:/usr/sbin/sendmail -oi sender@foodomain.com sender@foodomain.com"
From sender@foodomain.com Thu Feb 6 22:31:47 2014
Subject: Test
Folder: /usr/sbin/sendmail -oi sender@foodomain.com sender 3165
procmail: Executing "/usr/sbin/sendmail,-oi,sender@foodomain.com,sender@foodomain.com"
Dlaczego to robi? Czy jest jakiś sposób, aby skonfigurować procmail, aby tego nie robił? Chcę tylko, żeby zrezygnował i upuścił wcześniej przetwarzany e-mail. Próbowałem różnych kodów wyjścia (0, 1, 77), ale procmail zawsze robi to samo. Jakieś pomysły?