Cyrus IMAP 2.2 mit LDAP und SSL auf Solaris
Software Komponenten
- OpenSSL, www.openssl.org
- Berkeley DB, www.sleepycat.com
- OpenLDAP, www.openldap.org
- Cyrus SASL, cyrusimap.web.cmu.edu
- Cyrus IMAP, cyrusimap.web.cmu.edu
Kompilation und Installation
PATH="/opt/gnu/gcc/3.4.1/bin:/opt/app/gnu/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/ccs/bin" CC="gcc" CFLAGS="-O3 -fPIC -Wall" CXX="g++" CXXFLAGS="-O3 -fPIC -Wall" CPPFLAGS="-I/opt/cyrus/include" LDFLAGS="-R/opt/cyrus/lib -L/opt/cyrus/lib" LD_OPTIONS=$LDFLAGS unset LD_LIBRARY_PATH export PATH CC CFLAGS CXX CXXFLAGS LDFLAGS CPPFLAGS LD_OPTIONS alias make=gmake
Berkeley DB
rm -rf /tmp/db-4.4.20 gtar -C /tmp -xvpzf db-4.4.20.tar.gz cd /tmp/db-4.4.20/build_unix ../dist/configure --prefix=/opt/cyrus gmake gmake install cd -
OpenSSL
gtar -xvpzf /tmp/openssl-0.9.8d.tar.gz cd /tmp/openssl-0.9.8d ./config --prefix=/opt/cyrus \ --openssldir=/opt/cyrus/openssl shared \ -R/opt/cyrus/lib -L/opt/cyrus/lib gmake gmake install
OpenLDAP
gtar -xvpzf /tmp/openldap-2.3.27.tgz cd /tmp/openldap-2.3.27 ./configure --prefix=/opt/cyrus \ --sysconfdir=/etc/opt/cyrus \ --disable-slapd --disable-sluprd \ --localstatedir=/var/opt/cyrus \ --with-tls gmake depend gmake gmake install
Cyrus SASL
gtar -xvpzf /tmp/cyrus-sasl-2.1.22.tar.gz cd /tmp/cyrus-sasl-2.1.22 ./configure --prefix=/opt/cyrus \ --with-dbpath=/var/opt/cyrus/sasldb2 \ --sysconfdir=/etc/opt/cyrus \ --with-dblib=berkeley \ --with-bdb-libdir=/opt/cyrus/lib \ --with-bdb-incdir=/opt/cyrus/include \ --with-openssl=/opt/cyrus \ --with-ldap=/opt/cyrus \ --with-plugindir=/opt/cyrus/lib/sasl2 \ --with-saslauthd=/var/opt/cyrus/socket \ --with-des=/opt/cyrus \ --enable-shared \ --enable-static \ --disable-gssapi \ --disable-kerb5 gmake gmake gmake install
Cyrus IMAP
gtar -xvzf /tmp/cyrus-imapd-2.2.13.tar.gz cd /tmp/cyrus-imapd-2.2.13 ./configure --prefix=/opt/cyrus \ --with-auth=unix \ --with-cyrus-prefix=/opt/cyrus \ --with-dbdir=/opt/cyrus \ --with-openssl=/opt/cyrus \ --with-sasl=/opt/cyrus \ --sysconfdir=/etc/opt/cyrus \ --with-statedir=/var/opt/cyrus/socket \ --enable-murder \ --disable-krb4 \ --disable-cram \ --disable-gssapi \ --without-krb
Das perl Unterverzeichnis aus dem Makefile heraus nehmen.
#SUBDIRS = man et lib sieve master imap imtest perl timsieved notifyd SUBDIRS = man et lib sieve master imap imtest timsieved notifyd
Cyrus IMAP kompilieren.
gmake gmake install
Perl-Module benötigen Sun Compiler und eine Spezialbehandlung, wenn sie an einem anderen Ort installiert werden sollen.
PATH=/share/app/sun/studio/11/bin:/share/app/gnu/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/ccs/bin CC=cc unalias make
Editere Makefile
und setze SUBDIRS auf perl.
#SUBDIRS = man et lib sieve master imap imtest perl timsieved notifyd #SUBDIRS = man et lib sieve master imap imtest timsieved notifyd SUBDIRS = perl
Editiere perl/Makefile
und perl/sieve/Makefile
und setze den C-Compiler auf cc.
CC=cc
Perl-Module kompilieren.
make
Editiere perl/imap/Makefile
und perl/sieve/managesieve/Makefile
und setze die Installationsverzeichnisse.
INSTALLSITELIB = /usr/... --> $(PREFIX)/... INSTALLSITEARCH = /usr/... --> $(PREFIX)/....
mkdir -p /opt/cyrus/perl5/site_perl/5.6.1/sun4-solaris-64int make install
Ändere den Pfad von imapd.conf in allen Scripts innerhalb des Verzeichnisses tools.
grep /etc/imapd.conf tools/* /etc/imapd.conf --> /etc/opt/cyrus/imapd.conf rm -rf tools/CVS cp -R tools /opt/cyrus
Editiere /opt/cyrus/bin/cyradm
und füge den Include-Pfad hinzu.
INC=/opt/cyrus/perl5/site_perl case "x$BASH_VERSION" in x) exec perl -I$INC -MCyrus::IMAP::Shell -e shell -- ${1+"$@"} ;; *) exec perl -I$INC -MCyrus::IMAP::Shell -e shell -- "$@" ;; esac
Editiere /opt/cyrus/bin/sieveshell
und füge den Include-Pfad hinzu.
INC=/opt/cyrus/perl5/site_perl exec perl -I$INC -x -S $0 ${1+"$@"} # -*-perl-*-
Editiere /opt/cyrus/bin/installsieve
und füge den Include-Pfad hinzu.
INC=/opt/cyrus/perl5/site_perl exec perl -I$INC -x -S $0 ${1+"$@"} # -*-perl-*-
Editiere /opt/cyrus/tools/mknewsgroups
und füge den Include-Pfad hinzu.
use lib '/opt/cyrus/perl5/site_perl'; use Getopt::Long; use Cyrus::IMAP; use Cyrus::IMAP::Admin;
Konfiguration
Cyrus IMAP
imapd.conf
### IMAP Server Identifier servername: mail.example.com ### Directories/Files configdirectory: /var/opt/cyrus/imap lmtpsocket: /var/opt/cyrus/imap/socket/lmtp notifysocket: /var/opt/cyrus/imap/socket/notify idlesocket: /var/opt/cyrus/imap/socket/idle sievedir: /var/opt/cyrus/sieve sendmail: /opt/postfix/sbin/sendmail ### Mailbox Store defaultpartition: default partition-default: /var/opt/cyrus/mail ### Certificates tls_cert_file: /etc/opt/cyrus/certs/mail.example.com_cert.pem tls_key_file: /etc/opt/cyrus/certs/mail.example.com_key.pem tls_ca_file: /etc/opt/cyrus/certs/ca_example.com.pem tls_ca_path: /etc/opt/cyrus/certs/ca tls_require_cert: 1 ### Authentication/Authorization admins: cyrus allowplaintext: yes sasl_pwcheck_method: saslauthd #sasl_pwcheck_method: auxprop sasl_mech_list: PLAIN sasl_sasldb_path: /var/opt/cyrus/sasldb2 ### Mailbox defaults unixhierarchysep: yes altnamespace: yes defaultacl: anyone lrsp logtimestamps: yes duplicatesuppression: yes singleinstancestore: 1 allowallsubscribe: 1 allowusermoves: 1 ### Notification mailnotifier: mailto sievenotifier: mailto
cyrus.conf
START { recover cmd="ctl_cyrusdb -r" } SERVICES { imap cmd="imapd" listen="imap" prefork=0 imaps cmd="imapd -s" listen="imaps" prefork=0 sieve cmd="timsieved" listen="sieve" prefork=0 lmtp cmd="lmtpd" listen="lmtp" prefork=0 lmtpunix cmd="lmtpd" listen="/var/opt/cyrus/imap/socket/lmtp" prefork=0 notify cmd="notifyd" listen="/var/opt/cyrus/imap/socket/notify" proto="udp" prefork=1 } EVENTS { checkpoint cmd="ctl_cyrusdb -c" period=30 delprune cmd="ctl_deliver -E 3" at=0400 tlsprune cmd="tls_prune" at=0400 squat cmd="squatter -r *" at=2200 }
Cyrus SASL
saslauthd.conf
ldap_servers: ldap://127.0.0.1 ldap_search_base: ou=people,dc=example,dc=com ldap_bind_dn: cn=proxyagent,ou=special_users,dc=example,dc=com ldap_password: password ldap_scope: one ldap_uidattr: uid ldap_filter_mode: yes ldap_filter: uid=%u