aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/domino
diff options
context:
space:
mode:
authorRob Funk <rfunk@funknet.net>2004-06-08 03:59:01 +0000
committerRob Funk <rfunk@funknet.net>2004-06-08 03:59:01 +0000
commitd78b61e3efaea197a6e5b2b72bf2981a9ed69461 (patch)
tree1704e13ce5d767d59868a2d5e834cb2e988ed90f /contrib/domino
parentd9e84e176fe538e110d9612f9832d69846e8d3e7 (diff)
downloadfetchmail-d78b61e3efaea197a6e5b2b72bf2981a9ed69461.tar.gz
fetchmail-d78b61e3efaea197a6e5b2b72bf2981a9ed69461.tar.bz2
fetchmail-d78b61e3efaea197a6e5b2b72bf2981a9ed69461.zip
Add files from ESR's dev directory that weren't under version control
svn path=/trunk/; revision=3881
Diffstat (limited to 'contrib/domino')
-rw-r--r--contrib/domino84
1 files changed, 84 insertions, 0 deletions
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 (<STDIN>) {
+ 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 (<STDIN>) {
+ print;
+ }
+ exit 0;
+}
+
+# Substitute $decltag for every ocurrence of an outer-level boundary
+# string found in the body of the message.
+my $usedtag;
+while (<STDIN>) {
+ 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.
+<gustavo@cpqd.com.br>
+
+=cut