#!/usr/bin/python # # A GUI configurator for generating Fetchmail configuration files. from Tkinter import * from Dialog import * import sys import time import os import string # # Define the data structures the GUIs will be tossing around # class Controls: def __init__(self): self.foreground = FALSE # Run in background self.daemon = 300 # Default to 5-minute timeout self.syslog = FALSE # Use syslogd for logging? self.logfile = None # No logfile, initially self.invisible = FALSE # Suppress Received line & spoof? def __repr__(self): str = ""; if self.syslog: str = str + ("set syslog\n") elif self.logfile: str = str + ("set logfile \"%s\"\n" % (self.logfile,)); if not self.foreground and self.daemon: str = str + ("set daemon %s\n" % (self.daemon,)) return str + "\n" def __str__(self): return "[Server: " + repr(self) + "]" class Server: def __init__(self): self.pollname = None # Poll label self.via = None # True name of host self.active = TRUE # Poll status self.interval = 0 # Skip interval self.protocol = 'auto' # Default to auto protocol self.port = 0 # Port number to use self.uidl = FALSE # Don't use RFC1725 UIDLs by default self.auth = 'password' # Default to password authentication self.timeout = 300 # 5-minute timeout self.envelope = 'Received' # Envelope-address header self.qvirtual = '' # Name prefix to strip self.aka = [] # List of DNS aka names self.dns = TRUE # Enable DNS lookup on multidrop self.localdomains = [] # Domains to be considered local self.interface = None # IP address and range self.monitor = None # IP address and range self.userlist = [] # List of user entries for site self.typemap = ( ('pollname', 'String'), ('via', 'String'), ('active', 'Boolean'), ('interval', 'Int'), ('protocol', 'String'), ('interval', 'Int'), ('port', 'Int'), ('uidl', 'Boolean'), ('auth', 'String'), ('timeout', 'Int'), ('envelope', 'String'), ('qvirtual', 'String'), # leave aka out ('dns', 'Boolean'), # leave localdomains out ('interface', 'String'), ('monitor', 'String')) def dump(self, folded): str = "" if self.active: str = str + "poll" else: str = str + "skip" str = str + (" " + self.pollname) if self.via != self.pollname: str = str + " via " + self.via if self.protocol != ServerDefaults.protocol: str = str + " with proto " + self.protocol if self.port != defaultports[self.protocol]: str = str + " port " + `self.port` if self.timeout != ServerDefaults.timeout: str = str + " timeout " + `self.timeout` if self.interval != ServerDefaults.interval: str = str + " interval " + `self.interval` if self.envelope != ServerDefaults.envelope: str = str + " envelope " + self.envelope if self.qvirtual != ServerDefaults.qvirtual: str = str + " qvirtual " + self.qvirtual if self.auth != ServerDefaults.auth: str = str + " auth " + self.auth if self.dns != ServerDefaults.dns or self.uidl != ServerDefaults.uidl: str = str + " and options" if self.dns != ServerDefaults.dns: str = str + flag2str(self.dns, 'dns') if self.uidl != ServerDefaults.uidl: str = str + flag2str(self.uidl, 'uidl') if folded: str = str + "\n\t" else: str = str + " " if self.aka: str = str + "aka" for x in self.aka: str = str + " " + x if self.aka and self.localdomains: str = str + " " if self.localdomains: str = str + ("localdomains") for x in self.localdomains: str = str + " " + x if (self.aka or self.localdomains): if folded: str = str + "\n\t" else: str = str + " " if self.interface: str = str + " interface " + self.interface if self.monitor: str = str + " monitor " + self.monitor if (self.interface or self.monitor): if folded: str = str + "\n" if str[-
I maintain an open-source POP and IMAP client called fetchmail. It is
widely used in the Linux and open-source community, and is probably
the single most popular remote-mail client in that world. You can
find out more about this project at <http://fetchmail.sourceforge.net/>.
In order to be able to do thorough regression testing before each release,
I collect test accounts on as many different kinds of POP3, IMAP, and
ODMR servers as possible. Because fetchmail is strictly conformant to the
remote-mail RFCs, many server developers have found fetchmail a useful
standards-conformance test.
I'm writing to request test accounts on your server. I support all flavors
of POP2, POP3, IMAP and ODMR with either plain-password, CRAM-MD5, NTLM,
GSSAPI, or Kerberos authentication. I also support SSL/TLS.
It would be very helpful if I could have a separate test account for
each protocol you support (that is, separate POP3, IMAP, and ODMR
accounts) so I can do automated regression testing without worrying
about mailbox race conditions.