It's been quite a while since I groveled around in the innards of multigram, but let me see if I can say something useful ... Multigram works in just about exactly the opposite way you might expect. It uses a series of heuristics to pick things that look like email addresses out of its standard input, then does a fuzzy match of the resulting strings against the list of addresses in the dist file (which is named as one of its arguments). If there are several things that look like email addresses clumped together on the same line of stdin, it may ignore all but the first one on that line. On 10/9/06, Jamie Zawinski <jwz@jwz.org> wrote:
I can't tell what's different about the two lists that makes one work and one fail.
I suppose you've already confirmed the obvious, such as, they both have auto_unsubscribe=y somewhere in the config, neither dist file has CRLF line endings, the "broken" dist does have a LF on the end of the last line, etc.
So, my question *really* is, how do I debug this?
Start by removing the redirect to /dev/null at about line 50 in the "unsubscribe" script, and assign something to LOGFILE in the calling procmail so that stderr is captured.
I imagine something is going wrong inside "multigram", but I can't even figure out how multigram should be invoked in order to reproduce what happens when mail comes in. I only barely understand what multigram is supposed to do, and its source code in insanely opaque... Is there even a man page for this thing?
There should be a file named "Manual" that came with the SmartList distribution. Discussion of multigram is spattered throughout that file, but mostly concentrated in section 6. If you need a copy, let me know and I'll send you one.