summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRemi Collet <remi@remirepo.net>2021-02-24 14:56:09 +0100
committerRemi Collet <remi@remirepo.net>2021-02-24 14:56:09 +0100
commit03290a345a76dfc0d504b2083b2e28223ea67e43 (patch)
treea7cc1835db0c79e9bbd9fa583e942f5c9d080743
Import from Fedora
-rw-r--r--.gitignore9
-rw-r--r--1006_openssl1.1_autoverify.patch58
-rw-r--r--Makefile4
-rw-r--r--branch1
-rw-r--r--clog2
-rw-r--r--imap-2004a-doc.patch30
-rw-r--r--imap-2007-paths.patch18
-rw-r--r--imap-2007e-authmd5.patch29
-rw-r--r--imap-2007e-overflow.patch13
-rw-r--r--imap-2007e-poll.patch192
-rw-r--r--imap-2007e-shared.patch74
-rw-r--r--imap-2007e-system_c_client.patch17
-rw-r--r--imap-2007f-format-security.patch12
-rw-r--r--imap-2007f-ldflags.patch21
-rw-r--r--imap-2007f.tar.gzbin0 -> 1990304 bytes
-rw-r--r--imap-legacy.pam5
-rw-r--r--imap-password.pam5
-rw-r--r--imap-xinetd14
-rw-r--r--imap.pam5
-rw-r--r--imaps-xinetd14
-rw-r--r--ipop2-xinetd15
-rw-r--r--ipop3-xinetd14
-rw-r--r--pop3s-xinetd13
-rw-r--r--sources1
-rw-r--r--uw-imap.spec700
25 files changed, 1266 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..01f0400
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,9 @@
+clog
+package-*.xml
+*.tgz
+*.tar.bz2
+*.tar.gz
+*.tar.xz
+*.tar.xz.asc
+*.src.rpm
+*/*rpm
diff --git a/1006_openssl1.1_autoverify.patch b/1006_openssl1.1_autoverify.patch
new file mode 100644
index 0000000..087e747
--- /dev/null
+++ b/1006_openssl1.1_autoverify.patch
@@ -0,0 +1,58 @@
+Description: Support OpenSSL 1.1
+ When building with OpenSSL 1.1 and newer, use the new built-in
+ hostname verification instead of code that doesn't compile due to
+ structs having been made opaque.
+Bug-Debian: https://bugs.debian.org/828589
+
+--- a/src/osdep/unix/ssl_unix.c
++++ b/src/osdep/unix/ssl_unix.c
+@@ -227,8 +227,16 @@ static char *ssl_start_work (SSLSTREAM *
+ /* disable certificate validation? */
+ if (flags & NET_NOVALIDATECERT)
+ SSL_CTX_set_verify (stream->context,SSL_VERIFY_NONE,NIL);
+- else SSL_CTX_set_verify (stream->context,SSL_VERIFY_PEER,ssl_open_verify);
++ else {
++#if OPENSSL_VERSION_NUMBER >= 0x10100000
++ X509_VERIFY_PARAM *param = SSL_CTX_get0_param(stream->context);
++ X509_VERIFY_PARAM_set_hostflags(param, X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS);
++ X509_VERIFY_PARAM_set1_host(param, host, 0);
++#endif
++
++ SSL_CTX_set_verify (stream->context,SSL_VERIFY_PEER,ssl_open_verify);
+ /* set default paths to CAs... */
++ }
+ SSL_CTX_set_default_verify_paths (stream->context);
+ /* ...unless a non-standard path desired */
+ if (s = (char *) mail_parameters (NIL,GET_SSLCAPATH,NIL))
+@@ -266,6 +274,7 @@ static char *ssl_start_work (SSLSTREAM *
+ if (SSL_write (stream->con,"",0) < 0)
+ return ssl_last_error ? ssl_last_error : "SSL negotiation failed";
+ /* need to validate host names? */
++#if OPENSSL_VERSION_NUMBER < 0x10100000
+ if (!(flags & NET_NOVALIDATECERT) &&
+ (err = ssl_validate_cert (cert = SSL_get_peer_certificate (stream->con),
+ host))) {
+@@ -275,6 +284,7 @@ static char *ssl_start_work (SSLSTREAM *
+ sprintf (tmp,"*%.128s: %.255s",err,cert ? cert->name : "???");
+ return ssl_last_error = cpystr (tmp);
+ }
++#endif
+ return NIL;
+ }
+
+@@ -313,6 +323,7 @@ static int ssl_open_verify (int ok,X509_
+ * Returns: NIL if validated, else string of error message
+ */
+
++#if OPENSSL_VERSION_NUMBER < 0x10100000
+ static char *ssl_validate_cert (X509 *cert,char *host)
+ {
+ int i,n;
+@@ -342,6 +353,7 @@ static char *ssl_validate_cert (X509 *ce
+ else ret = "Unable to locate common name in certificate";
+ return ret;
+ }
++#endif
+
+ /* Case-independent wildcard pattern match
+ * Accepts: base string
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..91b0fd5
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,4 @@
+SRCDIR := $(shell pwd)
+NAME := $(shell basename $(SRCDIR))
+include ../../common/Makefile
+
diff --git a/branch b/branch
new file mode 100644
index 0000000..46381b9
--- /dev/null
+++ b/branch
@@ -0,0 +1 @@
+EL-6
diff --git a/clog b/clog
new file mode 100644
index 0000000..20db66f
--- /dev/null
+++ b/clog
@@ -0,0 +1,2 @@
+missing BR on C compiler
+use ldconfig_scriptlets
diff --git a/imap-2004a-doc.patch b/imap-2004a-doc.patch
new file mode 100644
index 0000000..dcae4ab
--- /dev/null
+++ b/imap-2004a-doc.patch
@@ -0,0 +1,30 @@
+Patch by Robert Scheck <redhat@linuxnetz.de> for uw-imap >= 2004a, which corrects
+paths to imapd, ipop2d and ipop3d in the man pages.
+
+This patch is based on Red Hat Bugzilla ID #127271 and solves ID #229781.
+
+--- imap-2004a/src/imapd/imapd.8 2004-05-18 19:46:54.000000000 +0200
++++ imap-2004a/src/imapd/imapd.8.doc 2004-07-23 15:24:17.000000000 +0200
+@@ -3,7 +3,7 @@
+ .SH NAME
+ IMAPd \- Internet Message Access Protocol server
+ .SH SYNOPSIS
+-.B /usr/etc/imapd
++.B /usr/sbin/imapd
+ .SH DESCRIPTION
+ .I imapd
+ is a server which supports the
+--- imap-2004a/src/ipopd/ipopd.8 2004-05-18 19:50:05.000000000 +0200
++++ imap-2004a/src/ipopd/ipopd.8.doc 2004-07-23 15:23:38.000000000 +0200
+@@ -3,9 +3,9 @@
+ .SH NAME
+ IPOPd \- Post Office Protocol server
+ .SH SYNOPSIS
+-.B /usr/etc/ipop2d
++.B /usr/sbin/ipop2d
+ .PP
+-.B /usr/etc/ipop3d
++.B /usr/sbin/ipop3d
+ .SH DESCRIPTION
+ .I ipop2d
+ and
diff --git a/imap-2007-paths.patch b/imap-2007-paths.patch
new file mode 100644
index 0000000..a2784d9
--- /dev/null
+++ b/imap-2007-paths.patch
@@ -0,0 +1,18 @@
+diff -up imap-2007/src/osdep/unix/Makefile.paths imap-2007/src/osdep/unix/Makefile
+--- imap-2007/src/osdep/unix/Makefile.paths 2007-12-17 16:10:24.000000000 -0600
++++ imap-2007/src/osdep/unix/Makefile 2007-12-21 09:30:04.000000000 -0600
+@@ -96,11 +96,11 @@ CHECKPW=std
+ LOGINPW=std
+ SIGTYPE=bsd
+ CRXTYPE=std
+-ACTIVEFILE=/usr/lib/news/active
+-SPOOLDIR=/usr/spool
++ACTIVEFILE=/var/lib/news/active
++SPOOLDIR=/var/spool
+ MAILSPOOL=$(SPOOLDIR)/mail
+ NEWSSPOOL=$(SPOOLDIR)/news
+-RSHPATH=/usr/ucb/rsh
++RSHPATH=/usr/bin/rsh
+ MD5PWD=/etc/cram-md5.pwd
+ # Tries one of the test alternatives below if not specified.
+ LOCKPGM=
diff --git a/imap-2007e-authmd5.patch b/imap-2007e-authmd5.patch
new file mode 100644
index 0000000..66883a1
--- /dev/null
+++ b/imap-2007e-authmd5.patch
@@ -0,0 +1,29 @@
+diff -up imap-2007e/src/c-client/auth_md5.c.authmd5 imap-2007e/src/c-client/auth_md5.c
+--- imap-2007e/src/c-client/auth_md5.c.authmd5 2008-06-04 13:18:34.000000000 -0500
++++ imap-2007e/src/c-client/auth_md5.c 2009-07-07 19:24:12.348005485 -0500
+@@ -42,17 +42,17 @@ typedef struct {
+
+ /* Prototypes */
+
+-long auth_md5_valid (void);
+-long auth_md5_client (authchallenge_t challenger,authrespond_t responder,
++static long auth_md5_valid (void);
++static long auth_md5_client (authchallenge_t challenger,authrespond_t responder,
+ char *service,NETMBX *mb,void *stream,
+ unsigned long *trial,char *user);
+-char *auth_md5_server (authresponse_t responder,int argc,char *argv[]);
+-char *auth_md5_pwd (char *user);
++static char *auth_md5_server (authresponse_t responder,int argc,char *argv[]);
++static char *auth_md5_pwd (char *user);
+ char *apop_login (char *chal,char *user,char *md5,int argc,char *argv[]);
+-char *hmac_md5 (char *text,unsigned long tl,char *key,unsigned long kl);
+-void md5_init (MD5CONTEXT *ctx);
+-void md5_update (MD5CONTEXT *ctx,unsigned char *data,unsigned long len);
+-void md5_final (unsigned char *digest,MD5CONTEXT *ctx);
++static char *hmac_md5 (char *text,unsigned long tl,char *key,unsigned long kl);
++static void md5_init (MD5CONTEXT *ctx);
++static void md5_update (MD5CONTEXT *ctx,unsigned char *data,unsigned long len);
++static void md5_final (unsigned char *digest,MD5CONTEXT *ctx);
+ static void md5_transform (unsigned long *state,unsigned char *block);
+ static void md5_encode (unsigned char *dst,unsigned long *src,int len);
+ static void md5_decode (unsigned long *dst,unsigned char *src,int len);
diff --git a/imap-2007e-overflow.patch b/imap-2007e-overflow.patch
new file mode 100644
index 0000000..86512b2
--- /dev/null
+++ b/imap-2007e-overflow.patch
@@ -0,0 +1,13 @@
+diff -up imap-2007e/src/c-client/rfc822.c.overflow imap-2007e/src/c-client/rfc822.c
+--- imap-2007e/src/c-client/rfc822.c.overflow 2008-12-12 11:08:26.000000000 -0600
++++ imap-2007e/src/c-client/rfc822.c 2009-07-07 19:27:20.057772757 -0500
+@@ -384,6 +384,9 @@ void rfc822_parse_content (BODY *body,ST
+ if (CHR (bs) == '\012'){/* following LF? */
+ c = SNX (bs); i--; /* yes, slurp it */
+ }
++ if (!i) /* Make sure we don't get an overflow for */
++ break; /* messages ending on \015 (or the following */
++ /* i-- will cause i to be MAXINT. Not good.) */
+ case '\012': /* at start of a line, start with -- ? */
+ if (!(i && i-- && ((c = SNX (bs)) == '-') && i-- &&
+ ((c = SNX (bs)) == '-'))) break;
diff --git a/imap-2007e-poll.patch b/imap-2007e-poll.patch
new file mode 100644
index 0000000..e25f1b6
--- /dev/null
+++ b/imap-2007e-poll.patch
@@ -0,0 +1,192 @@
+http://anonscm.debian.org/cgit/collab-maint/uw-imap.git/plain/debian/patches/1005_poll.patch
+
+Description: Use poll(2) instead of select(2) to support more than 1024 file descriptors
+Author: Ben Smithurst <ben.smithurst@gradwell.com>
+Bug-Debian: https://bugs.debian.org/478193
+
+diff --git a/src/osdep/unix/os_lnx.c b/src/osdep/unix/os_lnx.c
+index 03fd17d..671bbd6 100644
+--- a/src/osdep/unix/os_lnx.c
++++ b/src/osdep/unix/os_lnx.c
+@@ -41,6 +41,7 @@
+ extern int errno; /* just in case */
+ #include <pwd.h>
+ #include "misc.h"
++#include <poll.h>
+
+
+ #include "fs_unix.c"
+diff --git a/src/osdep/unix/os_slx.c b/src/osdep/unix/os_slx.c
+index c94d632..f6bf27d 100644
+--- a/src/osdep/unix/os_slx.c
++++ b/src/osdep/unix/os_slx.c
+@@ -42,6 +42,7 @@ extern int errno; /* just in case */
+ #include <pwd.h>
+ #include <shadow.h>
+ #include "misc.h"
++#include <poll.h>
+
+
+ #include "fs_unix.c"
+diff --git a/src/osdep/unix/tcp_unix.c b/src/osdep/unix/tcp_unix.c
+index 795fb4f..c69eaec 100644
+--- a/src/osdep/unix/tcp_unix.c
++++ b/src/osdep/unix/tcp_unix.c
+@@ -235,12 +235,11 @@ TCPSTREAM *tcp_open (char *host,char *service,unsigned long port)
+ int tcp_socket_open (int family,void *adr,size_t adrlen,unsigned short port,
+ char *tmp,int *ctr,char *hst)
+ {
+- int i,ti,sock,flgs;
++ int i,ti,sock,flgs,tmo;
++ struct pollfd pfd;
+ size_t len;
+ time_t now;
+ struct protoent *pt = getprotobyname ("tcp");
+- fd_set rfds,wfds,efds;
+- struct timeval tmo;
+ struct sockaddr *sadr = ip_sockaddr (family,adr,adrlen,port,&len);
+ blocknotify_t bn = (blocknotify_t) mail_parameters (NIL,GET_BLOCKNOTIFY,NIL);
+ /* fetid Solaris */
+@@ -252,14 +251,6 @@ int tcp_socket_open (int family,void *adr,size_t adrlen,unsigned short port,
+ sprintf (tmp,"Unable to create TCP socket: %s",strerror (errno));
+ (*bn) (BLOCK_NONSENSITIVE,data);
+ }
+- else if (sock >= FD_SETSIZE) {/* unselectable sockets are useless */
+- sprintf (tmp,"Unable to create selectable TCP socket (%d >= %d)",
+- sock,FD_SETSIZE);
+- (*bn) (BLOCK_NONSENSITIVE,data);
+- close (sock);
+- sock = -1;
+- errno = EMFILE;
+- }
+
+ else { /* get current socket flags */
+ flgs = fcntl (sock,F_GETFL,0);
+@@ -284,16 +275,11 @@ int tcp_socket_open (int family,void *adr,size_t adrlen,unsigned short port,
+ if ((sock >= 0) && ctr) { /* want open timeout? */
+ now = time (0); /* open timeout */
+ ti = ttmo_open ? now + ttmo_open : 0;
+- tmo.tv_usec = 0;
+- FD_ZERO (&rfds); /* initialize selection vector */
+- FD_ZERO (&wfds); /* initialize selection vector */
+- FD_ZERO (&efds); /* handle errors too */
+- FD_SET (sock,&rfds); /* block for error or readable or writable */
+- FD_SET (sock,&wfds);
+- FD_SET (sock,&efds);
++ pfd.fd = sock;
++ pfd.events = POLLIN | POLLOUT;
+ do { /* block under timeout */
+- tmo.tv_sec = ti ? ti - now : 0;
+- i = select (sock+1,&rfds,&wfds,&efds,ti ? &tmo : NIL);
++ tmo = ti ? ti - now : 0;
++ i = poll (&pfd, 1, ti ? tmo * 1000 : -1);
+ now = time (0); /* fake timeout if interrupt & time expired */
+ if ((i < 0) && (errno == EINTR) && ti && (ti <= now)) i = 0;
+ } while ((i < 0) && (errno == EINTR));
+@@ -302,7 +288,7 @@ int tcp_socket_open (int family,void *adr,size_t adrlen,unsigned short port,
+ fcntl (sock,F_SETFL,flgs);
+ /* This used to be a zero-byte read(), but that crashes Solaris */
+ /* get socket status */
+- if(FD_ISSET(sock, &rfds)) while (((i = *ctr = read (sock,tmp,1)) < 0) && (errno == EINTR));
++ if(pfd.revents & POLLIN) while (((i = *ctr = read (sock,tmp,1)) < 0) && (errno == EINTR));
+ }
+ if (i <= 0) { /* timeout or error? */
+ i = i ? errno : ETIMEDOUT;/* determine error code */
+@@ -545,9 +531,8 @@ long tcp_getbuffer (TCPSTREAM *stream,unsigned long size,char *s)
+ stream->ictr -=n;
+ }
+ if (size) {
+- int i;
+- fd_set fds,efds;
+- struct timeval tmo;
++ int i, tmo;
++ struct pollfd pfd;
+ time_t t = time (0);
+ blocknotify_t bn=(blocknotify_t) mail_parameters (NIL,GET_BLOCKNOTIFY,NIL);
+ (*bn) (BLOCK_TCPREAD,NIL);
+@@ -556,16 +541,13 @@ long tcp_getbuffer (TCPSTREAM *stream,unsigned long size,char *s)
+ time_t now = tl;
+ time_t ti = ttmo_read ? now + ttmo_read : 0;
+ if (tcpdebug) mm_log ("Reading TCP buffer",TCPDEBUG);
+- tmo.tv_usec = 0;
+- FD_ZERO (&fds); /* initialize selection vector */
+- FD_ZERO (&efds); /* handle errors too */
+- /* set bit in selection vectors */
+- FD_SET (stream->tcpsi,&fds);
+- FD_SET (stream->tcpsi,&efds);
++
++ pfd.events = POLLIN;
++ pfd.fd = stream->tcpsi;
+ errno = NIL; /* initially no error */
+ do { /* block under timeout */
+- tmo.tv_sec = ti ? ti - now : 0;
+- i = select (stream->tcpsi+1,&fds,NIL,&efds,ti ? &tmo : NIL);
++ tmo = ti ? ti - now : 0;
++ i = poll (&pfd, 1, ti ? tmo * 1000 : -1);
+ now = time (0); /* fake timeout if interrupt & time expired */
+ if ((i < 0) && (errno == EINTR) && ti && (ti <= now)) i = 0;
+ } while ((i < 0) && (errno == EINTR));
+@@ -605,9 +587,8 @@ long tcp_getbuffer (TCPSTREAM *stream,unsigned long size,char *s)
+
+ long tcp_getdata (TCPSTREAM *stream)
+ {
+- int i;
+- fd_set fds,efds;
+- struct timeval tmo;
++ int i, tmo;
++ struct pollfd pfd;
+ time_t t = time (0);
+ blocknotify_t bn = (blocknotify_t) mail_parameters (NIL,GET_BLOCKNOTIFY,NIL);
+ if (stream->tcpsi < 0) return NIL;
+@@ -617,15 +598,12 @@ long tcp_getdata (TCPSTREAM *stream)
+ time_t now = tl;
+ time_t ti = ttmo_read ? now + ttmo_read : 0;
+ if (tcpdebug) mm_log ("Reading TCP data",TCPDEBUG);
+- tmo.tv_usec = 0;
+- FD_ZERO (&fds); /* initialize selection vector */
+- FD_ZERO (&efds); /* handle errors too */
+- FD_SET (stream->tcpsi,&fds);/* set bit in selection vectors */
+- FD_SET (stream->tcpsi,&efds);
++ pfd.fd = stream->tcpsi;
++ pfd.events = POLLIN;
+ errno = NIL; /* initially no error */
+ do { /* block under timeout */
+- tmo.tv_sec = ti ? ti - now : 0;
+- i = select (stream->tcpsi+1,&fds,NIL,&efds,ti ? &tmo : NIL);
++ tmo = ti ? ti - now : 0;
++ i = poll (&pfd, 1, ti ? tmo * 1000 : -1);
+ now = time (0); /* fake timeout if interrupt & time expired */
+ if ((i < 0) && (errno == EINTR) && ti && (ti <= now)) i = 0;
+ } while ((i < 0) && (errno == EINTR));
+@@ -677,9 +655,8 @@ long tcp_soutr (TCPSTREAM *stream,char *string)
+
+ long tcp_sout (TCPSTREAM *stream,char *string,unsigned long size)
+ {
+- int i;
+- fd_set fds,efds;
+- struct timeval tmo;
++ int i, tmo;
++ struct pollfd pfd;
+ time_t t = time (0);
+ blocknotify_t bn = (blocknotify_t) mail_parameters (NIL,GET_BLOCKNOTIFY,NIL);
+ if (stream->tcpso < 0) return NIL;
+@@ -689,15 +666,12 @@ long tcp_sout (TCPSTREAM *stream,char *string,unsigned long size)
+ time_t now = tl;
+ time_t ti = ttmo_write ? now + ttmo_write : 0;
+ if (tcpdebug) mm_log ("Writing to TCP",TCPDEBUG);
+- tmo.tv_usec = 0;
+- FD_ZERO (&fds); /* initialize selection vector */
+- FD_ZERO (&efds); /* handle errors too */
+- FD_SET (stream->tcpso,&fds);/* set bit in selection vector */
+- FD_SET(stream->tcpso,&efds);/* set bit in error selection vector */
++ pfd.fd = stream->tcpso;
++ pfd.events = POLLOUT;
+ errno = NIL; /* block and write */
+ do { /* block under timeout */
+- tmo.tv_sec = ti ? ti - now : 0;
+- i = select (stream->tcpso+1,NIL,&fds,&efds,ti ? &tmo : NIL);
++ tmo = ti ? ti - now : 0;
++ i = poll (&pfd, 1, ti ? tmo * 1000 : -1);
+ now = time (0); /* fake timeout if interrupt & time expired */
+ if ((i < 0) && (errno == EINTR) && ti && (ti <= now)) i = 0;
+ } while ((i < 0) && (errno == EINTR));
diff --git a/imap-2007e-shared.patch b/imap-2007e-shared.patch
new file mode 100644
index 0000000..92dcdc1
--- /dev/null
+++ b/imap-2007e-shared.patch
@@ -0,0 +1,74 @@
+diff -up imap-2007e/src/osdep/unix/Makefile.shared imap-2007e/src/osdep/unix/Makefile
+--- imap-2007e/src/osdep/unix/Makefile.shared 2009-07-07 19:28:02.909755512 -0500
++++ imap-2007e/src/osdep/unix/Makefile 2009-07-07 19:29:35.870006799 -0500
+@@ -170,6 +170,10 @@ BUILD=$(MAKE) build EXTRACFLAGS='$(EXTRA
+ EXTRADRIVERS='$(EXTRADRIVERS)' EXTRAAUTHENTICATORS='$(EXTRAAUTHENTICATORS)'\
+ PASSWDTYPE=$(PASSWDTYPE) SSLTYPE=$(SSLTYPE) IP=$(IP)
+
++# Need this for the shared library rule to work correctly
++.SUFFIXES: .o .so
++SOFILES=${BINARIES:.o=.so}
++
+
+ # Here if no make argument established
+
+@@ -845,18 +849,24 @@ vu2: # VAX Ultrix 2.3, etc.
+
+ # Build it!
+
+-build: clean once $(ARCHIVE)
++build: clean once $(ARCHIVE) $(SHLIBNAME)
+
+-all: $(ARCHIVE)
++all: $(ARCHIVE) $(SHLIBNAME)
+
+ $(ARCHIVE): $(BINARIES)
+ sh -c '$(RM) $(ARCHIVE) || true'
+ @$(CAT) ARCHIVE
+ @$(SH) ARCHIVE
+
+-.c.o:
+- `$(CAT) CCTYPE` -c `$(CAT) CFLAGS` $*.c
++$(SHLIBNAME): $(SOFILES)
++ gcc -shared -Wl,-soname,$(SHLIBNAME) -o $(SHLIBNAME) $(SOFILES) `cat LDFLAGS`
++ ln -s $(SHLIBNAME) lib$(SHLIBBASE).so
+
++.c.so: osdep.h
++ $(CC) -fPIC -DPIC -D_REENTRANT -c `$(CAT) CFLAGS` ${@:.so=.c} -o $@
++
++.c.o:
++ $(CC) -fPIC -DPIC -D_REENTRANT -c `$(CAT) CFLAGS` $*.c
+
+ # Cleanup
+
+@@ -895,8 +905,7 @@ utf8aux.o: mail.h misc.h osdep.h utf8.h
+
+
+ # OS-dependent
+-
+-osdep.o:mail.h misc.h env.h fs.h ftl.h nl.h tcp.h \
++OSDEPS= mail.h misc.h env.h fs.h ftl.h nl.h tcp.h \
+ osdep.h env_unix.h tcp_unix.h \
+ osdep.c env_unix.c fs_unix.c ftl_unix.c nl_unix.c tcp_unix.c ip_unix.c\
+ auths.c crexcl.c flockcyg.c flocklnx.c flocksim.c fsync.c \
+@@ -910,12 +919,19 @@ osdep.o:mail.h misc.h env.h fs.h ftl.h n
+ write.c sslstdio.c \
+ strerror.c strpbrk.c strstr.c strtok.c strtoul.c \
+ OSCFLAGS
++
++osdep.o: $(OSDEPS)
++ $(CC) -fPIC -DPIC -D_REENTRANT `$(CAT) CFLAGS` `$(CAT) OSCFLAGS` -c osdep.c
++ @echo ========================================================================
+ @echo Building OS-dependent module
+ @echo If you get No such file error messages for files x509.h, ssl.h,
+ @echo pem.h, buffer.h, bio.h, and crypto.h, that means that OpenSSL
+ @echo is not installed on your system. Either install OpenSSL first
+ @echo or build with command: make `$(CAT) OSTYPE` SSLTYPE=none
+- `$(CAT) CCTYPE` -c `$(CAT) CFLAGS` `$(CAT) OSCFLAGS` -c osdep.c
++ @echo ========================================================================
++
++osdep.so: $(OSDEPS)
++ $(CC) -fPIC -DPIC -D_REENTRANT `$(CAT) CFLAGS` `cat OSCFLAGS` -c osdep.c -o $@
+
+ osdep.c: osdepbas.c osdepckp.c osdeplog.c osdepssl.c
+ $(CAT) osdepbas.c osdepckp.c osdeplog.c osdepssl.c > osdep.c
diff --git a/imap-2007e-system_c_client.patch b/imap-2007e-system_c_client.patch
new file mode 100644
index 0000000..823af50
--- /dev/null
+++ b/imap-2007e-system_c_client.patch
@@ -0,0 +1,17 @@
+diff -up imap-2007e/Makefile.system_c_client imap-2007e/Makefile
+--- imap-2007e/Makefile.system_c_client 2008-06-04 13:43:35.000000000 -0500
++++ imap-2007e/Makefile 2011-06-13 14:13:04.467014334 -0500
+@@ -665,9 +665,11 @@ an ua:
+ @$(MAKE) ssl$(SSLTYPE)
+ @echo Applying $@ process to sources...
+ $(TOOLS)/$@ "$(LN)" src/c-client c-client
+- $(TOOLS)/$@ "$(LN)" src/ansilib c-client
+- $(TOOLS)/$@ "$(LN)" src/charset c-client
++ $(TOOLS)/$@ "$(LN)" src/ansilib c-client
++ $(TOOLS)/$@ "$(LN)" src/charset c-client
+ $(TOOLS)/$@ "$(LN)" src/osdep/$(SYSTEM) c-client
++ cp -alf /usr/include/imap/* c-client/
++ #sleep 5
+ $(TOOLS)/$@ "$(LN)" src/mtest mtest
+ $(TOOLS)/$@ "$(LN)" src/ipopd ipopd
+ $(TOOLS)/$@ "$(LN)" src/imapd imapd
diff --git a/imap-2007f-format-security.patch b/imap-2007f-format-security.patch
new file mode 100644
index 0000000..244153e
--- /dev/null
+++ b/imap-2007f-format-security.patch
@@ -0,0 +1,12 @@
+diff -Naur imap-2007f.orig/src/osdep/unix/flocklnx.c imap-2007f/src/osdep/unix/flocklnx.c
+--- imap-2007f.orig/src/osdep/unix/flocklnx.c 2011-07-23 02:20:11.000000000 +0200
++++ imap-2007f/src/osdep/unix/flocklnx.c 2014-04-14 19:17:46.429000000 +0200
+@@ -57,7 +57,7 @@
+ case ENOLCK: /* lock table is full */
+ sprintf (tmp,"File locking failure: %s",strerror (errno));
+ mm_log (tmp,WARN); /* give the user a warning of what happened */
+- if (!logged++) syslog (LOG_ERR,tmp);
++ if (!logged++) syslog (LOG_ERR, "%s", tmp);
+ /* return failure if non-blocking lock */
+ if (op & LOCK_NB) return -1;
+ sleep (5); /* slow down in case it loops */
diff --git a/imap-2007f-ldflags.patch b/imap-2007f-ldflags.patch
new file mode 100644
index 0000000..82c6afc
--- /dev/null
+++ b/imap-2007f-ldflags.patch
@@ -0,0 +1,21 @@
+diff -up imap-2007f/src/osdep/unix/Makefile.ldflags imap-2007f/src/osdep/unix/Makefile
+--- imap-2007f/src/osdep/unix/Makefile.ldflags 2018-04-24 13:18:45.333043626 +0200
++++ imap-2007f/src/osdep/unix/Makefile 2018-04-24 13:29:09.262125281 +0200
+@@ -73,7 +73,7 @@ SSLRSA= # -lRSAglue -lrsaref
+
+ SSLCFLAGS= -I$(SSLINCLUDE) -I$(SSLINCLUDE)/openssl\
+ -DSSL_CERT_DIRECTORY=\"$(SSLCERTS)\" -DSSL_KEY_DIRECTORY=\"$(SSLKEYS)\"
+-SSLLDFLAGS= -L$(SSLLIB) -lssl $(SSLCRYPTO) $(SSLRSA)
++SSLLDFLAGS= -L$(SSLLIB) -lssl $(SSLCRYPTO) $(SSLRSA) $(EXTRALDFLAGS)
+
+
+ # Extended flags needed for non-standard passwd types. You may need to modify.
+@@ -502,7 +502,7 @@ lnp: # Linux Pluggable Authentication mo
+ ACTIVEFILE=/var/lib/news/active \
+ RSHPATH=/usr/bin/rsh \
+ BASECFLAGS="$(GCCCFLAGS)" \
+- BASELDFLAGS="$(PAMLDFLAGS)"
++ BASELDFLAGS="$(EXTRALDFLAGS) $(PAMLDFLAGS)"
+
+ lnx: # Linux non-shadow passwords
+ @echo You are building for traditional Linux *without* shadow
diff --git a/imap-2007f.tar.gz b/imap-2007f.tar.gz
new file mode 100644
index 0000000..615466c
--- /dev/null
+++ b/imap-2007f.tar.gz
Binary files differ
diff --git a/imap-legacy.pam b/imap-legacy.pam
new file mode 100644
index 0000000..20dff02
--- /dev/null
+++ b/imap-legacy.pam
@@ -0,0 +1,5 @@
+#%PAM-1.0
+auth required pam_nologin.so
+auth required pam_stack.so service=system-auth
+account required pam_stack.so service=system-auth
+session required pam_stack.so service=system-auth
diff --git a/imap-password.pam b/imap-password.pam
new file mode 100644
index 0000000..5b9f05f
--- /dev/null
+++ b/imap-password.pam
@@ -0,0 +1,5 @@
+#%PAM-1.0
+auth required pam_nologin.so
+auth include password-auth
+account include password-auth
+session include password-auth
diff --git a/imap-xinetd b/imap-xinetd
new file mode 100644
index 0000000..3fc3902
--- /dev/null
+++ b/imap-xinetd
@@ -0,0 +1,14 @@
+# default: off
+# description: The IMAP service allows remote users to access their mail using \
+# an IMAP client such as Mutt, Pine, fetchmail, or Netscape \
+# Communicator.
+service imap
+{
+ socket_type = stream
+ wait = no
+ user = root
+ server = /usr/sbin/imapd
+ log_on_success += HOST DURATION
+ log_on_failure += HOST
+ disable = yes
+}
diff --git a/imap.pam b/imap.pam
new file mode 100644
index 0000000..ccb9105
--- /dev/null
+++ b/imap.pam
@@ -0,0 +1,5 @@
+#%PAM-1.0
+auth required pam_nologin.so
+auth include system-auth
+account include system-auth
+session include system-auth
diff --git a/imaps-xinetd b/imaps-xinetd
new file mode 100644
index 0000000..e0896fe
--- /dev/null
+++ b/imaps-xinetd
@@ -0,0 +1,14 @@
+# default: off
+# description: The IMAPS service allows remote users to access their mail \
+# using an IMAP client with SSL support such as Netscape \
+# Communicator or fetchmail.
+service imaps
+{
+ socket_type = stream
+ wait = no
+ user = root
+ server = /usr/sbin/imapd
+ log_on_success += HOST DURATION
+ log_on_failure += HOST
+ disable = yes
+}
diff --git a/ipop2-xinetd b/ipop2-xinetd
new file mode 100644
index 0000000..f7a1ab9
--- /dev/null
+++ b/ipop2-xinetd
@@ -0,0 +1,15 @@
+# default: off
+# description: The POP2 service allows remote users to access their mail \
+# using an POP2 client such as fetchmail. In most cases, clients \
+# support POP3 instead of POP2, so enabling this service is rarely \
+# necessary.
+service pop2
+{
+ socket_type = stream
+ wait = no
+ user = root
+ server = /usr/sbin/ipop2d
+ log_on_success += HOST DURATION
+ log_on_failure += HOST
+ disable = yes
+}
diff --git a/ipop3-xinetd b/ipop3-xinetd
new file mode 100644
index 0000000..d91f049
--- /dev/null
+++ b/ipop3-xinetd
@@ -0,0 +1,14 @@
+# default: off
+# description: The POP3 service allows remote users to access their mail \
+# using an POP3 client such as Netscape Communicator, mutt, \
+# or fetchmail.
+service pop3
+{
+ socket_type = stream
+ wait = no
+ user = root
+ server = /usr/sbin/ipop3d
+ log_on_success += HOST DURATION
+ log_on_failure += HOST
+ disable = yes
+}
diff --git a/pop3s-xinetd b/pop3s-xinetd
new file mode 100644
index 0000000..943c0f5
--- /dev/null
+++ b/pop3s-xinetd
@@ -0,0 +1,13 @@
+# default: off
+# description: The POP3S service allows remote users to access their mail \
+# using an POP3 client with SSL support such as fetchmail.
+service pop3s
+{
+ socket_type = stream
+ wait = no
+ user = root
+ server = /usr/sbin/ipop3d
+ log_on_success += HOST DURATION
+ log_on_failure += HOST
+ disable = yes
+}
diff --git a/sources b/sources
new file mode 100644
index 0000000..3a03ae3
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+2126fd125ea26b73b20f01fcd5940369 imap-2007f.tar.gz
diff --git a/uw-imap.spec b/uw-imap.spec
new file mode 100644
index 0000000..69b3501
--- /dev/null
+++ b/uw-imap.spec
@@ -0,0 +1,700 @@
+
+# Fedora review: http://bugzilla.redhat.com/166008
+
+%if 0%{?fedora} || 0%{?rhel} > 6
+%define _with_devel 1
+# ship static lib, matches default upstream config
+# as convenience to users, since our hacked shlib can potentially break
+# abi semi-often
+%global _with_static 1
+%endif
+
+## don't use even on rhel6, due to libc-client WONTFIX,
+## https://bugzilla.redhat.com/show_bug.cgi?id=736120
+#if 0%%{?rhel} == 6
+%if 0
+%global _with_system_libc_client 1
+%endif
+
+# trim changelog included in binary rpms
+%global _changelog_trimtime %(date +%s -d "1 year ago")
+
+Summary: UW Server daemons for IMAP and POP network mail protocols
+Name: uw-imap
+Version: 2007f
+Release: 27%{?dist}
+
+# See LICENSE.txt, http://www.apache.org/licenses/LICENSE-2.0
+License: ASL 2.0
+URL: http://www.washington.edu/imap/
+# Old (non-latest) releases live at ftp://ftp.cac.washington.edu/imap/old/
+Source0: ftp://ftp.cac.washington.edu/imap/imap-%{version}%{?beta}%{?dev}%{?snap}.tar.gz
+
+%global soname c-client
+%global shlibname lib%{soname}.so.%{somajor}
+%if 0%{?fedora} || 0%{?rhel} > 6
+%global somajor 2007
+%global imap_libs lib%{soname}
+%else
+# rhel (<7) requires parallel-installable shlib, to not conflict with
+# os-provided libc-client
+%global somajor %{version}
+%global imap_libs lib%{soname}%{somajor}
+%endif
+
+# FC4+ uses %%_sysconfdir/pki/tls, previous releases used %%_datadir/ssl
+%global ssldir %(if [ -d %{_sysconfdir}/pki/tls ]; then echo "%{_sysconfdir}/pki/tls"; else echo "%{_datadir}/ssl"; fi)
+
+# imap -> uw-imap rename
+Obsoletes: imap < 1:%{version}
+
+# newest pam setup, using password-auth common PAM
+Source20: imap-password.pam
+# new pam setup, using new "include" feature
+Source21: imap.pam
+# legacy/old pam setup, using pam_stack.so
+Source22: imap-legacy.pam
+
+Source31: imap-xinetd
+Source32: imaps-xinetd
+Source33: ipop2-xinetd
+Source34: ipop3-xinetd
+Source35: pop3s-xinetd
+
+Patch1: imap-2007-paths.patch
+# See http://bugzilla.redhat.com/229781 , http://bugzilla.redhat.com/127271
+Patch2: imap-2004a-doc.patch
+Patch5: imap-2007e-overflow.patch
+Patch9: imap-2007e-shared.patch
+Patch10: imap-2007e-authmd5.patch
+Patch11: imap-2007e-system_c_client.patch
+Patch12: imap-2007f-format-security.patch
+Patch13: imap-2007e-poll.patch
+# From debian
+Patch14: 1006_openssl1.1_autoverify.patch
+
+Patch15: imap-2007f-ldflags.patch
+
+BuildRequires: make
+BuildRequires: gcc
+BuildRequires: krb5-devel
+BuildRequires: pam-devel
+
+Requires: xinetd
+Requires(post): openssl
+
+BuildRequires: openssl-devel
+
+%if 0%{?_with_system_libc_client}
+BuildRequires: libc-client-devel = %{version}
+Requires: %{imap_libs}%{?_isa} = %{version}
+%else
+Requires: %{imap_libs}%{?_isa} = %{version}-%{release}
+%endif
+
+%description
+The %{name} package provides UW server daemons for both the IMAP (Internet
+Message Access Protocol) and POP (Post Office Protocol) mail access
+protocols. The POP protocol uses a "post office" machine to collect
+mail for users and allows users to download their mail to their local
+machine for reading. The IMAP protocol allows a user to read mail on a
+remote machine without downloading it to their local machine.
+
+%package -n %{imap_libs}
+Summary: UW C-client mail library
+Obsoletes: libc-client2004d < 1:2004d-2
+Obsoletes: libc-client2004e < 2004e-2
+Obsoletes: libc-client2004g < 2004g-7
+Obsoletes: libc-client2006 < 2006k-2
+%if "%{imap_libs}" != "libc-client2007"
+Obsoletes: libc-client2007 < 2007-2
+%endif
+%description -n %{imap_libs}
+Provides a common API for accessing mailboxes.
+
+%package devel
+Summary: Development tools for programs which will use the UW IMAP library
+Requires: %{imap_libs}%{?_isa} = %{version}-%{release}
+# imap -> uw-imap rename
+Obsoletes: imap-devel < 1:%{version}
+%if "%{imap_libs}" == "libc-client"
+Obsoletes: libc-client-devel < %{version}-%{release}
+Provides: libc-client-devel = %{version}-%{release}
+%else
+Conflicts: libc-client-devel < %{version}-%{release}
+%endif
+%description devel
+Contains the header files and libraries for developing programs
+which will use the UW C-client common API.
+
+%package static
+Summary: UW IMAP static library
+Requires: %{name}-devel = %{version}-%{release}
+#Provides: libc-client-static = %%{version}-%%{release}
+Requires: krb5-devel openssl-devel pam-devel
+%description static
+Contains static libraries for developing programs
+which will use the UW C-client common API.
+
+%package utils
+Summary: UW IMAP Utilities to make managing your email simpler
+%if ! 0%{?_with_system_libc_client}
+Requires: %{imap_libs}%{?_isa} = %{version}-%{release}
+%endif
+# imap -> uw-imap rename
+Obsoletes: imap-utils < 1:%{version}
+%description utils
+This package contains some utilities for managing UW IMAP email,including:
+* dmail : procmail Mail Delivery Module
+* mailutil : mail utility program
+* mtest : C client test program
+* tmail : Mail Delivery Module
+* mlock
+
+
+
+%prep
+%setup -q -n imap-%{version}%{?dev}%{?snap}
+
+%patch1 -p1 -b .paths
+%patch2 -p1 -b .doc
+
+%patch5 -p1 -b .overflow
+
+%patch9 -p1 -b .shared
+%patch10 -p1 -b .authmd5
+
+%if 0%{?fedora} > 11 || 0%{?rhel} > 5
+install -p -m644 %{SOURCE20} imap.pam
+%else
+%if 0%{?fedora} > 4 || 0%{?rhel} > 4
+install -p -m644 %{SOURCE21} imap.pam
+%else
+install -p -m644 %{SOURCE22} imap.pam
+%endif
+%endif
+
+%if 0%{?_with_system_libc_client}
+%patch11 -p1 -b .system_c_client
+%endif
+
+%patch12 -p1 -b .fmt-sec
+%patch13 -p1 -b .poll
+%patch14 -p1 -b .openssl11
+%patch15 -p1 -b .ldflags
+
+
+%build
+
+# Kerberos setup
+test -f %{_sysconfdir}/profile.d/krb5-devel.sh && source %{_sysconfdir}/profile.d/krb5-devel.sh
+test -f %{_sysconfdir}/profile.d/krb5.sh && source %{_sysconfdir}/profile.d/krb5.sh
+GSSDIR=$(krb5-config --prefix)
+
+# SSL setup, probably legacy-only, but shouldn't hurt -- Rex
+export EXTRACFLAGS="$EXTRACFLAGS $(pkg-config --cflags openssl 2>/dev/null)"
+# $RPM_OPT_FLAGS
+export EXTRACFLAGS="$EXTRACFLAGS -fPIC $RPM_OPT_FLAGS"
+# jorton added these, I'll assume he knows what he's doing. :) -- Rex
+export EXTRACFLAGS="$EXTRACFLAGS -fno-strict-aliasing"
+%if 0%{?fedora} > 4 || 0%{?rhel} > 4
+export EXTRACFLAGS="$EXTRACFLAGS -Wno-pointer-sign"
+%endif
+
+echo -e "y\ny" | \
+make %{?_smp_mflags} lnp \
+IP=6 \
+EXTRACFLAGS="$EXTRACFLAGS" \
+EXTRALDFLAGS="$EXTRALDFLAGS $RPM_LD_FLAGS" \
+EXTRAAUTHENTICATORS=gss \
+SPECIALS="GSSDIR=${GSSDIR} LOCKPGM=%{_sbindir}/mlock SSLCERTS=%{ssldir}/certs SSLDIR=%{ssldir} SSLINCLUDE=%{_includedir}/openssl SSLKEYS=%{ssldir}/private SSLLIB=%{_libdir}" \
+SSLTYPE=unix \
+%if 0%{?_with_system_libc_client}
+CCLIENTLIB=%{_libdir}/%{shlibname} \
+%else
+CCLIENTLIB=$(pwd)/c-client/%{shlibname} \
+%endif
+SHLIBBASE=%{soname} \
+SHLIBNAME=%{shlibname} \
+%if 0%{?_with_system_libc_client}
+%endif
+# Blank line
+
+
+%install
+mkdir -p $RPM_BUILD_ROOT%{_libdir}/
+
+%if ! 0%{?_with_system_libc_client}
+%if 0%{?_with_static:1}
+install -p -m644 ./c-client/c-client.a $RPM_BUILD_ROOT%{_libdir}/
+ln -s c-client.a $RPM_BUILD_ROOT%{_libdir}/libc-client.a
+%endif
+
+install -p -m755 ./c-client/%{shlibname} $RPM_BUILD_ROOT%{_libdir}/
+
+# %%ghost'd c-client.cf
+touch c-client.cf
+install -p -m644 -D c-client.cf $RPM_BUILD_ROOT%{_sysconfdir}/c-client.cf
+%endif
+
+%if 0%{?_with_devel:1}
+ln -s %{shlibname} $RPM_BUILD_ROOT%{_libdir}/lib%{soname}.so
+
+mkdir -p $RPM_BUILD_ROOT%{_includedir}/imap/
+install -m644 ./c-client/*.h $RPM_BUILD_ROOT%{_includedir}/imap/
+# Added linkage.c to fix (#34658) <mharris>
+install -m644 ./c-client/linkage.c $RPM_BUILD_ROOT%{_includedir}/imap/
+install -m644 ./src/osdep/tops-20/shortsym.h $RPM_BUILD_ROOT%{_includedir}/imap/
+%endif
+
+install -p -D -m644 src/imapd/imapd.8 $RPM_BUILD_ROOT%{_mandir}/man8/imapd.8uw
+install -p -D -m644 src/ipopd/ipopd.8 $RPM_BUILD_ROOT%{_mandir}/man8/ipopd.8uw
+
+mkdir -p $RPM_BUILD_ROOT%{_sbindir}
+install -p -m755 ipopd/ipop{2d,3d} $RPM_BUILD_ROOT%{_sbindir}/
+install -p -m755 imapd/imapd $RPM_BUILD_ROOT%{_sbindir}/
+install -p -m755 mlock/mlock $RPM_BUILD_ROOT%{_sbindir}/
+
+mkdir -p $RPM_BUILD_ROOT%{_bindir}/
+install -p -m755 dmail/dmail mailutil/mailutil mtest/mtest tmail/tmail $RPM_BUILD_ROOT%{_bindir}/
+mkdir -p $RPM_BUILD_ROOT%{_mandir}/man1/
+install -p -m644 src/{dmail/dmail,mailutil/mailutil,tmail/tmail}.1 $RPM_BUILD_ROOT%{_mandir}/man1/
+
+install -p -m644 -D imap.pam $RPM_BUILD_ROOT%{_sysconfdir}/pam.d/imap
+install -p -m644 -D imap.pam $RPM_BUILD_ROOT%{_sysconfdir}/pam.d/pop
+
+install -p -m644 -D %{SOURCE31} $RPM_BUILD_ROOT%{_sysconfdir}/xinetd.d/imap
+install -p -m644 -D %{SOURCE32} $RPM_BUILD_ROOT%{_sysconfdir}/xinetd.d/imaps
+install -p -m644 -D %{SOURCE33} $RPM_BUILD_ROOT%{_sysconfdir}/xinetd.d/ipop2
+install -p -m644 -D %{SOURCE34} $RPM_BUILD_ROOT%{_sysconfdir}/xinetd.d/ipop3
+install -p -m644 -D %{SOURCE35} $RPM_BUILD_ROOT%{_sysconfdir}/xinetd.d/pop3s
+
+# %ghost'd *.pem files
+mkdir -p $RPM_BUILD_ROOT%{ssldir}/certs
+touch $RPM_BUILD_ROOT%{ssldir}/certs/{imapd,ipop3d}.pem
+
+
+# FIXME, do on first launch (or not at all?), not here -- Rex
+%post
+{
+cd %{ssldir}/certs &> /dev/null || :
+for CERT in imapd.pem ipop3d.pem ;do
+ if [ ! -e $CERT ];then
+ if [ -e stunnel.pem ];then
+ cp stunnel.pem $CERT &> /dev/null || :
+ elif [ -e Makefile ];then
+ make $CERT << EOF &> /dev/null || :
+--
+SomeState
+SomeCity
+SomeOrganization
+SomeOrganizationalUnit
+localhost.localdomain
+root@localhost.localdomain
+EOF
+ fi
+ fi
+done
+} || :
+/sbin/service xinetd reload > /dev/null 2>&1 || :
+
+%postun
+/sbin/service xinetd reload > /dev/null 2>&1 || :
+
+%files
+%doc docs/SSLBUILD
+%config(noreplace) %{_sysconfdir}/pam.d/imap
+%config(noreplace) %{_sysconfdir}/pam.d/pop
+%config(noreplace) %{_sysconfdir}/xinetd.d/imap
+%config(noreplace) %{_sysconfdir}/xinetd.d/ipop2
+%config(noreplace) %{_sysconfdir}/xinetd.d/ipop3
+# These need to be replaced (ie, can't use %%noreplace), or imaps/pop3s can fail on upgrade
+# do this in a %trigger or something not here... -- Rex
+%config(noreplace) %{_sysconfdir}/xinetd.d/imaps
+%config(noreplace) %{_sysconfdir}/xinetd.d/pop3s
+%attr(0600,root,root) %ghost %config(missingok,noreplace) %verify(not md5 size mtime) %{ssldir}/certs/imapd.pem
+%attr(0600,root,root) %ghost %config(missingok,noreplace) %verify(not md5 size mtime) %{ssldir}/certs/ipop3d.pem
+%{_mandir}/man8/*
+%{_sbindir}/ipop2d
+%{_sbindir}/ipop3d
+%{_sbindir}/imapd
+
+%files utils
+%{_bindir}/*
+%attr(2755, root, mail) %{_sbindir}/mlock
+%{_mandir}/man1/*
+
+%if ! 0%{?_with_system_libc_client}
+%ldconfig_scriptlets -n %{imap_libs}
+
+%files -n %{imap_libs}
+%doc LICENSE.txt NOTICE SUPPORT
+%doc docs/RELNOTES docs/*.txt
+%ghost %config(missingok,noreplace) %{_sysconfdir}/c-client.cf
+%{_libdir}/lib%{soname}.so.*
+%endif
+
+%if 0%{?_with_devel:1}
+%files devel
+%{_includedir}/imap/
+%{_libdir}/lib%{soname}.so
+%endif
+
+%if 0%{?_with_static:1}
+%files static
+%{_libdir}/c-client.a
+%{_libdir}/libc-client.a
+%endif
+
+
+%changelog
+* Wed Jan 27 2021 Fedora Release Engineering <releng@fedoraproject.org> - 2007f-27
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
+
+* Wed Jul 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 2007f-26
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
+
+* Fri Jan 31 2020 Fedora Release Engineering <releng@fedoraproject.org> - 2007f-25
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
+
+* Sat Jul 27 2019 Fedora Release Engineering <releng@fedoraproject.org> - 2007f-24
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
+
+* Sun Feb 03 2019 Fedora Release Engineering <releng@fedoraproject.org> - 2007f-23
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
+
+* Sat Jul 14 2018 Fedora Release Engineering <releng@fedoraproject.org> - 2007f-22
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
+
+* Tue Apr 24 2018 Karsten Hopp <karsten@redhat.com> - 2007f-21
+- make sure LDFLAGS are used everywhere (rhbz#1541093)
+
+* Tue Feb 20 2018 Remi Collet <remi@remirepo.net> - 2007f-19
+- missing BR on C compiler
+- use ldconfig_scriptlets
+
+* Fri Feb 09 2018 Fedora Release Engineering <releng@fedoraproject.org> - 2007f-19
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
+
+* Tue Jan 30 2018 Remi Collet <rcollet@redhat.com> - 2007f-18
+- fix compatibility with OpenSSL 1.1 rhbz#1540020
+ using patch from debian
+
+* Thu Aug 03 2017 Fedora Release Engineering <releng@fedoraproject.org> - 2007f-17
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
+
+* Mon Jul 31 2017 Rex Dieter <rdieter@fedoraproject.org> - 2007f-16
+- -devel for el7+ too (#1473520)
+
+* Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 2007f-15
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
+
+* Tue Jul 11 2017 Rex Dieter <rdieter@fedoraproject.org> - 2007f-14
+- .spec cosmetics, %%define -> %%global, drop %%clean
+- workaround el6 libc-client WONTFIX brokenness (#736120)
+- use compat-openssl10 on f26+ (#1424334)
+
+* Sat Feb 11 2017 Fedora Release Engineering <releng@fedoraproject.org> - 2007f-13
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
+
+* Thu Jul 28 2016 Joe Orton <jorton@redhat.com> - 2007f-12
+- use poll() not select, from Ben Smithusrt via Debian
+
+* Fri Feb 05 2016 Fedora Release Engineering <releng@fedoraproject.org> - 2007f-11
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
+
+* Fri Jun 19 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2007f-10
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
+
+* Mon Aug 18 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2007f-9
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
+
+* Mon Jul 21 2014 Rex Dieter <rdieter@fedoraproject.org> 2007f-8
+- move scriptlets near corresponding %%files
+
+* Sun Jun 08 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2007f-7
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
+
+* Mon Apr 14 2014 Jaromir Capik <jcapik@redhat.com> - 2007f-6
+- Fixing format-security flaws (#1037374)
+
+* Sun Aug 04 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2007f-5
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
+
+* Fri Feb 15 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2007f-4
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
+
+* Sun Jul 22 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2007f-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
+
+* Sat Jan 14 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2007f-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
+
+* Tue Aug 02 2011 Rex Dieter <rdieter@fedoraproject.org> 2007f-1
+- imap-2007f
+
+* Mon Jun 13 2011 Rex Dieter <rdieter@fedoraproject.org> 2007e-13
+- _with_system_libc_client option (el6+)
+- tight deps via %%?_isa
+- drop extraneous Requires(post,postun): xinetd
+
+* Mon Feb 07 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2007e-12
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
+
+* Tue Apr 27 2010 Rex Dieter <rdieter@fedoraproject.org> - 2007e-11
+- SSL connection through IPv6 fails (#485860)
+- fix SSLDIR, set SSLKEYS
+
+* Wed Sep 16 2009 Tomas Mraz <tmraz@redhat.com> - 2007e-10
+- use password-auth common PAM configuration instead of system-auth
+ where available
+
+* Mon Aug 31 2009 Rex Dieter <rdieter@fedoraproject.org>
+- omit -devel, -static bits in EPEL builds (#518885)
+
+* Fri Aug 21 2009 Tomas Mraz <tmraz@redhat.com> - 2007e-9
+- rebuilt with new openssl
+
+* Sun Jul 26 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2007e-8
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
+
+* Wed Jul 08 2009 Rex Dieter <rdieter@fedoraproject.org> - 2007e-7
+- fix shared.patch to use CFLAGS for osdep.c too
+
+* Tue Jul 07 2009 Rex Dieter <rdieter@fedoraproject.org> - 2007e-6
+- build with -fPIC
+- rebase patches (patch fuzz=0)
+
+* Wed Feb 25 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2007e-5
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
+
+* Sun Jan 18 2009 Tomas Mraz <tmraz@redhat.com> 2007e-4
+- rebuild with new openssl
+
+* Mon Jan 12 2009 Rex Dieter <rdieter@fedoraproject.org> 2007e-3
+- main/-utils: +Req: %%imap_libs = %%version-%%release
+
+* Fri Dec 19 2008 Rex Dieter <rdieter@fedoraproject.org> 2007e-1
+- imap-2007e
+
+* Fri Oct 31 2008 Rex Dieter <rdieter@fedoraproject.org> 2007d-1
+- imap-2007d
+
+* Wed Oct 01 2008 Rex Dieter <rdieter@fedoraproject.org> 2007b-2
+- fix build (patch fuzz) (#464985)
+
+* Fri Jun 13 2008 Rex Dieter <rdieter@fedoraproject.org> 2007b-1
+- imap-2007b
+
+* Tue May 18 2008 Rex Dieter <rdieter@fedoraproject.org> 2007a1-3
+- libc-client: incomplete list of obsoletes (#446240)
+
+* Wed Mar 19 2008 Rex Dieter <rdieter@fedoraproject.org> 2007a1-2
+- uw-imap conflicts with cyrus-imapd (#222486)
+
+* Wed Mar 19 2008 Rex Dieter <rdieter@fedoraproject.org> 2007a1-1
+- imap-2007a1
+- include static lib
+- utils: update %%description
+
+* Thu Mar 13 2008 Rex Dieter <rdieter@fedoraproject.org> 2007a-1
+- imap-2007a
+
+* Fri Feb 08 2008 Rex Dieter <rdieter@fedoraproject.org> 2007-3
+- respin (gcc43)
+
+* Wed Jan 23 2008 Rex Dieter <rdieter@fedoraproject.org> 2007-2
+- Obsoletes: libc-client2006 (#429796)
+- drop libc-client hacks for parallel-installability, fun while it lasted
+
+* Fri Dec 21 2007 Rex Dieter <rdieter[AT]fedoraproject.org> 2007-1
+- imap-2007
+
+* Tue Dec 04 2007 Rex Dieter <rdieter[AT]fedoraproject.org> 2006k-2
+- respin for new openssl
+
+* Fri Nov 09 2007 Rex Dieter <rdieter[AT]fedoraproject.org> 2006k-1
+- imap-2006k (final)
+
+* Wed Sep 19 2007 Rex Dieter <rdieter[AT]fedoraproject.org> 2006k-0.1.0709171900
+- imap-2006k.DEV.SNAP-0709171900
+
+* Tue Aug 21 2007 Joe Orton <jorton@redhat.com> 2006j-3
+- fix License
+
+* Tue Jul 17 2007 Rex Dieter <rdieter[AT]fedoraproject.org> 2006j-2
+- imap-2006j2
+
+* Mon Jul 09 2007 Rex Dieter <rdieter[AT]fedoraproject.org> 2006j-1
+- imap-2006j1
+
+* Wed Jun 13 2007 Rex Dieter <rdieter[AT]fedoraproject.org> 2006i-1
+- imap-2006i
+
+* Wed May 09 2007 Rex Dieter <rdieter[AT]fedoraproject.org> 2006h-1
+- imap-2006h
+- Obsolete pre-merge libc-client pkgs
+
+* Fri Apr 27 2007 Rex Dieter <rdieter[AT]fedoraproject.org> 2006g-3
+- imap-2004a-doc.patch (#229781,#127271)
+
+* Mon Apr 2 2007 Joe Orton <jorton@redhat.com> 2006g-2
+- use $RPM_OPT_FLAGS during build
+
+* Mon Apr 02 2007 Rex Dieter <rdieter[AT]fedoraproject.org> 2006g-1
+- imap-2006g
+
+* Wed Feb 07 2007 Rex Dieter <rdieter[AT]fedoraproject.org> 2006e-3
+- Obsoletes: libc-client2004g
+- cleanup/simplify c-client.cf handling
+
+* Fri Jan 26 2007 Rex Dieter <rdieter[AT]fedoraproject.org> 2006e-2
+- use /etc/profile.d/krb5-devel.sh
+
+* Fri Jan 26 2007 Rex Dieter <rdieter[AT]fedoraproject.org> 2006e-1
+- imap-2006e
+
+* Mon Dec 18 2006 Rex Dieter <rdieter[AT]fedoraproject.org> 2006d-1
+- imap-2006d (#220121)
+
+* Wed Oct 25 2006 Rex Dieter <rexdieter[AT]users.sf.net> 2006c1-1
+- imap-2006c1
+
+* Fri Oct 06 2006 Rex Dieter <rexdieter[AT]users.sf.net> 2006b-1
+- imap-2006b
+- %%ghost %%config(missingok,noreplace) %%{_sysconfdir}/c-client.cf
+
+* Fri Oct 06 2006 Rex Dieter <rexdieter[AT]users.sf.net> 2006a-6
+- omit EOL whitespace from c-client.cf
+
+* Thu Oct 05 2006 Rex Dieter <rexdieter[AT]users.sf.net> 2006a-5
+- %%config(noreplace) all xinetd.d/pam.d bits
+
+* Thu Oct 05 2006 Rex Dieter <rexdieter[AT]users.sf.net> 2006a-4
+- eek, pam.d/xinet.d bits were all mixed up, fixed.
+
+* Wed Oct 04 2006 Rex Dieter <rexdieter[AT]users.sf.net> 2006a-3
+- libc-client: move c-client.cf here
+- c-client.cf: +set new-folder-format same-as-inbox
+
+* Wed Oct 04 2006 Rex Dieter <rexdieter[AT]users.sf.net> 2006a-2
+- omit mixproto patch (lvn bug #1184)
+
+* Tue Sep 26 2006 Rex Dieter <rexdieter[AT]users.sf.net> 2006a-1
+- imap-2006a
+- omit static lib (for now, at least)
+
+* Mon Sep 25 2006 Rex Dieter <rexdieter[AT]users.sf.net> 2006-4
+- -devel-static: package static lib separately.
+
+* Mon Sep 25 2006 Rex Dieter <rexdieter[AT]users.sf.net> 2006-3
+- License: Apache 2.0
+
+* Fri Sep 15 2006 Rex Dieter <rexdieter[AT]users.sf.net> 2006-2
+- imap-2006
+- change default (CREATEPROTO) driver to mix
+- Obsolete old libc-clients
+
+* Tue Aug 29 2006 Rex Dieter <rexdieter[AT]users.sf.net> 2004g-6
+- fc6 respin
+
+* Fri Aug 18 2006 Rex Dieter <rexdieter[AT]users.sf.net> 2004g-5
+- cleanup, respin for fc6
+
+* Wed Mar 1 2006 Rex Dieter <rexdieter[AT]users.sf.net>
+- fc5: gcc/glibc respin
+
+* Thu Nov 17 2005 Rex Dieter <rexdieter[AT]users.sf.net> 2004g-4
+- use pam's "include" feature on fc5
+- cleanup %%doc handling, remove useless bits
+
+* Thu Nov 17 2005 Rex Dieter <rexdieter[AT]users.sf.net> 2004g-3
+- omit trailing whitespace in default c-client.cf
+
+* Wed Nov 16 2005 Rex Dieter <rexdieter[AT]users.sf.net> 2004g-2
+- rebuild for new openssl
+
+* Mon Sep 26 2005 Rex Dieter <rexdieter[AT]users.sf.net> 2004g-1
+- imap-2004g
+- /etc -> %%_sysconfdir
+- use %%{?_smp_mflags}
+
+* Mon Aug 15 2005 Rex Dieter <rexdieter[AT]users.sf.net> 2004e-1
+- imap-2004e
+- rename: imap -> uw-imap (yay, we get to drop the Epoch)
+- sslcerts=%%{_sysconfdir}/pki/tls/certs if exists, else /usr/share/ssl/certs
+
+* Fri Apr 29 2005 Rex Dieter <rexdieter[AT]users.sf.net> 1:2004d-1
+- 2004d
+- imap-libs -> lib%%{soname}%%{version} (ie, libc-client2004d), so we can
+ have multiple versions (shared-lib only) installed
+- move mlock to -utils.
+- revert RFC2301, locks out too many folks where SSL is unavailable
+
+* Thu Apr 28 2005 Rex Dieter <rexdieter[AT]users.sf.net> 1:2004-0.fdr.11.c1
+- change default driver from mbox to mbx
+- comply with RFC 3501 security: Unencrypted plaintext passwords are prohibited
+
+* Fri Jan 28 2005 Rex Dieter <rexdieter[AT]users.sf.net> 1:2004-0.fdr.10.c1
+- imap-2004c1 security release:
+ http://www.kb.cert.org/vuls/id/702777
+
+* Thu Jan 20 2005 Rex Dieter <rexdieter[AT]users.sf.net> 1:2004-0.fdr.9.c
+- imap2004c
+- -utils: dmail,mailutil,tmail
+- -libs: include mlock (so it's available for other imap clients, like pine)
+- remove extraneous patches
+- %%_sysconfigdir/c-client.cf: use to set MailDir (but don't if upgrading from
+ an older version (ie, if folks don't want/expect a change in behavior)
+
+* Mon Sep 13 2004 Rex Dieter <rexdieter at sf.net. 1:2004-0.fdr.8.a
+- don't use mailsubdir patch (for now)
+
+* Wed Aug 11 2004 Rex Dieter <rexdieter at sf.net> 1:2004-0.fdr.7.a
+- mailsubdir patch (default to ~/Mail instead of ~)
+
+* Fri Jul 23 2004 Rex Dieter <rexdieter at sf.net> 1:2004-0.fdr.6.a
+- remove Obsoletes/Provides: libc-client (they can, in fact, co-xist)
+- -devel: remove O/P: libc-client-devel -> Conflicts: libc-client-devel
+
+* Thu Jul 16 2004 Rex Dieter <rexdieter at sf.net> 1:2004-0.fdr.5.a
+- imap2004a
+
+* Tue Jul 13 2004 Rex Dieter <rexdieter at sf.net> 1:2004-0.fdr.4
+- -devel: Req: %%{name}-libs
+
+* Tue Jul 13 2004 Rex Dieter <rexdieter at sf.net> 1:2004-0.fdr.3
+- previous imap pkgs had Epoch: 1, we need it too.
+
+* Wed Jul 07 2004 Rex Dieter <rexdieter at sf.net> 2004-0.fdr.2
+- use %%version as %%somajver (like how openssl does it)
+
+* Wed Jul 07 2004 Rex Dieter <rexdieter at sf.net> 2004-0.fdr.1
+- imap-2004
+- use mlock, if available.
+- Since libc-client is an attrocious name choice, we'll trump it,
+ and provide imap, imap-libs, imap-devel instead (redhat bug #120873)
+
+* Wed Apr 07 2004 Kaj J. Niemi <kajtzu@fi.basen.net> 2002e-4
+- Use CFLAGS (and RPM_OPT_FLAGS) during the compilation
+- Build the .so through gcc instead of directly calling ld
+
+* Fri Mar 5 2004 Joe Orton <jorton@redhat.com> 2002e-3
+- install .so with permissions 0755
+- make auth_md5.c functions static to avoid symbol conflicts
+- remove Epoch: 0
+
+* Tue Mar 02 2004 Kaj J. Niemi <kajtzu@fi.basen.net> 0:2002e-2
+- "lnp" already uses RPM_OPT_FLAGS
+- have us conflict with imap, imap-devel
+
+* Tue Mar 2 2004 Joe Orton <jorton@redhat.com> 0:2002e-1
+- add post/postun, always use -fPIC
+
+* Tue Feb 24 2004 Kaj J. Niemi <kajtzu@fi.basen.net>
+- Name change from c-client to libc-client
+
+* Sat Feb 14 2004 Kaj J. Niemi <kajtzu@fi.basen.net> 0:2002e-0.1
+- c-client 2002e is based on imap-2002d
+- Build shared version, build logic is copied from FreeBSD net/cclient
+