Inhaltsverzeichnis
Cyrus CentOS 6
Der IMAP-Mailserver Cyrus ist einer der beliebtesten IMAP-Mailserver. Cyrus wird an der Carnegie-Mellon Universität entwickelt und entstand aus dem Andrew Mail an Bulletin Board System welches in den 90er Jahren an der Universität entwickelt und eingesetzt wurde.
Der Cyrus-IMAP-Mailserver kann zum abholen und verwalten von e-Mails, welche durch einen Mail Transport Agent wie Postfix entgegengenommen wurden, genutzt werden.
Ab hier werden root
-Rechte zur Ausführung der nachfolgenden Befehle benötigt. Um root
zu werden geben Sie bitte folgenden Befehl ein:
$ su - Password:
Installation
Jede ernst zunehmende Linux-Distribution sollte ein vorkonfiguriertes Cyrus-Paket mit sich bringen. Deswegen ist eine Installation auch unter CentOS eine Sache des Paket-Managers yum
.
Zur Installation eines Cyrus-IMAP-Mailservers wird nachfolgendes Paket benötigt:
installiert werden.
Mit nachfolgendem Befehl, wird das Pakete cyrus-imapd
installiert:
# yum install cyrus-imapd Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile base | 3.7 kB 00:00 cr | 3.5 kB 00:00 extras | 3.0 kB 00:00 updates | 3.5 kB 00:00 Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package cyrus-imapd.x86_64 0:2.3.16-6.el6_1.3 will be installed --> Processing Dependency: cyrus-imapd-utils = 2.3.16-6.el6_1.3 for package: cyrus-imapd-2.3.16-6.el6_1.3.x86_64 --> Processing Dependency: file for package: cyrus-imapd-2.3.16-6.el6_1.3.x86_64 --> Running transaction check ---> Package cyrus-imapd-utils.x86_64 0:2.3.16-6.el6_1.3 will be installed --> Processing Dependency: make for package: cyrus-imapd-utils-2.3.16-6.el6_1.3.x86_64 ---> Package file.x86_64 0:5.04-11.el6 will be installed --> Running transaction check ---> Package make.x86_64 1:3.81-19.el6 will be installed --> Finished Dependency Resolution Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: cyrus-imapd x86_64 2.3.16-6.el6_1.3 cr 11 M Installing for dependencies: cyrus-imapd-utils x86_64 2.3.16-6.el6_1.3 cr 254 k file x86_64 5.04-11.el6 cr 45 k make x86_64 1:3.81-19.el6 base 389 k Transaction Summary ================================================================================ Install 4 Package(s) Total download size: 12 M Installed size: 45 M Is this ok [y/N]: y Downloading Packages: (1/4): cyrus-imapd-2.3.16-6.el6_1.3.x86_64.rpm | 11 MB 00:00 (2/4): cyrus-imapd-utils-2.3.16-6.el6_1.3.x86_64.rpm | 254 kB 00:00 (3/4): file-5.04-11.el6.x86_64.rpm | 45 kB 00:00 (4/4): make-3.81-19.el6.x86_64.rpm | 389 kB 00:00 -------------------------------------------------------------------------------- Total 18 MB/s | 12 MB 00:00 Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Installing : file-5.04-11.el6.x86_64 1/4 Installing : 1:make-3.81-19.el6.x86_64 2/4 Installing : cyrus-imapd-utils-2.3.16-6.el6_1.3.x86_64 3/4 Installing : cyrus-imapd-2.3.16-6.el6_1.3.x86_64 4/4 Installed: cyrus-imapd.x86_64 0:2.3.16-6.el6_1.3 Dependency Installed: cyrus-imapd-utils.x86_64 0:2.3.16-6.el6_1.3 file.x86_64 0:5.04-11.el6 make.x86_64 1:3.81-19.el6 Complete!
Mit nachfolgendem Befehl kann überprüft werden, welche Inhalte mit den Paket cyrus-imapd
installiert wurden.
# rpm -qil cyrus-imapd Name : cyrus-imapd Relocations: (not relocatable) Version : 2.3.16 Vendor: CentOS Release : 6.el6_1.3 Build Date: Mon 26 Sep 2011 03:06:00 AM CEST Install Date: Fri 09 Dec 2011 09:35:39 AM CET Build Host: c6b6.bsys.dev.centos.org Group : System Environment/Daemons Source RPM: cyrus-imapd-2.3.16-6.el6_1.3.src.rpm Size : 45641267 License: BSD Signature : RSA/SHA1, Wed 28 Sep 2011 02:33:57 AM CEST, Key ID 0946fca2c105b9de Packager : CentOS BuildSystem <http://bugs.centos.org> URL : http://cyrusimap.web.cmu.edu/ Summary : A high-performance mail server with IMAP, POP3, NNTP and SIEVE support Description : The cyrus-imapd package contains the core of the Cyrus IMAP server. It is a scaleable enterprise mail system designed for use from small to large enterprise environments using standards-based internet mail technologies. A full Cyrus IMAP implementation allows a seamless mail and bulletin board environment to be set up across multiple servers. It differs from other IMAP server implementations in that it is run on "sealed" servers, where users are not normally permitted to log in and have no system account on the server. The mailbox database is stored in parts of the file system that are private to the Cyrus IMAP server. All user access to mail is through software using the IMAP, POP3 or KPOP protocols. It also includes support for virtual domains, NNTP, mailbox annotations, and much more. The private mailbox database design gives the server large advantages in efficiency, scalability and administratability. Multiple concurrent read/write connections to the same mailbox are permitted. The server supports access control lists on mailboxes and storage quotas on mailbox hierarchies. The Cyrus IMAP server supports the IMAP4rev1 protocol described in RFC 3501. IMAP4rev1 has been approved as a proposed standard. It supports any authentication mechanism available from the SASL library, imaps/pop3s/nntps (IMAP/POP3/NNTP encrypted using SSL and TLSv1) can be used for security. The server supports single instance store where possible when an email message is addressed to multiple recipients, SIEVE provides server side email filtering. /etc/cron.daily/cyrus-imapd /etc/cyrus.conf /etc/imapd.conf /etc/logrotate.d/cyrus-imapd /etc/pam.d/csync /etc/pam.d/imap /etc/pam.d/lmtp /etc/pam.d/mupdate /etc/pam.d/nntp /etc/pam.d/pop /etc/pam.d/sieve /etc/pki/cyrus-imapd /etc/pki/cyrus-imapd/cyrus-imapd.pem /etc/rc.d/init.d/cyrus-imapd /etc/sysconfig/cyrus-imapd /usr/lib/cyrus-imapd /usr/lib/cyrus-imapd/arbitron /usr/lib/cyrus-imapd/arbitronsort.pl /usr/lib/cyrus-imapd/chk_cyrus /usr/lib/cyrus-imapd/compile_sieve /usr/lib/cyrus-imapd/convert-sieve.pl /usr/lib/cyrus-imapd/ctl_cyrusdb /usr/lib/cyrus-imapd/ctl_deliver /usr/lib/cyrus-imapd/ctl_mboxlist /usr/lib/cyrus-imapd/cvt_cyrusdb /usr/lib/cyrus-imapd/cvt_cyrusdb_all /usr/lib/cyrus-imapd/cyr_dbtool /usr/lib/cyrus-imapd/cyr_df /usr/lib/cyrus-imapd/cyr_expire /usr/lib/cyrus-imapd/cyr_synclog /usr/lib/cyrus-imapd/cyrdump /usr/lib/cyrus-imapd/cyrfetchnews /usr/lib/cyrus-imapd/cyrus-master /usr/lib/cyrus-imapd/deliver /usr/lib/cyrus-imapd/dohash /usr/lib/cyrus-imapd/fud /usr/lib/cyrus-imapd/idled /usr/lib/cyrus-imapd/imapd /usr/lib/cyrus-imapd/ipurge /usr/lib/cyrus-imapd/lmtpd /usr/lib/cyrus-imapd/lmtpproxyd /usr/lib/cyrus-imapd/make_md5 /usr/lib/cyrus-imapd/make_sha1 /usr/lib/cyrus-imapd/masssievec /usr/lib/cyrus-imapd/mbexamine /usr/lib/cyrus-imapd/mbpath /usr/lib/cyrus-imapd/migrate-metadata /usr/lib/cyrus-imapd/mkimap /usr/lib/cyrus-imapd/mknewsgroups /usr/lib/cyrus-imapd/mupdate /usr/lib/cyrus-imapd/mupdate-loadgen.pl /usr/lib/cyrus-imapd/nntpd /usr/lib/cyrus-imapd/notifyd /usr/lib/cyrus-imapd/pop3d /usr/lib/cyrus-imapd/proxyd /usr/lib/cyrus-imapd/ptdump /usr/lib/cyrus-imapd/ptexpire /usr/lib/cyrus-imapd/ptloader /usr/lib/cyrus-imapd/quota /usr/lib/cyrus-imapd/reconstruct /usr/lib/cyrus-imapd/rehash /usr/lib/cyrus-imapd/sievec /usr/lib/cyrus-imapd/sieved /usr/lib/cyrus-imapd/smmapd /usr/lib/cyrus-imapd/squatter /usr/lib/cyrus-imapd/sync_client /usr/lib/cyrus-imapd/sync_reset /usr/lib/cyrus-imapd/sync_server /usr/lib/cyrus-imapd/timsieved /usr/lib/cyrus-imapd/tls_prune /usr/lib/cyrus-imapd/translatesieve /usr/lib/cyrus-imapd/undohash /usr/lib/cyrus-imapd/unexpunge /usr/lib/cyrus-imapd/upgradesieve /usr/share/cyrus-imapd /usr/share/cyrus-imapd/rpm /usr/share/cyrus-imapd/rpm/db.cfg /usr/share/cyrus-imapd/rpm/magic /usr/share/doc/cyrus-imapd-2.3.16 /usr/share/doc/cyrus-imapd-2.3.16/COPYRIGHT /usr/share/doc/cyrus-imapd-2.3.16/README /usr/share/doc/cyrus-imapd-2.3.16/README.autocreate-cyrus-2.3 /usr/share/doc/cyrus-imapd-2.3.16/README.autosievefolder /usr/share/doc/cyrus-imapd-2.3.16/README.rpm /usr/share/doc/cyrus-imapd-2.3.16/altnamespace.html /usr/share/doc/cyrus-imapd-2.3.16/anoncvs.html /usr/share/doc/cyrus-imapd-2.3.16/bugs.html /usr/share/doc/cyrus-imapd-2.3.16/changes.html /usr/share/doc/cyrus-imapd-2.3.16/conf /usr/share/doc/cyrus-imapd-2.3.16/conf/cmu-backend.conf /usr/share/doc/cyrus-imapd-2.3.16/conf/cmu-frontend.conf /usr/share/doc/cyrus-imapd-2.3.16/conf/normal.conf /usr/share/doc/cyrus-imapd-2.3.16/conf/prefork.conf /usr/share/doc/cyrus-imapd-2.3.16/conf/small.conf /usr/share/doc/cyrus-imapd-2.3.16/contrib /usr/share/doc/cyrus-imapd-2.3.16/cyrusv2.mc /usr/share/doc/cyrus-imapd-2.3.16/faq.html /usr/share/doc/cyrus-imapd-2.3.16/feedback.html /usr/share/doc/cyrus-imapd-2.3.16/index.html /usr/share/doc/cyrus-imapd-2.3.16/install-admin-mb.html /usr/share/doc/cyrus-imapd-2.3.16/install-auth.html /usr/share/doc/cyrus-imapd-2.3.16/install-compile.html /usr/share/doc/cyrus-imapd-2.3.16/install-configure.html /usr/share/doc/cyrus-imapd-2.3.16/install-murder.html /usr/share/doc/cyrus-imapd-2.3.16/install-netnews.html /usr/share/doc/cyrus-imapd-2.3.16/install-perf.html /usr/share/doc/cyrus-imapd-2.3.16/install-prereq.html /usr/share/doc/cyrus-imapd-2.3.16/install-replication.html /usr/share/doc/cyrus-imapd-2.3.16/install-sieve.html /usr/share/doc/cyrus-imapd-2.3.16/install-snmpmon.html /usr/share/doc/cyrus-imapd-2.3.16/install-testing.html /usr/share/doc/cyrus-imapd-2.3.16/install-upgrade.html /usr/share/doc/cyrus-imapd-2.3.16/install-virtdomains.html /usr/share/doc/cyrus-imapd-2.3.16/install.html /usr/share/doc/cyrus-imapd-2.3.16/internal /usr/share/doc/cyrus-imapd-2.3.16/internal/bytecode /usr/share/doc/cyrus-imapd-2.3.16/internal/database-formats.html /usr/share/doc/cyrus-imapd-2.3.16/internal/hacking /usr/share/doc/cyrus-imapd-2.3.16/internal/internationalization.html /usr/share/doc/cyrus-imapd-2.3.16/internal/locking /usr/share/doc/cyrus-imapd-2.3.16/internal/mailbox-format.html /usr/share/doc/cyrus-imapd-2.3.16/internal/master-state-machine.fig /usr/share/doc/cyrus-imapd-2.3.16/internal/prot-events /usr/share/doc/cyrus-imapd-2.3.16/internal/prot.html /usr/share/doc/cyrus-imapd-2.3.16/internal/replication_examples /usr/share/doc/cyrus-imapd-2.3.16/internal/replication_protocol /usr/share/doc/cyrus-imapd-2.3.16/internal/specials /usr/share/doc/cyrus-imapd-2.3.16/internal/uuid /usr/share/doc/cyrus-imapd-2.3.16/internal/var_directory_structure /usr/share/doc/cyrus-imapd-2.3.16/mailing-list.html /usr/share/doc/cyrus-imapd-2.3.16/man.html /usr/share/doc/cyrus-imapd-2.3.16/murder.fig /usr/share/doc/cyrus-imapd-2.3.16/murder.png /usr/share/doc/cyrus-imapd-2.3.16/netnews.fig /usr/share/doc/cyrus-imapd-2.3.16/netnews.png /usr/share/doc/cyrus-imapd-2.3.16/notes.html /usr/share/doc/cyrus-imapd-2.3.16/os.html /usr/share/doc/cyrus-imapd-2.3.16/overview.html /usr/share/doc/cyrus-imapd-2.3.16/questions.html /usr/share/doc/cyrus-imapd-2.3.16/readme.html /usr/share/doc/cyrus-imapd-2.3.16/sieve-protocol.html /usr/share/doc/cyrus-imapd-2.3.16/sieve.html /usr/share/doc/cyrus-imapd-2.3.16/specs.html /usr/share/doc/cyrus-imapd-2.3.16/text /usr/share/doc/cyrus-imapd-2.3.16/text/altnamespace /usr/share/doc/cyrus-imapd-2.3.16/text/anoncvs /usr/share/doc/cyrus-imapd-2.3.16/text/bugs /usr/share/doc/cyrus-imapd-2.3.16/text/changes /usr/share/doc/cyrus-imapd-2.3.16/text/faq /usr/share/doc/cyrus-imapd-2.3.16/text/feedback /usr/share/doc/cyrus-imapd-2.3.16/text/index /usr/share/doc/cyrus-imapd-2.3.16/text/install /usr/share/doc/cyrus-imapd-2.3.16/text/install-admin-mb /usr/share/doc/cyrus-imapd-2.3.16/text/install-auth /usr/share/doc/cyrus-imapd-2.3.16/text/install-compile /usr/share/doc/cyrus-imapd-2.3.16/text/install-configure /usr/share/doc/cyrus-imapd-2.3.16/text/install-murder /usr/share/doc/cyrus-imapd-2.3.16/text/install-netnews /usr/share/doc/cyrus-imapd-2.3.16/text/install-perf /usr/share/doc/cyrus-imapd-2.3.16/text/install-prereq /usr/share/doc/cyrus-imapd-2.3.16/text/install-replication /usr/share/doc/cyrus-imapd-2.3.16/text/install-sieve /usr/share/doc/cyrus-imapd-2.3.16/text/install-snmpmon /usr/share/doc/cyrus-imapd-2.3.16/text/install-testing /usr/share/doc/cyrus-imapd-2.3.16/text/install-upgrade /usr/share/doc/cyrus-imapd-2.3.16/text/install-virtdomains /usr/share/doc/cyrus-imapd-2.3.16/text/mailing-list /usr/share/doc/cyrus-imapd-2.3.16/text/man /usr/share/doc/cyrus-imapd-2.3.16/text/notes /usr/share/doc/cyrus-imapd-2.3.16/text/os /usr/share/doc/cyrus-imapd-2.3.16/text/overview /usr/share/doc/cyrus-imapd-2.3.16/text/questions /usr/share/doc/cyrus-imapd-2.3.16/text/readme /usr/share/doc/cyrus-imapd-2.3.16/text/sieve /usr/share/doc/cyrus-imapd-2.3.16/text/sieve-protocol /usr/share/doc/cyrus-imapd-2.3.16/text/specs /usr/share/man/man5/cyrus.conf.5.gz /usr/share/man/man5/imapd.conf.5.gz /usr/share/man/man5/krb.equiv.5.gz /usr/share/man/man8/arbitron.8.gz /usr/share/man/man8/chk_cyrus.8.gz /usr/share/man/man8/ctl_cyrusdb.8.gz /usr/share/man/man8/ctl_deliver.8.gz /usr/share/man/man8/ctl_mboxlist.8.gz /usr/share/man/man8/cvt_cyrusdb.8.gz /usr/share/man/man8/cyr_dbtool.8.gz /usr/share/man/man8/cyr_df.8.gz /usr/share/man/man8/cyr_expire.8.gz /usr/share/man/man8/cyr_synclog.8.gz /usr/share/man/man8/cyrfetchnews.8.gz /usr/share/man/man8/cyrus-master.8.gz /usr/share/man/man8/deliver.8.gz /usr/share/man/man8/fud.8.gz /usr/share/man/man8/idled.8.gz /usr/share/man/man8/imapd.8cyrus.gz /usr/share/man/man8/ipurge.8.gz /usr/share/man/man8/lmtpd.8.gz /usr/share/man/man8/make_md5.8.gz /usr/share/man/man8/make_sha1.8.gz /usr/share/man/man8/mbexamine.8.gz /usr/share/man/man8/mbpath.8.gz /usr/share/man/man8/nntpd.8.gz /usr/share/man/man8/notifyd.8.gz /usr/share/man/man8/pop3d.8cyrus.gz /usr/share/man/man8/quota.8.gz /usr/share/man/man8/reconstruct.8.gz /usr/share/man/man8/rmnews.8.gz /usr/share/man/man8/smmapd.8.gz /usr/share/man/man8/squatter.8.gz /usr/share/man/man8/sync_client.8.gz /usr/share/man/man8/sync_reset.8.gz /usr/share/man/man8/sync_server.8.gz /usr/share/man/man8/timsieved.8.gz /usr/share/man/man8/tls_prune.8.gz /usr/share/man/man8/unexpunge.8.gz /var/lib/imap /var/lib/imap/backup /var/lib/imap/db /var/lib/imap/log /var/lib/imap/md5 /var/lib/imap/meta /var/lib/imap/msg /var/lib/imap/proc /var/lib/imap/ptclient /var/lib/imap/quota /var/lib/imap/rpm /var/lib/imap/sieve /var/lib/imap/socket /var/lib/imap/sync /var/lib/imap/user /var/spool/imap
Installation: cyrus-sasl-plain
Der Cyrus-IMAP-Mailserver, beherrscht verschiedene Methoden zur Authentifizierung der einzelnen Benutzer bzw. e-Mail-Konten. Ein dieser Methoden ist die Authentifizierung durch „Klartext“-Passwörter (welche die Übertragungsart des Passworts bezeichnet).
Zur Installation der Authentifizierungsmethode plain durch den Cyrus-IMAP-Mailservers wird nachfolgendes Paket benötigt:
installiert werden.
Mit nachfolgendem Befehl, wird das Pakete cyrus-sasl-plain
installiert:
# yum install cyrus-sasl-plain Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package cyrus-sasl-plain.x86_64 0:2.1.23-8.el6 will be installed --> Finished Dependency Resolution Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: cyrus-sasl-plain x86_64 2.1.23-8.el6 base 30 k Transaction Summary ================================================================================ Install 1 Package(s) Total download size: 30 k Installed size: 33 k Is this ok [y/N]: y Downloading Packages: cyrus-sasl-plain-2.1.23-8.el6.x86_64.rpm | 30 kB 00:00 Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Installing : cyrus-sasl-plain-2.1.23-8.el6.x86_64 1/1 Installed: cyrus-sasl-plain.x86_64 0:2.1.23-8.el6 Complete!
Mit nachfolgendem Befehl kann überprüft werden, welche Inhalte mit den Paket cyrus-sasl-plain
installiert wurden.
# rpm -qil cyrus-sasl-plain Name : cyrus-sasl-plain Relocations: (not relocatable) Version : 2.1.23 Vendor: CentOS Release : 8.el6 Build Date: Thu 11 Nov 2010 05:11:37 AM CET Install Date: Fri 09 Dec 2011 01:16:59 PM CET Build Host: c6b3.bsys.dev.centos.org Group : System Environment/Libraries Source RPM: cyrus-sasl-2.1.23-8.el6.src.rpm Size : 34000 License: BSD Signature : RSA/8, Sun 03 Jul 2011 06:09:12 AM CEST, Key ID 0946fca2c105b9de Packager : CentOS BuildSystem <http://bugs.centos.org> URL : http://asg.web.cmu.edu/sasl/sasl-library.html Summary : PLAIN and LOGIN authentication support for Cyrus SASL Description : The cyrus-sasl-plain package contains the Cyrus SASL plugins which support PLAIN and LOGIN authentication schemes. /usr/lib64/sasl2/liblogin.so /usr/lib64/sasl2/liblogin.so.2 /usr/lib64/sasl2/liblogin.so.2.0.23 /usr/lib64/sasl2/libplain.so /usr/lib64/sasl2/libplain.so.2 /usr/lib64/sasl2/libplain.so.2.0.23
Installation: cyrus-sasl-md5
Der Cyrus-IMAP-Mailserver, beherrscht verschiedene Methoden zur Authentifizierung der einzelnen Benutzer bzw. e-Mail-Konten. Ein dieser Methoden ist die Authentifizierung durch auf dem Algorithmus von „MD5-Verschlüsselten“-Passwörter (CRAM-MD5 und DIGEST-MD5) (welche die Übertragungsart des Passworts bezeichnet).
Zur Installation der Authentifizierungsmethode CRAM-MD5 und DIGEST-MD5 durch den Cyrus-IMAP-Mailservers wird nachfolgendes Paket benötigt:
installiert werden.
Mit nachfolgendem Befehl, wird das Pakete cyrus-sasl-md5
installiert:
# yum install cyrus-sasl-md5 Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package cyrus-sasl-md5.x86_64 0:2.1.23-8.el6 will be installed --> Finished Dependency Resolution Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: cyrus-sasl-md5 x86_64 2.1.23-8.el6 base 46 k Transaction Summary ================================================================================ Install 1 Package(s) Total download size: 46 k Installed size: 67 k Is this ok [y/N]: y Downloading Packages: cyrus-sasl-md5-2.1.23-8.el6.x86_64.rpm | 46 kB 00:00 Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Installing : cyrus-sasl-md5-2.1.23-8.el6.x86_64 1/1 Installed: cyrus-sasl-md5.x86_64 0:2.1.23-8.el6 Complete!
Mit nachfolgendem Befehl kann überprüft werden, welche Inhalte mit den Paket cyrus-sasl-md5
installiert wurden.
# rpm -qil cyrus-sasl-md5 Name : cyrus-sasl-md5 Relocations: (not relocatable) Version : 2.1.23 Vendor: CentOS Release : 8.el6 Build Date: Thu 11 Nov 2010 05:11:37 AM CET Install Date: Fri 09 Dec 2011 01:18:40 PM CET Build Host: c6b3.bsys.dev.centos.org Group : System Environment/Libraries Source RPM: cyrus-sasl-2.1.23-8.el6.src.rpm Size : 68592 License: BSD Signature : RSA/8, Sun 03 Jul 2011 06:09:09 AM CEST, Key ID 0946fca2c105b9de Packager : CentOS BuildSystem <http://bugs.centos.org> URL : http://asg.web.cmu.edu/sasl/sasl-library.html Summary : CRAM-MD5 and DIGEST-MD5 authentication support for Cyrus SASL Description : The cyrus-sasl-md5 package contains the Cyrus SASL plugins which support CRAM-MD5 and DIGEST-MD5 authentication schemes. /usr/lib64/sasl2/libcrammd5.so /usr/lib64/sasl2/libcrammd5.so.2 /usr/lib64/sasl2/libcrammd5.so.2.0.23 /usr/lib64/sasl2/libdigestmd5.so /usr/lib64/sasl2/libdigestmd5.so.2 /usr/lib64/sasl2/libdigestmd5.so.2.0.23
Installation: cyrus-sasl-ldap
Der Cyrus-IMAP-Mailserver, soll mit einer Anbindung an LDAP zur Authentifizierung der einzelnen Benutzer bzw. e-Mail-Konten betrieben werden.
Wie ein OpenLDAP-Server installiert und grundlegend konfiguriert werden kann, kann unter nachfolgendem Link innerhalb dieses DokuWiki nachgelesen werden:
HINWEIS - Die Konfiguration des Cyrus-IMAP-Mailserver soll nachfolgend NUR gegen LDAP erfolgen!
Zur Installation einer LDAP-Anbindung des Cyrus-IMAP-Mailservers wird nachfolgendes Paket benötigt:
installiert werden.
Mit nachfolgendem Befehl, wird das Pakete cyrus-sasl-ldap
installiert:
# yum install cyrus-sasl-ldap Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package cyrus-sasl-ldap.x86_64 0:2.1.23-8.el6 will be installed --> Finished Dependency Resolution Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: cyrus-sasl-ldap x86_64 2.1.23-8.el6 base 28 k Transaction Summary ================================================================================ Install 1 Package(s) Total download size: 28 k Installed size: 18 k Is this ok [y/N]: y Downloading Packages: cyrus-sasl-ldap-2.1.23-8.el6.x86_64.rpm | 28 kB 00:00 Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Installing : cyrus-sasl-ldap-2.1.23-8.el6.x86_64 1/1 Installed: cyrus-sasl-ldap.x86_64 0:2.1.23-8.el6 Complete!
Mit nachfolgendem Befehl kann überprüft werden, welche Inhalte mit den Paket cyrus-sasl-ldap
installiert wurden.
# rpm -qil cyrus-sasl-ldap Name : cyrus-sasl-ldap Relocations: (not relocatable) Version : 2.1.23 Vendor: CentOS Release : 8.el6 Build Date: Thu 11 Nov 2010 05:11:37 AM CET Install Date: Fri 09 Dec 2011 01:20:08 PM CET Build Host: c6b3.bsys.dev.centos.org Group : System Environment/Libraries Source RPM: cyrus-sasl-2.1.23-8.el6.src.rpm Size : 18240 License: BSD Signature : RSA/8, Sun 03 Jul 2011 06:09:05 AM CEST, Key ID 0946fca2c105b9de Packager : CentOS BuildSystem <http://bugs.centos.org> URL : http://asg.web.cmu.edu/sasl/sasl-library.html Summary : LDAP auxprop support for Cyrus SASL Description : The cyrus-sasl-ldap package contains the Cyrus SASL plugin which supports using a directory server, accessed using LDAP, for storing shared secrets. /usr/lib64/sasl2/libldapdb.so /usr/lib64/sasl2/libldapdb.so.2 /usr/lib64/sasl2/libldapdb.so.2.0.23
SASL-Module
Mit nachfolgendem Befehl kann überprüft werden, welche SASL-Module installiert sind:
# /usr/sbin/pluginviewer Installed SASL (server side) mechanisms are: DIGEST-MD5 LOGIN ANONYMOUS CRAM-MD5 PLAIN EXTERNAL List of server plugins follows Plugin "digestmd5" [loaded], API version: 4 SASL mechanism: DIGEST-MD5, best SSF: 128, supports setpass: no security flags: NO_ANONYMOUS|NO_PLAINTEXT|MUTUAL_AUTH features: PROXY_AUTHENTICATION Plugin "login" [loaded], API version: 4 SASL mechanism: LOGIN, best SSF: 0, supports setpass: no security flags: NO_ANONYMOUS features: Plugin "anonymous" [loaded], API version: 4 SASL mechanism: ANONYMOUS, best SSF: 0, supports setpass: no security flags: NO_PLAINTEXT features: WANT_CLIENT_FIRST Plugin "crammd5" [loaded], API version: 4 SASL mechanism: CRAM-MD5, best SSF: 0, supports setpass: no security flags: NO_ANONYMOUS|NO_PLAINTEXT features: SERVER_FIRST Plugin "plain" [loaded], API version: 4 SASL mechanism: PLAIN, best SSF: 0, supports setpass: no security flags: NO_ANONYMOUS features: WANT_CLIENT_FIRST|PROXY_AUTHENTICATION Installed auxprop mechanisms are: sasldb List of auxprop plugins follows Plugin "sasldb" , API version: 4 supports store: yes Installed SASL (client side) mechanisms are: DIGEST-MD5 LOGIN ANONYMOUS CRAM-MD5 PLAIN EXTERNAL List of client plugins follows Plugin "digestmd5" [loaded], API version: 4 SASL mechanism: DIGEST-MD5, best SSF: 128 security flags: NO_ANONYMOUS|NO_PLAINTEXT|MUTUAL_AUTH features: PROXY_AUTHENTICATION|NEED_SERVER_FQDN Plugin "login" [loaded], API version: 4 SASL mechanism: LOGIN, best SSF: 0 security flags: NO_ANONYMOUS features: SERVER_FIRST Plugin "anonymous" [loaded], API version: 4 SASL mechanism: ANONYMOUS, best SSF: 0 security flags: NO_PLAINTEXT features: WANT_CLIENT_FIRST Plugin "crammd5" [loaded], API version: 4 SASL mechanism: CRAM-MD5, best SSF: 0 security flags: NO_ANONYMOUS|NO_PLAINTEXT features: SERVER_FIRST Plugin "plain" [loaded], API version: 4 SASL mechanism: PLAIN, best SSF: 0 security flags: NO_ANONYMOUS features: WANT_CLIENT_FIRST|PROXY_AUTHENTICATION Plugin "EXTERNAL" [loaded], API version: 4 SASL mechanism: EXTERNAL, best SSF: 0 security flags: NO_ANONYMOUS|NO_PLAINTEXT|NO_DICTIONARY features: WANT_CLIENT_FIRST|PROXY_AUTHENTICATION
Dienst/Deamon-Start einrichten
Um einen Cyrus-IMAP-Server, welcher als Dienst/Deamon als Hintergrundprozess läuft, auch nach einem Neustart des Servers zur Verfügung zu haben, soll der Dienst/Daemon mit dem Server mit gestartet werden, was mit nachfolgendem Befehl realisiert werden kann:
# chkconfig cyrus-imapd on
Eine Überprüfung, ob beim Neustart des Server der cyrus-imapd
-Dienst/Deamon wirklich mit gestartet wird, kann mit nachfolgendem Befehl erfolgen und sollte eine Anzeige, wie ebenfalls nachfolgend dargestellt ausgeben:
# chkconfig --list | grep cyrus-imapd cyrus-imapd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
iptables Regel
Damit der Cyrus-IMAP-Server auch erreichbar ist und nicht die e-Mail-Verwaltung über IMAP-Abfragen vom Paketfilter iptables
blockiert werden, muss nachfolgende Regel zum iptables
-Regelwerk hinzugefügt werden.
Um die aktuellen iptables
-Regeln erweitern zu können, sollten diese erst einmal aufgelistet werden, was mit nachfolgendem Befehl durchgeführt werden kann:
# iptables -L -nv --line-numbers Chain INPUT (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 3073 13M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 2 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 3 0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 4 1 60 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 5 7 224 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT 1793 packets, 1175K bytes) num pkts bytes target prot opt in out source destination
Nachfolgende Befehle, fügen folgende iptables
-Regeln dem iptables
-Regelwerk nach der Position 4 hinzu, ohne das der Paketfilter angehalten werden muss:
-A INPUT -p tcp --dport 993 -j ACCEPT
-A INPUT -p tcp --dport 143 -j ACCEPT
-A INPUT -p tcp --dport 24 -j ACCEPT
und hier die Befehle:
# iptables -I INPUT 5 -p tcp --dport 993 -j ACCEPT # iptables -I INPUT 5 -p tcp --dport 143 -j ACCEPT # iptables -I INPUT 5 -p tcp --dport 24 -j ACCEPT
Ein erneute Abfrage des iptables
-Regelwerts, sollte dann nachfolgend dargestellte Ausgabe ergeben, was mit folgendem Befehl durchgeführt werden kann:
# iptables -L -nv --line-numbers Chain INPUT (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 3110 13M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 2 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 3 0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 4 1 60 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 5 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:24 6 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:143 7 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:993 8 8 256 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT 3 packets, 348 bytes) num pkts bytes target prot opt in out source destination
Die neuen Zeilen sind an Position 5 (INPUT), Position 6 (INPUT) und Position 7 (INPUT) zu sehen, hier nachfolgend zur Verdeutlichung noch einmal dargestellt (nur relevanter Ausschnitt):
... 5 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:24 6 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:143 7 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:993 ...
Um diese iptables
-Regel dauerhaft, auch nach einem Neustart des Server, weiterhin im iptables
-Regelwerk zu speichern, muss nachfolgend dargestellter Befehl abschließend noch ausgeführt werden:
# service iptables save iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
Basis-Konfiguration
Die Grundlage der Konfiguration des Cyrus-IMAP-Servers ist in zwei Dateien hinterlegt:
/etc/cyrus.conf
und/etc/imapd.conf
Zusätzlich ist daruaf zu achten ab CentOS in der Version 6.x die Konfigurationsdatei
/etc/services
anzupassen!
/etc/cyrus.conf
Die Konfigurationsdatei /etc/cyrus.conf
gliedert sich in drei von geschweiften Klammern umschlossene Bereiche:
START{}
SERVICES{}
EVENTS{}
START{}
Der Bereich START{}
, ist für Dienste und Hilfsprogramme zuständig.
Nachfolgend nur informationstechnisch in der Konfigurationsdatei /etc/cyrus.conf
der Abschnitt START{}
(nur relevanter Ausschnitt):
... START { # do not delete this entry! recover cmd="ctl_cyrusdb -r" # this is only necessary if using idled for IMAP IDLE idled cmd="idled" } ...
HINWEIS - In diesem Bereich sind normalerweise KEINE Änderungen erforderlich
SERVICES{}
Der Bereich SERVICES{}
, stellt die Dienste für die Kommunikation zur Verfügung.
Je nach Einsatzvorstellung, können hier Dienste aktiviert oder dekativiert werden. In dem hier gezeigten Beispiel, sollen nur IMAP-Dienste angeboten werden, der Zugriff über das POP3-Protokoll soll nicht angeboten werden!
Nachfolgende Anpassungen sollen deshalb an der Konfigurationsdatei /etc/cyrus.conf
im Abschnitt SERVCIES{}
durchgeführt werden (nur relevanter Ausschnitt):
... # UNIX sockets start with a slash and are put into /var/lib/imap/sockets SERVICES { # add or remove based on preferences imap cmd="imapd" listen="imap" prefork=5 imaps cmd="imapd -s" listen="imaps" prefork=1 # Tachtler # default: pop3 cmd="pop3d" listen="pop3" prefork=3 # pop3 cmd="pop3d" listen="pop3" prefork=3 # Tachtler # default: pop3s cmd="pop3d -s" listen="pop3s" prefork=1 # pop3s cmd="pop3d -s" listen="pop3s" prefork=1 sieve cmd="timsieved" listen="sieve" prefork=0 # these are only necessary if receiving/exporting usenet via NNTP # nntp cmd="nntpd" listen="nntp" prefork=3 # nntps cmd="nntpd -s" listen="nntps" prefork=1 # at least one LMTP is required for delivery # Tachtler # default: # lmtp cmd="lmtpd" listen="lmtp" prefork=0 lmtp cmd="lmtpd -a" listen="lmtp" prefork=0 # Tachtler # default: lmtpunix cmd="lmtpd" listen="/var/lib/imap/socket/lmtp" prefork=1 # lmtpunix cmd="lmtpd" listen="/var/lib/imap/socket/lmtp" prefork=1 # this is only necessary if using notifications # Tachtler # default: # notify cmd="notifyd" listen="/var/lib/imap/socket/notify" proto="udp" prefork=1 notify cmd="notifyd" listen="/var/lib/imap/socket/notify" proto="udp" prefork=1 } ...
Folgende Änderungen wurden erfasst, mit nachfolgenden Hintergründen:
Deaktivieren des Zugriffs auf den Cyrus-IMAP-Servers über das POP3-Protokoll soll nicht angeboten werden, deshalb werden die Entsprechenden Einträge auskommentiert:
... # Tachtler # default: pop3 cmd="pop3d" listen="pop3" prefork=3 # pop3 cmd="pop3d" listen="pop3" prefork=3 # Tachtler # default: pop3s cmd="pop3d -s" listen="pop3s" prefork=1 # pop3s cmd="pop3d -s" listen="pop3s" prefork=1 ...
Da sich in diesem Beispiel der Cyrus-IMAP-Server nicht auf dem selben Server wie der MTA (Mail Transport Agent, z.B. Postfix befindet, kann hier die Verbindung via lmtp NICHT über einen Socket erfolgen, deshalb muss hier der entsprechende Eintrag auskommentiert werden und der dafür richtige Eintrag, welcher standardmäßig auskommentiert ist, aktiviert werden:
... # at least one LMTP is required for delivery # Tachtler # default: # lmtp cmd="lmtpd" listen="lmtp" prefork=0 lmtp cmd="lmtpd -a" listen="lmtp" prefork=0 # Tachtler # default: lmtpunix cmd="lmtpd" listen="/var/lib/imap/socket/lmtp" prefork=1 # lmtpunix cmd="lmtpd" listen="/var/lib/imap/socket/lmtp" prefork=1 ...
WICHTIG - Falls sich, wie in oben genanntem Beispiel der MTA (Mail-Server) und der IMAP-Server, NICHT auf dem selben Server befinden und die Übergabe der e-Mail an dem IMAP-Server via LMTP erfolgen soll, wie z.B. hier beschrieben:
dann ist die Angabe der Option „lmtpd -a“ erforderlich, ansonsten kommt es zu nachfolgender Fehlermeldung (nur relevanter Ausschnitt):
... Feb 6 14:25:44 rechner60 postfix/lmtp[5583]: 679B85F115: to=<root@tachtler.net>, relay=192.168.0.80[192.168.0.80]:24, delay=534, delays=534 /0.03/0.02/0,dsn=4.0.0, status=deferred (host 192.168.0.80[192.168.0.80] said: 430 Authentication required (in reply to MAIL FROM command)) ...
Die Option -a, kann in der MAN-Page von lmtpd
mit nachfolgendem Befehl nachgelesen werden (nur relevanter Ausschnitt):
# man lmtpd ... -a Preauthorize connections initiated on an internet socket, instead of requiring LMTP AUTH. This should only be used for connections coming from trusted hosts. ...
Die Aktivierung ermöglicht die Nutzung des Cyrus-IMAP-Server-Informationsdienstes, über den Informationen über eintreffende Nachrichten an ein weiteres Postfach weitergeleitet werden können:
... # this is only necessary if using notifications # Tachtler # default: # notify cmd="notifyd" listen="/var/lib/imap/socket/notify" proto="udp" prefork=1 notify cmd="notifyd" listen="/var/lib/imap/socket/notify" proto="udp" prefork=1 ...
EVENTS{}
Der Bereich EVENTS{}
, sind Dienste und Hilfsprogramme definiert, welche in regelmäßigen Abständen ausgeführt werden.
Hier soll in diesem Beispiel ein Dienst bzw. ein Hilfsprogramm hinzugefügt werden, welches sich squatter
nennt. Dieses Programm legt für jede Mailbox einen sogenannten „Squat-Volltext-Index“ an. Dadurch kann der Mail-Client bei einer Suche die betreffende Nachricht innerhalb der Mailbox schneller finden.
... EVENTS { # this is required checkpoint cmd="ctl_cyrusdb -c" period=30 # this is only necessary if using duplicate delivery suppression, # Sieve or NNTP delprune cmd="cyr_expire -E 3" at=0400 # this is only necessary if caching TLS sessions tlsprune cmd="tls_prune" at=0400 # Tachtler # this enables to build a squat-index, for faster search results # for better performance start with a high nice value squatter cmd="/bin/nice -n 19 /usr/lib/cyrus-imapd/squatter -r *" period=180 } ...
HINWEIS - Falls es bei nachfolgender Konfiguration des squatter
Index-Dienstes zu einer Fehlermeldung wie nachfolgend dargestellt kommt:
(Nur relevanter Ausschnitt)
... Nov 11 11:30:00 server-one squatter[22750]: indexing mailboxes Nov 11 11:30:00 server-one squatter[22750]: error opening looking up *: Mailbox does not exist ...
muss die Konfiguration, wie nachfolgend dargestellt angepasst werden:
(Nur relevanter Ausschnitt)
... # Tachtler # this enables to build a squat-index, for faster search results # for better performance start with a high nice value squatter cmd="/bin/nice -n 19 /usr/lib/cyrus-imapd/squatter -r user.*" period=180 ...
/etc/imapd.conf
Die Konfigurationsdatei /etc/imapd.conf
ist die Hauptkonfigurationsdatei des Cyrus-IMAP-Servers. Die Konfigurationsdateieinträge sind nach der Syntax
Schlüssel: Wert
aufgebaut.
Die Werte des jeweiligen Schlüsseln können bzw. müssen wie folgt dargestellt angegeben werden:
- positiver Wert:
1, yes, on, t, true
- negativer Wert:
0, no, off, f, false
- Eintrag:
<Text>
Die Standard Konfigurationsdatei, sieht wie nachfolgend dargestellt aus (vollständige Konfigurationsdatei):
configdirectory: /var/lib/imap
partition-default: /var/spool/imap
admins: cyrus
sievedir: /var/lib/imap/sieve
sendmail: /usr/sbin/sendmail
hashimapspool: true
sasl_pwcheck_method: saslauthd
sasl_mech_list: PLAIN
tls_cert_file: /etc/pki/cyrus-imapd/cyrus-imapd.pem
tls_key_file: /etc/pki/cyrus-imapd/cyrus-imapd.pem
tls_ca_file: /etc/pki/tls/certs/ca-bundle.crt
# uncomment this if you're operating in a DSCP environment (RFC-4594)
# qosmarking: af13
Nachfolgende Änderungen an der Konfigurationsdatei /etc/imapd.conf
werden in diesem Beispiel durchgeführt (vollständige Konfigurationsdatei):
admins: cyrus configdirectory: /var/lib/imap # Tachtler defaultdomain: tachtler.net # Tachtler # default: hashimapspool: true hashimapspool: 1 # Tachtler lmtp_downcase_rcpt: 1 partition-default: /var/spool/imap # Tachtler quotawarn: 90 # Tachtler unixhierarchysep: 1 # Tachtler username_tolower: 1 # Tachtler timeout: 60 # Tachtler # default: sasl_pwcheck_method: saslauthd sasl_pwcheck_method: auxprop sasl_auxprop_plugin: ldapdb # Tachtler # default: sasl_mech_list: PLAIN sasl_mech_list: PLAIN DIGEST-MD5 CRAM-MD5 LOGIN # Tachtler sasl_ldapdb_uri: ldap://ldap.dmz.tachtler.net sasl_ldapdb_id: SASLErsatzauthentifizierer sasl_ldapdb_pw: geheim sasl_ldapdb_mech: DIGEST-MD5 sievedir: /var/lib/imap/sieve sendmail: /usr/sbin/sendmailtls_cert_file: /etc/pki/cyrus-imapd/cyrus-imapd.pem tls_key_file: /etc/pki/cyrus-imapd/cyrus-imapd.pem tls_ca_file: /etc/pki/tls/certs/ca-bundle.crt # Tachtler virtdomains: userid # uncomment this if you're operating in a DSCP environment (RFC-4594) # qosmarking: af13
Folgende Änderungen wurden mit nachfolgenden Hintergründen durchgeführt:
Angabe einer Standard-Domain, falls Postfächer für mehrere Domains verwaltet werden sollen:
# Tachtler defaultdomain: tachtler.net
Änderung des Wertes für die Generierung eines Hash-Wertes für alle Postfächer, was zur Leistungssteigerung unter bestimmten Umständen führen kann:
# Tachtler
# default: hashimapspool: true
hashimapspool: 1
Umwandlung der e-Mail-Adresse des Empfängers in Kleinbuchstaben. Nicht ganz RFC-Konform, jedoch vereinfacht die Verwaltung:
# Tachtler
lmtp_downcase_rcpt: 1
Ausgabe einer Warnung beim Anmelden am Cyrus-IMAP-Server, wenn der definierte Prozentwert der Größe eines Postfaches bereits erreicht ist.
HINWEIS - NUR sinnvoll, wenn eine Postfachgrößenbeschränkung (quota) definiert ist !!!:
# Tachtler
quotawarn: 90
Im Zusammenhang mir der Verwendung von virtuellen Domains, wird NICHT der Punkt als Trennzeichen bei der Abbildung einer Postfach-Struktur verwendet, sondern das unter UNIX-Betriebssystem übliche / -Zeichen (Unix-Separator) verwendet werden:
# Tachtler
unixhierarchysep: 1
Umwandlung des Benutzernamens in Kleinbuchstaben zur Vereinfachung der Benutzerverwaltung:
# Tachtler
username_tolower: 1
Setzen der „Session“-Zeit, wie lange eine Verbindung mit einem Client aufrecht erhalten wird:
(Standard, ohne eine Angabe in der Konfigurationsdatei ist 30 Minuten)
# Tachtler
timeout: 60
Wechseln der Authentifizierungsmethode von saslauthd
auf auxprop
, zur Nutzung einer Authentifizierung gegen eine OpenLDAP-Server:
# Tachtler # default: sasl_pwcheck_method: saslauthd sasl_pwcheck_method: auxprop sasl_auxprop_plugin: ldapdb
UND
# Tachtler # default: sasl_mech_list: PLAIN sasl_mech_list: PLAIN DIGEST-MD5 CRAM-MD5 LOGIN # Tachtler sasl_ldapdb_uri: ldap://ldap.dmz.tachtler.net sasl_ldapdb_id: SASLErsatzauthentifizierer sasl_ldapdb_pw: geheim sasl_ldapdb_mech: PLAIN DIGEST-MD5 CRAM-MD5 LOGIN
Ermöglicht den Umgang des Cyrus-IMAP-Servers mit virtuellen Domains:
HINWEIS - Bitte NICHT virtdomains: yes|on verwenden, da hier die Anmeldung mit unterschiedlichen FQDN nicht funktionieren würde !!!
# Tachtler virtdomains: userid
/etc/services
Nachfolgende Anpassungen müssen durchgeführt werden, da sonst auf dem Port 4190
der Daemon cyrus-master
zur Verwaltung von Sieve
-Scripten NICHT lauscht (nur relevanter Ausschnitt)!
...
# Tachtler
sieve 4190/tcp sieve # Sieve Mail Filter Daemon
...
/etc/openldap/slapd.conf
WICHTIG - Es sind einige Konfigurationen am OpenLDAP-Server durchzuführen, deshalb MÜSSEN nachfolgende Änderungen unter nachfolgendem Link innerhalb dieses DokuWiki's am OpenLDAP-Server durchgeführt werden !!!
WICHTIG - Falls die Bearbeitungsschritte wie im oben beschriebenen Link NICHT durchgeführt werden, funktioniert die Authentifizierung NICHT !!!
Erster Start
Jetzt kann der cyrus-imapd
-Daemon/Dienst zum ersten mal gestartet werden was mit nachfolgendem Befehle durchgeführt werden kann:
# service cyrus-imapd start Importing cyrus-imapd databases: [ OK ] Starting cyrus-imapd: [ OK ]
Eine Überprüfung der LOG-Einträge kann mit nachfolgendem Befehl durchgeführt werden:
# less /var/log/maillog Dec 12 13:52:41 rechner80 master[19747]: setrlimit: Unable to set file descriptors limit to -1: Operation not permitted Dec 12 13:52:41 rechner80 master[19747]: retrying with 1024 (current max) Dec 12 13:52:41 rechner80 master[19747]: process started Dec 12 13:52:41 rechner80 master[19748]: about to exec /usr/lib/cyrus-imapd/ctl_cyrusdb Dec 12 13:52:41 rechner80 ctl_cyrusdb[19748]: recovering cyrus databases Dec 12 13:52:41 rechner80 ctl_cyrusdb[19748]: skiplist: checkpointed /var/lib/imap/mailboxes.db (0 records, 144 bytes) in 0 seconds Dec 12 13:52:41 rechner80 ctl_cyrusdb[19748]: skiplist: checkpointed /var/lib/imap/annotations.db (0 records, 144 bytes) in 0 seconds Dec 12 13:52:41 rechner80 ctl_cyrusdb[19748]: done recovering cyrus databases Dec 12 13:52:41 rechner80 master[19750]: about to exec /usr/lib/cyrus-imapd/idled Dec 12 13:52:42 rechner80 master[19747]: unable to setsocketopt(IP_TOS): Operation not supported Dec 12 13:52:42 rechner80 master[19747]: ready for work Dec 12 13:52:42 rechner80 master[19768]: about to exec /bin/nice Dec 12 13:52:42 rechner80 master[19769]: about to exec /usr/lib/cyrus-imapd/ctl_cyrusdb Dec 12 13:52:42 rechner80 master[19772]: about to exec /usr/lib/cyrus-imapd/notifyd Dec 12 13:52:42 rechner80 master[19770]: about to exec /usr/lib/cyrus-imapd/imapd Dec 12 13:52:42 rechner80 master[19771]: about to exec /usr/lib/cyrus-imapd/imapd Dec 12 13:52:42 rechner80 imap[19770]: executed Dec 12 13:52:42 rechner80 ctl_cyrusdb[19769]: checkpointing cyrus databases Dec 12 13:52:42 rechner80 notify[19772]: executed Dec 12 13:52:42 rechner80 imaps[19771]: executed Dec 12 13:52:42 rechner80 squatter[19768]: indexing mailboxes Dec 12 13:52:42 rechner80 squatter[19768]: error opening looking up *: Mailbox does not exist Dec 12 13:52:42 rechner80 squatter[19768]: done indexing mailboxes Dec 12 13:52:42 rechner80 master[19747]: process 19768 exited, status 0 Dec 12 13:52:42 rechner80 master[19773]: about to exec /usr/lib/cyrus-imapd/imapd Dec 12 13:52:42 rechner80 imap[19773]: executed Dec 12 13:52:42 rechner80 ctl_cyrusdb[19769]: archiving log file: /var/lib/imap/db/log.0000000001 Dec 12 13:52:42 rechner80 ctl_cyrusdb[19769]: archiving log file: /var/lib/imap/db/log.0000000001 Dec 12 13:52:42 rechner80 ctl_cyrusdb[19769]: archiving log file: /var/lib/imap/db/log.0000000001 Dec 12 13:52:42 rechner80 ctl_cyrusdb[19769]: archiving database file: /var/lib/imap/annotations.db Dec 12 13:52:42 rechner80 ctl_cyrusdb[19769]: archiving database file: /var/lib/imap/mailboxes.db Dec 12 13:52:42 rechner80 ctl_cyrusdb[19769]: archiving log file: /var/lib/imap/db/log.0000000001 Dec 12 13:52:42 rechner80 ctl_cyrusdb[19769]: done checkpointing cyrus databases Dec 12 13:52:42 rechner80 master[19747]: process 19769 exited, status 0 Dec 12 13:52:42 rechner80 master[19774]: about to exec /usr/lib/cyrus-imapd/imapd Dec 12 13:52:42 rechner80 imap[19774]: executed Dec 12 13:52:44 rechner80 master[19777]: about to exec /usr/lib/cyrus-imapd/imapd Dec 12 13:52:44 rechner80 master[19778]: about to exec /usr/lib/cyrus-imapd/imapd Dec 12 13:52:44 rechner80 imap[19777]: executed Dec 12 13:52:44 rechner80 imap[19778]: executed
Überprüfung erfolgreicher Start
Um zu Überprüfen, ob der Start des cyrus-imapd
-Daemons/Dienstes erfolgreich durchgeführt wurden, kann nachfolgender Befehl genutzt werden:
# netstat -tulpen | grep cyrus-master tcp 0 0 0.0.0.0:24 0.0.0.0:* LISTEN 0 40925 19747/cyrus-master tcp 0 0 0.0.0.0:4190 0.0.0.0:* LISTEN 0 40919 19747/cyrus-master tcp 0 0 0.0.0.0:993 0.0.0.0:* LISTEN 0 40913 19747/cyrus-master tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN 0 40905 19747/cyrus-master
oder auch dieser Befehl:
# service cyrus-imapd status cyrus-imapd (pid 19747) is running...
Testanmeldung mit imtest
HINWEIS Der nachfolgende Test setzt einen Benutzer im OpenLDAP-Server mit Namen
- testuser voraus und dessen
- Passwort muss zwingend im Klartext gespeichert sein !!!
Mit nachfolgendem Befehl wird der Benutzer testuser
am Cyrus-IMAP-Mailserver mit Authentifizierung gegen einen OpenLDAP-Server angemeldet.
# imtest -p imap -a testuser -m DIGEST-MD5 localhost S: * OK [CAPABILITY IMAP4 IMAP4rev1 LITERAL+ ID STARTTLS LOGINDISABLED AUTH=DIGEST-MD5 AUTH=CRAM-MD5 SASL-IR COMPRESS=DEFLATE] rechner80.dmz.tachtler.net Cyrus IMAP v2.3.16-Fedora-RPM-2.3.16-6.el6_1.3 server ready C: A01 AUTHENTICATE DIGEST-MD5 S: + bm9uY2U9IkZkZDRjQUpjeHgvTXo2RkJMYU4xU0cvSGk4SkNWZHFxN3orVnFFY2lzb2s9IixyZWFsbT0idm1sMDAwMDgwLmRtei50YWNodGxlci5uZXQiLHFvcD0iYXV0aCxhdXRoLWludCxhdXRoLWNvbmYiLGNpcGhlcj0icmM0LTQwLHJjNC01NixyYzQsZGVzLDNkZXMiLG1heGJ1Zj00MDk2LGNoYXJzZXQ9dXRmLTgsYWxnb3JpdGhtPW1kNS1zZXNz Please enter your password: C: dXNlcm5hbWU9InRlc3R1c2VyIixyZWFsbT0idm1sMDAwMDgwLmRtei50YWNodGxlci5uZXQiLG5vbmNlPSJGZGQ0Y0FKY3h4L016NkZCTGFOMVNHL0hpOEpDVmRxcTd6K1ZxRWNpc29rPSIsY25vbmNlPSIzQkU5N3NPdG10MWQ3VStGalZwRVVWd2NqZG9mN1Y1UUx2eWczK2tyb3FrPSIsbmM9MDAwMDAwMDEscW9wPWF1dGgtY29uZixjaXBoZXI9cmM0LG1heGJ1Zj0xMDI0LGRpZ2VzdC11cmk9ImltYXAvbG9jYWxob3N0IixyZXNwb25zZT0yZjAzYTllZTdlYjZhY2RkMDA4Y2IxZjk3NmE2NmExZQ== S: + cnNwYXV0aD02ZjBkNWY0ODg2MGMzOWMyZGNmZWY3YTBiODI1Mjk4Mg== C: S: A01 OK Success (privacy protection) Authenticated. Security strength factor: 128 C: C01 CAPABILITY S: * CAPABILITY IMAP4 IMAP4rev1 LITERAL+ ID LOGINDISABLED AUTH=DIGEST-MD5 AUTH=CRAM-MD5 COMPRESS=DEFLATE ACL RIGHTS=kxte QUOTA MAILBOX-REFERRALS NAMESPACE UIDPLUS NO_ATOMIC_RENAME UNSELECT CHILDREN MULTIAPPEND BINARY SORT SORT=MODSEQ THREAD=ORDEREDSUBJECT THREAD=REFERENCES ANNOTATEMORE CATENATE CONDSTORE SCAN IDLE LISTEXT LIST-SUBSCRIBED X-NETSCAPE URLAUTH S: C01 OK Completed c02 logout * BYE LOGOUT received c02 OK Completed Connection closed.
Mailboxen einrichten
Aufgrund der bisher erfolgten Konfiguration, soll nun eine Mailbox (Postfach) eingerichtet werden, welche auch die Nutzung von virtuellen Domains unterstützt. Außerdem wurden, wie schon in der bereits erfolgten Konfiguration durchgeführt, Vorkehrungen getroffen, die auch die Verwendung eines Punktes als Trennzeichen im Benutzernamen erlauben.
Bevor mit der Neuanlage einer Mailbox (Postfach) begonnen werden kann, ist noch zu erwähnen, das hier der shell
, oder auch comamnd line
Programm
cyradm
zu Einsatz kommen soll.
Je nach Konfiguration, ist der Standardbenutzer zum Einsatz für das shell
, bzw. comamnd line
Programm cyradm
ein Benutzer Namens
cyrus
HINWEIS - Wenn alle Konfigurationen wie hier bereits beschrieben durchgeführt wurden, erfolgt die Authentifizierung
- mit der Methode: DIGEST-MD5
- es muss ein Benutzer
cyrus
im OpenLDAP - mit einem Klartext-Passwort
verfügbar sein!
Eine Anmeldung zur Nutzung des shell
, bzw. comamnd line
Programms cyradm
mit dem Benutzer cyrus
, ist daher erforderlich und kann mit nachfolgendem Befehl durchgeführt werden, es erscheint dann ein Prompt
:
# cyradm -auth DIGEST-MD5 localhost -user cyrus Password: localhost>
Durch die Eingabe des Befehls help
wird nachfolgende Auswahl an Befehlen als Abfrageergebnis zurückgeliefert:
# cyradm -auth DIGEST-MD5 localhost -user cyrus Password: localhost> help authenticate, login, auth authenticate to server chdir, cd change current directory createmailbox, create, cm create mailbox deleteaclmailbox, deleteacl, dam remove ACLs from mailbox deletemailbox, delete, dm delete mailbox disconnect, disc disconnect from current server exit, quit exit cyradm help, ? show commands info display mailbox/server metadata listacl, lam, listaclmailbox list ACLs on mailbox listmailbox, lm list mailboxes listquota, lq list quotas on specified root listquotaroot, lqr, lqm show quota roots and quotas for mailbox mboxcfg, mboxconfig configure mailbox reconstruct reconstruct mailbox (if supported) renamemailbox, rename, renm rename (and optionally relocate) mailbox server, servername, connect show current server or connect to server setaclmailbox, sam, setacl set ACLs on mailbox setinfo set server metadata setquota, sq set quota on mailbox or resource subscribe, sub subscribe to a mailbox unsubscribe, unsub unsubscribe from a mailbox version, ver display version info of current server xfermailbox, xfer transfer (relocate) a mailbox to a different server
Die Anlage einer Mailbox (Postfach), für den Benutzer klaus
, kann nun mit nachfolgendem Befehl durchgeführt werden:
localhost> cm user/klaus@tachtler.net localhost>
HINWEIS - Es erfolgt keine Meldung für ein positives Ergebnis !!!
Ob die Mailbox (Postfach) tatsächlich angelegt wurde, kann mit nachfolgendem Befehl überprüft werden:
localhost> lm user/klaus (\HasNoChildren)
Mailboxen Quota einrichten
Eine Anmeldung zur Nutzung des shell
, bzw. comamnd line
Programms cyradm
mit dem Benutzer cyrus
, ist auch hier erforderlich und kann mit nachfolgendem Befehl durchgeführt werden, es erscheint dann ein Prompt
:
# cyradm -auth DIGEST-MD5 localhost -user cyrus Password: localhost>
Zur Überprüfung ob bereits ein Quota (Größenbeschränkung) für die Mailbox (Postfach) besteht, kann der nachfolgende Befehl genutzt werden:
localhost> lq user/klaus@tachtler.net localhost>
HINWEIS - Eine leere Ausgabe bedeutet, das keine Quota (Größenbeschränkung) für die Mailbox (Postfach) gesetzt ist !!!
Um nun eine Quota (Größenbeschränkung) für die Mailbox (Postfach) einzurichten, kann nachfolgender Befehl genutzt werden:
localhost> sq user/klaus@tachtler.net 1024000 quota:1024000 localhost>
HINWEIS - Die eingerichtete Größenbeschränkung) für die Mailbox (Postfach) einspricht in diesem Beispiel 1 GigaByte !
Zur erneuten Überprüfung ob die Quota (Größenbeschränkung) für die Mailbox (Postfach) jetzt eingerichtet wurde, kann der wieder nachfolgende Befehl genutzt werden:
localhost> lq user/klaus@tachtler.net STORAGE 0/1024000 (0%) localhost>
Mailboxen Ordner einrichten
Eine Anmeldung zur Nutzung des shell
, bzw. comamnd line
Programms cyradm
mit dem Benutzer cyrus
, ist auch hier erforderlich und kann mit nachfolgendem Befehl durchgeführt werden, es erscheint dann ein Prompt
:
# cyradm -auth DIGEST-MD5 localhost -user cyrus Password: localhost>
Um die Mailbox (Postfach) eines Benutzer - hier des Benutzers klaus
aufzulisten, kann nachfolgender Befehl genutzt werden:
localhost> lm user/klaus user/klaus (\HasNoChildren) localhost>
HINWEIS - Die oben gezeigte Ausgabe offenbart, das keine Ordner innerhalb der Mailbox (Postfach) existieren!
Mit nachfolgendem Befehlen, können nachfolgende Ordner angelegt werden:
Entwürfe
Gesendete Nachrichten
Papierkorb
Spam
Hier die Befehel, für den Benutzer klaus
:
localhost> cm user/klaus/"Entw&APw-rfe" localhost> cm user/klaus/"Gesendete Nachrichten" localhost> cm user/klaus/Papierkorb localhost> cm user/klaus/Spam
Um die Mailbox (Postfach) und alle Unterordner eines Benutzer - hier des Benutzers klaus
aufzulisten, kann nachfolgender Befehl genutzt werden:
localhost> lm user/klaus/* user/klaus/Entw&APw-rfe (\HasNoChildren) user/klaus/Gesendete Nachrichten (\HasNoChildren) user/klaus/Papierkorb (\HasNoChildren) user/klaus/Spam (\HasNoChildren) localhost>
Abschließend kann nach dem Verlassen des shell
, bzw. comamnd line
Programms cyradm
mit nachfolgendem Befehl:
localhost> quit
mit ebenfalls nachfolgend gezeigtem Befehl, eine Auflistung der Verzeichnisstruktur des Benutzers - hier klaus
, durchgeführt werden:
# ll /var/spool/imap/k/user/klaus total 28 -rw------- 1 cyrus mail 4 Dec 15 13:00 cyrus.cache -rw------- 1 cyrus mail 184 Dec 15 13:03 cyrus.header -rw------- 1 cyrus mail 96 Dec 15 13:00 cyrus.index drwx------ 2 cyrus mail 4096 Dec 15 13:19 Entw&APw-rfe drwx------ 2 cyrus mail 4096 Dec 15 13:20 Gesendete Nachrichten drwx------ 2 cyrus mail 4096 Dec 15 13:20 Papierkorb drwx------ 2 cyrus mail 4096 Dec 15 13:20 Spam
Mailboxen löschen
Eine Anmeldung zur Nutzung des shell
, bzw. comamnd line
Programms cyradm
mit dem Benutzer cyrus
, ist wiederum auch hier erforderlich und kann mit nachfolgendem Befehl durchgeführt werden, es erscheint dann ein Prompt
:
# cyradm -auth DIGEST-MD5 localhost -user cyrus Password: localhost>
HINWEIS - Damit der Benutzer/Administrator - hier der Benutzer cyrus
die Mailbox (Postfach) auch löschen kann, benötigt dieser auch die entsprechenden Rechte zur Durchführung der Aktion.
Dieses Recht kann der Benutzer/Administrator - hier der Benutzer cyrus
sich selbst für die Mailbox (Postfach) - hier die des Benutzers klaus
mit nachfolgendem Befehl, selbst erteilen:
localhost> sam user/klaus@tachtler.net cyrus all localhost>
HINWEIS - Auch hier erfolgt keine Meldung für ein positives Ergebnis !!!
Die Abfrage, welche Rechte an der Mailbox (Postfach) des Benutzer klaus
vergeben sind, kann mit nachfolgendem Befehl ermittelt werden:
localhost> lam user/klaus@tachtler.net klaus lrswipkxtecda cyrus lrswipkxtecda localhost>
Somit steht dem Befehl, welcher zur Löschung einer Mailbox (Postfach) genutzt werden kann, und dessen erfolgreichen Ausführung, nichts mehr im Wege:
localhost> dm user/klaus@tachtler.net localhost>
Ob die Mailbox (Postfach) noch existiert, oder tatsächlich gelöscht wurde, kann wiederum mit nachfolgendem Befehl überprüft werden:
localhost> lm localhost>
HINWEIS - Es sollte keine Mailbox (Postfach) mehr erscheinen!
Problembehebung
Fehler: DBERROR
Falls nachfolge Fehlermeldung im Log
/var/log/maillog
... Feb 1 10:38:34 rechner80 master[574]: about to exec /usr/lib/cyrus-imapd/lmtpd Feb 1 10:38:34 rechner80 lmtp[574]: executed Feb 1 10:38:34 rechner80 lmtp[574]: DBERROR db4: Logging region out of memory; you may need to increase its size Feb 1 10:38:34 rechner80 lmtp[574]: DBERROR: opening /var/lib/imap/deliver.db: Cannot allocate memory Feb 1 10:38:34 rechner80 lmtp[574]: DBERROR: opening /var/lib/imap/deliver.db: cyrusdb error Feb 1 10:38:34 rechner80 lmtp[574]: FATAL: lmtpd: unable to init duplicate delivery database ...
erscheinen sollte, bedeutet dies, dass der Standardwert für die Größe des cache Speichers der Log-Meldungen zu klein ist.
Mit nachfolgendem Befehl, kann die Standardgröße des Speichers für die Log-Meldungen abgefragt werden:
# db_stat -h /var/lib/imap/db -l | grep "region size" 96KB Log region size
HINWEIS - Die Standardgröße beträgt hier nur 96 KiloByte (96.000 Byte) !!!
Zusätzlich kann mit nachfolgendem Befehl, noch die
- Gesamte cache Speichergröße
und die
- Pool bezogene Speichergröße
ermittelt werden. Auch diese Werte sind relativ knapp bemessen!
# db_stat -h /var/lib/imap/db -m | grep -i "cache size" 642KB 24B Total cache size 648KB Pool individual cache size
Fehler: DBERROR - Lösung
Abhilfe für dieses Problem, kann durch anlegen einer Konfigurationsdatei im Verzeichnis
/var/lib/imap/db
mit dem Namen
DB_CONFIG
geschaffen werden.
In diese neu anzulegende Konfigurationsdatei sind z.B. nachfolgende Konfigurationen einzutragen: (komplette Konfigurationsdatei)
set_cachesize 0 2097152 1 set_lg_regionmax 1048576
Diese Einträge erhöhen die nachfolgenden Werte wie folgt:
- Gesamte cache Speichergröße auf 2 MB
- Pool bezogene Speichergröße auf 2 MB
- Log Speichergröße auf 1 MB
Um die neuen cache Speichergrößen zu aktivieren, ist nur eine Neustart des Cyrus erforderlich, was mit nachfolgendem Befehl erfolgen kann:
# service cyrus-imapd restart Shutting down cyrus-imapd: [ OK ] Exporting cyrus-imapd databases: [ OK ] Importing cyrus-imapd databases: [ OK ] Starting cyrus-imapd: [ OK ]
Anschließend können die nachfolgenden Befehle erneut abgefragt werden und eine Ausgabe, wie die nachfolgende, sollte dann erscheinen. (alle Befehle)
# cat /var/lib/imap/db/DB_CONFIG set_cachesize 0 2097152 1 set_lg_regionmax 1048576
# db_stat -h /var/lib/imap/db -l | grep "region size" 1MB 32KB Log region size
# db_stat -h /var/lib/imap/db -m | grep -i "cache size" 2MB 514KB 24B Total cache size 2MB 520KB Pool individual cache size
Fehler: Quota inkorrekt
Falls die Quota-Berechnung nach z.B. einem restore nicht mehr stimmen sollte, kann dies mit nachfolgendem Befehl überprüft werden:
Als Beispiel ist hier der Benutzer klaus mit einem Postfach das in Wirklichkeit zu ca. 5% ausgelastet ist, falsch berechnet und zeigt nur ca. 0,24% an, was mit nachfolgender Abfrage überprüft werden kann:
cat /var/lib/imap/quota/k/user.klaus 236170 1024000
Fehler: Quota inkorrekt - Lösung
Nachfolgender Befehl korrigiert die Quota-Berechnung:
# /usr/lib/cyrus-imapd/quota -f user.klaus: usage was 236170, now 53050155 Quota % Used Used Root 1024000 5 51806 user/klaus 1024000 2 20540 user/petra