aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/domino
blob: a5802718a118b3c7dbcf3898fe7d5fd454d4f737 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
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
it. With fairly simple changes it can be used to download the latest i386 rpm or tar.gz. Those who are addicted to having the latest of everything could filter mail from fetchmail announce through it and get new versions as they're announced. However, if we all did that, Eric's ftp server might feel a little stressed. The script as written works on bash 2. By John Summerfield <summer@os2.ami.com.au>. ### zsh-completion: These commands set up command completion for fetchmail under zsh. Jay Kominek <jay.kominek@colorado.edu>. ### getmail/gotmail: These scripts are front ends for fetchmail in daemon mode that can gather log statistics and generate text or HTML reports. See README.getmail for details. Scripts by Thomas Nesges <ThomaNesges@TNT-Computer.de>. ### fetchmaildistrib: This script resolves the issue where the sysadmin polls for mail with fetchmail only at set intervals, but where a user wishes to see his email right away. The duplication in /etc/fetchmailrc and ~/.fetchmailrc files is automated with this script; whenever /etc/fetchmailrc is changed, this script is run to distribute the stuff into all user's ~/.fetchmailrc files. ### multidrop: Martijn Lievaart's sendmail hacks to make multidrop reliable. ### domino: Gustavo Chaves <gustavo@cpqd.com.br> wrote this script to deal with the boundary-mismatch bug in Domino (see FAQ item X5). If you use this with --mda, the broken boundaries will be fixed and the result passed to procmail. ### toprocmail: John Lim Eng Hooi <jleh@mail.com> wrote this script, yet another mda plugin, to be used with fetchmail in foreground mode. It displays some header lines to stdout in color, passing them (and the rest of the message content) to procmail. ### preauth-harness: Emmanuel Dreyfus's Perl test script for exercising IMAP PREAUTH connections. You'll have to patch in your username and password. ### sm-hybrid: Peter 'Rattacresh' Backes sent this patch to improve the behavior of sendmail 8.11.0 with multidrop. ### fetchmailnochda.pl Watchdog script to check whether fetchmail is working in daemon mode. ### mold-remover.py A short python script to remove old read mail from a pop3 mailserver. Dovetails with fetchmail with keep option. Run it as a cron job. ### PopDel.py PopDel stands for Pop Delete; this program deletes selected email from a pop mail server. (By Richard Harris, improved by Joshua Crawford.) ### fetchmail.logrotate (added 2007-01-14, --ma) A logrotate configuration file developped by Daniel Leidert for Debian, when he wanted to use /var/log/fetchmail instead of the usual syslog. It probably needs to be adjusted for use on other systems. ### delete-later (added 2007-03-17, --ma) A MySQL/Tcl/Expect-based client-side script to remove messages at a certain age. See delete-later.README for details. (By Carsten Ralle, Yoo GmbH, Germany.) ### gai (added 2013-02-03, --ma) A trivial getaddrinfo() program to check the getaddrinfo() call from the system, as a research tool for the fetchmail developers.