From d78b61e3efaea197a6e5b2b72bf2981a9ed69461 Mon Sep 17 00:00:00 2001 From: Rob Funk Date: Tue, 8 Jun 2004 03:59:01 +0000 Subject: Add files from ESR's dev directory that weren't under version control svn path=/trunk/; revision=3881 --- contrib/domino | 84 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 contrib/domino (limited to 'contrib/domino') diff --git a/contrib/domino b/contrib/domino new file mode 100644 index 00000000..a5802718 --- /dev/null +++ b/contrib/domino @@ -0,0 +1,84 @@ +#!/usr/bin/perl -w +# correct-domino-mime-conversion - does it! +# $Id: domino,v 1.1 2004/06/08 03:59:00 rfunk Exp $ + +use strict; + +# Any arguments are expected to be an mda invocation. +if (@ARGV) { + my $mda = join(' ', @ARGV); + open(MDA, "| $mda") or die "Can't exec $mda: $!\n"; + select(MDA); +} + +# Look for a Boundary declaration in the message header +my $decltag; +while () { + print; + if (/boundary=\"(.*)\"$/i) { + $decltag = $1; + } elsif (/^$/) { + # An empty line marks the end of the headers. + last; + } +} + +# If we didn't find a Boundary declaration just pipe the rest of the +# message unchanged. +if (!defined $decltag) { + while () { + print; + } + exit 0; +} + +# Substitute $decltag for every ocurrence of an outer-level boundary +# string found in the body of the message. +my $usedtag; +while () { + if (/^--(.*)$/) { + $usedtag = $1 unless defined $usedtag; + if ($1 eq $usedtag) { + $_ = "--$decltag\n"; + } elsif ($1 eq "$usedtag--") { + $_ = "--$decltag--\n"; + } + } + print; +} + +=pod + +This script can be used to bypass a bug in the Domino-5.0.2b IMAP +service that manifests itself when you use fetchmail as the IMAP +client. The problem is that fetchmail (differently from other IMAP +clients) fetches messages in two parts, first the headers and then the +body. It seems that Domino converts the messages from its internal +format into MIME twice. In doing so, it declared a boundary string in +the messages Content-type header and uses another one to separate the +parts in the body. + +This script should be used as a mda option for fetchmail. As +arguments to it, pass the former mda you used. I, for example, use the following entry in my .fetchmailrc: + + poll server ... mda "/usr/bin/procmail -d %T"; + +To use this filter, I changed the above into the following: + + poll server ... mda "/home/gustavo/bin/correct-domino-mime-conversion /usr/bin/procmail -d %T"; + +If you do not use a mda normally, you can try the following to call sendmail directly: + + poll server ... mda "/home/gustavo/bin/correct-domino-mime-conversion //wherever/is/your/sendmail -oem -f %F %T"; + +Without argumets this script is a filter that reads from its stdin and +outputs the result into its stdout. + +I should mention that this bug seems to be solved in Domino 5.0.3 +(http://www.notes.net/46dom.nsf/434e319a66960d8385256857005cd97b/4499e0db6e43732b852568b2006ef7e9?OpenDocument) +but I have not checked it. + +Gustavo. + + +=cut -- cgit v1.2.3