A nymserver is a mail server which stores emails on behalf of anonymous users. It provides long-term pseudonymous identities which can receive and send emails through the server, without revealing the user controling those identities.
nymbaron is a client working with the type III nymserver, which is built upon the mixminion remailer network.
WARNING: this is still considered alpha quality software. Do NOT use it if you require strong anonymity.
For quickstart instruction, skip to the GETTING STARTED section.
Send an account creation request at specified server. If options are not all provided, nymbaron will ask interactively for the lacking information. The user has to provide:
a local account identifier.
the address of the nymserver she wants to register her account to.
a list of nyms, that is to say anonymous usernames. The server will choose among them the first free name and attribute it to the user.
a return address, that is, the email address where the packets destined to the nymholder will be returned.
This information can also be provided as command line options.
Additionally, the user will be prompted for her passphrase to unlock her private keyring. This is necessary to protect the private keys generated for her account in her private keyring. If the keyring doesn't exist yet, it will be created and a password will be asked to protect it.
When this command returns, data for this account are stored in the local file system and registration messages are sent to the nymserver. The user can interrupt the creation of an account when by striking Ctrl-C when prompted for information.
Send an email message through a nymserver.
The message to be sent is taken from a file pointed by the appropriate option or from standard input. The address of the recipient must be passed by option.
Send a request for synopses for specified account. The user can request synopses older than a given mid, precised by a mid or a reference in the synbox ('syn:N', where N is the index of the mid in the synbox). The server will send back at most the number of synopses precised by the user. If no value is given by the user, the defalut value present in the configuration file of the user will be used.
In the nymserver protocol, the surbs, single-use reply blocks, are potentially a scarce resource. The protocol design takes this into account: instead of sending each message addressed to a nym directly to the nymholder, it generates summaries of the messages. The priority is given to provide the nymholder with some information on every message he receives. She will then request explicitely the retrieval of the message she is interested in.
A synopsis actually contains some basic information about a message : its mid, its order of arrival on the server, truncated RFC-822 headers and the first few characters of the body.
Request email deletion on the server. The account must be precised by the user. The user gives a list of mid, either by mid or by reference ('syn:N', where N is the index of the mid in the synbox or 'mbox:N, where N is the index of the mid in the mbox).
This command enables the user to authorize a message to be deleted on the server. This will free some space of her reserved space on the server.
Retrieve email from the server. The account must be precised by the user. The user gives a list of mid, either by mid or by reference ('syn:N', where N is the index of the mid in the synbox).
This command enables the user to ask explicitely for the retrieval of a list of designed messages.
Process returning server messages. The account must be precised by the user, either by the account name or by an idtag. The location of the message is given by the appropriate option.
The message must already have been decrypted and reassembled by mixminion. The mixminion headers must have been removed as well. If you do not understand these lines, you probably want to use mprocess.
Process returning minion messages.
This is the command that is used to process a message received from the mixminion network. It will try to reassemble mixminion packets by calling mixminion and, if successful, will determine the account the message was addressed to and process it.
List already fetched summaries. The account must be precised by the user.
This command prints on the standard output the summarized content of the synbox. The user will use dump-syn to get access to the full content of the synopses.
Dump already fetched summaries. The account must be precised by the user.
Contrary to the list-syn command, this command will output the whole content of the summaries. This may be used to inspect more thoroughly the content of summaries, for example the beginning of bodies of messages before requesting full messages.
List already fetched emails. The account must be precised by the user.
This command prints on the standard output the summarized content of the mbox. The user will use export to get access to the full content of a message.
List commands recorded in the journal (sent but not acknowledged yet). The account must be precised by the user.
Because of the lack of reliability in the mixminion network, in order to keep track of command messages that were sent but not acknowledged and to be able to resend those messages, the sent command messages are recorded in a local journal. This command enables the user to check the journal. Command messages are removed from the journal as they are acknowledged.
Send SURBs. The account must be precised by the user. The number of surbs to send can also be precised. If it is not, the default number present in the configuration file will be used.
Surbs, single-use reply blocks, are data that enables the nymserver to return commands to the nymholder through the mixminion network. Thus the server doesn't know the identity of the nymholder. As they can only be used once, the server may run out of them. This command enables the user to provide the nymserver with fresh surbs.
Export already fetched emails to a file. The account must be precised by the user. The user gives a list of messages, either by mid or by mbox reference('mbox:N', where N is the index of message in the local mbox).
This command enables the user to store messages outside of the nymbaron stores. She will then be able to read them with the viewer of her choice.
Resend a command that has been sent but not acknowledged yet. The account must be precised by the user. The user gives a list of either sequence numbers or journal references ('journal:N') corresponding to commands present in the journal of already sent commands that have not yet been acknowledged.
The mixminion network doesn't garante the reliability of the transmissions. The nymserver protocol takes this into account by providing acknowledgement by the server of received command messages from the client. This command enables the user to resend already sent commands which weren't acknowledged by the server.
Delete messages from the local mbox. The account must be precised by the user. The user gives a list of messages, either by mid or by mbox reference ('mbox:N', where N is the index of message in the local mbox).
Note that after a deletion of messages, the index designing messages in the local mbox may have changed. Use 'list-mbox' before making further mbox references ('mbox:N' references).
Delete summaries from the local synbox. The account must be precised by the user. The user gives a list of mid, either by mid or by reference ('syn:N', where N is the index of the mid in the synbox).
Note that after a deletion of summaries, the index designing mids in the synbox may have changed. Use 'list-syn' before making further synbox references ('syn:N' references).
Delete journal items from the journal of sent commands. The account must be precised by the user. The user gives a list of sequence numbers, either by value or by journal reference ('journal:N', where N is the index of the sequence number in the journal).
The user may want to remove items from the journal without waiting for the server to acknowledge them, either because she doesn't want to resend a command or because she knows the server received the command and that the acknowledgement was lost.
Note that after a deletion of journal item, the index designing sequence numbers in the journal may have changed. Use 'list-journal' before making further journal references ('journal:N' references).
List the accounts of the user.
Change the passphrase that protects the user keyring.
In order to start receiving and sending emails under a pseudonymous identity, you need to create an account at a nymserver. This server will hold your emails and some associated data, and give you an email address. This is done with the following command:
nymbaron create
You will be asked a nickname for this account. This is how you
will refer to this account locally. You will have to chose a
nymserver where you want this account registered: currently the
only running nymserver is <mbox:nym3@nowwhat>. You
will also need to enter a choice of several usernames: that will
be the localpart in the assigned email address for this account,
and the server assigns the first free requested username. You will
also be asked for the prefered email address for returning
messages.
Then, be patient. The messages are sent and returned via the anonymous mixminion network which, despite being usually quite fast and reliable, can experience slowdowns or packet loss. If you don't see any returning message after some time, you may want to resend your account creation request. See the resend-command command.
If all goes well you will get a reply from the server via the email address you mentioned earlier. You can't possibly mistake this email from other "normal" emails. Save the email to a file and ask nymbaron to process it:
nymbaron mprocess -f file
You should have a reply confirming the creation of the account. You can recall the accounts list at any time with the list-accounts command.
You can now start receiving or sending email to or from this account. Depending on you account preferences and various parameters like the number of remaining SURBs for your account, the server will either decide to send you whole emails, or email summaries (called synopsis in this document), or a mixture of both, or nothing (and then you'll have to poll the server).
Requesting synopsis is done via the summarize. For an email for which you have the synopsis, you can request the whole email via the get command. Once you fetched an email, you can delete it to save some space on the server. For security reasons, fetched emails are stored encrypted in an opaque data structure in your account. You need to export them to a file first to read them.
Don't forget to regularly send SURBs to the
server or you won't be able to get answers from the server. That's
it, you're ready to use your account. More complete documentation
for each command is displayed with the --help
flag.
Copyright © 2004,2005 Jean-René Reinhard
<jr@komite.net>
and Laurent Fousse <laurent@komite.net>.
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, provided that the above copyright notice(s) and this permission notice appear in all copies of the Software and that both the above copyright notice(s) and this permission notice appear in supporting documentation.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.