diff -urN courier-imap-4.0.6.orig/tcpd/libcouriertls.c courier-imap-4.0.6/tcpd/libcouriertls.c
--- courier-imap-4.0.6.orig/tcpd/libcouriertls.c	2004-06-09 00:44:46.000000000 +0200
+++ courier-imap-4.0.6/tcpd/libcouriertls.c	2007-07-18 07:59:21.000000000 +0200
@@ -405,6 +405,11 @@
 	SSL_load_error_strings();
 	SSLeay_add_ssl_algorithms();
 
+	/* Init available hardware crypto engines. */
+	ENGINE_load_builtin_engines();
+	ENGINE_register_all_complete();
+	ENGINE_set_default_ciphers(ENGINE_by_id("padlock"));
+
 	info_copy=malloc(sizeof(struct tls_info));
 
 	if (info_copy == NULL)
diff -urN courier-imap-4.0.6.orig/tcpd/starttls.c courier-imap-4.0.6/tcpd/starttls.c
--- courier-imap-4.0.6.orig/tcpd/starttls.c	2003-09-01 21:30:23.000000000 +0200
+++ courier-imap-4.0.6/tcpd/starttls.c	2007-07-18 07:53:10.000000000 +0200
@@ -50,6 +50,7 @@
 #include	<arpa/inet.h>
 #define	DEBUG_SAFESTACK	1	/* For openssl 0.9.6 */
 
+#include <openssl/engine.h>
 #include	<openssl/ssl.h>
 #include	<openssl/err.h>
 
