# Postfix/TLS - Installing the patchkit

## Prerequisits

This patchkit is prepared for

- Postfix Version 2.0.12
  http://www.postfix.org/ [POSTFIX]
  The use of other versions might lead to patch conflicts or silent failures, as we directly change the source code.
- OpenSSL Version 0.9.7b (>=0.9.5)
  http://www.openssl.org/ [OPENSSL]
  We use OpenSSL as library (and some command line tools to create the certificates, if necessary). OpenSSL is the successor of SSLeay.

  Postfix/TLS uses properties that are only available starting with version 0.9.5 of the OpenSSL library. 0.9.5a and 0.9.6x have proven stability over several months. The release 0.9.7 contains several enhancemants and bugfixes. OpenSSL 0.9.7b is the latest release and the recommended version.

You may also need to update your "patch" utility (see below).

## Patching

The changes to the postfix source code as well as the additional files are included in the "`pfixtls.diff`" in the main directory of the patch kit. It is a unified diff.

To apply the patches, go to the directory one level below the original postfix source tree (you should see "`postfix-xxxxxxx`" or "`snapshot-xxxxxxx`" when doing an "`ls -al`" at this point. The patch is then applied with:

    patch -p0 < path-to/pfixtls.diff

If you experience problems during the patch process (e.g. with the HP-UX 10.20 included patch), you might need to update your patch program, e.g. to an actual GNU-patch.

If you need to apply the patchkit to a different version of patchlevel of postfix, you might try the following:

    cd postfix-directory ; patch -p1 < path-to/pfixtls.diff

Since the patch is in unified form, it might also apply to a mildly changed source, as long as no conflicts appear.

## Compiling

After patching postfix will configure and compile as before. In order to enable the TLS functions, you must specify the path to the OpenSSL header files as well as the appropriate libraries, and you must define `USE_SSL`. Your command for configuration might then be:

    make makefiles CCARGS="-DUSE_SSL -I/usr/local/ssl/include" AUXLIBS="-L/usr/local/ssl/lib -lssl -lcrypto"

You might need additional customization e.g. for using Berkeley-DB as listed in the postfix INSTALL instructions. You can then continue in the usual way with:

    make

and then follow the instructions in the postfix INSTALL file.