Nym Servers and Pseudonymous Emails
|About this Nymservers Page|
- 1 Introduction
- 2 Rationale
- 3 Message Path
- 4 Instructions
- 4.1 Conventions
- 4.2 Import the Nym Server Key
- 4.3 Prepare the Nym Request
- 4.4 Send Request to the Nym Server
- 4.5 Retrieve Messages from the Newsgroup
- 4.6 Decrypt Messages
- 4.7 Send Mail with Registered Nym
- 4.8 Reconfigure Nym
- 5 Important Notes
- 6 Zax-type Nym Server List
- 7 Public/Open News Servers
- 8 Other Useful Topics
- 9 Development Notes
- 10 See Also
- 11 Sources
- 12 Footnotes
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 [archive] 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 [archive]  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 [archive]). 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 [archive].
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 email@example.com -- 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:
- firstname.lastname@example.org: creation or configuration requests, to create and manage your nym
- email@example.com: send requests, to send messages from your nym to other people
- firstname.lastname@example.org: 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.
Prepare the Nym Request
Create a Key Pair
Create a new key pair for email@example.com.
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: firstname.lastname@example.org You selected this USER-ID: "email@example.com <firstname.lastname@example.org>" 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 email@example.com > 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 firstname.lastname@example.org 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
Before sending the request, update the remailer keys first. It is enough to complete this procedure on a daily basis: 
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 email@example.com 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. 
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
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.
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.
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 [archive] guides [archive] on Mixnym.net, which is also archived [archive] here [archive]. Appreciation is also expressed to the Nymphemeral [archive] developer,  Felipe Dau, for helping with these instructions.
- https://www.techopedia.com/definition/1696/nym-server [archive]
- 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://groups.google.com/forum/#!topic/alt.privacy.anon-server/f3H4Xw5j2LI [archive]
- http://is-not-my.name/hsub.html [archive]
- https://www.youtube.com/watch?v=dzbrFPO4604 [archive] LinuxJournal
- https://firstname.lastname@example.org/msg00022.html [archive]
- https://alt.privacy.anon-server.narkive.com/Zd27lR8z/how-to-get-nymserver-help-key [archive]
- A open (read-only) (text) usenet server. Both nntp and nntps are supported. https://dizum.com/ [archive]
- Used by QSA: https://www.quicksilvermail.net/ [archive]
- https://alt.privacy.anon-server.narkive.com/5dbZVYpQ/choice-of-editor-with-mixmaster [archive]
- https://alt.privacy.anon-server.narkive.com/Zd27lR8z/how-to-get-nymserver-help-key [archive]
- The latter is also written by Steve Crook, see: https://github.com/crooks/aam2mail [archive]
- https://groups.google.com/forum/?_escaped_fragment_=topic/alt.privacy.anon-server/A6ltHhItGrw#!topic/alt.privacy.anon-server/A6ltHhItGrw [archive]
- pypi.org [archive]:
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.
This is a wiki. Want to improve this page? Help is welcome and volunteer contributions are happily considered! Read, understand and agree to Conditions for Contributions to Whonix ™, then Edit! Edits are held for moderation.
Copyright (C) 2012 - 2019 ENCRYPTED SUPPORT LP. Whonix ™ is a trademark. Whonix ™ is a licensee [archive] of the Open Invention Network [archive]. Unless otherwise noted, the content of this page is copyrighted and licensed under the same Freedom Software license as Whonix ™ itself. (Why?)