Courier-Cygwin

From YobiWiki
Jump to navigation Jump to search

Courier-IMAP

Courier-IMAP requires the installation of the Courier Authentication Library and the following cygwin tools and packages

  • patch, tar, make, gcc
  • crypt
  • libgdbm-devel
  • libtool (version 1.5.27a-1)
  • inetutils
  • cygrunsrv

Run the Cygwin setup program. Locate, select and install the required packages.

Courier Authentication Library

Download and untar courier-authlib in your favorite sandbox. Version used: 0.61.0

Apply the [{{#file:courrier-authlib-0.61.0-cygwin.patch}} patch] before configuration to correct following issues:

  1. incorrect usage of EXEEXT in makedat/Makefile
  2. missing crypt library in main Makefile
  3. incorrect or incompatible (text-)format of install library files (*.la). Unix like library name (as provided by 'dlname') are not used under cygwin. Hence skip the related operation in the installation.
--- courier-authlib-0.61.0/makedat/Makefile.in  2008-05-24 16:21:09.000000000 +0200
+++ courier-authlib-0.61.0-cygwin/makedat/Makefile.in   2008-10-21 16:02:38.709166700 +0200
@@ -182,7 +182,7 @@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-makedatprog_target = @makedatprog_target@
+makedatprog_target = @makedatprog_target@$(EXEEXT)
 makedatprogpath = @makedatprogpath@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
@@ -198,7 +198,7 @@
 target_alias = @target_alias@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-noinst_PROGRAMS = @makedatprog_target@
+noinst_PROGRAMS = @makedatprog_target@$(EXEEXT)
 makedatprog_SOURCES = makedatprog.c
 makedatprog_DEPENDENCIES = @dblibrary@
 makedatprog_LDADD = @dblibrary@
--- courier-authlib-0.61.0/Makefile.in	2008-07-12 21:41:08.000000000 +0200
+++ courier-authlib-0.61.0-cygwin/Makefile.in	2008-10-21 18:51:47.093466600 +0200
@@ -1659,7 +1659,6 @@
 				$(DESTDIR)$(sbindir)/userdbpw ; \
 		$(INSTALL_SCRIPT) userdb-test-cram-md5.pl \
 				$(DESTDIR)$(sbindir)/userdb-test-cram-md5
-	for f in $(pkglib_LTLIBRARIES); do . $$f; rm -f $(DESTDIR)$(pkglibdir)/$$dlname.0 $(DESTDIR)$(pkglibdir)/$$dlname.0.0; ln -s $$dlname $(DESTDIR)$(pkglibdir)/$$dlname.0; done
 
 uninstall-hook: uninstall-authldaprc uninstall-authdaemonrc uninstall-authmysqlrc uninstall-authpgsqlrc
 	rm -f $(DESTDIR)$(pkglibexecdir)/authdaemond

Install the patch

$ patch -Np1 < courrier-authlib-0.61.0-cygwin.patch

Configure the package without most authentication modules, keeping only userdb.

Note: replace mailuser by an existing user name (in your /etc/passwd file). I used my own username.

$ ./configure --disable-root-check --with-waitfunc=wait --without-authpam --without-authldap --without-authpwd \
--without-authshadow --without-custom --without-authpipe --without-authmysql --without-authpgsql --with-mailuser=mailuser \
--with-mailgroup=mkgroup-l-d

Take a long pause... and when ready execute the following command. The LDFLAGS and LIBS variables are used to correct the second issue.

$ make LDFLAGS=-lcrypt LIBS=-lcrypt

Take again a long pause... then check the result and install the libraries

$ make check
$ make install

Compilation and installation

Download and untar package courier-imap in your favorite sandbox. Version used: 4.4.1.20080920

Apply the [{{#file:courrier-imap-4.4.1-cygwin.patch}} patch] before configuration to correct following issues:

  1. incorrect usage of EXEEXT in makedat/Makefile
  2. incorrect usage of EXTEXT in main Makefile
  3. remove usage of /usr/lib/env in start/stop script (/usr/lib/env does not seem to work under Cygwin)
--- courier-imap-4.4.1.20080920/makedat/Makefile.in	2008-08-24 19:52:51.000000000 +0200
+++ courier-imap-4.4.1.20080920-cygwin/makedat/Makefile.in	2008-10-21 20:43:27.500000000 +0200
@@ -182,7 +182,7 @@
 libexecdir = @libexecdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
-makedatprog_target = @makedatprog_target@
+makedatprog_target = @makedatprog_target@$(EXEEXT)
 makedatprogpath = @makedatprogpath@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
@@ -198,7 +198,7 @@
 target_alias = @target_alias@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-noinst_PROGRAMS = @makedatprog_target@
+noinst_PROGRAMS = @makedatprog_target@$(EXEEXT)
 makedatprog_SOURCES = makedatprog.c
 makedatprog_DEPENDENCIES = @dblibrary@
 makedatprog_LDADD = @dblibrary@
--- courier-imap-4.4.1.20080920/Makefile.in	2008-09-20 14:48:46.000000000 +0200
+++ courier-imap-4.4.1.20080920-cygwin/Makefile.in	2008-10-21 20:59:45.156250000 +0200
@@ -247,9 +247,9 @@
 CLEANFILES = $(databin_SCRIPTS) $(man_MANS) $(sysconf_DATA) $(sbin_SCRIPTS)
 databindir = $(datadir)
 databin_SCRIPTS = mkimapdcert mkpop3dcert
-binPROGRAMS = imapd pop3d maildirmake maildiracl deliverquota maildirkw
-sbinPROGRAMS = imaplogin pop3login
-libexecPROGRAMS = makedatprog couriertcpd
+binPROGRAMS = imapd$(EXEEXT) pop3d$(EXEEXT) maildirmake$(EXEEXT) maildiracl$(EXEEXT) deliverquota$(EXEEXT) maildirkw$(EXEEXT)
+sbinPROGRAMS = imaplogin$(EXEEXT) pop3login$(EXEEXT)
+libexecPROGRAMS = makedatprog$(EXEEXT) couriertcpd$(EXEEXT)
 bin_PROGRAMS = @binPROGRAMS_exec@
 sbin_PROGRAMS = @sbinPROGRAMS_exec@
 libexec_PROGRAMS = @libexecPROGRAMS_exec@
--- courier-imap-4.4.1.20080920/imapd.rc.in	2008-05-04 15:12:47.000000000 +0200
+++ courier-imap-4.4.1.20080920-cygwin/imapd.rc.in	2008-10-21 23:00:30.781250000 +0200
@@ -35,7 +35,7 @@
 
 	umask $IMAP_UMASK
 	@ULIMIT@ $IMAP_ULIMITD
-	@SETENV@ -i @SHELL@ -c " set -a ;
+	@SHELL@ -c " set -a ;
 			prefix=@prefix@ ;
 			exec_prefix=@exec_prefix@ ;
 			bindir=@bindir@ ;
--- courier-imap-4.4.1.20080920/pop3d.rc.in	2008-05-04 15:12:47.000000000 +0200
+++ courier-imap-4.4.1.20080920-cygwin/pop3d.rc.in	2008-10-21 23:00:49.875000000 +0200
@@ -27,7 +27,7 @@
 
 case $1 in
 start)
-	@SETENV@ -i @SHELL@ -c " set -a ;
+	@SHELL@ -c " set -a ;
 		prefix=@prefix@ ;
 		exec_prefix=@exec_prefix@ ;
 		bindir=@bindir@ ;

Install the patch

$ patch -Np1 < courrier-imap-4.4.1-cygwin.patch

Configure the package

$ ./configure --disable-root-check --with-waitfunc=wait

Take a walk... and when ready execute the following command to build the package.

$ make

Time to go for some coffee... and then install the package with the usual

$ make install
$ make install-configure

Configuration

Set ADDRESS to a valid value (0 or 127.0.0.1) and change IMAP_ULIMITD in $prefix/etc/imapd (where $prefix=/usr/lib/courier-imap) to a value accepted by the command ulimit. I simply used the existing value returned by

$ ulimit -v

Setup authdaemon. Create authdaemonrc file

$ cp /usr/local/etc/authlib/authdaemonrc.dist /usr/local/etc/authlib/authdaemonrc

Change number of daemons (I use only one) and enable DEBUG_LOGIN

# The number of daemon processes that are started.
daemons=1
# DEBUG_LOGIN=2   - turn on debugging + log passwords too
DEBUG_LOGIN=2

IMAP accounts

User accounts and settings are managed by userdb. See makeuserdb man page for details, or used the freshly new install man page - man makeuserdb

Assuming username is your username, 1001 and 10545 are respectively the UID and GID of an existing user (part of your /etc/passwd and /etc/group). I use my own UID and GID. Create the mailuser home directory, if required. Create Maildir folder.

$ mkdir -p /home/username
$ cd /home/username
$ /usr/lib/courier-imap/bin/maildirmake Maildir

Create the userdb text file /usr/local/etc/authlib/userdb

$ touch /usr/local/etc/authlib/userdb
$ chmod 700 /usr/local/etc/authlib/userdb

Edit /usr/local/etc/authlib/userdb, one line per account

username[TAB]uid=1001|gid=10111|home=/home/username|mail=/home/username/Maildir|systempw=XXXXXX

where XXXXXX is the encrypted password created with

$  /usr/local/sbin/userdbpw.exe

Create the (binary) userdb

$ /usr/local/sbin/makeuserdb

You should now have the following files created:

  • /usr/local/etc/authlib/userdb.dat
  • /usr/local/etc/authlib/userdbshadow.dat

Running

Install and configure syslogd. Run the Cygwin setup program. Locate, select and install inetutils (contains syslogd). Configure syslogd with the following command. It will create the /etc/syslogd.conf file and install a windows service using cygrunsrv

$ syslogd-config

Start the authlib and imap daemons with the following command:

$ /usr/local/sbin/authdaemon start
$ /usr/lib/courier-imap/libexec/imapd.rc start

Stop the daemons with the following command:

$ /usr/lib/courier-imap/libexec/imapd.rc stop
$ /usr/local/sbin/authdaemon stop

You'll find log messages in /var/log/messages (default target file as specified in /etc/syslogd.conf)

Maildir

maildirmake is part of the courier-imap package

$ /usr/lib/courier-imap/bin/maildirmake