Duplicate body checksum...

Vernon Schryver vjs@calcite.rhyolite.com
Wed Jan 16 16:59:25 UTC 2002


> From: <dcc@kstone.win.net>

> I'm running the previous release, as I havn't seen fit to upgrade yet, but
> as I mentioned I'm running a hacked up dccproc and qmail-qfilter to
> provide SMTP level DCC checking of the body/fuz1/subject checksums, as
> those are useful to me.
> Here is a script I'm using to force any body checksums and fuz1 checksums
> that have a count higher then 300 to many.
>
> **SHELL SCRIPT**
> #!/bin/sh
> /var/dcc/libexec/dblist -v | awk -f /var/qmail/control/awkscr | grep -v \
> \* | sort | sort | uniq | /var/dcc/libexec/dccsight -t many
> **END SCRIPT**
>
> This script iterates on every value in dblist -v that's not expired(I
> think that what the * at the beginning means).  On every value from the
> output of dblist -v, I push to an awk script, for those that are unclear
> says, if column #2 is greater then 300 and column one is equal to Body or
> Fuz1, print a line that is formated to be fed into
> /var/dcc/libexec/dccsight.
>
> ** /var/qmail/control/awkscr used above **
> # This is an awk script for processing dblist -v's output to hardcode
> many's
> $2  > 300 && $1 ~ "Body" || $1 ~ "Fuz1" {print $1 " " $3 " " $4 " " $5 " " $6}
> ** End Awk script **
>
> When this runs, I get "duplicate Body checksum; fatal error"...
>
> What's that all about?  I'd look for myself, but I don't feel like digging
> into source code right now.  I'm kinda busy with other projects.


I do not understand.

As `man dblist` says an asterisk (*) before the name of the checksum
indicates that a later record in the database makes this checksum redundant

I do think running `dblist | awk` frequently enough to deal with incoming
mail sounds unlikely to be effect, because that would have awk chewing on
100's of MBytes of text with the publicly available checksum floods.

Inserting checksums for a single message twice sounds like a bad
idea.  Why not instead reject mail with a checksum count that is
either at least 300 or has a value of many?  Perhaps with an extended
regular expression like:
   (Fuz[12]|Body)=(many|([0-9]*[3-9][0-9][0-9]))( |$)

Wouldn't it make more sense to parse the X-DCC header that dccprooc
adds to each message as it passes through?   That was the idea of
the X-DCC header.

I don't know about qmail, but there was a thread in this mailing list
about qmail.  See http://www.rhyolite.com/pipermail/dcc/2002/000126.html


Vernon Schryver    vjs@rhyolite.com



More information about the DCC mailing list

Contact vjs@rhyolite.com by mail or use the form.