Basic instructions for running the user agent:
N.B.: I've been running on debian unstable. If you're using debian/stable,
you may need to manually install some stuff. The canonical install process
for python modules (like the perl Makefile.PL recipe) is:
unpack tarball
python ./setup.py build
python ./setup.py install --prefix=/usr/local
DEPENDENCIES:
python-2.3
(debian package python2.3, python2.3-dev [for distutils])
twisted-1.1.0 or newer
if running debian 'unstable'
add 'deb http://twisted.sourceforge.net/debian/ ./' to your
/etc/apt/sources.list, install 'python2.3-twisted'
gnupg
(debian package gnupg)
(this is not strictly necessary because it requires code in Twisted that
hasn't been released yet. If you are running Twisted-1.1.1 or later, you
can comment out the line that talks about 'FakeEncryptionAgent' in gui.py
to enable real crypto. Once a version of twisted with childFDs={} support
is released, real crypto will become the default)
python-gtk bindings
(debian packages python2.3-gtk2, python2.3-glade2, python2.3-gnome2)
python-imaging
(needed to run a ticket server, or to run the self-tests)
SETUP:
You must decide how you will receive messages. There are currently four
possibilities:
IMAP: specify an IMAP server and the usual parameters (host/port, username,
password, folder name, polling interval). The agent will poll the
server for messages. It will consume any that have a subject line of
"PETMAIL MESSAGE" and should leave the others untouched. It is a good
idea to route your petmail messages to a separate folder.
Maildir: set up a .qmail-petmail that delivers messages to a separate
maildir, say with:
maildirmake ~/Maildir-petmail
echo "./Maildir-petmail/" >~/.qmail-petmail
Mailsocket: choose an unused TCP port, then set up a .qmail or .forward which
dumps the messages into that port, like:
echo "nc localhost 9999" >.qmail-petmail
Direct TCP connection (over PB): pick an unused (globally-visible) TCP port,
and senders will connect to it directly. Only useable if your host (or at
least that port) is reachable from the internet-at-large
RUNNING:
'petmail'
This will create a new Gtk-based agent and put all saved state in the
"~/.petmail/" directory. The agent will default to using fake crypto stubs
(until the new Twisted release comes out). You can see what other options
are available by doing 'petmail --help'.
SETUP:
The first step is to set up the generic configuration of your agent. You do
this through the 'Setup' option from the File menu, and you should at least
set the "Address Lookup" field before creating any new Identities.
Address Lookup: this tells the agent where it should go when it needs to
turn an address into an IDRecord. It also specifies where your IDRecord
should be published whenever it changes. For now choose the PB option,
hostname "lothar.ath.cx" and port 9998, as I am running a simple address
server there. There is a web page at at which
you can see a list of all published records and their contents. There are
also links to let you delete the records from that server, since during
testing we'll probably create lots of temporary identities that will need
to be discarded easily.
SMTP: This tells the agent how to send outgoing SMTP mail (for recipients
who have specified a 'Maildir' or 'Mailsocket' inlet). It provides a way
to specify that all outbound mail should go through a remailer, but for
now it just gives you a way to specify a smarthost and the "from" address
for all messages. The 'from' address doesn't really matter (PETMail
ignores it on receipt), but is a good idea to help recipients figure out
where these strange messages are coming from.
If your host is running a capable MTA like qmail or exim or postfix or
whatever, use "localhost" as the relay host and fill in your email address
for the From field. If you must send all your mail through, say, your ISP,
use your ISP's SMTP host as the relay host instead.
NNTP: ignore this for now, it is intended to let you tell the agent how to
get to an NNTP server (for transports that involve posting messages to
alt.anonymous.messages).
The next step is to create a new Identity. Eventually this will be replaced
by some kind of walk-through wizard or something. The "Me" pane covers
everything about yourself. Hit the "Create New Identity" button, then edit
the following fields of the pane that pops up:
Local name: this gives the Identity a local name to distinguish it from
any other Identities you might create. It is used in two places: the
first is AddressBook pane, where you choose which address book to look at
(each Identity has a separate addrss book). The other is the From field
of the message composition window (the Send pane). You can use any name
you wish here: it is never published or transmitted.
Name: fill in the name you would like to be known as. This will appear in
the IDRecord and in a recipient's address book entry for you (until they
assign you a local pet name).
Addresses: for now, pick an arbitrary email address. This is published in
your IDRecord as one of the addresses that you are known by. It is only
used for address lookups, not for transport.
Inlet: based upon what kind of setup you picked earlier, provide an "Inlet
String". For Maildir and Mailsocket, this will include the email address
that dump mail into the inlet. (the local maildir location or mailsocket
port number are not published, but the email address to which senders
must deliver their encoded messages will be). Some examples:
PB : localhost : 9998
this tells senders to connect directly to localhost:9998, and is obviously
only useful for testing on the same host
PB : lothar.com : 9998
this would be useful if the agent is reachable from the outside world on
host lothar.com
IMAP : host/port/user/passwd/folder : warner-petmail@lothar.com
This tells the rest of the world to send their messages to
warner-petmail@lothar.com, and tells the agent that it should poll an
IMAP server for those messages.
Maildir : ~/Maildir-petmail : warner-petmail@lothar.com
This tells the rest of the world to send their messages to
warner-petmail@lothar.com, and tells the agent that it should poll a
maildir in ~/Maildir-petmail/ for those messages. It requires that
you've set up a .qmail or equivalent to get those messages into the
right maildir.
Mailsocket : 9998 : warner-petmail@lothar.com
This tells the rest of the world to send messages to
warner-petmail@lothar.com, and tells the agent to listen for simple TCP
connections on port 9998. This requires that our .qmail or .forward uses
'nc' or an equivalent to dump messages into our local TCP port 9998.
Once you've filled in all of these fields, press "OK". That will save your
configuration to disk and also publish it to the address server. (then hit
Close to close the window). Look at and make
sure that your entry is now there.
You can change any field and the "Ok" button will become active once more:
pushing it again will re-publish your record. You can access this Identity
panel by double-clicking on the entry in the "Me" pane.
You can test out the IMAP and Maildir polling routines by bringing up the
Owner pane and hitting the "Poll Now" button. A short while later, a dialog
box should pop up to display the success or failure of the result.
SENDING MAIL:
Go to the "Send" pane, type in an address in the "To:" field, a subject and
body, and then hit "Send". This will go through the permission-checking
process and send the message.
The From: field lets you choose which Identity will be used to send the
message. "-anonymous-" is not yet implemented, but will eventually make the
message anonymous (unsigned and sent through a source-hiding channel if
possible). The names shown here are your local names for the Identities, the
same as shown in the list on the "Me" panel.
The To: field will accept either a "pet name" or an Address. Addresses are
looked up with the Address Server to figure out how to send the message.
Each time an address is looked up this way, the resulting ID Record is
added to a new entry in your address book.
RECEIVING MAIL:
Go to the "Inbox" pane. Any inbound messages will be displayed there. Note
that the inbox is not currently persistent: when you quit, all these
messages will disappear.
ADDRESS BOOK:
Go to the "Addresses" pane. New entries are added to your address book in
one of three ways:
typing an address into the panel at the bottom and pushing "Lookup".
sending a message by address (instead of by pet name)
receiving a message from a new sender
Select an entry from the list on the left to see details about this
identity. You can specify a local "pet name" for each by typing it into the
"Pet Name" field at the top and hitting RETURN. Most of the fields are
read-only, and correspond to fields in that identity's owner's "Me" pane.
You can set per-sender inbound restrictions by changing the entries for
"minimum inter-message time", "maximum message size", and "accept HTML
mail". (note that these are not yet implemented).
PERMISSION SERVERS:
To specify that you require new senders to include a ticket from a CAPTCHA
server, you put the URLs of those ticket servers (comma separated) in the
"Ticket URLs" field in the "Identity" pane. This is a part of your ID
Record: once you add the URLs, push the "Ok" button to publish the updated
record.
For now, the only permission server is a simple one I'm running at home,
with a URL of: "PB:lothar.ath.cx:10002".
QUITTING:
Use the File/Quit menu item to quit, so any changes you have made will be
saved.
Good luck!
-Brian