Nymservers and Pseudonymous Emails
|About this Nymservers Page|
- 1 Introduction
- 2 Why?
- 3 Message Path
- 4 Instructions
- 4.1 Import Nymserver's Key
- 4.2 Prepare Nym Request
- 4.3 Send Request to Nymserver
- 4.4 Retrieve Messages from Newsgroup
- 4.5 Decrypt Messages
- 4.6 Send Mail with Registered Nym
- 4.7 Reconfigure Nym
- 5 Important Notes
- 6 Zax-type Nymserver List
- 7 Public/Open News Servers
- 8 Other Useful Topics
- 9 Dev Notes
- 10 See Also
- 11 Footnotes
Zax-type Nymservers are infinitely more usable than GHIO-type servers which should be avoided at all costs, unless you like to hand-craft reply-blocks. If you don't know what a reply-block is, good. You won't have to.
To manage your nym, messages can be sent to the Nymserver, via your SMTP server, Mixmaster or even your personal email (not recommended, but would still work). It is highly recommend to use Mixmaster to communicate with Nymservers. They are commonly used together but are totally independent.
- You will have an uncensorable inbox that does not rely on a single service provider that come with the inherent risks of folding under coercion or service decapitation [see Lavabit]
- No browser based log-ins into webmail interfaces, where connections can be intercepted and poisoned by adversaries attacking a selector.
1. You should have in mind that every message sent by your nym has to be delivered to the Nymserver:
Whonix -> Tor circuit -> Mixmaster network -> Nymserver
2. When the Nymserver receives a message from your nym, regardless of being a configuration or regular message, it will post a reply to the Newsgroup for your nym, to confirm it was received. You can retrieve it later by downloading from the Newsgroup:
Nymserver -> Newsgroup -> Tor circuit -> Whonix
3. If your message was sent to another nym (from the same server) it will follow the same path as 2. If it wasn't, it will be delivered to the respective recipient:
Nymserver -> Recipient
4. When messages are sent to your nym, they will be delivered to the Nymserver. After processing them, they will be posted to the Newsgroup, similar to 2:
Sender -> Nymserver -> Newsgroup -> Tor circuit -> Whonix
This guide uses mixnym.net, but it is still generic and relevant to apply to any other Zax-type Nymserver. For a selection of Nymservers see #Zax-type Nymserver List.
The examples will use the nym firstname.lastname@example.org. You must make proper changes to suit the nym choice you make and the domain name of the Nymserver.
It is important to know which of the address you are going to use when sending messages to the Nymserver:
email@example.com: creation or configuration requests, to create and manage your nym
firstname.lastname@example.org: send requests, to send messages from your nym to other people
email@example.com: url requests, to retrieve an HTML page
The process broken down into steps:
- Import Nymserver's Key
- Prepare Nym Request
- Send Request to Nymserver
- Retrieve Messages from Newsgroup
- Decrypt Messages
- Send Mail with Registered Nym
- Reconfigure Nym
Import Nymserver's Key
A Nymserver's key is usually on their homepage. You can follow these steps to import the key:
1. Download the mixnym.net Nymserver key with curl to home folder:
curl -o key.asc http://is-not-my.name/key.asc
2. Check fingerprints/owners without importing anything:
gpg --keyid-format long --with-fingerprint key.asc
Always check the fingerprint for yourself. The output at the moment is:
pub 4096R/0xFF4DB66014D0C447 2010-05-05 URL is-not-my.name (URL Retrieval address for Is-Not-My Nymserver) <firstname.lastname@example.org> Key fingerprint = 94F2 04C2 8BF0 0937 EFC8 5D1A FF4D B660 14D0 C447
3. If it looks good, import with GPG:
gpg --import key.asc
Sometimes it may only be available from PGP keyservers. In that situation, you can download from a keyserver such as pgp.mit.edu by providing the fingerprint:
gpg --keyserver pgp.mit.edu --recv-keys 94F204C28BF00937EFC85D1AFF4DB66014D0C447
If you do not have the fingerprint, you can try to search for it:
gpg --keyserver pgp.mit.edu --search-keys email@example.com
Do not forget to check the fingerprint before importing.
Prepare Nym Request
Create a Key Pair
Create a new key pair for firstname.lastname@example.org:
Please select what kind of key you want: (1) RSA and RSA (default) (2) DSA and Elgamal (3) DSA (sign only) (4) RSA (sign only) Your selection? 1 What keysize do you want? (2048) 4096 Please specify how long the key should be valid. 0 = key does not expire <n> = key expires in n days <n>w = key expires in n weeks <n>m = key expires in n months <n>y = key expires in n years Key is valid for? (0) 6m Real name: John Doe Email address: email@example.com You selected this USER-ID: "firstname.lastname@example.org <email@example.com>" You need a Passphrase to protect your secret key. public and secret key created and signed.
Remember to provide different information from the example. Note that the nym expires when the key expires.
Export Public Key
To create your nym, you need to export its public key to send to the Nymserver. In the following example, it will be copied to
gpg --armor --export firstname.lastname@example.org > pubkey.txt
Configure Additional Options
You only need to perform this step if you want to configure additional options on your nym, such as Subject Identification or
Symmetric Encryption. For each option, prepend a line to the
pubkey.txt file using the format:
Caps are unimportant in the option name, but are sensitive in the setting.
Fixed (Plaintext) Subject
Choose some unique keyword as a Subject to be able identify the Nymserver reply on the Newsgroup with the
subject option. Using a fixed subject is convenient, but anyone will be able to link all the messages for a nym since they all have the same subject.
A better alternative than the
subject option is to use hashed subjects (hSubs) by providing an hSub passphrase with the
hsub option instead.
An hSub is made of two parts, where the first is a random number and the second part is the hash of that same random number and a passphrase. As the hashing is a one-way function, no one can identify the owner of the message. However, as you know your nym's hSub passphrase, you can hash it with the random number of every message, and if the result collides with the second part of the hSub, that message was sent to your nym. 
You can also use these options to set an hSub:
subject-password. These all mean the same as
You can add a symmetric encryption layer by specifying a key with the
If you wish to delete your nym, you can send the following option and setting:
For example, to add an hSub passphrase of
panda, you should edit the
pubkey.txt like this:
hsub: panda -----BEGIN PGP PUBLIC KEY BLOCK----- <snipped> -----END PGP PUBLIC KEY BLOCK-----
You can add more than one option line to your request. However, you should remember that some options might create conflicts. For example,
hsub work differently, but are used for the same purpose. You should choose either one or the other.
Encrypt the Request
Now you must wrap
pubkey.txt, the message containing your additional options and public key, to the Nymserver. The
pubkey.txt file is the input for the following example and the encrypted file will be created as
gpg --armor --encrypt --recipient email@example.com pubkey.txt
You can ignore the warning about encrypting to an "untrusted" key and select
y for yes.
Send Request to Nymserver
Before sending the request, update remailer keys first. Its enough to do this once a day :
mixmaster u)pdate stats * pick remailer letter (optional) <space> q)uit
Send the encrypted file to the Nymserver with Mixmaster:
mixmaster --mail -l *,*,* -c 2 firstname.lastname@example.org pubkey.txt.asc
-l customizes the remailer chain length. The shorter the chain the faster your mail will be sent and the more likely it will make it through. Here we are using three random mixes:
-c sends copies of the message. Here we are using
If necessary, run Mixmaster from command line and check the remailer chain list to see node availability and reliability stats and choose accordingly.
That's it! The Nymserver decrypts the message, extracts your Nym's email address from the supplied Public Key and processes it. Provided that the Nym is not reserved or already taken, you will receive a confirmation message from the Nymserver, encrypted to your nym's key.
Note that the protection provided by Mixmaster is not of importance here because everything is done behind Tor. 
It is worth noting that this is the only message you will attach your public key and the only one the server will ever accept from you that's not signed by that key. From now on, your nym's digital signature will prove your ownership of it. Examples on signing can be found on #Send Mail with Registered Nym and #Reconfigure Nym.
Retrieve Messages from Newsgroup
Zax-type Nymservers deliver messages to the nyms via the alt.anonymous.messages Usenet group (a.a.m). Anyone can access these messages, but only the nyms can decrypt them, using their private keys.
As explained previously, you can configure your messages to be identified by subject. If you chose to use some kind of subject identification from the previous section, you can go to #Use aam2mail to Fetch Replies.
If you did not configure that and wish to do so, you will have to send a configuration message to configure a method of subject identification. You will find an example on #Reconfigure Nym.
If you do not wish to use any kind of subject identification, the default way to do this is by downloading and attempting to decrypt every message posted on the Newsgroup. If it works, then the message was sent to your nym.
Use aam2mail to Fetch Replies
1. Install git and clone aam2mail source. aam2mail requires no extra dependencies.
sudo apt-get install git
git clone https://github.com/crooks/aam2mail
sudo python setup.py install
2. Configure aam2mail settings. Use the hsub you chose:
echo 'panda' >> aam2mail/etc/subject_hsub
echo 'nntp.aioe.org' >> aam2mail/etc/servers
3. Run aam2mail periodically to check for messages. There is an expected delay of a few hours before getting replies.
4. Replies will be downloaded by aam2mail to this path:
/home/user/Maildir/new. aam2mail does not decrypt messages for you but retrieves them only.
Be sure to check for new messages regularly because messages on Usenet accumulate beyond the fetch-limit and you may miss them.
With the message saved to a file, decrypt it with:
gpg --decrypt file
You should see the plaintext of the message your nym received.
Congratulations for registering your first nym. Now you are ready to use it for sending messages.
Send Mail with Registered Nym
To send messages to other people, it is very similar to the way you did previously for the creation and configuration. You can use a text editor to compose the
To: recipient@domain Subject: Example This is an example
Now you need to encrypt and sign to the server:
gpg --armor --encrypt --sign --recipient email@example.com message.txt
Send it with Mixmaster, but this time to firstname.lastname@example.org:
mixmaster --mail -l *,*,* email@example.com message.txt
Notice that this time we did not send copies of the message. We advised sending copies on the creation because after receiving the first one, the server would ignore the others. In this case, if you send copies, the server will send all of them to the recipient.
The recipient will receive a message from firstname.lastname@example.org and they can send a reply to that same address.
If you wish to add (or change) an option, you just have to send another message to email@example.com, say
option.txt, with the option(s) you would like to add:
The message does not need to have a body, just headers. Remember to sign and encrypt it:
gpg --armor --encrypt --sign --recipient firstname.lastname@example.org option.txt
Now you just need to send. As you are configuring your nym, you should send it to email@example.com:
mixmaster --mail -l *,*,* firstname.lastname@example.org option.txt.asc
Due to Mixmaster's latency, it is possible that messages arrive out of order. Your next messages might arrive earlier than the creation message. If you do not get responses, you will have to send them again, once the nym is created.
When someone send a message to your nym, the server will receive it, encrypt to the nym and post on a.a.m so you can retrieve it. The Newsgroup acts as a public mailbox. Everybody can see and download the messages but only the intended recipient (your nym) can decrypt it.
If you use more than one nym, you need to remember to choose which nym is going to sign the message, or always the same nym is going to send the messages, and consequently only his messages will be accepted. Remember that the only message accepted without a signature is the creation message.
To specify the nym that is going to sign the message, use the
gpg --armor --encrypt --sign --recipient send@server --local-user nym@server message.txt
The encryption layers discussed here will only protect data between your nym and the server. It is advised that you use some kind of end-to-end encryption (another layer) between you and the recipient by encrypting the body of the message first, and then encrypting to the server's key.
Keep in mind that the headers cannot be encrypted. An end-to-end encrypted message would look like this:
To: recipient@domain Subject: Subject -----BEGIN PGP MESSAGE----- <snipped> -----END PGP MESSAGE-----
After that you would then encrypt to the Nymserver, and it would look like this in the end:
To: send@server -----BEGIN PGP MESSAGE----- <snipped> -----END PGP MESSAGE-----
Zax-type Nymserver List
Active Zax-type nymservers as of 2015:
Public/Open News Servers
Other Useful Topics
- You can change the default Mixmaster editor to something more usable than vi:
sudo echo 'export EDITOR=kwrite' >> ~/.bashrc
- What happens if you register a nym that is already taken?
You will receive a message in a.a.m that its already been taken.
See if we can ship aam2mail - a stand-alone python utility for hsub management.
Mixnym.net key expired but Zax fixed the problem.
- Zax (aka Steve Crook) is the author of this newer type of nymservers.
- https://www.youtube.com/watch?v=dzbrFPO4604 LinuxJournal
- A open (read-only) (text) usenet server. Both nntp and nntps are supported. https://dizum.com/
- Used by QSA. https://www.quicksilvermail.net/
- Used by QSA. https://www.quicksilvermail.net/
- The latter also written by Steve Crook https://github.com/crooks/aam2mail
This is a wiki. Want to improve this page? Help is welcome and volunteer contributions are happily considered! See Conditions for Contributions to Whonix, then Edit! IP addresses are scrubbed, but editing over Tor is recommended. Edits are held for moderation.