Fetched from upstream git and tweaked for the release:
https://gitlab.com/fetchmail/fetchmail/commit/a2ae6f8d15d7caf815d7bdd13df833fd1b2af5cc

Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>

diff -Nura fetchmail-6.3.26.orig/config.h.in fetchmail-6.3.26/config.h.in
--- fetchmail-6.3.26.orig/config.h.in	2015-12-30 10:44:33.467746835 -0300
+++ fetchmail-6.3.26/config.h.in	2015-12-30 10:45:50.271403589 -0300
@@ -53,6 +53,10 @@
    if you don't. */
 #undef HAVE_DECL_SSLV2_CLIENT_METHOD
 
+/* Define to 1 if you have the declaration of `SSLv3_client_method', and to 0
+   if you don't. */
+#undef HAVE_DECL_SSLV3_CLIENT_METHOD
+
 /* Define to 1 if you have the declaration of `strerror', and to 0 if you
    don't. */
 #undef HAVE_DECL_STRERROR
diff -Nura fetchmail-6.3.26.orig/configure.ac fetchmail-6.3.26/configure.ac
--- fetchmail-6.3.26.orig/configure.ac	2015-12-30 10:44:33.465746766 -0300
+++ fetchmail-6.3.26/configure.ac	2015-12-30 10:46:03.708868409 -0300
@@ -803,6 +803,7 @@
 
 case "$LIBS" in *-lssl*)
 	AC_CHECK_DECLS([SSLv2_client_method],,,[#include <openssl/ssl.h>])
+	AC_CHECK_DECLS([SSLv3_client_method],,,[#include <openssl/ssl.h>])
 	;;
 esac
 
diff -Nura fetchmail-6.3.26.orig/fetchmail.c fetchmail-6.3.26/fetchmail.c
--- fetchmail-6.3.26.orig/fetchmail.c	2015-12-30 10:44:33.469746904 -0300
+++ fetchmail-6.3.26/fetchmail.c	2015-12-30 10:46:03.708868409 -0300
@@ -263,6 +263,12 @@
 #ifdef SSL_ENABLE
 	"+SSL"
 #endif
+#if HAVE_DECL_SSLV2_CLIENT_METHOD + 0 == 0
+	"-SSLv2"
+#endif
+#if HAVE_DECL_SSLV3_CLIENT_METHOD + 0 == 0
+	"-SSLv3"
+#endif
 #ifdef OPIE_ENABLE
 	"+OPIE"
 #endif /* OPIE_ENABLE */
diff -Nura fetchmail-6.3.26.orig/socket.c fetchmail-6.3.26/socket.c
--- fetchmail-6.3.26.orig/socket.c	2015-12-30 10:44:33.464746731 -0300
+++ fetchmail-6.3.26/socket.c	2015-12-30 10:46:03.709868443 -0300
@@ -910,11 +910,16 @@
 #if HAVE_DECL_SSLV2_CLIENT_METHOD + 0 > 0
 			_ctx[sock] = SSL_CTX_new(SSLv2_client_method());
 #else
-			report(stderr, GT_("Your operating system does not support SSLv2.\n"));
+			report(stderr, GT_("Your OpenSSL version does not support SSLv2.\n"));
 			return -1;
 #endif
 		} else if(!strcasecmp("ssl3",myproto)) {
+#if HAVE_DECL_SSLV3_CLIENT_METHOD + 0 > 0
 			_ctx[sock] = SSL_CTX_new(SSLv3_client_method());
+#else
+			report(stderr, GT_("Your OpenSSL version does not support SSLv3.\n"));
+			return -1;
+#endif
 		} else if(!strcasecmp("tls1",myproto)) {
 			_ctx[sock] = SSL_CTX_new(TLSv1_client_method());
 		} else if (!strcasecmp("ssl23",myproto)) {
