Irene killed my firewall/web server/mail sever, so I'm in the process of
recreating its setup with the current 4.9 release. I was running into a
problem with making smtp-vilter (installed from a package) work the way I
expected it to work. Specifically, the virus backend via clamav and the spam
backend via spam assassin worked fine but I could never get the attachment
backend to work. I kept getting the following message in maillog whenever I
sent an unwanted attachment:

Sep  2 12:54:52 mushmouth smtp-vilter[32388]: failed to replace message body

After banging my head for a couple of days (I did search google and the
mailing list without luck) I was able to trace the error message to line 1817
of engine.c:

        if ((virus_strategy == STRATEGY_NOTIFY_RECIPIENT)
            || (error_strategy == STRATEGY_NOTIFY_RECIPIENT)
            || (spam_strategy == STRATEGY_NOTIFY_RECIPIENT)
            || (unwanted_strategy == STRATEGY_NOTIFY_RECIPIENT))
                desc.xxfi_flags |= SMFIF_CHGBODY;

It turns out that for unwanted content, when smtp-vilter registers with
sendmail, it never sets the change body flag because STRATEGY_NOTIFY_RECIPIENT
is not an allowed strategy for unwanted content. I made the following change
then rebuilt and re-installed, and things seem to work as expected.

        if ((virus_strategy == STRATEGY_NOTIFY_RECIPIENT)
            || (error_strategy == STRATEGY_NOTIFY_RECIPIENT)
            || (spam_strategy == STRATEGY_NOTIFY_RECIPIENT)
            || (unwanted_strategy == STRATEGY_MARK))
                desc.xxfi_flags |= SMFIF_CHGBODY;

It seems like a bug to me, but then again the code is a bit complex and I
don't fully understand it. I was just wondering if anybody had any thoughts
about this "fix." I don't know if this will effect anything. Anyway, reading
code is very educational and I did learn a few things in the process.

Aaron

Reply via email to