[Back to TkGoodStuff] TkGoodStuff PopImap

TkGoodStuff PopImap Utility

Table of Contents (this document)

Funtion

The PopImap client automates the fetching of your mail from remote POP or IMAP servers to your local machine. Once the mail is on your local machine, you can use any mail reader you like (rather than having to make do with one you don't really like that supports the needed client protocol).

The client really is little more than a scheduler for a unix mail-fetching command that you provide (it is not itself a POP or IMAP client; you need to get a mail-fetching client, on which see below). You configure the client by telling it what unix command will get your new mail from your remote server, and (optionally) what remote command will fetch an entire remote mailbox (including old messages), and replace a local mailbox with it.

Interaction with other tkgoodstuff Clients

One convenient feature is that the Net client knows about PopImap and vice versa, so that if both clients are used, PopImap doesn't try to check for mail when the Net line is down, and when the Net line goes up, Net schedules the periodic PopImap new mail checking to start right away (so that your new mail gets to you quickly).

PopImap knows about Biff, too. If both clients are loaded, then by default, when PopImap issues the unix command to look for new mail in the remote mailbox, it also signals Biff to heighten vigilance for a while in checking the local mailbox for new mail (i.e., to check more often).

With the Net, Biff, and PopImap clients running, then, all you have to do to check your mail on a remote server via dial-in access is to click on the Net button (which dials and sets up the network link). Soon after the Net button has indicated "Net up", the Biff button will indicate "New Mail" (and beep and pop up a list new messages if so configured), if you have any.

Here's how I use it: my mail comes to an imap server (which in my case actually is my office machine). I want my office (linux) machine (with an imap serving daemon) to have my real mail archives, but I also want to get my new mail on my home (linux) machine, and I prefer that it get there by showing up in my spool file. So I use a nondestructive IMAP fetching program which copies from the remote mailbox (my spool file on the remote machine) all messages not marked "Seen", and then marks them "Seen". The "Seen" designations are in my case for IMAP's use only---my mailreader (exmh) ignores them. Since my office machine has my "official" mailboxes, I use another IMAP utility when I want to set my home mailboxes (especially my mh "inbox") to be identical with my office mailboxes. The PopImap client adds a popup menu command to do this (for just one mailbox, as it is coded now). The end effect is a pretty nice solution to the problem of dealing with mail on remote machines without straightjacketing you into using a mail agent you don't like.

That's just one way of handling just one situation. The PopImap client also would be very nice for anyone who reads mail on just one machine (getting the mail from a server); for that purpose, you would use any standard destructive copy program (imapmove, say, or popclient without the -k option).

Use

In your ~/.tkgoodstuffrc file you will need to set variables that indicate how frequently to look for new mail on the remote server, as well as the unix command that does the looking, and (optionally) the unix command that copies the entire remote mailbox over the local one (replacing it). The real work comes in setting up these unix commands, which may require finding some programs you don't yet have.

Where to Find POP and IMAP Fetching Utilities

Here I have a decided lack of expertise. I would very much appreciate pointers to stuff I don't know about.

Variables

To set the variable XXXX to the value YYYY, in your ~/.tkgoodstuffrc, include the line:
set XXXX YYYY
Here are the variables relating to PopImap and their default values:

Variable Function Possible Values Default
PopImap_interval How often to check for new mail on remote server (number of seconds) 180
PopImap_offset How long after program execution to wait before first check (number of seconds) 2
PopImap_command Command to get new messages on remote server (any unix command) ""
PopImap_fetch_command Command to entirely replace local mailbox with remote one (any unix command) ""

As an example, here is an excerpt from my home .tkgoodstuffrc:

set PopImap_user markcrim
set PopImap_host merv.philosophy.lsa.umich.edu
set PopImap_password notreally
set PopImap_command "echo -e \"$PopImap_user\\n$PopImap_password\" \
   | imapupdate -verbose $PopImap_host"
set PopImap_fetch_command get-remote-mailbox
Here, I define three new variables and use them in defining the PopImap_command. The command "get-remote-mailbox" is just a shell script that calls imapcopy. To be honest, this is not quite what I do. I get a little fancier, with "if" structures to tailor the parameters to the current user (so that my wife can use the same .tkgoodstuffrc file, and so that when I am running as root, markcrim's mail gets checked). This sort of thing is straightforward with a little tcl knowledge.

[Back to TkGoodStuff]

Sep 14, 1995. Mark Crimmins markcrim@umich.edu