sks-keyserver /

Filename Size Date modified Message
132 B
153 B
47 B
1.1 KB
673 B
1.4 KB
14.9 KB
193 B
10.9 KB
172 B
6.6 KB
5.1 KB
6 B
2.2 KB
3.7 KB
4.3 KB
8.3 KB
7.3 KB
3.4 KB
3.7 KB
3.6 KB
11.8 KB
4.5 KB
10.7 KB
6.2 KB
7.0 KB
1.7 KB
97.0 KB
7.5 KB
1.6 KB
20.7 KB
2.0 KB
5.1 KB
5.5 KB
3.4 KB
7.2 KB
5.5 KB
5.4 KB
4.6 KB
827 B
3.2 KB
3.9 KB
3.9 KB
1.1 KB
2.7 KB
2.7 KB
19.6 KB
433 B
4.1 KB
2.5 KB
7.9 KB
40.0 KB
9.1 KB
1.9 KB
3.3 KB
1.4 KB
8.6 KB
2.5 KB
4.3 KB
1.7 KB
1.0 KB
3.5 KB
7.0 KB
765 B
3.9 KB
2.2 KB
1.6 KB
3.2 KB
4.5 KB
973 B
4.3 KB
947 B
5.3 KB
4.5 KB
10.0 KB
5.6 KB
5.1 KB
10.2 KB
8.8 KB
3.0 KB
3.9 KB
5.5 KB
3.0 KB
30.1 KB
5.6 KB
3.1 KB
1.9 KB
4.3 KB
2.8 KB
1.6 KB
2.5 KB
967 B
2.1 KB
5.3 KB
1.2 KB
6.0 KB
3.5 KB
7.2 KB
951 B
11.3 KB
3.3 KB
3.0 KB
2.8 KB
1.3 KB
14.2 KB
3.3 KB
5.1 KB
12.3 KB
5.1 KB
8.1 KB
538 B
524 B
1.9 KB
3.2 KB
850 B
3.0 KB
6.3 KB
2.9 KB
988 B
581 B
3.8 KB
9.1 KB
9.6 KB
5.2 KB
3.2 KB
4.8 KB
The following is an incomplete guide to compiling, setting up and using SKS.
The documentation still needs work, but hopefully this is enough to get you

-- Prerequisites --------------------------

There are a few prerequisites to building this code.  You need:

   * ocaml-3.10.2 or later.  Get it from
   * Berkeley DB version 4.6.*.  You can find the appropriate
     versions at

-- Compilation and Installation -----------------------------

* Install OCaml and Berkeley DB

   When installing ocaml, make sure you do both the "make world" and the
   "make opt" steps before installing.  The later makes sure you get the
   optimizing compilers.  (do make opt.opt if you want faster compilation.
   You can then set the environment variables OCAMLC, OCAMLOPT and CALMP4O to
   ocamlc.opt, ocamlopt.opt and camlp4o.opt respectively.)

* Copy Makefile.local.unused to Makefile.local, and edit to match your

* Compile

    make dep
    make all   
    make all.bc # if you want the bytecode versions
    make install # puts executables in $PREFIX/bin, as defined 
                 # in Makefile.local

    There are some other useful compilation targets, mostly useful for

      - make doc
          creates a doc directory with ocamldoc-generated documentation of
          the individual modules.  These are mostly useful as documentation
          to the source code, not a user's guide.

      - make 
          Creates a ps-file that shows the dependencies between different
          modules, and gives you a sense of the overall structure of the
          system.  For this to work you need to have AT&T's graphviz
          installed, as well as python2.  The python script that's used
          actually requires that python2 be called python2, rather than
          python.  You can of course edit that script.

-- Setup and Configuration ---------------------

You need to set up a directory for the SKS installation.  It will contain the
database files along with configuration and log files.

Configuration options can be passed in on the command-line or put in the
"sksconf" file in the SKS directory.  the -basedir option specifies the SKS
directory itself, which defaults to the current working directory.

* sksconf and commandline options

   The format of the sksconf file is simply a bunch of lines of the form:

   keyword: value

   The '#' character is used for comments, and blank lines are ignored.  The
   keywords are just the command-line flags, minus the initial "-".  

   The one thing you probably want no matter what is a line that says 

   logfile: log

   which ensures that sks will output messages to log.recon and log.db

* membership file

   If you want your server to gossip with others, you will need a membership
   file which tells the "sks recon" who else to gossip with.  The membership
   file should look something like: 11370 11370

   This file should be called "membership", and should be stored in the SKS
   directory.  Note that in order for synchronization to work, both hosts
   have to have each other in their membership lists.  Send mail to
   <> to get other SKS administrators to add
   you to their membership lsits.

   IMPORTANT NOTE: if you include the server itself in the membership file, you
   should make sure that you also specify the "hostname" option, and that the
   selected hostname is exactly the same string listed in the membership file.
   Otherwise, the "sks recon" will try to synchronize with itself and will

* outgoing PKS synchronization: mailsync file
   The mailsync file contains a list of email addresses of PKS keyservers.
   This file is important, because it ensures that keys submitted directly to
   an SKS keyserver are also forwarded to PKS keyservers.  

   IMPORTANT:  don't add someone to your mailsync file without getting their
               permission first!

   In order for outgoing email sync's to work, you need to specify a command
   to actually send the email out.  The default is "sendmail -t -oi", but you
   may need something different.

* incoming PKS synchronization

   Incoming PKS synchronization is less critical than outgoing, since as long
   as some SKS server gets the new data, it will be distributed to all.
   Having more hosts receive the incoming PKS syncs does, however, increase
   the fault-tolerance of the connection between the two systems.
   In order to get incoming mail working, you should pipe the appropriate
   incoming mail to the following command via procmail:

      "sks_add_mail sks_directory_name" 

   Here's an example procmail entry:


      * ^Subject: incremental
      | sks_add_mail sks_directory_name

* built-in webserver

   You can server up a simple index page directly from the port you're using
   for HKP.  This is done by creating a subdirectory in your SKS directory
   called "web".  There, you can put an index file named "index.html" and
   some image files with extensions jpeg, png or gif.  Subdirectories will be
   ignored, as will filenames with anything other than alphanumeric
   characters and the '.' character.  This is particularly useful if you want
   to run your webserver off of port 80.  This can be done by using the
   -hkp_port command-line option.

-- Building up the databases -------------------

   - First, you need to get a keydump.  If you're running a PKS server, you
     should be able to convince PKS to generate one for you.  If you're
     starting from scratch, you'll need to download one from the net.  You
     should contact the pgp keyserver list <>

   - in the SKS directory, put in a subdirectory called "dump" which contains
     the keydump files from which the database is to be built.  

   - Run  That script actually runs three utilities.  You
     might want to edit if you want to trade off speed for space
     usage.  At the current settings, you could run out of ram if you try
     this with less then 256 megs of RAM.

DO NOT DELETE THE "dump" DIRECTORY, even after the database is built.  The
original keys are not copied to the database, and so the dump must be left in

-- Platform specific issues ----------------


   On FreeBSD it appears that libdb is named differently than on some other
   platforms.  For that reason, you need to set the LIBDB environment value
   to "-ldb46" instead of "-ldb-4.6" for other platfomrs.