= Introduction = ||<>|| Cyrus is one of the most widely used IMAP/POP servers. Cyrus is apreciated for virtualisation of mailboxes and cool stuff like server side filtering (Sieve) or shared folders. It is frequently used in universities. In this howto, a basic installation of Cyrus with authentication on PAM will be explained. = Installation = Cyrus is in the main repository of Ubuntu (and as a consequence benefit from canonical security support). Install the following packages: {{{cyrus-admin-2.2 cyrus-clients-2.2 cyrus-imapd-2.2 sasl2-bin}}} (see InstallingSoftware). If you plan to support POP3 protocol install also {{{cyrus-pop3d-2.2}}} If you do not have a [[http://en.wikipedia.org/wiki/Mail_transfer_agent|MTA]] yet, this step will install {{{postfix}}}. Please refer to the [[Postfix]] page for details. = Configuration = == Cyrus == Cyrus configuration is done in two configurations files: {{{/etc/imapd.conf}}} and {{{/etc/cyrus.conf}}}. First, edit the {{{/etc/cyrus.conf}}} to activate the protocols you want. Here, imap and imaps will be activated: {{{ 8<---------------------------------------- SERVICES { # --- Normal cyrus spool, or Murder backends --- # add or remove based on preferences imap cmd="imapd -U 30" listen="imap" prefork=0 maxchild=100 imaps cmd="imapd -s -U 30" listen="imaps" prefork=0 maxchild=100 #pop3 cmd="pop3d -U 30" listen="pop3" prefork=0 maxchild=50 #pop3s cmd="pop3d -s -U 30" listen="pop3s" prefork=0 maxchild=50 8<---------------------------------------- }}} You might need to update the location of the UNIX socket if using lmtp. At least in Ubuntu 8.04 the location is {{{/var/run/cyrus/socket/lmtp}}}. In postfix set accordingly. Then edit {{{/etc/imapd.conf}}} (do not believe the name, it concerns general Cyrus stuff configuration). Only some parameters will be focused as most of options will match most of the needs. {{{ 8<---------------------------------------- # UNIX Hierarchy Convention # Set to yes, and cyrus will accept dots in names, and use the forward # slash "/" to delimit levels of the hierarchy. This is done by converting # internally all dots to "^", and all "/" to dots. So the "rabbit.holes" # mailbox of user "helmer.fudd" is stored in "user.elmer^fud.rabbit^holes" unixhierarchysep: no 8<---------------------------------------- }}} By default, unixhierarchysep if set to {{{no}}} which means that the separator is "." and not "/". You will have to turn in to {{{yes}}} if you want your mailbox to contains "." for example if you use mail addresses for naming your mailboxes. {{{ 8<---------------------------------------- # Uncomment the following and add the space-separated users who # have admin rights for all services. admins: cyrus 8<---------------------------------------- }}} This parameter defines an administrator for all the services. It will be required for administration operations like mailbox creation. {{{ 8<---------------------------------------- # Do note that, since sasl will be run as user cyrus, you may have a lot of # trouble to set this up right. sasl_pwcheck_method: saslauthd 8<---------------------------------------- }}} Indicates the method used for user authentication. {{{saslauthd}}} can also be used for Postfix authentication, as detailed in [[Postfix]] page. {{{ 8<---------------------------------------- # Force PLAIN/LOGIN authentication only # (you need to uncomment this if you are not using an auxprop-based SASL # mechanism. saslauthd users, that means you!). And pay attention to # sasl_minimum_layer and allowapop below, too. sasl_mech_list: PLAIN 8<---------------------------------------- }}} Last, change the {{{/etc/default/saslauthd}}}: {{{ # This needs to be uncommented before saslauthd will be run automatically START=yes # You must specify the authentication mechanisms you wish to use. # This defaults to "pam" for PAM support, but may also include # "shadow" or "sasldb", like this: MECHANISMS="pam" }}} Your authentication will be based on PAM. Probabily PAM is correctly setup on your machine. Just launch {{{saslauthd}}} daemon: {{{ # /etc/init.d/saslauthd start }}} == Mail Transfer Agent == You have to configure your mail transfer agent to deliver your messages in your cyrus mailbox. In this howto, Postfix MTA will be presented. Feel free to add your favorite MTA. === Postfix === With Postfix, there are two ways of delivering messages in you mailbox: with a special transport named cyrus, or via lmtp (which is a protocol more or less similar to smtp). '''Choose the one you prefer'''. The {{{cyrus}}} transport is simple, {{{lmtp}}} is more powerful (i.e. you can communicate with lmtp between machines). ==== cyrus transport ==== In your postfix {{{main.cf}}} configuration file, add the following line: {{{ mailbox_transport = cyrus }}} On Ubuntu installation, the transport {{{cyrus}}} is NOT already configured in {{{/etc/postfix/master.cf}}}. You must add manually at the end of {{{master.cf}}} the following lines: {{{ # The Cyrus deliver program has changed incompatibly, multiple times. cyrus unix - n n - - pipe flags=R user=cyrus argv=/usr/sbin/cyrdeliver -e -m "${extension}" ${user} }}} ==== lmtp ==== In your postfix {{{main.cf}}} configuration file, add the following line: {{{ mailbox_transport = lmtp:unix:/var/run/lmtp }}} By default, on Ubuntu, the Unix socket lmtp is opened. Make sure the socket matches the socket specified in your {{{/etc/cyrus.conf}}} and {{{/etc/imapd.conf}}}. In your postfix {{{master.cf}}} configuration file, edit the following line: {{{ lmtp unix - - - - - lmtp }}} to {{{ lmtp unix - - n - - lmtp }}} Otherwise, "No such file or directory" errors will be logged in the {{{/var/log/mail.log}}} as postfix tries to look for the socket in a chrooted environment. Finally add postfix user to the mail group. {{{ adduser postfix mail }}} = Mailbox creation = First, you have define a "password" for the user admin for the cyrusadm. With root make this: {{{ # saslpasswd2 -c cyrus Password: TYPE YOUR CYRUS PASSWORD HERE Again (for verification): RETYPE YOUR CYRUS PASSWORD }}} and: {{{ # passwd cyrus Enter new UNIX password: TYPE YOUR CYRUS PASSWORD HERE Retype new UNIX password: RETYPE YOUR CYRUS PASSWORD }}} You also have to create the mailboxes for the users. User the {{{cyradm}}} utility for that: {{{ cyradm --user cyrus localhost IMAP Password: localhost> }}} You can have the full description of the commands available by typing {{{help}}}. We will give more details in the section Administration & Maintenance. Mailbox creation is done like this: {{{ localhost>cm user.toto }}} Dot not forget the prefix {{{user.}}} or the mailbox created will be considered as a shared mailbox. If you choose for {{{unixhierarchysep: yes}}} in /etc/imapd.conf the prefix must be {{{user/}}} = Test = Test that your installation works correctly: {{{ # telnet localhost imap Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. * OK hostname Cyrus IMAP4 v2.1.18-IPv6-Debian-2.1.18-2ubuntu2 server ready imap login user password imap OK User logged in }}} Where ''user'' and ''password'' are your login and password on the server. If it does not work check {{{/var/log/mail.log}}} for evidence. = Administration / Maintenance = = Links = [[http://www.tldp.org/HOWTO/Postfix-Cyrus-Web-cyradm-HOWTO/|Postfix Cyrus Web cyradm HOWTO]] ---- CategoryEmail CategoryNetworking