Nym Servers and Pseudonymous Emails
|About this Nymservers Page|
This wiki page is maintained by a contributor.
A nym server is: 
... a pseudonym server that furnishes an untraceable email address. The purpose of this server is to allow users to have usernames (pseudonyms) and send and receive messages without revealing their true identities. Even the nym server operators cannot trace a user's email address.
This arrangement means nym servers (and a network of anonymous remailers) send pseudonymous emails and forward the replies to the user's real email address. In order to use nym servers: 
- Registration is required with an available server located on the internet.
- A PGP key pair must be created and sent to the nym server, as well as the reply block for anonymous remailers in order to send a message to the creator's real email address for replies.
Properly created nym server systems are considered relatively anonymous -- it is difficult to trace the nym server or identify the real email sender.  In addition, this configuration provides an uncensorable inbox that does not rely on a single service provider; this is beneficial in today's climate where a number of email services have abruptly shut down due to coercion or service restrictions (see Lavabit for a recent example). Further, it is unnecessary to risk browser-based logins in a webmail interface, thereby reducing the chance of connections being intercepted or poised by adversaries relying on specific selectors.
The following guide utilizes Zax-type nym servers  as they are infinitely more usable than the original GHIO-type servers which should be avoided at all costs (unless you enjoy hand-crafting reply-blocks). Readers who are unfamiliar with the term 'reply-block' should not be concerned because no manual configuration is necessary in these instructions.
To manage your nym, messages can be sent to the nym server via a SMTP server or even a personal email address (unrecommended, but still functional). Previously Whonix ™ strongly recommended the use of Mixmaster to communicate with nym servers, since they are commonly used together but are totally independent. Unfortunately this is no longer possible, as Mixmaster is dead upstream and has been permanently removed from Debian.
Table: Message Path Factors
|Nym Server Connections||
This guide uses mixnym.net, but the same steps equally apply to any other Zax-type nym server. For a selection of nym servers, see: Zax-type Nym Server List.
The examples below use the nym firstname.lastname@example.org -- adjust this text to match your nym choice and the domain name of the nym server.
It is important to know which address should be used when sending messages to the nym server:
- 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
For an overview of the process, seven primary steps apply:
- Import the Nym Server Key
- Prepare the Nym Request
- Send Request to the Nym Server
- Retrieve Messages from the Newsgroup
- Decrypt Messages
- Send Mail with Registered Nym
- Reconfigure Nym
Import the Nym Server Key
A nym server's key is usually on their homepage. Follow these steps to import the key.
1. Download the mixnym.net nym server key with curl to the 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 the fingerprint is correct, import it with GPG.
gpg --import key.asc
Sometimes it may only be available from PGP keyservers. In that instance, download it from a keyserver such as
zkaan2xfbuxia2wpf7ofnkbz6r5zdbbvxbunvp5g2iebopbfc4iqmbad.onion) by providing the fingerprint.
The following command using
--recv-keys is not recommended for security reasons and is often non-functional.  This is not a Whonix ™-specific issue. The OpenPGP public key should be downloaded from the web instead; see also Secure Downloads. This procedure is currently undocumented and can be resolved as per the Free Support Principle. Documentation contributions will be happily considered.
gpg --keyserver keys.openpgp.org --recv-keys 94F204C28BF00937EFC85D1AFF4DB66014D0C447
If the fingerprint is unknown, try and search for it.
gpg --keyserver keys.openpgp.org --search-keys email@example.com
Do not forget to check the fingerprint before importing the key.
Prepare the 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.
Make sure to provide different information from the example above. Also note the nym expires when the key expires.
Export Public Key
To create a nym, its public key must be exported and sent to the nym server. In the following example, it will be copied to
gpg --armor --export firstname.lastname@example.org > pubkey.txt
Configure Additional Options
This step is only necessary if choosing to configure additional nym options, such as Subject Identification or Symmetric Encryption. For each option, prepend a line to the
pubkey.txt file using the following format.
Caps are unimportant in the option name, but are sensitive in the setting.
Table: Optional Nym Server Parameters
|Fixed (Plaintext) Subject||Choose a unique keyword as a Subject to be able identify the nym server reply on the newsgroup with the |
|Hashed Subject||A better alternative to the |
A hSub is made of two parts: 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, it is impossible to identify the owner of the message. However, as you know your nym's hSub passphrase, it can be hashed 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. 
Alternative options for setting a hSub include:
|Symmetric Encryption||A symmetric encryption layer can be added by specifying a key with the |
|Deletion||To delete your nym, the following option and setting can be sent: |
For a concrete example, to add the hSub passphrase
pubkey.txt should be edited as follows:
hsub: panda -----BEGIN PGP PUBLIC KEY BLOCK----- <snipped> -----END PGP PUBLIC KEY BLOCK-----
More than one option line can be added to the request, but be aware that some options might create conflicts. For example,
hsub work differently, but are used for the same purpose -- only one of these options should be used at the same time.
Encrypt the Request
It is necessary to wrap
pubkey.txt -- the message containing additional options and the public key -- to the nym server. 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
It is safe to ignore the warning about encrypting to an "untrusted" key and just select
y for yes.
Send Request to the Nym Server
mixmaster u)pdate stats * pick remailer letter (optional) <space> q)uit
Send the encrypted file to the nym server with Mixmaster:
mixmaster --mail -l *,*,* -c 2 firstname.lastname@example.org pubkey.txt.asc
-lcustomizes the remailer chain length. The shorter the chain the faster the mail will be sent, thereby improving the chances of success. In this example, three random mixes are in use:
-csends copies of the message. In this example,
2copies are sent.
If necessary, run Mixmaster from the command line and check the remailer chain list to see node availability and reliability statistics, then choose accordingly.
If all steps were followed correctly, the nym server will decrypt the message, extract your nym's email address from the supplied public key, then process it. Provided the nym is not reserved or already taken, a confirmation message will be received from the nym server, encrypted to your nym's key.
Note that the protection provided by Mixmaster is of little importance here because everything is done behind Tor. 
Important: Take note that this is the only message where the public key is attached, as well as the only one the server will ever accept that is not signed by that key. From now on, the nym's digital signature will prove your ownership of it. Examples on signing can be found in Send Mail with Registered Nym and Reconfigure Nym.
Retrieve Messages from the Newsgroup
Zax-type nym servers deliver messages to nyms via the
alt.anonymous.messages Usenet group (a.a.m). Anyone can access these messages, but only the nyms can decrypt them by using their private keys.
As explained earlier, messages can be configured to be identified by subject. If a form of subject identification was set up from the previous section, then refer to the Use aam2mail to Fetch Replies section.
If subject identification was not configured but is desirable, then a configuration message must be sent to stipulate a method of subject identification. An example can be found in the Reconfigure Nym section.
If no form of subject identification is desired, then the default method is to download and attempt 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 does not have any extra dependencies.
sudo apt install git git clone https://github.com/crooks/aam2mail cd aam2mail sudo python setup.py install
2. Configure aam2mail settings.
Utilize the hsub that was chosen.
mkdir ~/aam2mail/etc 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 receiving replies.
4. Check for replies downloaded by aam2mail.
The default path is
/home/user/Maildir/new. aam2mail will only retrieve messages and not decrypt them.
Be sure to check for new messages regularly; messages on Usenet accumulate beyond the fetch-limit and can easily be missed.
With the message saved to a file, decrypt it as follows.
gpg --decrypt file
If successful, the plaintext of the message your nym received should be visible.
Congratulations on registering your first nym! Now it can be used for sending messages.
Send Mail with Registered Nym
To send messages to other people, the steps are very similar to those used previously for creation and configuration.
1. Use a text editor to compose the
To: recipient@domain Subject: Example This is an example
2. Encrypt and sign to the server.
gpg --armor --encrypt --sign --recipient email@example.com message.txt
3. Send the file with Mixmaster.
This time the message is sent to firstname.lastname@example.org.
mixmaster --mail -l *,*,* email@example.com message.txt
The recipient will receive a message from firstname.lastname@example.org and they can send a reply to the same address.
Take note that copies of the message were not sent on this occasion. This was advisable for the creation step, because after receiving the first one the server would ignore the others. In this case of sending mail, if copies are sent the server will send all of them to the recipient.
1. To add (or change) an option, another message must be sent to email@example.com.
This message must state
option.txt and the additional option(s) that should be added.
The message does not require a body, just headers.
2. Remember to sign and encrypt the message.
gpg --armor --encrypt --sign --recipient firstname.lastname@example.org option.txt
3. Send the message.
As you are configuring the nym, it should be sent to email@example.com.
mixmaster --mail -l *,*,* firstname.lastname@example.org option.txt.asc
The encryption layers discussed in this wiki entry will only protect data between the nym and the server. It is recommended that another form of end-to-end encryption (another layer) is added between you and the recipient, for example by encrypting the body of the message first, and then encrypting to the server's key.
Bear in mind the headers cannot be encrypted, so an end-to-end encrypted message would appear similar to the example below.
To: recipient@domain Subject: Subject -----BEGIN PGP MESSAGE----- <snipped> -----END PGP MESSAGE-----
After this step, users would then encrypt to the nym server so it would appear like the example below.
To: send@server -----BEGIN PGP MESSAGE----- <snipped> -----END PGP MESSAGE-----
Due to Mixmaster's latency, it is possible for messages to arrive out of order. For instance, later messages might arrive earlier than the creation message. If no responses are received, it is necessary to send them again once the nym is created.
If more than one nym is used, you must remember to choose which nym will sign the message, or always use the same nym to send the messages, and consequently only these messages will be accepted. As noted earlier, the only message accepted without a signature is the creation message.
To specify the nym that will sign the message, use the
gpg --armor --encrypt --sign --recipient send@server --local-user nym@server message.txt
When someone sends a message to your nym, the server will receive it, encrypt to the nym and post it on a.a.m so it can be retrieved. The Newsgroup acts as a public mailbox -- everybody can see and download the messages but only the intended recipient (your nym) can decrypt it.
Zax-type Nym Server List
Although the reference is dated, active Zax-type nym servers in 2019 include: 
Public/Open News Servers
Other Useful Topics
- The default Mixmaster editor can be changed to something more usable than vi with the following steps. 
Whonix ™ KDE:
sudo echo 'export EDITOR=kwrite' >> ~/.bashrc
Whonix ™ XFCE:
sudo echo 'export EDITOR=mousepad' >> ~/.bashrc
Logout and then log back in again for changes to take effect.
- What happens if you register a nym that is already taken?
A message will be received in a.a.m that it is already taken. 
- Explore whether aam2mail  can be shipped as a stand-alone python utility for hsub management.
- Further reading: the Mixnym.net key expired but Zax fixed the problem. 
This wiki entry is based on Zax's help guides on Mixnym.net, which is also archived here. Appreciation is also expressed to the Nymphemeral developer,  Felipe Dau, for helping with these instructions.
- Explaining why they are sometimes use by parties for malicious purposes.
- Zax (aka Steve Crook) is the author of this newer type of nym server.
- https://www.youtube.com/watch?v=Oaft_WNMUIg Steven Murdoch
- https://web.archive.org/web/20190915082414/https://www.youtube.com/watch?v=dzbrFPO4604&gl=US&hl=en LinuxJournal
- A open (read-only) (text) usenet server. Both nntp and nntps are supported. https://dizum.com/
- Used by QSA: https://web.archive.org/web/20221007035558/https://sec3.net/www.quicksilvermail.net/
- The latter is also written by Steve Crook, see: https://github.com/crooks/aam2mail
It is a GUI client that relies on a pseudonym remailer that communicates to its users by posting messages to a shared mailbox, a Zax-type nym server. Both the server and the client apply an ephemeral encryption layer on their messages based on the Axolotl Ratchet protocol, providing forward and future secrecy to the conversation.