Jim Gifford wrote:
Anand Buddhdev wrote:
Classic mistake. You're running a shell script from your dot-courier
file, and you're using the SENDER environment variable without
quoting it. When you get a rogue email message with a quote in the
sender address, the shell sees the lone quote in the sender address,
and gets confused because there's no matching end quote. Make sure
you sorround the SENDER variable with quotes, for example:
"$SENDER" instead of just $SENDER
No .courier in use, only .mailfilter for moving messages into the
proper folders.
But the error message is clearly from a shell. Does your .mailfilter
contain any instructions which call an external program? It would help
if you can post your .mailfilter too.
The only thing I have in my shell that uses variables is amavis. Here is
the amavis section
# Virus Scan
#
import SENDER
import RECIPIENT
if ($SENDER ne "")
{
FROM=escape($SENDER)
}
else
{
FROM="unkn...@jg555.com"
}
if ($RECIPIENT ne "")
{
TO=escape($RECIPIENT)
}
else
{
TO="unkn...@jg555.com"
}
xfilter "/usr/sbin/amavis debug $SENDER $RECIPIENT"
Well, there you are! You're passing unquoted SENDER and RECIPIENT
variables to the shell (xfilter runs its argument in a shell). What
surprises me is that you've taken great pains to quote the SENDER and
RECIPIENT using the escape() function, but then you're not using them.
You should change your xfilter line to read:
xfilter "/usr/bin/amavis debug $FROM $TO"