Nymservers and Pseudonymous Emails

From Whonix

About this Nymservers Page
Support Status stable
Difficulty medium
Maintainer HulaHoop
Support Support

These instructions are mostly defunct since Mixmaster is dead upstream. [1]


This guide is for Zax-type nymservers[2]. It is based on Zax's help guides on, also archived here. A special thanks to Nymphemeral developer, Felipe Dau, for helping with the instructions.

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.

Message Path[edit]

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, 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 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: creation or configuration requests, to create and manage your nym send requests, to send messages from your nym to other people url requests, to retrieve an HTML page

The process broken down into steps:

  1. Import Nymserver's Key
  2. Prepare Nym Request
  3. Send Request to Nymserver
  4. Retrieve Messages from Newsgroup
  5. Decrypt Messages
  6. Send Mail with Registered Nym
  7. Reconfigure Nym

Import Nymserver's Key[edit]

A Nymserver's key is usually on their homepage. You can follow these steps to import the key:

1. Download the Nymserver key with curl to home folder:

curl -o 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 (URL Retrieval address for Is-Not-My Nymserver) <>
      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 by providing the fingerprint:

gpg --keyserver --recv-keys 94F204C28BF00937EFC85D1AFF4DB66014D0C447

If you do not have the fingerprint, you can try to search for it:

gpg --keyserver --search-keys

Do not forget to check the fingerprint before importing.

Prepare Nym Request[edit]

Create a Key Pair[edit]

Create a new key pair for

gpg --gen-key

    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:
    You selected this USER-ID:
        " <>"

    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[edit]

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 pubkey.txt:

gpg --armor --export > pubkey.txt

Configure Additional Options[edit]

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:

option: setting

Caps are unimportant in the option name, but are sensitive in the setting.

The Nymserver parameters specified here are optional. [3] You can set them now or change in the future as detailed on #Reconfigure Nym.

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.

Hashed 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. [4]

You can also use these options to set an hSub: hash-key, hash-subject, subject-password. These all mean the same as hsub.

Symmetric Encryption

You can add a symmetric encryption layer by specifying a key with the symmetric option.


If you wish to delete your nym, you can send the following option and setting: delete: yes.


For example, to add an hSub passphrase of panda, you should edit the pubkey.txt like this:

    hsub: panda


You can add more than one option line to your request. However, you should remember that some options might create conflicts. For example, subject and hsub work differently, but are used for the same purpose. You should choose either one or the other.

Encrypt the Request[edit]

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 pubkey.txt.asc:

gpg --armor --encrypt --recipient pubkey.txt

You can ignore the warning about encrypting to an "untrusted" key and select y for yes.

Send Request to Nymserver[edit]

Before sending the request, update remailer keys first. Its enough to do this once a day [5]:


    u)pdate stats


    pick remailer letter (optional)



Send the encrypted file to the Nymserver with Mixmaster:

mixmaster --mail -l *,*,* -c 2 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 2.

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. [6]


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[edit]

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[edit]

1. Install git and clone aam2mail source. aam2mail requires no extra dependencies.

sudo apt-get install git
git clone
cd aam2mail
sudo python install

2. Configure aam2mail settings. Use the hsub you chose:

mkdir ~/aam2mail/etc
echo 'panda' >> aam2mail/etc/subject_hsub
echo '' >> aam2mail/etc/servers

3. Run aam2mail periodically to check for messages. There is an expected delay of a few hours before getting replies.

aam2mail --start


aam2mail --restart

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.

Decrypt Messages[edit]

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[edit]

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 message.txt file:

To: recipient@domain
Subject: Example

This is an example

Now you need to encrypt and sign to the server:

gpg --armor --encrypt --sign --recipient message.txt

Send it with Mixmaster, but this time to

mixmaster --mail -l *,*,* 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 and they can send a reply to that same address.

Reconfigure Nym[edit]

If you wish to add (or change) an option, you just have to send another message to, say option.txt, with the option(s) you would like to add:

hsub: passphrase

The message does not need to have a body, just headers. Remember to sign and encrypt it:

gpg --armor --encrypt --sign --recipient option.txt

Now you just need to send. As you are configuring your nym, you should send it to

mixmaster --mail -l *,*,* option.txt.asc

Important Notes[edit]

Message Ordering[edit]

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.

Public Mailbox[edit]

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.

Multiple Nyms[edit]

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 --local-user flag:

gpg --armor --encrypt --sign --recipient send@server --local-user nym@server message.txt

End-to-End Encryption[edit]

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-----
    -----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-----
    -----END PGP MESSAGE-----

Zax-type Nymserver List[edit]

Active Zax-type nymservers as of 2015:[7]

Public/Open News Servers[edit][8][9][10]

Other Useful Topics[edit]

  • You can change the default Mixmaster editor to something more usable than vi[11]:

Whonix ™ KDE:

sudo echo 'export EDITOR=kwrite' >> ~/.bashrc

Whonix ™ XFCE:

sudo echo 'export EDITOR=mousepad' >> ~/.bashrc

Log-out then back in again for changes to take effect.

  • 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.[12]

Dev Notes[edit]

See if we can ship aam2mail[13] - a stand-alone python utility for hsub management.

Readings: key expired but Zax fixed the problem.[14]

See Also[edit]


No user support in comments. See Support. Comments will be deleted after some time. Specifically after comments have been addressed in form of wiki enhancements. See Wiki Comments Policy.

Add your comment
Whonix welcomes all comments. If you do not want to be anonymous, register or log in. It is free.

Random News:

Want to help create awesome, up-to-date screenshots for the Whonix wiki? Help is most welcome!

https | (forcing) onion

Follow: Twitter | Facebook | | Stay Tuned | Whonix News

Share: Twitter | Facebook

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 of the Open Invention Network. Unless otherwise noted, the content of this page is copyrighted and licensed under the same Freedom Software license as Whonix ™ itself. (Why?)

Whonix ™ is a derivative of and not affiliated with Debian. Debian is a registered trademark owned by Software in the Public Interest, Inc.

Whonix ™ is produced independently from the Tor® anonymity software and carries no guarantee from The Tor Project about quality, suitability or anything else.

By using our website, you acknowledge that you have read, understood and agreed to our Privacy Policy, Cookie Policy, Terms of Service, and E-Sign Consent. Whonix ™ is provided by ENCRYPTED SUPPORT LP. See Imprint.