--- cyrus-imapd-2.2-2.2.13.orig/sieve/y.tab.h +++ cyrus-imapd-2.2-2.2.13/sieve/y.tab.h @@ -0,0 +1,204 @@ + +/* A Bison parser, made by GNU Bison 2.4.1. */ + +/* Skeleton interface for Bison's Yacc-like parsers in C + + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + NUMBER = 258, + STRING = 259, + IF = 260, + ELSIF = 261, + ELSE = 262, + REJCT = 263, + FILEINTO = 264, + REDIRECT = 265, + KEEP = 266, + STOP = 267, + DISCARD = 268, + VACATION = 269, + REQUIRE = 270, + SETFLAG = 271, + ADDFLAG = 272, + REMOVEFLAG = 273, + MARK = 274, + UNMARK = 275, + NOTIFY = 276, + DENOTIFY = 277, + ANYOF = 278, + ALLOF = 279, + EXISTS = 280, + SFALSE = 281, + STRUE = 282, + HEADER = 283, + NOT = 284, + SIZE = 285, + ADDRESS = 286, + ENVELOPE = 287, + COMPARATOR = 288, + IS = 289, + CONTAINS = 290, + MATCHES = 291, + REGEX = 292, + COUNT = 293, + VALUE = 294, + OVER = 295, + UNDER = 296, + GT = 297, + GE = 298, + LT = 299, + LE = 300, + EQ = 301, + NE = 302, + ALL = 303, + LOCALPART = 304, + DOMAIN = 305, + USER = 306, + DETAIL = 307, + DAYS = 308, + ADDRESSES = 309, + SUBJECT = 310, + MIME = 311, + METHOD = 312, + ID = 313, + OPTIONS = 314, + LOW = 315, + NORMAL = 316, + HIGH = 317, + ANY = 318, + MESSAGE = 319 + }; +#endif +/* Tokens. */ +#define NUMBER 258 +#define STRING 259 +#define IF 260 +#define ELSIF 261 +#define ELSE 262 +#define REJCT 263 +#define FILEINTO 264 +#define REDIRECT 265 +#define KEEP 266 +#define STOP 267 +#define DISCARD 268 +#define VACATION 269 +#define REQUIRE 270 +#define SETFLAG 271 +#define ADDFLAG 272 +#define REMOVEFLAG 273 +#define MARK 274 +#define UNMARK 275 +#define NOTIFY 276 +#define DENOTIFY 277 +#define ANYOF 278 +#define ALLOF 279 +#define EXISTS 280 +#define SFALSE 281 +#define STRUE 282 +#define HEADER 283 +#define NOT 284 +#define SIZE 285 +#define ADDRESS 286 +#define ENVELOPE 287 +#define COMPARATOR 288 +#define IS 289 +#define CONTAINS 290 +#define MATCHES 291 +#define REGEX 292 +#define COUNT 293 +#define VALUE 294 +#define OVER 295 +#define UNDER 296 +#define GT 297 +#define GE 298 +#define LT 299 +#define LE 300 +#define EQ 301 +#define NE 302 +#define ALL 303 +#define LOCALPART 304 +#define DOMAIN 305 +#define USER 306 +#define DETAIL 307 +#define DAYS 308 +#define ADDRESSES 309 +#define SUBJECT 310 +#define MIME 311 +#define METHOD 312 +#define ID 313 +#define OPTIONS 314 +#define LOW 315 +#define NORMAL 316 +#define HIGH 317 +#define ANY 318 +#define MESSAGE 319 + + + + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +{ + +/* Line 1676 of yacc.c */ +#line 132 "./sieve.y" + + int nval; + char *sval; + stringlist_t *sl; + test_t *test; + testlist_t *testl; + commandlist_t *cl; + struct vtags *vtag; + struct aetags *aetag; + struct htags *htag; + struct ntags *ntag; + struct dtags *dtag; + + + +/* Line 1676 of yacc.c */ +#line 196 "y.tab.h" +} YYSTYPE; +# define YYSTYPE_IS_TRIVIAL 1 +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +#endif + +extern YYSTYPE yylval; + + --- cyrus-imapd-2.2-2.2.13.orig/debian/cyrus-admin-2.2.manpages +++ cyrus-imapd-2.2-2.2.13/debian/cyrus-admin-2.2.manpages @@ -0,0 +1,3 @@ +man/sieveshell.1 +perl/imap/blib/man1/cyradm.1p +debian/tmp/usr/share/man/man1/installsieve.1 --- cyrus-imapd-2.2-2.2.13.orig/debian/sieve.pam +++ cyrus-imapd-2.2-2.2.13/debian/sieve.pam @@ -0,0 +1,14 @@ +# PAM configuration file for Cyrus SIEVE timsieved service +# $Id: sieve.pam 5 2005-03-12 23:19:45Z sven $ +# +# If you want to use Cyrus in a setup where users don't have +# accounts on the local machine, you'll need to make sure +# you use something like pam_permit for account checking. +# +# Remember that SASL (and therefore Cyrus) accesses PAM +# modules through saslauthd, and that SASL can only deal with +# plaintext passwords if PAM is used. +# + +@include common-auth +@include common-account --- cyrus-imapd-2.2-2.2.13.orig/debian/cyrus-common-2.2.NEWS +++ cyrus-imapd-2.2-2.2.13/debian/cyrus-common-2.2.NEWS @@ -0,0 +1,86 @@ +cyrus22-imapd (2.2.12-1) unstable; urgency=low + + cyrus now supports realms by default and is therefor suitable for virtual + domains much better than it was before. However, this might break upgrades + from v2.1 installations, especially when the hostname might change during + operation (for example in hot-standby high-Availability setups). + + This is the first cyrus22 package + + -- Sven Mueller Sun, 13 Feb 2005 00:49:12 -0100 + +cyrus21-imapd (2.1.16-1) unstable; urgency=low + + ipurge behaviour is now that of the patch accepted upstream. It uses the + date: header by default, and it can use the internal date of the message as + an alternative. + + Cyrus 2.1 is officially in maintenance mode now, and the Debian packages will + follow suit. I will switch development efforts to the Cyrus 2.2 package, and + update 2.1 only to fix bugs, and apply anything that shows up on CVS. + + -- Henrique de Moraes Holschuh Sun, 23 Nov 2003 11:59:12 -0200 + +cyrus21-imapd (2.1.15-8) unstable; urgency=low + + ipurge has been patched in a way that changes its default behaviour. Now, it + uses the internal date of the message (i.e. when it entered the mail store, + be it through lmtp or imap append) instead of the Date: header for date + comparasions. + + The old behaviour is still available, refer to the ipurge manpage for more + information. + + These changes have not been accepted upstream yet, so I don't promise they + will stay around forever. + + -- Henrique de Moraes Holschuh Tue, 21 Oct 2003 13:18:30 -0200 + +cyrus21-imapd (2.1.15-1) unstable; urgency=low + + Cyrus has a big bug regarding EOL markers for /usr/sbin/sendmail. It sends + CRLF-terminated lines to the /usr/sbin/sendmail wrapper (or to whatever you + configure for sendmail: in /etc/imapd.conf), when it should be sending + LF-terminated lines only. + + Postfix and sendmail are fine with CRLF EOLs. Exim 4 can be configured + to strip the CRs off all the time in its configuration file. + + I am writing a patch to allow one to configure parameters for sendmail, but + while it is not ready and accepted upstream, users of Exim 3 should set + their sendmail: in imapd.conf to a shell wrapper that calls + /usr/sbin/sendmail -dropcr "$@" or something to that extent. + + -- Henrique de Moraes Holschuh Tue, 19 Aug 2003 07:40:40 -0300 + +cyrus21-imapd (2.1.14-1) unstable; urgency=low + + Initial instance of NEWS.Debian support. This file will be used to note all + changes the local admin must do to a Cyrus system when upgrading. + + Upgrading checklist for recent 2.1.x packages: + + 1. timsieved was corrected to behave properly in the altnamespace + configuration. However, this means that it was previously looking for + sieve scripts in "user.name" format instead of the (correct) "user^name" + format. A sample script to do this (which should be run in the top level + of the sieve directories) is in /usr/lib/cyrus/upgrade/convert-sieve.pl. + Note that this is only needed if you are running with altnamespace turned + on. + + 2. We are now more forgiving of MIME boundry headers generated by earlier + versions of eudora by default (you can switch to the more strict checks + that used to be the default using the rfc2046_strict imapd.conf(5) + option. + + However, if you have messages already in the mailstore that you want to + fix you will need to reconstruct the affected mailboxes to regenerate + the cached bodystructure data to take this into account. Nothing needs + to be done for new messages to be treated in this way. + + + Upgrading checklist for old Cyrus 1.5 or 1.6: + + Read /usr/share/doc/cyrus21-common/UPGRADE.Debian.gz + + -- Henrique de Moraes Holschuh Fri, 4 Jul 2003 10:10:53 -0300 --- cyrus-imapd-2.2-2.2.13.orig/debian/arbitronsort.8 +++ cyrus-imapd-2.2-2.2.13/debian/arbitronsort.8 @@ -0,0 +1,15 @@ +.TH ARBITRONSORT "8" "Project Cyrus" "CMU" +.SH NAME +arbitronsort \- sorts arbitron(8) output +.SH SYNOPSIS +.B +arbitronsort +.SH DESCRIPTION +.PP +This tool takes the output of arbitron (run without the -o option) +on stdin and prints out first a ranking of mailboxes by number of +people who selected the mailbox, and then a ranking of mailbox by +number of subscribers. +.SH SEE ALSO +.PP +\fBarbitron(8)\fR --- cyrus-imapd-2.2-2.2.13.orig/debian/README.source +++ cyrus-imapd-2.2-2.2.13/debian/README.source @@ -0,0 +1,29 @@ +Debian packages for cyrus-imapd-2.2 use the dpatch patch system. + +If you are not familiar with this patch system, this document provides you +with a very short description of how to patch the sources. It assumes that +you want to add a patch on top of what the package already contains, not that +you want to edit one of the existing patches. + +1) cd to the main source directory (the one containing debian/) +3) Tell dpatch that you intend to edit your patch: + dpatch-edit-patch patch 99_your.dpatch \ + 99-update-autoconf.dpatch \ + --description="Description of your patch" \ + --add2list + That command will create the new patch as file + debian/patches/99_your.dpatch, adding the Description to the patch header, + apply all patches up to 99-update-autoconf.dpatch, add your patch to the + list of patches that are to be applied on build and open a shell for you + in which you can do the edits. + If you want to edit your patch again later on, the first line of the above + multiline command will suffice. +4) Do the edits you want to do and exit the shell with an + exit code of 0 (a plain "exit" will do that). If you want + to abort your edit, use "exit 230". +5) Once finished, run "dpatch deapply-all" to unpatch the whole tree again + (i.e. return to an unpatched source, preserving your edits as + debian/patches/99_your.dpatch, which is now listed in debian/patches/00list + and will be applied automatically on package builds). + +Document your patch in debian/changelog, please. --- cyrus-imapd-2.2-2.2.13.orig/debian/README.Debian.simpleinstall +++ cyrus-imapd-2.2-2.2.13/debian/README.Debian.simpleinstall @@ -0,0 +1,183 @@ +Cyrus IMAP for Debian, Simple Install Guide +$Id: README.Debian.simpleinstall 683 2006-10-29 22:33:52Z sven $ +------------------------------------------- + + "All systems administrators have their horror stories. For me, it was + setting up a HP Color Bubblejet under Linux using ghostscript before + linuxprinting.org was alive. Well that was a piece of cake compared + to what I am about to describe in this document." + -- "Hosting email for virtual domains using Postfix and Cyrus" + Haim Dimermanas, 2001-08-01 + + "I warned you to read all the documentation first, didn't I?" + -- Henrique M. Holschuh, 2002-10-01 + + +This document describes how to get Cyrus running with a simple configuration +that you can then tweak to your real needs. + +READ README.Debian AS WELL. I MEAN IT! Cyrus is easy, all the trouble is +in SASL, and even that becomes easy after you understand how SASL works. + +IMPORTANT: Cyrus is a closed-box email system. Your system will access your +email through LMTP, IMAP and POP3 *only*. No direct file access to the email +store is supposed to take place. + + +To setup Cyrus so that you can administer it (i.e. create users), +and get email inside it for those users: + + 1. Make sure libsasl2-modules, libsasl2 and sasl2-bin are installed + + 2. Make sure /etc/sasldb2 is readable by group sasl. Pay attention + to overrides (dpkg-statoverride)! + + 3. Make sure user cyrus belongs to group sasl (cyrus-common-2.2's install + tries to do this automatically for you). + + 4. Edit /etc/cyrus.conf, and make sure the services you need are + enabled. These are most probably "imap", "pop3", "lmtpunix". + + 5. Edit /etc/imapd.conf, and make sure you have some admin users + listed in the entry "admins:". I suggest using "cyrus" as your + admin. + + I also suggest enabling plain text logins, and setting + sasl_minimum_layer: 0 + + If you have unixhierarchysep enabled in imapd.conf, change all + "." in mailbox names mentioned on this document to "/", since Cyrus + will use "/" as the hierarchy separator instead of the default ".". + I suggest you just leave unixhierarchysep set to false for now. + + 6. Restart Cyrus (/etc/init.d/cyrus2.2 restart) + + 7. Use saslpasswd2 -c to create an account for your admin: + saslpasswd2 -c cyrus + + 8. Use sasldblistusers2 to make sure step 7 worked fine. + + 9. Add other users to SASL likewise (saslpasswd2 -c). + +10. Log in cyrus as the administrator, and create the mailboxes: + cyradm --user cyrus localhost + cm user.bob + cm user.anna + cm user.clark... + ^D + + (notice that there is an "user." in front of the mailbox name!) + You must use "user/bob", "user/anna" instead if you have the + unixhierarchysep option enabled in imapd.conf. + + For this to work, you obviously need the cyrus-admin-2.2 package + installed. + +11. Try to login as a normal user, using imtest or a IMAP/POP3 client. + If you have trouble with mutt and CRAM-MD5 or DIGEST-MD5, edit + /etc/imapd.conf, and look for sasl_mech_list. Set it to: + sasl_mech_list: plain cram-md5 + (this will disable digest-md5, which causes trouble with mutt). + +12. Setup your MTA to deliver email inside Cyrus. Basically that can + be done (easily) by: + + a) running /usr/sbin/cyrdeliver (SLOW) + You need the lmtpunix service enabled in /etc/cyrus.conf for this + to work. + b) delivering using LMTP to /var/run/cyrus/socket/lmtp + You need the lmtpunix service enabled in /etc/cyrus.conf for this + to work. + + Just make sure (and use dpkg-statoverride to do that) that your + MTA can get to /var/run/cyrus/socket/lmtp. It works just like any + file in a Unix system. Use this for example if you use postfix or + any other MTA which tries to delivery through LMTP with a user in + the "lmtp" group (i.e. the delivery agent program is probably set + up with the setgid bit set and with owning group set to "lmtp"): + dpkg-statoverride --force --update --add cyrus lmtp 750 /var/run/cyrus + + If you run Postfix, make sure that the LMTP delivery agent is not + run chrooted in this setup (the line starting with "lmtp" should + have an "n" as the fifth field). If you want to run that agent + chrooted, you need to move the lmtp socket into the chroot or bind + mount /var/run/cyrus/socket into the chroot. + + Cyrus REQUIRES a valid RFC2822 message, and will refuse messages with + bad headers (such as that From foobar header, notice the missing ':'), + embedded NULLs or any other crap. + + +That's it. See /usr/share/doc/cyrus-common-2.2/README.{postfix,exim,sendmail} +for help on how to setup your MTA to correctly deliver to Cyrus. + + +LDAP SETUP +---------- + +First, do the steps above and verify that your system is working fine. + +SASL is perfectly capable of trying various authentication methods one after +another. We will change our Cyrus setup for SASL to use a LDAP server lookup +through saslauthd. + +1. Create the configuration for saslauthd to know what it must do: + + Write the following file to /etc/saslauthd.conf: +----CUTHERE---- +ldap_servers: ldap://127.0.0.1/ +ldap_version: 3 +ldap_timeout: 10 +ldap_time_limit: 10 +ldap_cache_ttl: 30 +ldap_cache_mem: 32768 +ldap_scope: sub +ldap_search_base: ou=mail,o=mydomain +ldap_auth_method: bind +ldap_filter: maildrop=%u +----CUTHERE---- + And of course, edit it to fit your LDAP setup. + +2. Now, configure saslauthd to use LDAP mode and our config file: + + Modify /etc/default/saslauthd so that it reads: + MECHANISMS="ldap" + PARAMS="-O /etc/saslauthd.conf" + + (MECHANISMS can be a space-separated list of authentication + mechanisms. If you wanted saslauthd to try LDAP, then PAM, you + could use MECHANISMS="ldap pam") + +3. Start saslauthd + + /etc/init.d/saslauthd restart + +4. Make sure Cyrus will be able to talk to saslauthd + + Set the following options in /etc/imapd.conf: + sasl_mech_list: PLAIN + allowapop: no + allowplaintext: yes + sasl_minimum_layer: 0 + sasl_pwcheck_method: saslauthd + + And restart Cyrus. You'd better understand that the above allows + plaintext logins over the network. There is a LDAP SASL auxprop + plugin being worked on that might fix this issue. As it stands + right now, you're better off by only accepting IMAPS (secure IMAP) + connections. + + (sasl_pwcheck_method is a space separated list of SASL methods to + try. If you want to have some local users in /etc/sasldb2, for + example, you could have "sasl_pwcheck_method: auxprop saslauthd" + and also "sasl_auxprop_plugin: sasldb") + + One *extremely* important point to notice is that saslauthd works + ONLY with plaintext. APOP, CRAM-MD5, OTP, DIGEST-MD5 and any other + "auxprop" SASL mech will *not* work through saslauthd. + +5. That's it. There is a LDAP auxprop module in the works which can deal + with APOP, CRAM-MD5, OTP, DIGEST-MD5 and so on, look for it in the SASL + docs and openldap's contrib stuff. + + -- Henrique de Moraes Holschuh --- cyrus-imapd-2.2-2.2.13.orig/debian/cyrus-pop3d-2.2.manpages +++ cyrus-imapd-2.2-2.2.13/debian/cyrus-pop3d-2.2.manpages @@ -0,0 +1 @@ +man/pop3d.8 --- cyrus-imapd-2.2-2.2.13.orig/debian/imap.pam +++ cyrus-imapd-2.2-2.2.13/debian/imap.pam @@ -0,0 +1,14 @@ +# PAM configuration file for Cyrus IMAP service +# $Id: imap.pam 5 2005-03-12 23:19:45Z sven $ +# +# If you want to use Cyrus in a setup where users don't have +# accounts on the local machine, you'll need to make sure +# you use something like pam_permit for account checking. +# +# Remember that SASL (and therefore Cyrus) accesses PAM +# modules through saslauthd, and that SASL can only deal with +# plaintext passwords if PAM is used. +# + +@include common-auth +@include common-account --- cyrus-imapd-2.2-2.2.13.orig/debian/cyrus-dev-2.2.dirs +++ cyrus-imapd-2.2-2.2.13/debian/cyrus-dev-2.2.dirs @@ -0,0 +1,2 @@ +usr/include/cyrus +usr/lib --- cyrus-imapd-2.2-2.2.13.orig/debian/README.exim +++ cyrus-imapd-2.2-2.2.13/debian/README.exim @@ -0,0 +1,66 @@ +Setting up Cyrus IMAPd for Exim +$Id: README.exim 727 2007-06-19 12:33:18Z astronut $ +=========================================================== + +This is very incomplete information, if you are an exim user, please send +in a more complete document. + + +General configuration hints (configuration examples assume you are using +the Debian Exim4 configuration scheme and paths are relative to +/etc/exim4): + +1. Use Exim version 4. Exim version 3 just doesn't cut it in the lmtp + area, which is very important for performance when dealing with Cyrus + IMAPd. + +2. Use the LMTP transport to deliver using a unix socket (fastest), or + the SMTP transport in LMTP mode to deliver over a TCP/IP socket. + + For local delivery over a unix socket, add a file into conf.d/transports + with the following: + + cyrus_delivery: + driver = lmtp + socket = /var/run/cyrus/socket/lmtp + batch_max = 20 + user = mail + + (set batch_max to whatever is best for your setup, and make sure you + allow enough Cyrus lmtp processes to serve that many lmtp connections) + + If that doesn't work, I suggest you create a group for lmtp delivery, + add whichever user exim is running as to it, and use dpkg-statoverride + to make /var/run/cyrus/socket/lmtp writeable by that group. + + To then deliver to Cyrus, you will need to comment out the check_local_user + stanza in conf.d/router/900_exim4-config_local_user (the entire file), and + change the dc_localdelivery variable in /etc/exim4/update-exim4.conf.conf to + 'cyrus_delivery'. + + If you still want to deliver some messages to a mail spool then create + conf.d/router/899_exim4-config_copy_to_mbox and put this in it, changing + the local_parts as necessary: + + copy_to_mbox: + debug_print = "R: copy_to_mbox for $local_part@$domain" + driver = accept + unseen + local_parts = postmaster + transport = mail_spool + + This will deliver postmaster mail to both cyrus and + /var/mail/postmaster. You can comment the unseen option to have it only + deliver once to the mail_spool. If you don't set check_local_user or + the user option the spool files will be owned by mail. + +3. Kill any NULs (ASCII 0x00) inside the message, if you don't want Cyrus + to bounce such malformed crap. Calling "tr -d '\000'" as a filter might + do the trick. + +4. Sieve often needs to set -f option on /usr/sbin/sendmail when doing + redirects. Exim allows only trusted_users to do this. It is recommended + that you make sure "cyrus" is in the list of trusted_users in + conf.d/main/02_exim4-config_options: + trusted_users = uucp:cyrus + --- cyrus-imapd-2.2-2.2.13.orig/debian/cyrus-admin-2.2.install +++ cyrus-imapd-2.2-2.2.13/debian/cyrus-admin-2.2.install @@ -0,0 +1,4 @@ +usr/bin/cyradm +usr/bin/sieveshell +usr/bin/installsieve +usr/share/icons/* --- cyrus-imapd-2.2-2.2.13.orig/debian/cyrus-doc-2.2.links +++ cyrus-imapd-2.2-2.2.13/debian/cyrus-doc-2.2.links @@ -0,0 +1 @@ +usr/share/doc/cyrus-doc-2.2 usr/share/doc/cyrus-common-2.2/docs --- cyrus-imapd-2.2-2.2.13.orig/debian/cyrus-pop3d-2.2.links +++ cyrus-imapd-2.2-2.2.13/debian/cyrus-pop3d-2.2.links @@ -0,0 +1,2 @@ +usr/share/doc/cyrus-common-2.2 usr/share/doc/cyrus-pop3d-2.2 + --- cyrus-imapd-2.2-2.2.13.orig/debian/get-backtrace.gdb +++ cyrus-imapd-2.2-2.2.13/debian/get-backtrace.gdb @@ -0,0 +1,4 @@ +c +bt +quit + --- cyrus-imapd-2.2-2.2.13.orig/debian/cyrus-common-2.2.dirs +++ cyrus-imapd-2.2-2.2.13/debian/cyrus-common-2.2.dirs @@ -0,0 +1,12 @@ +etc/pam.d +etc/default +etc/logcheck/ignore.d.server +etc/logcheck/violations.ignore.d +usr/sbin +usr/lib/cyrus +usr/lib/cyrus/upgrade +usr/share/snmp/mibs +var/lib/cyrus +var/spool/cyrus +var/spool/sieve +var/run/cyrus/socket --- cyrus-imapd-2.2-2.2.13.orig/debian/README.Debian +++ cyrus-imapd-2.2-2.2.13/debian/README.Debian @@ -0,0 +1,334 @@ +Cyrus IMAP for Debian +$Id: README.Debian 720 2007-05-28 01:48:39Z sven $ +--------------------- + + "All systems administrators have their horror stories. For me, it was + setting up a HP Color Bubblejet under Linux using ghostscript before + linuxprinting.org was alive. Well that was a piece of cake compared + to what I am about to describe in this document." + -- "Hosting email for virtual domains using Postfix and Cyrus" + Haim Dimermanas, 2001-08-01 + + "I warned you to read all the documentation first, didn't I?" + -- Henrique M. Holschuh, 2002-10-01 + +IMPORTANT: Cyrus is a closed-box email system. Your system will access your +email through LMTP, IMAP and POP3 *only*. No direct file access to the email +store is supposed to take place. + +For more information, please consult http://asg.web.cmu.edu/cyrus/imapd/ and +http://asg.web.cmu.edu/twiki/bin/view/Cyrus/WebHome (Cyrus WiKi). There is +also Cyrus-HOWTO (Cyrus-IMAP.txt) available as part of the LDP HOWTO +collection. Upgrade hints are in UPGRADE.Debian.gz Outdated documentation +will cause you much grief, so beware of that when hunting anywhere else than +the Cyrus mailinglist for information. + +Backports of the latest packages for Debian Stable are available from +http://www.backports.org + +WARNING: For one to get Cyrus IMAPd to work correctly, one must first get the +SASL layer to work correctly. This is far from trivial, so if you don't manage +at first, don't go around filling bugs against Cyrus IMAPd before you make damn +sure it is not a SASL configuration error. Read the hint list later on this +file as well. Start by reading README.Debian.simpleinstall. + +The Debian packaging of Cyrus has a few quirks which are important to know +about: + +1. Renaming of some Cyrus IMAP utilities + + The quota, reconstruct, master and deliver utilities have been renamed to + cyrquota, cyrreconstruct, cyrmaster and cyrdeliver, following the template + set by upstream with "cyradm". This was done because both Cyrus Debian + maintainers found the original names to be too generic and likely to cause + namespace collisions later. + + Since documentation may refer to these utilities using their original + name, you must be aware of this fact. Also, installsieve is deprecated + and will be removed from the Debian package in the future; use sieveshell + instead. + +2. Relocation of many Cyrus IMAP files + + The default Cyrus install scatters files all over the place. The Debian + package installs only a few files in /usr/bin (cyradm, sieveshell). + IMAP/email administrator utilities are installed in /usr/sbin (such as + cyrreconstruct). Programs that must be run by cyrmaster are installed in + /usr/lib/cyrus (such as imapd and pop3d). Sockets go into + /var/run/cyrus/socket, per FHS 2.2. Sieve files go in /var/spool/sieve, but + an /etc/sieve compatibility symlink is also installed just in case. + + The imapd.conf and cyrus.conf configuration files are in /etc. The PAM + policy files are in /etc/pam.d. + + Feel free to use dpkg-statoverride to change the permission of + /var/run/cyrus/socket, the cyrus packages will not override your + configuration if dpkg-statoverride is used. In fact, you will most likely + have to do so for postfix to deliver to Cyrus, for example. + +3. Cyrus Murder, the Cyrus IMAPd/POP3 aggregator is available. + + However, you will have to configure it yourself. No pre-packaged + configuration of Murder is available at this time... The documentation is + all there, and the Cyrus packages will happily preserve your Cyrus Murder + configuration. You do not have to install the cyrus-imapd-2.2 or + cyrus-pop3d-2.2 packages in hosts that only need the proxy daemons running, + but do note that the /etc/pam.d/imap and /etc/pam.d/pop files are in those + packages (and they are needed by the proxies), so you will have to create + the files manually. + + One important note: MUPDATE doesn't support TLS, so you won't be able to + use plaintext authentication methods. The easiest thing to do is to put + an entry for your mupdate user in sasldb2 and use DIGEST-MD5. + +4. Configurable idled support. + + Cyrus IMAPd supports three options of using IDLE in IMAP sessions. The first + option is not to support IDLE at all. The second is to use internal polling + in the IMAP daemon. The third option is to use an external daemon, idled. + Upstream only supports configuration of this during compilation, Debian + however includes a patch which makes this runtime-configurable. Please + set the 'idlemethod' imapd.conf option according to your needs and enable + idled in cyrus.conf if you want to use it. + +General notes and hints: +------------------------ + + o *** ALWAYS READ /usr/share/doc/cyrus-common-2.2/NEWS.Debian *** after + you upgrade the package. This, and every other NEWS.Debian can automatically + be shown to you before the upgrade, see the apt-listchanges package for more + information. + + o QUOTAS ARE LIMITIED TO 2GB on some platforms. + Be careful to not set quotas over that ammount if your platform doesn't + support the C datatype "long long". Things will break in very bad ways. + Yes, it is a big glitch, and no, there are no easy workarounds. + see https://bugzilla.andrew.cmu.edu/show_bug.cgi?id=1212 + This has been fixed for the upcoming Cyrus 2.3. + + o Either turn off logging of the DEBUG level, or don't complain about cyrus + verbosity on the logs. Don't ever ask in the mailing lists about messages + logged in the DEBUG level before reading the source code. + + o Watch out for your /dev/random bitbucket! SASL may use it, and if it + empties, it will hang the processes wrapped up by SASL. This means + just about every Cyrus service (lmtp, imap, pop3, sieve)... Disable + APOP in /etc/imapd.conf if you don't need it, as it is a serious draw + on randomness resources. + + o One extremely important point to notice is that saslauthd works ONLY + with plaintext. APOP, CRAM-MD5, OTP, DIGEST-MD5 and any other "auxprop" + SASL mech will *not* work through saslauthd. This can and will cause + serious issues in Cyrus murder environments. + + o When using ext3, Cyrus really wants data=journal. However, up to + kernel 2.4.20 there are dangerous bugs in that option, so you're better + off not using that. xfs is faster and better for Cyrus, anyway. + Please note that sarge was shipped with 2.4.27, and etch will not ship + any 2.4 kernels anymore." + + 2.4 kernels are NOT shipped with Debian Etch. + + o nscd users: nscd is highly incompatible with ldap, and somewhat buggy + otherwise. If you use nscd and Cyrus segfaults on you, try restarting + nscd, or disabling it. + + o "The Debian libldap2 and cyrus-imapd packages are both compiled using the + SASL library. If you use cyrus-imapd together with libnss-ldap, or + saslauthd together with libpam-ldap, the resulting double calls to SASL + library functions can trigger a double-free bug which may cause the calling + process to crash. To avoid such a crash, you must recompile the libldap2 + package --without-cyrus-sasl." -- http://bugs.debian.org/145766 [!@#$%!!! + I didn't expect SASL 2.1 to still have this annoying problem] + + o The lmtp service (allocated in Debian Woody to port 2003, and non-existent + on Debian Sarge and Etch) is non-standard. It has no port officially + allocated anywhere; it is usually run bound to the localhost interface, + unless one needs it for clustering and high-availability scenarios. If you + need it elsewhere, by all means move it -- you only need to edit + /etc/services, or change the port for the lmtp service in /etc/cyrus.conf. + + o The lmtp service will only allow Cyrus lmtp administrators to authenticate. + Set them in /etc/imapd.conf. + + o Cyrus can now use two different namespaces (the standard one, where all + subfolders are children of INBOX, and one where they are all in the same + hierarchical level). + + See /usr/share/doc/cyrus-doc-2.2/html/altnamespace.html for details. If + you deal with a large population of winboze users, this option can save + you some headaches. + + o One can also chose between netnews-style notation for folders + (INBOX.subfolder), where the "." character is reserved to separate folders; + or UNIX-style notation (INBOX/subfolder), where dots are allowed in names, + and the slash separate folders (the "^" character is reserved in this + mode). + + See /usr/share/doc/cyrus-common-2.2/html/altnamespace.html for details. + + o When using SASL, do keep in mind that cyrus runs under user cyrus, and not + root. It cannot read shadow files (unless you add the user cyrus to group + shadow), or perform any root-only operations directly. You need to use the + saslauthd (or, if available, auxpropd) mechanism to authenticate against + root-only data. And that also means user cyrus must be able to talk to the + unix socket saslauthd uses (which is controlled by SASL, not Cyrus IMAPd). + + o Any of the SASL configure options can be inserted in imapd.conf, just + prefix it with "sasl_" (e.g.: sasl_mech_list: PLAIN). The list of SASL + options is in /usr/share/doc/libsasl2/options.html. + + o The services are tcp-wrapped. Their hosts.allow/hosts.deny id is the + service name in /etc/cyrus.conf. See hosts_access(5). + + o The PAM service names for use with SASL (via saslauthd) are: + "imap", "sieve", "lmtp", "pop", "mupdate". + + o You need to specify your admin users in /etc/imapd.conf before you can + add mailboxes, or deliver through authenticated lmtp. Do NOT use root. + We suggest user cyrus, which is already used by the system for all + things Cyrus IMAPd... but it need not be an existing user. As long as + SASL will authenticate against it, it will work. + + o Do NOT read your admin user's email via IMAP (see the FAQ for details). + + o Don't export your mail store over NFS or AFS (read the FAQ for more info). + You have been warned. You really want a journaled (as in journaling for the + metadata), local filesystem for the store. Failing that, you need + something with very strict and correct lock semantics, and full mmap + support. + + o Ext2 is slow on very large directories (right now), and sync metadata + writes enabled are a huge performance hit. If you need high IO throughput + from Cyrus, you will need to use ext3, reiserfs, xfs or something similar. + + o You may want to enable/disable synchronous metadata writes to your mail + store dirs (check /usr/share/doc/cyrus-doc-2.2/html/install.html for more + info, in package cyrus-docs-2.2). The cyrus-makedirs script tries to do the + right thing for ext2 and ext3 filesystems. Failure to correctly update the + metadata in the right order can completely screw up your Cyrus store on a + power-loss or another disk failure. + + o Try mounting the store and cyrus database filesystems with noatime for + performance gains. Load-balance the store using multiple partitions on + different physical devices for even better performance gains. + + o Cyrus IMAPd should be fed mail through LMTP. If at all possible, use + the Unix socket for that -- it automatically authenticates as user + postman and that will help wonders. cyrdeliver can also be used to + inject mail, but it will simply open an LMTP socket to cyrus and + deliver through that -- this is much slower than using LMTP directly. + The UNIX socket is in /var/run/cyrus/socket/lmtp. Use dpkg-statoverride + if you need to change the permissions of the socket directory. + + o You can use /usr/sbin/cyrus-makedirs to generate the needed directories + for cyrus partitions. It is run automatically by the package postinst, + and it knows to parse the /etc/imapd.conf file to verify if hash + subdirectories are needed or not. It cannot detect what kind of hashing + should be used yet. If you recompile the package with full hashing, + change it. + + o Refer to cyrus-utils.sourceforge.net and the info-cyrus mailinglist + for mailbox/imap to cyrus conversion scripts. + + o If you don't have pop3 or something else enabled by default in cyrus.conf, + installed, disable it. Otherwise, Cyrus master will log warnings that the + service could not be started. + + o If you want to run something that is not in /usr/lib/cyrus/bin in + cyrus.conf, just use the full path in cyrus.conf (e.g.: + cmd="/usr/sbin/squatter"). + + o Sieveshell is really lacking on auth capabilities, and timsieved is quite + strict on what auth capabilities it offers. So, pay attention to + sasl_minimum_layer, and see bug #151295 for more details + (http://bugs.debian.org/151295). Also, make sure you have the correct set + of SASL2 modules installed in in your system. + + o uw-mailutils has some nice utilities to migrate mail stores from/to imap + servers. You might find it quite useful to migrate a site to Cyrus. + +Known bugs +---------- + + Please see +http://bugs.debian.org/cgi-bin/pkgreport.cgi?which=src&data=cyrus-imapd-2.2& +archive=no&version= + for a list of any known bugs. + + +SNMP logging +------------ + +cyrmaster is an agentx SNMP subagent, and it can interface to a agentx SNMP +master. It will export data at OID .1.3.6.1.4.1.3.6.1 (cyrusMasterMIB). + +The ucd-snmp daemon (package snmpd) is NOT configured to work +as agentx master agent by default -- you have to do that manually, +by adding "master agentx" to the /etc/snmp/snmpd.conf file. + +cyrmaster will register with the snmp agentx master when it is started, +so if the snmp master is restarted after cyrmaster, it will not forward +the snmp requests to cyrmaster anymore. Check your system for any cron +scripts that might be restarting the snmp process if that happens. + +See /usr/share/snmp/mib/CYRUS-MASTER-MIB.txt for more details. + + +Backing up for rainy days +------------------------ + +Cyrus automatically checkpoints and backups some of its databases, using the +ctl_cyrusdb(8) utility (EVENTS in /etc/cyrus.conf). It is supposed to be also +capable of recovering automatically from these backups, and to attempt to do so +at startup. However, ctl_cyrusdb -r is NOT FULLY IMPLEMENTED YET... you are on +your own to recover from corrupt databases. + +This recovery can be done using the db3 utilities, and even by smart usage of +cvt_cyrusdb(8) and ctl_mboxlist(8). The automatic backups are useful, too, +even if they are not restored automatically. + +The database backups are stored at /var/lib/cyrus/db.backup*, you may want to +copy the files there to backup media in a cronjob, or something like that. You +can kill the TLS cache database, as long as Cyrus is stopped when you do it. +Loss of the delivery database is not very bad, it just means some users might +get duplicated messages. + +Cyrus does NOT backup the mail store automatically. To backup the mail store +partitions, you must stop Cyrus and dump the entire partition to your backup +media. The MH-like structure of the Cyrus store do make them suitable for +incremental backups. Hot-backups of the store can be made, but you risk losing +some non-critical metadata when the restore is done. + +You can backup all Cyrus non-text databases to a flat text file format using the +cvt_cyrusdb utility (and recover back from the flat text file format), but you +should stop Cyrus first. + +If you ever need to recover the mail store from backup, you should run +cyrreconstruct(8) to rebuild the mailbox indexes. + +A daily maintenance cronjob uses ctl_mboxlist(8) to dump the mailboxes database +to /var/backup. That backup copy can be used as a last-resort copy if the hot +backups become corrupted somehow. + + +Debian source package quirks +---------------------------- + +Patching is done using dpatch. Patches from upstream CVS are marked as such. + + +THANKS +------ + +Thanks go to the CMU crew for producing Cyrus IMAPd in the first place; +Michael-John Turner for maintaining the v1.5 branch and setting +the groundstones for the v2.1 package; David Parker and +David D. Kilzer for their huge help in getting +the v2.1 packages out-of-the-door, and the upgrade from v1.5 guide; Fabian +Fagerholm for stress testing the daemons, and useful +feedback; Gilles Bouthenot for good +feedback; and Henrique de Moraes Holschuh for maintaining the 2.1 branch. + + -- The Debian Cyrus Team + --- cyrus-imapd-2.2-2.2.13.orig/debian/source.lintian-overrides +++ cyrus-imapd-2.2-2.2.13/debian/source.lintian-overrides @@ -0,0 +1 @@ +cyrus-imapd-2.2 source: source-contains-CVS-dir --- cyrus-imapd-2.2-2.2.13.orig/debian/cyrus-dev-2.2.install +++ cyrus-imapd-2.2-2.2.13/debian/cyrus-dev-2.2.install @@ -0,0 +1,3 @@ +usr/lib/*.a +usr/include/cyrus/* +usr/share/man/man3/imclient* --- cyrus-imapd-2.2-2.2.13.orig/debian/license.html +++ cyrus-imapd-2.2-2.2.13/debian/license.html @@ -0,0 +1,161 @@ + + + + + +Cyrus IMAP Licensing + + + + +

+ + +Masthead
+ + + + +
+Cyrus IMAP Licensing +
+
+ + +ASG Home   + + + +What's New   + + + +Jobs   + + + +Search   + + + +Contact Us  
+ + + + +Download Software   + + + +Mailing lists   + + + +Project Cyrus Home   +
+ + + +
+
+

+ + +Please direct technical questions or issues to cyrus-bugs@andrew.cmu.edu. +
+Please direct any licensing issues to tech-transfer@andrew.cmu.edu. +


+ +ALL versions of the Cyrus IMAP server are now covered by the +following copyright message. However, please note that in + distributions before 2.0, there may still be files that have the old + copyright text. + +
+ + * Copyright (c) 1994-2000 Carnegie Mellon University. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The name "Carnegie Mellon University" must not be used to + * endorse or promote products derived from this software without + * prior written permission. For permission or any legal + * details, please contact + * Office of Technology Transfer + * Carnegie Mellon University + * 5000 Forbes Avenue + * Pittsburgh, PA 15213-3890 + * (412) 268-4387, fax: (412) 268-7395 + * tech-transfer@andrew.cmu.edu + * + * 4. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by Computing Services + * at Carnegie Mellon University (http://www.cmu.edu/computing/)." + * + * CARNEGIE MELLON UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO + * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS, IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY BE LIABLE + * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN + * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +
+ +

+If you find this software useful and valuable in your work, we welcome +any support you can offer toward continuing this work. + +

We gratefully accept contributions, whether intellectual or +monetary. Intellectual contributions in the form of code or +constructive collaboration can be directed to cyrus-bugs+@andrew.cmu.edu +(even if it is not a bug). + +

If you wish to provide financial support to the Cyrus Project, send a +check payable to Carnegie Mellon University to + +

+ + Project Cyrus + Computing Services + Carnegie Mellon University + 5000 Forbes Ave + Pittsburgh, PA 15213 + USA + +
+
+

+Please direct technical questions or issues to cyrus-bugs@andrew.cmu.edu. +
+Please direct any licensing issues to tech-transfer@andrew.cmu.edu. + +

+


+
+ +Last Updated: Thursday, 12-Oct-2000 16:38:41 EDT + + + + --- cyrus-imapd-2.2-2.2.13.orig/debian/cyrus-dev-2.2.links +++ cyrus-imapd-2.2-2.2.13/debian/cyrus-dev-2.2.links @@ -0,0 +1,2 @@ +usr/share/doc/cyrus-common-2.2 usr/share/doc/cyrus-dev-2.2 + --- cyrus-imapd-2.2-2.2.13.orig/debian/UPGRADE.Debian +++ cyrus-imapd-2.2-2.2.13/debian/UPGRADE.Debian @@ -0,0 +1,204 @@ +For more information, see README.Debian[.gz] in /usr/share/doc/cyrus-common-2.2/ +and the web page below, part of the cyrus-utils project at SourceForge: + + http://cyrus-utils.sourceforge.net/faq + +Upgrading from 2.2.12 or 2.2.13 versions prior to 2.2.13-5 +========================================================== + +In 2.2.13-5, a bug in debian/rules regarding the generation of +cyrus-db-types.txt was fixed. As a result, the cyrus2.2 init script +might complain about a database types mismatch. If this happens, +please make sure that you are really upgrading from a Debian package +of cyrus-imapd version 2.2 (either the old experimental cyrus22-imapd +or the newer cyrus-imapd-2.2 packages). If you do, please remove +/usr/lib/cyrus/cyrus-db-types.active and run +dpkg-reconfigure cyrus-common-2.2 + +Upgrading from cyrus 2.1 +======================== + +If you upgrade from cyrus 2.1, all you need to do is to upgrade the +database files from the old database backend to the new one. If you use +sieve-scripts, you will also need to use sievec on them. The information +how to do upgrade your database files is contained in the upgrade +information from cyrus v1.5 below and in more detail in +/usr/share/doc/cyrus-common-2.2/README.Debian.database. + +The configuration option lmtp_overquota_perm_failure has been renamed +lmtp_over_quota_perm_failure. Please update your configuration accordingly. + +Please note that the 2.1 packages in Debian use a different format +from upstream, thus the upgrade is easier. + +Also, please note that The tls_[service]_* configuration options have been +removed. Now use [servicename]_tls_*, where servicename is the service +identifier from cyrus.conf for that particular process. + +Upgrading sieve scripts +----------------------- + +Cyrus IMAPD 2.2 uses bytecode for sieve scripts. This means that you need to +compile all existing sieve scripts so that they will work with cyrus 2.2. There +is a small tool in /usr/lib/cyrus/upgrade, called masssievec which will +automatically compile all installed scripts when called correctly. Please +refer to the script's usage information for details. +The command line you will probably want to use is (as user cyrus): +/usr/lib/cyrus/upgrade/masssievec /usr/lib/cyrus/bin/sievec /etc/imapd.conf + +Upgrading from cyrus 1.5.x +========================== + +Upgrading cyrus-imapd to cyrus-imapd-2.2 on Debian +(thanks to David D. Kilzer for this document) +----------------------------------------------- + +This document describes the procedure for upgrading from the old cyrus-imapd +(v1.5.x) package to the new cyrus-imapd-2.2 (v2.2) package. While this is a +manual process, it is very straightforward. + +The procedure for converting a v1.6 cyrus store to v2.2 is not explained here, +but the tools to convert the sieve scripts are in /usr/lib/cyrus/upgrade. + +Your SASL installation may require further conversion steps, as Cyrus v2.2 uses +SASL v2, while Cyrus v1.5 used SASL v1.5. /usr/share/doc/libsasl2 has more +information on SASL v2. Do pay attention to your SASL v2 installation, such +as permissions and such. When in doubt, read the README.simpleinstall +document, as it describes an initial SASLv2 setup. + +NOTE: If you've already installed the cyrus 2.2 packages, skip to step 5. + + 1. Become the "root" user on your local system. + + $ /bin/su - + # + + 2. Look for any running cyrus daemons using the ps(1) command. Use + kill(1) to stop any processes that are found. + + # /etc/init.d/pwcheck stop + # ps auwwx | grep cyr + # ps auwwx | grep pop3d + # ps auwwx | grep imapd + # ps auwwx | grep nntpd + + 3. Remove the old cyrus packages. + + ###################################################################### + WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING + ###################################################################### + + Some versions of the cyrus-imapd packages, with versions 1.5.19-9.10 + up to 1.5.19-20 (shipped in Debian Sarge 3.1r1) will entirely erase + the mail spool when purged with no questions asked. + + You must NOT purge these packages before moving /var/lib/cyrus and + /var/spool/cyrus to somewhere safe. Failure to do so will cause data + loss. + + # mv /var/lib/cyrus /var/lib/old-cyrus + # mv /var/spool/cyrus /var/spool/old-cyrus + + The cyrus-imapd packages in Woody (1.5.19-9.2) are safe, as well as + the fixed cyrus-imapd packages 1.5.19-20.1 which should make it to + Debian Sarge 3.1r2. + + ###################################################################### + + # apt-get --purge remove cyrus-common cyrus-admin cyrus-imapd cyrus-pop3d \ + cyrus-nntpd [BUT SEE THE ABOVE WARNING FIRST!!!] + + or use dselect/aptitude/synaptic/your favorite deb management tool. + + IMPORTANT: You must answer "n" to this question: "Do you want me to + remove the Cyrus mail and news spool (y/n) [n] ?" + + NOTE: You could also copy -a the /var/spool/cyrus and /var/lib/cyrus + folders somewhere else, just in case. + + 4. Install the new cyrus-imapd-2.2 packages. Make sure no user will try + to connect to imapd/pop3d and that no MTA will try to deliver to lmtpd + until you do step 5. + + cyrus-common-2.2 [required] + cyrus-admin-2.2 [required] + cyrus-imapd-2.2 [optional; must have one of imapd or pop3d] + cyrus-pop3d-2.2 [optional; must have one of imapd or pop3d] + libcyrus-imap-perl22 [required] + + # apt-get install PACKAGE-NAME [PACKAGE_NAME ...] + + or use dselect. + + 5. Stop the cyrmaster process. + + # /etc/init.d/cyrus2.2 stop + + 5a. Make sure Cyrus won't start until the upgrade process is over. + + # cp -f /usr/lib/cyrus/upgrade/cyrus-db-types.upgrading_from_1.5.txt \ + /usr/lib/cyrus/cyrus-db-types.active + + 6. Change to the "cyrus" user. + + # /bin/su - cyrus + $ + + 7. Run the rehash program. + + $ /usr/lib/cyrus/upgrade/rehash basic + + 8. Run ctl_mboxlist to update the "mailboxes" file. + + $ cd /var/lib/cyrus + $ /usr/sbin/ctl_mboxlist -u < mailboxes + + 9. Run the cyrreconstruct program from the /var/spool/cyrus directory + to reconstruct the mailboxes. + + $ cd /var/spool/cyrus + $ /usr/sbin/cyrreconstruct -r user.* + + (you may need to cyrreconstruct other mailboxes, if you have any + system mailboxes or shared mailboxes not in the user hierarchy) + +10. Exit the "cyrus" user, back to "root". + + $ exit + # + +11. Upgrade all of the BerkleyDB files used by Cyrus from their current format to db4.2. You need db4.2-util installed. + + # find /var/lib/cyrus -name \*.db -print -exec /usr/bin/db4.2_upgrade {} \; + +12. Convert the state databases to those used by new Cyrus 2.2 + + Read /usr/share/doc/cyrus-common-2.2/README.Debian.database, and follow + whatever steps you need to change the backends from db3 to skiplist. + + This step needs some work, if you can send your experiences with it + to hmh@debian.org, I will update this document accordingly. + +**** The upgrade of Cyrus' stores are now complete **** + +You may want to remove any left-over empty directories from the old version, +and re-run /usr/sbin/cyrus-makedirs just in case you got one of them wrong. + +Now, you need to reconfigure the new Cyrus imapd to adequate it to your system +and SASL requirements. The Cyrus config files are /etc/imapd.conf, +/etc/cyrus.conf and /etc/default/cyrus2.2. + +Depending on your SASL configuration, you may also need to modify +/etc/pam.d/{imap,pop,sieve,lmtp} and other SASL configuration files. + +Do not forget to edit /etc/imapd.conf to e.g. set the "admins: cyrus" line (if +you use "cyrus" as the name for the administrator). + +NOTES about DRAC authentication +=============================== + +DRAC has been disabled in cyrus-imapd-2.2, it caused quite some trouble and +wasn't used by many. You can however build your own version by editing 00list +in debian/patches and adding 20-drac_auth.dpatch to it at the proper place +(i.e. right before the patch numbered 21) and building cyrus-imapd-2.2 with +dpkg-buildpackage or a similar tool. --- cyrus-imapd-2.2-2.2.13.orig/debian/cyrus-common-2.2.manpages +++ cyrus-imapd-2.2-2.2.13/debian/cyrus-common-2.2.manpages @@ -0,0 +1,23 @@ +debian/tmp/usr/share/man/man5/cyrus.conf.5 +debian/tmp/usr/share/man/man5/imapd.conf.5 +debian/tmp/usr/share/man/man8/cyrus-makedirs.8 +debian/tmp/usr/share/man/man8/cyrdump.8 +debian/tmp/usr/share/man/man8/mbpath.8 +debian/tmp/usr/share/man/man8/arbitron.8 +debian/tmp/usr/share/man/man8/arbitronsort.8 +debian/tmp/usr/share/man/man8/timsieved.8 +debian/tmp/usr/share/man/man8/notifyd.8 +debian/tmp/usr/share/man/man8/lmtpd.8 +debian/tmp/usr/share/man/man8/ctl_*.8 +debian/tmp/usr/share/man/man8/cvt_*.8 +debian/tmp/usr/share/man/man8/chk_*.8 +debian/tmp/usr/share/man/man8/fud.8 +debian/tmp/usr/share/man/man8/ipurge.8 +debian/tmp/usr/share/man/man8/tls_prune.8 +debian/tmp/usr/share/man/man8/cyrdeliver.8 +debian/tmp/usr/share/man/man8/cyrmaster.8 +debian/tmp/usr/share/man/man8/cyrreconstruct.8 +debian/tmp/usr/share/man/man8/cyrquota.8 +debian/tmp/usr/share/man/man8/mbexamine.8 +debian/tmp/usr/share/man/man8/smmapd.8 +debian/tmp/usr/share/man/man8/cyr_expire.8 --- cyrus-imapd-2.2-2.2.13.orig/debian/executable.files +++ cyrus-imapd-2.2-2.2.13/debian/executable.files @@ -0,0 +1,42 @@ +./autogen.sh +./configure +./contrib/cyrus-graphtools.1.0/cgi-bin/cyrus_master.pl +./contrib/cyrus-graphtools.1.0/cgi-bin/graph_cyrus_db-sum.pl +./contrib/cyrus-graphtools.1.0/cgi-bin/graph_cyrus_db.pl +./contrib/cyrus-graphtools.1.0/script/cyrus.pl +./contrib/cyrus-graphtools.1.0/script/run +./contrib/mupdate-test.pl +./contrib/notify_unix/simple_notify.pl +./contrib/notify_unix/sql_notify.pl +./debian/cyrus-makedirs +./debian/cyrus-common-2.2.cyrus2.2.init +./debian/cyrus-common-2.2.postinst +./debian/cyrus-common-2.2.postrm +./debian/cyrus-common-2.2.prerm +./debian/examples/mboxtocyrus +./debian/rules +./doc/internal/internationalization.html +./et/compile_et.sh +./et/config_script +./imap/xversion.sh +./install-sh +./lib/test/run +./makedepend/configure +./makedepend/install-sh +./mkinstalldirs +./netnews/inn.diffs +./perl/imap/examples/test-imsp.pl +./snmp/snmpgen +./tools/arbitronsort.pl +./tools/config2header +./tools/config2man +./tools/dohash +./tools/masssievec +./tools/mkimap +./tools/mknewsgroups +./tools/mupdate-loadgen.pl +./tools/not-mkdep +./tools/rehash +./tools/translatesieve +./tools/undohash +./tools/upgradesieve --- cyrus-imapd-2.2-2.2.13.orig/debian/cyrus-nntpd-2.2.install +++ cyrus-imapd-2.2-2.2.13/debian/cyrus-nntpd-2.2.install @@ -0,0 +1,3 @@ +etc/pam.d/nntp +usr/lib/cyrus/bin/fetchnews +usr/lib/cyrus/bin/nntpd --- cyrus-imapd-2.2-2.2.13.orig/debian/cyrus-admin-2.2.dirs +++ cyrus-imapd-2.2-2.2.13/debian/cyrus-admin-2.2.dirs @@ -0,0 +1 @@ +usr/bin --- cyrus-imapd-2.2-2.2.13.orig/debian/cyrus-doc-2.2.docs +++ cyrus-imapd-2.2-2.2.13/debian/cyrus-doc-2.2.docs @@ -0,0 +1,2 @@ +debian/UPGRADE.Debian +debian/README.* --- cyrus-imapd-2.2-2.2.13.orig/debian/cyrus-imapd-2.2.install +++ cyrus-imapd-2.2-2.2.13/debian/cyrus-imapd-2.2.install @@ -0,0 +1,4 @@ +etc/pam.d/imap +usr/lib/cyrus/bin/imapd +usr/lib/cyrus/bin/idled +usr/sbin/squatter --- cyrus-imapd-2.2-2.2.13.orig/debian/cyrus-common-2.2.postrm +++ cyrus-imapd-2.2-2.2.13/debian/cyrus-common-2.2.postrm @@ -0,0 +1,103 @@ +#! /bin/sh +# postrm script for cyrus-common-2.2 +# Copyright (c) 2002 by Henrique de Moraes Holschuh +# Distributed under the GNU General Public License version 2 +# $Id: cyrus-common-2.2.postrm 717 2007-05-18 11:16:11Z sven $ +# +# see: dh_installdeb(1) + +set -e + +# debconf hook +if [ -e /usr/share/debconf/confmodule ]; then + . /usr/share/debconf/confmodule + DEBCONFEXISTS="true" + export DEBCONFEXISTS +else + DEBCONFEXISTS="false" + export DEBCONFEXISTS +fi + +# summary of how this script can be called: +# * `remove' +# * `purge' +# * `upgrade' +# * `failed-upgrade' +# * `abort-install' +# * `abort-install' +# * `abort-upgrade' +# * `disappear' +# for details, see /usr/doc/packaging-manual/ + +case "$1" in + remove) + ;; + purge) + for i in /var/lib/cyrus /var/spool/sieve \ + /var/spool/cyrus \ + /var/run/cyrus /var/run/cyrus/socket ; do + dpkg-statoverride --remove $i || true + done + rm -rf /var/run/cyrus || true + rm /usr/lib/cyrus/cyrus-db-types.active || true + rm usr/lib/cyrus/cyrus-hardwired-config.active || true + + # Should we remove our precious data? + if [ "$DEBCONFEXISTS" = "true" ]; then + db_title "Cyrus IMAPd 2.2" || true + db_fset cyrus-common-2.2/removespools seen false || true + db_input high cyrus-common-2.2/removespools || true + db_go || true + + db_get cyrus-common-2.2/removespools + else + RET="false" + fi + [ "${RET}" = "true" ] && { + for i in /var/spool/cyrus /var/lib/cyrus \ + /var/spool/sieve /etc/sieve ; do + find "$i" -type f -exec rm -f '{}' \; || true + find "$i" -type d -depth -not -name 'lost+found' -exec rmdir '{}' \; || true + done + # Remove database type information + rm -f /usr/lib/cyrus/cyrus-*.active + } + + if [ -x /usr/sbin/update-rc.d ]; then + update-rc.d cyrus2.2 remove >/dev/null + fi + ;; + + upgrade|failed-upgrade|disappear) + ;; + abort-upgrade) + # old version was in "configuration files only" state, + # installation of new package failed before or after unpack + if dpkg --compare-versions "$2" lt "2.2.13-4bpo1" ; then + if [ -f /etc/cron.daily/cyrus22 ] \ + && [ ! -f /etc/cron.daily/cyrus-common-2.2 ]; then + mv -f /etc/cron.daily/cyrus22 /etc/cron.daily/cyrus-common-2.2 + fi + fi + ;; + abort-install) + # old version was fully installed, but upgrade failed + if dpkg --compare-versions "$2" lt "2.2.13-4bpo1" ; then + if [ -f /etc/cron.daily/cyrus22 ] \ + && [ ! -f /etc/cron.daily/cyrus-common-2.2 ]; then + mv -f /etc/cron.daily/cyrus22 /etc/cron.daily/cyrus-common-2.2 + fi + fi + ;; + *) + echo "postrm called with unknown argument \`$1'" >&2 + exit 0 + +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 --- cyrus-imapd-2.2-2.2.13.orig/debian/README.Debian.debug +++ cyrus-imapd-2.2-2.2.13/debian/README.Debian.debug @@ -0,0 +1,122 @@ +Cyrus IMAP for Debian, debugging procedures +$Id: README.Debian.debug 649 2006-10-09 17:07:53Z astronut $ +------------------------------------------- + +For more information, please consult http://asg.web.cmu.edu/cyrus/imapd/. + +Cyrus has various levels of debugging aid, which can and should be used to +offer more information about any problems you are facing with Cyrus. + +First, edit /etc/default/cyrus2.2, and set CYRUS_VERBOSE to a number higher +than zero. The higher the number, more debug information is provided. Numbers +above 30 will cause Cyrus services to pause for 15s before executing (so that +you can do something to it, such as attach strace or a debugger to the +process). + +You can, and should use strace and ltrace to gather more information about what +was happening to Cyrus when it malfunctioned. straces are useful when +networking or signal problems appear to be the issue, and ltraces can give +hints on what the problem might be. + +If a Cyrus service is crashing and cyrmaster logs that the service is being +killed by a signal, please use the debugging hooks to provide a back-trace +using gdb (see below). Back-traces are extremely useful when locating where +Cyrus is dying, and why. + +Debugging information is sent to syslogd, using the DEBUG priority, facilities +MAIL and DAEMON. + +You can also try to set MALLOC_CHECK_=2 in the environment, so that malloc() +will cause Cyrus to dump core if it detects any sort of corruption. + + +Telemetry logs +-------------- + +Cyrus will happily log all communications between the Cyrus store closed-box and +the outside world. These logs are sometimes vital to understand exactly what +is happening and to reproduce bugs. + +To enable telemetry logging, create a directory under /var/lib/cyrus/log with +the same name as the username for which you want the communication sessions to +be logged. Cyrus will log all imap, pop3, sieve and lmtp talks authenticated +as that user (including proxied connections). Make sure the directory is owned +by user cyrus. + +IMPORTANT: +Watch out for sensitive information such as passwords when you submit the +telemetry logs to a public bug-tracking system or mailinglist. + + +Recompiling Cyrus with debugging information +-------------------------------------------- + +In order to produce useful back-traces, or to interactively debug Cyrus, +you must rebuild the package with debugging information. It is quite +easy to do so: + +1. Install all source dependencies to build the package (needs root): + apt-get install build-essential fakeroot + apt-get build-dep cyrus-imapd-2.2 + +2. Download and rebuild Cyrus with debug information: + apt-get source cyrus-imapd-2.2 + cd cyrus-imapd-2.2* + DEB_BUILD_OPTIONS=debug,noopt,nostrip dpkg-buildpackage -uc -us -rfakeroot + +3. Install the Cyrus packages with debug information (needs root): + cd .. + dpkg -i *deb (or something like that) + +Now Cyrus should be working fine, using binaries with full debug information +for gdb. For interactive debugging, you may want to make sure there are no +optimizations, in which case you should use "DEB_BUILD_OPTIONS=noopt,nostrip +dpkg-buildpackage -uc -us -rfakeroot". + +Warning: the next time a new version of cyrus is released, apt will download +the non-debugging version of the Cyrus debs, and install them over the debugging +packages. + +To install the non-debugging, optimized version of Cyrus over the debugging +one, issue "apt-get --reinstall install (package)" commands for all the Cyrus +packages you want replaced. + + +Attaching debuggers to Cyrus, and getting traces +------------------------------------------------ + +You can tell Cyrus services to run a debugging command just before they +start doing real work. This can be used to run strace, ltrace and gdb +or ddd (for interactive debugging and back-tracing) quite easily. + +Set the shell command to be run in /etc/imapd.conf, option debug_command. +Then, add the command line switch "-D" to the Cyrus services you want to +run the debug_command in /etc/cyrus.conf, and restart cyrmaster using +/etc/init.d/cyrus2.2 restart. + +The debugging command must be given as a single line in the configuration file. + +To get a back-trace using gdb: +debug_command: /usr/bin/gdb -batch -cd=/tmp -x /usr/lib/cyrus/getbacktrace.gdb /usr/lib/cyrus/bin/%s %d >/tmp/gdb-backtrace.cyrus.%1$s.%2$d <&- 2>&1 & + +The above will produce a back-trace of every service run with -D that segfaults +in the files /tmp/gdb-backtrace.cyrus.*; /usr/lib/cyrus/getbacktrace.gdb +simply has the sequence of commands for gdb: c (to continue running the +service), bt (to get the back-trace if the program didn't exit normally), quit +(to quit gdb). + +For strace, you can use: +debug_command: /usr/bin/strace -tt -o /tmp/strace.cyrus.%s.%d -p %2$d <&- 2>&1 & + +Which will produce straces in /tmp/strace.cyrus.* + +For ltrace, you can use: +debug_command: /usr/bin/ltrace -tt -n 2 -o /tmp/ltrace.cyrus.%s.%d -p %2$d <&- 2>&1 & + +Which will produce ltraces in /tmp/ltrace.cyrus.* + +Be warned that sensitive information such as passwords may be disclosed in the +strace and ltrace output, so mangle them before sending such traces to public +bug-tracking systems or mailing lists. + + -- Henrique de Moraes Holschuh --- cyrus-imapd-2.2-2.2.13.orig/debian/cyrus-pop3d-2.2.install +++ cyrus-imapd-2.2-2.2.13/debian/cyrus-pop3d-2.2.install @@ -0,0 +1,3 @@ +etc/pam.d/pop +usr/lib/cyrus/bin/pop3d +usr/share/man/man8/pop3d* --- cyrus-imapd-2.2-2.2.13.orig/debian/cyrus-common-2.2.lintian +++ cyrus-imapd-2.2-2.2.13/debian/cyrus-common-2.2.lintian @@ -0,0 +1,4 @@ +cyrus-common-2.2: no-debconf-config +cyrus-common-2.2: postinst-uses-db-input +cyrus-common-2.2: dir-or-file-in-var-run var/run/cyrus/ +cyrus-common-2.2: dir-or-file-in-var-run var/run/cyrus/socket/ --- cyrus-imapd-2.2-2.2.13.orig/debian/cyradm-16x16.xpm +++ cyrus-imapd-2.2-2.2.13/debian/cyradm-16x16.xpm @@ -0,0 +1,45 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"16 16 23 1", +" c Gray0", +". c #191919", +"X c Gray20", +"o c #00007f", +"O c #007f00", +"+ c #007f7f", +"@ c #7f0000", +"# c #7f007f", +"$ c #7f7f00", +"% c #4c4c4c", +"& c #666667", +"* c Gray50", +"= c Blue", +"- c Green", +"; c Cyan", +": c Red", +"> c Magenta", +", c Yellow", +"< c Gray60", +"1 c #b2b2b2", +"2 c Gray80", +"3 c Gray90", +"4 c Gray100", +/* pixels */ +"22111;1212211111", +"211221213<121221", +"2111212232<11122", +"121121221<231<11", +"2112232<34334112", +"1112222243213212", +";2221<11*&<<*<<1", +"1221233323232231", +"2233223333332&1<", +"2213123333233*1*", +"123312121222233*", +"1233212<<213223<", +"12331<1<<11<123*", +"123333322222223*", +"123223322222323*", +"2<&%%%X%%%%X%%X%" +}; --- cyrus-imapd-2.2-2.2.13.orig/debian/README.new_upstream +++ cyrus-imapd-2.2-2.2.13/debian/README.new_upstream @@ -0,0 +1,3 @@ +If a new upstream version is integrated, make sure you edit +cyrus2.2-common.postinst and fix the version in there with +the new upstream version (search for compare-versions). --- cyrus-imapd-2.2-2.2.13.orig/debian/cyradm-32x32.xpm +++ cyrus-imapd-2.2-2.2.13/debian/cyradm-32x32.xpm @@ -0,0 +1,61 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 23 1", +" c Gray0", +". c #191919", +"X c Gray20", +"o c #00007f", +"O c #007f00", +"+ c #007f7f", +"@ c #7f0000", +"# c #7f007f", +"$ c #7f7f00", +"% c #4c4c4c", +"& c #666667", +"* c Gray50", +"= c Blue", +"- c Green", +"; c Cyan", +": c Red", +"> c Magenta", +", c Yellow", +"< c Gray60", +"1 c #b2b2b2", +"2 c Gray80", +"3 c Gray90", +"4 c Gray100", +/* pixels */ +"222111112;2112121222111112112121", +"121112;2112211223+11212111121111", +"221112222112111333+221121221112;", +"2112111211222133333&12222;212222", +"11111112212122333323$221+2121211", +"212121112122333%3 332&41%1111121", +";212112;22132233211%44443&112211", +"2211222222233.3112344444442112;2", +"11111211133321114444441444%22121", +"1212222133311 444444*%4444%22212", +"211112233111444444:4334%444%2111", +";11222331 433223* 2332%322231112", +"222213&&11&*&&%#%%# %&#% #%&221", +"12233343434444434444344444443311", +"113&2&&&3333333333333332222333+2", +"2133333333333333332333232X**23%o", +"22344333333333232233222221#*24.%", +"124#&34#�:.#24.%", +"223333333333333333322332332224.%", +"214333333323333323322222322224.X", +"11333333 &23X&2&&3223223222234.X", +"123334433333333333222232223234.%", +"12333333&2X12X& &13X2322322134.%", +"123333333233333332333222222224.X", +"21333332&&&1&X2 3&&3X&&X222234.X", +"213333333333323222222222222134.%", +"123333333333332223322322222134.X", +"113333233233232332232222322324.X", +"223334434434444444434434444444.%", +"12 . . .X", +"2112%%%%o%%X%%o%X%%%o%X%X%oXXo%%", +"11121222122212122122122122222222" +}; --- cyrus-imapd-2.2-2.2.13.orig/debian/README.Debian.database +++ cyrus-imapd-2.2-2.2.13/debian/README.Debian.database @@ -0,0 +1,132 @@ +Cyrus IMAP for Debian: Database backend conversion +$Id: README.Debian.database 805 2009-09-07 07:36:52Z sven $ +-------------------------------------------------- + + "All systems administrators have their horror stories. For me, it was + setting up a HP Color Bubblejet under Linux using ghostscript before + linuxprinting.org was alive. Well that was a piece of cake compared + to what I am about to describe in this document." + -- "Hosting email for virtual domains using Postfix and Cyrus" + Haim Dimermanas, 2001-08-01 + + "I warned you to read all the documentation first, didn't I?" + -- Henrique M. Holschuh, 2002-10-01 + +For more information, please consult http://asg.web.cmu.edu/cyrus/imapd/. +There is also Cyrus-HOWTO (Cyrus-IMAP.txt) available as part of the LDP HOWTO +collection. Upgrade hints are in UPGRADE.Debian. Outdated documentation will +cause you much grief, so beware of that when hunting anywhere else than the +Cyrus mailinglist for information. + + +Database backends +----------------- + +Cyrus can be compiled to use different types of database backends for each of +its databases. The package will warn you if you try to start Cyrus and the +database backends seem to have changed since the last active version. + +After converting all the mail stores and /var/lib/cyrus to use the proper +database backends using cvt_cyrusdb(8), remove +/usr/lib/cyrus/cyrus-db-types.active and run "dpkg-reconfigure cyrus-common-2.2" +once to reset the error trigger, and start cyrmaster. + +If cvt-cyrusdb locks up just at the beginning of the conversion, your databases +might be locked. Unlock them (i.e. REALLY stop Cyrus if it is still running, +use the db* utilities (from the older Berkeley DB version) to clean any stray +locks, or try a reboot). + +IMPORTANT: If you changed the type of any of the databases through imapd.conf, + cyrus-db-types.txt isn't updated to match those. Be sure to cross-check + imapd.conf if you did that. + + +Step-by-step conversion guide: + +1. Stop the Cyrus system + /etc/init.d/cyrus2.2 stop + +2. Find out which databases to convert: + diff -u /usr/lib/cyrus/cyrus-db-types.active \ + /usr/lib/cyrus/cyrus-db-types.txt + + The databases are these in the default install: + DUPLICATE /var/lib/cyrus/deliver.db + MBOX /var/lib/cyrus/mailboxes.db + TLS /var/lib/cyrus/tls_sessions.db + + Don't bother upgrading the TLS database, just delete it: the information + there is not reused when you stop Cyrus. + + If the BerkeleyDB version is what was changed, you need to use the + Berkeley DB upgrade utility in all db* databases. See the manpages for + db*_upgrade. Note that you need to use the db*_upgrade utility with the + same version as given on the DBENGINE line of cyrus-db-types.txt. + You should look for lines with 'berkeley' or 'berkeley_nosync' on + the right side. You can safely ignore lines with 'flat', 'skiplist' or + 'quotalegacy'. + The db*_upgrade utility (along with its manpage) is typically included + in the db*-util packages (for example, db4.7-util package for BerkeleyDB + 4.7s db4.7_upgrade). + + The SUBS and SEEN databases are different: there are many of them (one + for every user for SEEN and SUBS respectively) and you need to convert + every single one of them. + + SUBS /var/lib/cyrus/...../*.sub + SEEN /var/lib/cyrus/...../*.seen + + For Cyrus 1.x versions, these files are in /var/spool/cyrus/...../ + + SUBS contains the subscribed folders, and SEEN contains the seen state + of every mail in a folder. + + Types db3_nosync and db3 are the same for database conversion matters. + +2.1 Converting from DB* to SKIPLIST + + As user cyrus, do the following: + + cd / + /usr/sbin/cvt_cyrusdb db3 \ + /var/lib/cyrus/temp.db flat + rm -f + /usr/sbin/cvt_cyrusdb /var/lib/cyrus/temp.db flat \ + skiplist + chown cyrus:mail + rm -f /var/lib/cyrus/temp.db + +2.2 Converting from FLAT to SKIPLIST + + As user cyrus, do the following: + + cd / + mv .old + /usr/sbin/cvt_cyrusdb .old flat \ + skiplist + chown cyrus:mail + rm -f .old + +2.3 SUBS and SEEN databases + + I suggest using a small shell script and using "find" to mass-convert + the SEEN databases: + find /var/lib/cyrus -type f -name '*.seen' -exec myshellscript {} \; + + The "find" command above gives you the name of the database as "$1" + inside your shell script. + +3. Reset the database backend change system + rm /usr/lib/cyrus/cyrus-db-types.active + dpkg-reconfigure cyrus-common-2.2 + +4. Start Cyrus, if not started by step 3 + /etc/init.d/cyrus2.2 start + +WHY THERE IS NO AUTOMATED UPGRADE SCRIPT: Because we are quite short on time +lately: it is much faster to write a doc than to write and test the script. + +Maybe someone will write one (We will certainly include it in the package, if +it is good enough). Don't hold your breath, though. + + - Your cyrus-imapd team --- cyrus-imapd-2.2-2.2.13.orig/debian/nntp.pam +++ cyrus-imapd-2.2-2.2.13/debian/nntp.pam @@ -0,0 +1,13 @@ +# PAM configuration file for Cyrus NNTP service +# +# If you want to use Cyrus in a setup where users don't have +# accounts on the local machine, you'll need to make sure +# you use something like pam_permit for account checking. +# +# Remember that SASL (and therefore Cyrus) accesses PAM +# modules through saslauthd, and that SASL can only deal with +# plaintext passwords if PAM is used. +# + +@include common-auth +@include common-account --- cyrus-imapd-2.2-2.2.13.orig/debian/cyrus-clients-2.2.README.Debian +++ cyrus-imapd-2.2-2.2.13/debian/cyrus-clients-2.2.README.Debian @@ -0,0 +1,9 @@ +Cyrus IMAP for Debian, generic SASL-enabled protocol clients +$Id: cyrus-clients-2.2.README.Debian 229 2005-12-08 23:26:29Z astronut $ +--------------------- + +Refer to the cyrus-doc-2.2 package for more information. There is a lot +of it, and it will save you hours (or days) of frustating bug-hunting if +you read them first. + + -- Henrique de Moraes Holschuh --- cyrus-imapd-2.2-2.2.13.orig/debian/cyrdump.8 +++ cyrus-imapd-2.2-2.2.13/debian/cyrdump.8 @@ -0,0 +1,16 @@ +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.24. +.TH CYRDUMP "8" "Project Cyrus" "CMU" +.SH NAME +cyrdump \- dump mailboxes to stdout +.SH SYNOPSIS +.B +cyrdump [-C ] [-v] [mboxpattern ...] +.SH DESCRIPTION +.PP +A tool for dumping IMAP mailboxes on a server. +.TP +\fB\-C \fR +Specify an alternate configuration file ( is used by default) +.TP +\fB\-v\fR +Increase program verbosity. --- cyrus-imapd-2.2-2.2.13.orig/debian/cyrus-admin-2.2.lintian +++ cyrus-imapd-2.2-2.2.13/debian/cyrus-admin-2.2.lintian @@ -0,0 +1 @@ +cyrus-admin-2.2: shell-script-fails-syntax-check ./usr/bin/cyradm --- cyrus-imapd-2.2-2.2.13.orig/debian/imapd.conf +++ cyrus-imapd-2.2-2.2.13/debian/imapd.conf @@ -0,0 +1,327 @@ +# Debian Cyrus imapd.conf +# $Id: imapd.conf 565 2006-08-14 16:51:28Z sven $ +# See imapd.conf(5) for more information and more options + +# Configuration directory +configdirectory: /var/lib/cyrus + +# Which partition to use for default mailboxes +defaultpartition: default +partition-default: /var/spool/cyrus/mail + +# News setup +partition-news: /var/spool/cyrus/news +newsspool: /var/spool/news + +# Alternate namespace +# If enabled, activate the alternate namespace as documented in +# /usr/share/doc/cyrus-doc-2.2/html/altnamespace.html, where an user's +# subfolders are in the same level as the INBOX +# See also userprefix and sharedprefix on imapd.conf(5) +altnamespace: no + +# 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 + +# Rejecting illegal characters in headers +# Headers of RFC2882 messages must not have characters with the 8th bit +# set. However, too many badly-written MUAs generate this, including most +# spamware. Enable this to reject such messages. +#reject8bit: yes + +# Munging illegal characters in headers +# Headers of RFC2882 messages must not have characters with the 8th bit +# set. However, too many badly-written MUAs generate this, including most +# spamware. If you kept reject8bit disabled, you can choose to leave the +# crappage untouched by disabling this (if you don't care that IMAP SEARCH +# won't work right anymore. +#munge8bit: no + +# Forcing recipient user to lowercase +# Cyrus 2.2 is case-sensitive. If all your mail users are in lowercase, it is +# probably a very good idea to set lmtp_downcase_rcpt to true. This is set by +# default, per RFC2821. This was not set by default in debian versions up to +# and including 2.2.12-4. +lmtp_downcase_rcpt: yes + +# Uncomment the following and add the space-separated users who +# have admin rights for all services. +#admins: cyrus + +# Space-separated list of users that have lmtp "admin" status (i.e. that +# can deliver email through TCP/IP lmtp). If specified, this parameter +# overrides the "admins" parameter above +#lmtp_admins: postman + +# Space-separated list of users that have mupdate "admin" status, in +# addition to those in the admins: entry above. Note that mupdate slaves and +# backends in a Murder cluster need to autenticate against the mupdate master +# as admin users. +#mupdate_admins: mupdateman + +# Space-separated list of users that have imapd "admin" status, in +# addition to those in the admins: entry above +#imap_admins: cyrus + +# Space-separated list of users that have sieve "admin" status, in +# addition to those in the admins: entry above +#sieve_admins: cyrus + +# List of users and groups that are allowed to proxy for other users, +# seperated by spaces. Any user listed in this will be allowed to login +# for any other user. Like "admins:" above, you can have imap_proxyservers +# and sieve_proxyservers. +#proxyservers: cyrus + +# No anonymous logins +allowanonymouslogin: no + +# Minimum time between POP mail fetches in minutes +popminpoll: 1 + +# If nonzero, normal users may create their own IMAP accounts by creating +# the mailbox INBOX. The user's quota is set to the value if it is positive, +# otherwise the user has unlimited quota. +autocreatequota: 0 + +# umask used by Cyrus programs +umask: 077 + +# Sendmail binary location +# DUE TO A BUG, Cyrus sends CRLF EOLs to this program. This breaks Exim 3. +# For now, to work around the bug, set this to a wrapper that calls +# /usr/sbin/sendmail -dropcr instead if you use Exim 3. +#sendmail: /usr/sbin/sendmail + +# If enabled, cyrdeliver will look for Sieve scripts in user's home +# directories: ~user/.sieve. +sieveusehomedir: false + +# If sieveusehomedir is false, this directory is searched for Sieve scripts. +sievedir: /var/spool/sieve + +# notifyd(8) method to use for "MAIL" notifications. If not set, "MAIL" +# notifications are disabled. Valid methods are: null, log, zephyr +#mailnotifier: zephyr + +# notifyd(8) method to use for "SIEVE" notifications. If not set, "SIEVE" +# notifications are disabled. This method is only used when no method is +# specified in the script. Valid methods are null, log, zephyr, mailto +#sievenotifier: zephyr + +# DRAC (pop-before-smtp, imap-before-smtp) support +# Set dracinterval to the time in minutes to call DRAC while a user is +# connected to the imap/pop services. Set to 0 to disable DRAC (default) +# Set drachost to the host where the rpc drac service is running +#dracinterval: 0 +#drachost: localhost + +# If enabled, the partitions will also be hashed, in addition to the hashing +# done on configuration directories. This is recommended if one partition has a +# very bushy mailbox tree. +hashimapspool: true + +# Allow plaintext logins by default (SASL PLAIN) +allowplaintext: yes + +# 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 + +# Allow use of the POP3 APOP authentication command. +# Note that this command requires that the plaintext passwords are +# available in a SASL auxprop backend (eg. sasldb), and that the system +# can provide enough entropy (eg. from /dev/urandom) to create a challenge +# in the banner. +#allowapop: no + +# The minimum SSF that the server will allow a client to negotiate. A +# value of 1 requires integrity protection; any higher value requires some +# amount of encryption. +#sasl_minimum_layer: 0 + +# The maximum SSF that the server will allow a client to negotiate. A +# value of 1 requires integrity protection; any higher value requires some +# amount of encryption. +#sasl_maximum_layer: 256 + +# List of remote realms whose users may log in using cross-realm +# authentications. Seperate each realm name by a space. A cross-realm +# identity is considered any identity returned by SASL with an "@" in it. +# NOTE: To support multiple virtual domains on the same interface/IP, +# you need to list them all as loginreals. If you don't list them here, +# (most of) your users probably won't be able to log in. +#loginrealms: example.com + +# Enable virtual domain support. If enabled, the user's domain will +# be determined by splitting a fully qualified userid at the last '@' +# or '%' symbol. If the userid is unqualified, and the virtdomains +# option is set to "on", then the domain will be determined by doing +# a reverse lookup on the IP address of the incoming network +# interface, otherwise the user is assumed to be in the default +# domain (if set). +#virtdomains: userid + +# The default domain for virtual domain support +# If the domain of a user can't be taken from its login and it can't +# be determined by doing a reverse lookup on the interface IP, this +# domain is used. +#defaultdomain: + +# +# SASL library options (these are handled directly by the SASL libraries, +# refer to SASL documentation for an up-to-date list of these) +# + +# The mechanism(s) used by the server to verify plaintext passwords. Possible +# values are "saslauthd", "auxprop", "pwcheck" and "alwaystrue". They +# are tried in order, you can specify more than one, separated by spaces. +# +# 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: auxprop + +# What auxpropd plugins to load, if using sasl_pwcheck_method: auxprop +# by default, all plugins are tried (which is probably NOT what you want). +#sasl_auxprop_plugin: sasldb + +# If enabled, the SASL library will automatically create authentication secrets +# when given a plaintext password. Refer to SASL documentation +sasl_auto_transition: no + +# +# SSL/TLS Options +# + +# File containing the global certificate used for ALL services (imap, pop3, +# lmtp, sieve) +#tls_cert_file: /etc/ssl/certs/ssl-cert-snakeoil.pem + +# File containing the private key belonging to the global server certificate. +#tls_key_file: /etc/ssl/private/ssl-cert-snakeoil.key + +# File containing the certificate used for imap. If not specified, the global +# certificate is used. A value of "disabled" will disable SSL/TLS for imap. +#imap_tls_cert_file: /etc/ssl/certs/cyrus-imap.pem + +# File containing the private key belonging to the imap-specific server +# certificate. If not specified, the global private key is used. A value of +# "disabled" will disable SSL/TLS for imap. +#imap_tls_key_file: /etc/ssl/private/cyrus-imap.key + +# File containing the certificate used for pop3. If not specified, the global +# certificate is used. A value of "disabled" will disable SSL/TLS for pop3. +#pop3_tls_cert_file: /etc/ssl/certs/cyrus-pop3.pem + +# File containing the private key belonging to the pop3-specific server +# certificate. If not specified, the global private key is used. A value of +# "disabled" will disable SSL/TLS for pop3. +#pop3_tls_key_file: /etc/ssl/private/cyrus-pop3.key + +# File containing the certificate used for lmtp. If not specified, the global +# certificate is used. A value of "disabled" will disable SSL/TLS for lmtp. +#lmtp_tls_cert_file: /etc/ssl/certs/cyrus-lmtp.pem + +# File containing the private key belonging to the lmtp-specific server +# certificate. If not specified, the global private key is used. A value of +# "disabled" will disable SSL/TLS for lmtp. +#lmtp_tls_key_file: /etc/ssl/private/cyrus-lmtp.key + +# File containing the certificate used for sieve. If not specified, the global +# certificate is used. A value of "disabled" will disable SSL/TLS for sieve. +#sieve_tls_cert_file: /etc/ssl/certs/cyrus-sieve.pem + +# File containing the private key belonging to the sieve-specific server +# certificate. If not specified, the global private key is used. A value of +# "disabled" will disable SSL/TLS for sieve. +#sieve_tls_key_file: /etc/ssl/private/cyrus-sieve.key + +# File containing one or more Certificate Authority (CA) certificates. +#tls_ca_file: /etc/ssl/certs/cyrus-imapd-ca.pem + +# Path to directory with certificates of CAs. +tls_ca_path: /etc/ssl/certs + +# The length of time (in minutes) that a TLS session will be cached for later +# reuse. The maximum value is 1440 (24 hours), the default. A value of 0 will +# disable session caching. +tls_session_timeout: 1440 + +# The list of SSL/TLS ciphers to allow, in decreasing order of precedence. +# The format of the string is described in ciphers(1). The Debian default +# selects TLSv1 high-security ciphers only, and removes all anonymous ciphers +# from the list (because they provide no defense against man-in-the-middle +# attacks). It also orders the list so that stronger ciphers come first. +tls_cipher_list: TLSv1+HIGH:!aNULL:@STRENGTH + +# Require a client certificate for ALL services (imap, pop3, lmtp, sieve). +#tls_require_cert: false + +# Require a client certificate for imap ONLY. +#imap_tls_require_cert: false + +# Require a client certificate for pop3 ONLY. +#pop3_tls_require_cert: false + +# Require a client certificate for lmtp ONLY. +#lmtp_tls_require_cert: false + +# Require a client certificate for sieve ONLY. +#sieve_tls_require_cert: false + +# +# Cyrus Murder cluster configuration +# +# Set the following options to the values needed for this server to +# autenticate against the mupdate master server: +# mupdate_server +# mupdate_port +# mupdate_username +# mupdate_authname +# mupdate_realm +# mupdate_password +# mupdate_retry_delay + +## +## KEEP THESE IN SYNC WITH cyrus.conf +## +# Unix domain socket that lmtpd listens on. +lmtpsocket: /var/run/cyrus/socket/lmtp + +# The idle backend to use for IDLE command. +# Options: poll (default), idled, no +# poll doesn't need the idled daemon and is supposed to be more robust. +# however it doesn't update as quickly as the idled backend does. "no" +# turns off IDLE support. If set to "idled", you will also need to enable +# the "idled" entry in cyrus.conf. +idlemethod: poll + +# Unix domain socket that idled listens on. +idlesocket: /var/run/cyrus/socket/idle + +# Unix domain socket that the new mail notification daemon listens on. +notifysocket: /var/run/cyrus/socket/notify + +# Syslog prefix. Defaults to cyrus (so logging is done as cyrus/imap etc.) +syslog_prefix: cyrus + +## +## DEBUGGING +## +# Debugging hook. See /usr/share/doc/cyrus-common-2.2/README.Debian.debug +# Keep the hook disabled when it is not in use +# +# gdb Back-traces +#debug_command: /usr/bin/gdb -batch -cd=/tmp -x /usr/lib/cyrus/get-backtrace.gdb /usr/lib/cyrus/bin/%s %d >/tmp/gdb-backtrace.cyrus.%1$s.%2$d <&- 2>&1 & +# +# system-call traces +#debug_command: /usr/bin/strace -tt -o /tmp/strace.cyrus.%s.%d -p %2$d <&- 2>&1 & +# +# library traces +#debug_command: /usr/bin/ltrace -tt -n 2 -o /tmp/ltrace.cyrus.%s.%d -p %2$d <&- 2>&1 & --- cyrus-imapd-2.2-2.2.13.orig/debian/lmtp.pam +++ cyrus-imapd-2.2-2.2.13/debian/lmtp.pam @@ -0,0 +1,14 @@ +# PAM configuration file for Cyrus LMTP service +# $Id: lmtp.pam 5 2005-03-12 23:19:45Z sven $ +# +# If you want to use Cyrus in a setup where users don't have +# accounts on the local machine, you'll need to make sure +# you use something like pam_permit for account checking. +# +# Remember that SASL (and therefore Cyrus) accesses PAM +# modules through saslauthd, and that SASL can only deal with +# plaintext passwords if PAM is used. +# + +@include common-auth +@include common-account --- cyrus-imapd-2.2-2.2.13.orig/debian/cyrus-common-2.2.preinst +++ cyrus-imapd-2.2-2.2.13/debian/cyrus-common-2.2.preinst @@ -0,0 +1,55 @@ +#! /bin/sh +# preinst script for cyrus-common-2.2 +# Copyright (c) 2006 by Sven Mueller +# Distributed under the GNU General Public License version 2 +# $Id: cyrus-common-2.2.preinst 824 2009-09-08 08:22:11Z sven $ +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# upgrade +# install +# abort-upgrade +# for details, see /usr/doc/packaging-manual/ + +case "$1" in + upgrade) + # old version was fully installed + if dpkg --compare-versions "$2" lt "2.2.13-4bpo1"; then + # Upgrading from a version which used a wrong + # filename for the daily cronjob + if [ -f /etc/cron.daily/cyrus-common-2.2 ] \ + && [ ! -f /etc/cron.daily/cyrus22 ]; then + mv -f /etc/cron.daily/cyrus-common-2.2 /etc/cron.daily/cyrus22 + fi + fi + ;; + install) + # old version was in "configuration files only" state + if dpkg --compare-versions "$2" lt "2.2.13-4bpo1"; then + # Upgrading from a version which used a wrong + # filename for the daily cronjob + if [ -f /etc/cron.daily/cyrus-common-2.2 ] \ + && [ ! -f /etc/cron.daily/cyrus22 ]; then + mv -f /etc/cron.daily/cyrus-common-2.2 /etc/cron.daily/cyrus22 + fi + fi + ;; + abort-upgrade) + # upgrade failed after unpack - error unwind is tried + # however, if it works, new-postrm is also called with abort-upgrade + ;; + *) + echo "postrm called with unknown argument \`$1'" >&2 + exit 0 + +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 --- cyrus-imapd-2.2-2.2.13.orig/debian/deletable.files +++ cyrus-imapd-2.2-2.2.13/debian/deletable.files @@ -0,0 +1,98 @@ +doc/man/arbitron.8.html +doc/man/chk_cyrus.8.html +doc/man/ctl_cyrusdb.8.html +doc/man/ctl_deliver.8.html +doc/man/ctl_mboxlist.8.html +doc/man/cvt_cyrusdb.8.html +doc/man/cyr_expire.8.html +doc/man/cyradm.1.html +doc/man/cyrus.conf.5.html +doc/man/deliver.8.html +doc/man/fetchnews.8.html +doc/man/fud.8.html +doc/man/idled.8.html +doc/man/imapd.8.html +doc/man/imapd.conf.5.html +doc/man/imclient.3.html +doc/man/imtest.1.html +doc/man/installsieve.1.html +doc/man/ipurge.8.html +doc/man/krb.equiv.5.html +doc/man/lmtpd.8.html +doc/man/lmtptest.1.html +doc/man/master.8.html +doc/man/mbexamine.8.html +doc/man/mbpath.8.html +doc/man/mupdatetest.1.html +doc/man/nntpd.8.html +doc/man/nntptest.1.html +doc/man/notifyd.8.html +doc/man/pop3d.8.html +doc/man/pop3test.1.html +doc/man/quota.8.html +doc/man/reconstruct.8.html +doc/man/rmnews.8.html +doc/man/sieveshell.1.html +doc/man/sivtest.1.html +doc/man/smmapd.8.html +doc/man/smtptest.1.html +doc/man/squatter.8.html +doc/man/syncnews.8.html +doc/man/timsieved.8.html +doc/man/tls_prune.8.html +doc/man/w +doc/murder.png +doc/netnews.png +doc/text/altnamespace +doc/text/anoncvs +doc/text/bugs +doc/text/changes +doc/text/faq +doc/text/feedback +doc/text/index +doc/text/install +doc/text/install-admin-mb +doc/text/install-auth +doc/text/install-compile +doc/text/install-configure +doc/text/install-murder +doc/text/install-netnews +doc/text/install-perf +doc/text/install-prereq +doc/text/install-sieve +doc/text/install-snmpmon +doc/text/install-testing +doc/text/install-upgrade +doc/text/install-virtdomains +doc/text/mailing-list +doc/text/man +doc/text/notes +doc/text/os +doc/text/overview +doc/text/questions +doc/text/readme +doc/text/sieve +doc/text/sieve-protocol +doc/text/specs +imap/imap_err.c +imap/imap_err.h +imap/lmtpstats.c +imap/lmtpstats.h +imap/mupdate_err.c +imap/mupdate_err.h +imap/nntp_err.c +imap/nntp_err.h +imap/pushstats.c +imap/pushstats.h +lib/imapopts.c +lib/imapopts.h +man/imapd.conf.5 +man/sieveshell.1 +sieve/addr-lex.c +sieve/addr.c +sieve/addr.h +sieve/sieve-lex.c +sieve/sieve.c +sieve/sieve.h +sieve/sieve_err.c +sieve/sieve_err.h --- cyrus-imapd-2.2-2.2.13.orig/debian/cyrus-imapd-2.2.manpages +++ cyrus-imapd-2.2-2.2.13/debian/cyrus-imapd-2.2.manpages @@ -0,0 +1,3 @@ +debian/tmp/usr/share/man/man8/idled.8 +debian/tmp/usr/share/man/man8/imapd.8 +debian/tmp/usr/share/man/man8/squatter.8 --- cyrus-imapd-2.2-2.2.13.orig/debian/logcheck.ignore +++ cyrus-imapd-2.2-2.2.13/debian/logcheck.ignore @@ -0,0 +1,64 @@ +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/[a-zA-Z0-9_]+\[[0-9]+\]: skiplist: recovered +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/[a-zA-Z0-9_]+\[[0-9]+\]: skiplist: checkpointed +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/[a-zA-Z0-9_]+\[[0-9]+\]: duplicate_prune: pruning +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/[a-zA-Z0-9_]+\[[0-9]+\]: duplicate_prune: purged +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/[a-zA-Z0-9_]+\[[0-9]+\]: executed +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/[a-zA-Z0-9_]+\[[0-9]+\]: accepted connection +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/[a-zA-Z0-9_]+\[[0-9]+\]: telling master +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/[a-zA-Z0-9_]+\[[0-9]+\]: +mydelete: +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/[a-zA-Z0-9_]+\[[0-9]+\]: (bad)?login: +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/[a-zA-Z0-9_]+\[[0-9]+\]: starttls: [[:alnum:]]+ with cipher +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/[a-zA-Z0-9_]+\[[0-9]+\]: (\[[a-z0-9]+\] )?STARTTLS( negotiation)? failed: +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/[a-zA-Z0-9_]+\[[0-9]+\]: DIGEST-MD5 server step +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/ctl_cyrusdb\[[0-9]+\]: (done +)?recovering cyrus databases +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/ctl_cyrusdb\[[0-9]+\]: archiving +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/ctl_cyrusdb\[[0-9]+\]: checkpointing +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/ctl_cyrusdb\[[0-9]+\]: done checkpointing +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/ctl_deliver\[[0-9]+\]: duplicate_prune: pruning back +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/ctl_deliver\[[0-9]+\]: duplicate_prune: purged +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/tls_prune\[[0-9]+\]: (tls_prune: )?purged +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/master\[[0-9]+\]: ready for work +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/master\[[0-9]+\]: about to exec +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/master\[[0-9]+\]: process started +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/master\[[0-9]+\]: process [0-9]+ exited, status 0$ +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/master\[[0-9]+\]: service [a-zA-Z0-9]+ now has [0-9]+ workers +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/[a-zA-Z0-9_]+\[[0-9]+\]: pop3s failed: +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/[a-zA-Z0-9_]+\[[0-9]+\]: lmtp connection preauth'd as postman +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/[a-zA-Z0-9_]+\[[0-9]+\]: dupelim: eliminated duplicate message to +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/[a-zA-Z0-9_]+\[[0-9]+\]: duplicate_check: +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/[a-zA-Z0-9_]+\[[0-9]+\]: duplicate_mark: +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/[a-zA-Z0-9_]+\[[0-9]+\]: mystore: committing txn +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/[a-zA-Z0-9_]+\[[0-9]+\]: mystore: starting txn +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/[a-zA-Z0-9_]+\[[0-9]+\]: sieve parse error +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/[a-zA-Z0-9_]+\[[0-9]+\]: sieve: discarded +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/[a-zA-Z0-9_]+\[[0-9]+\]: abort_txn: aborting txn +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/[a-zA-Z0-9_]+\[[0-9]+\]: delete: starting txn +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/[a-zA-Z0-9_]+\[[0-9]+\]: open: user .* opened +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/[a-zA-Z0-9_]+\[[0-9]+\]: mycommit: committing txn +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/[a-zA-Z0-9_]+\[[0-9]+\]: myfetch: reusing txn +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/[a-zA-Z0-9_]+\[[0-9]+\]: myfetch: starting txn +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/[a-zA-Z0-9_]+\[[0-9]+\]: mystore: reusing txn +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/[a-zA-Z0-9_]+\[[0-9]+\]: seen_db: user .* opened +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/[a-zA-Z0-9_]+\[[0-9]+\]: Connection reset by peer, closing connection +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/[a-zA-Z0-9_]+\[[0-9]+\]: SQUAT failed +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/[a-zA-Z0-9_]+\[[0-9]+\]: SQUAT returned [0-9]+ messages +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/[a-zA-Z0-9_]+\[[0-9]+\]: idle for too long, closing connection +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/[a-zA-Z0-9_]+\[[0-9]+\]: annotatemore_store +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/[a-zA-Z0-9_]+\[[0-9]+\]: created stage directory +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/[a-zA-Z0-9_]+\[[0-9]+\]: imaps TLS negotiation failed +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/[a-zA-Z0-9_]+\[[0-9]+\]: synchronizing mailbox +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/[a-zA-Z0-9_]+\[[0-9]+\]: mailbox list synchronization +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/[a-zA-Z0-9_]+\[[0-9]+\]: unready for connections +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/squatter\[[0-9]+\]: (done )?(indexing|skipping) mailbox +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/notifyd\[[0-9]+\]: do_notify using method +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/lmtpunix\[[0-9]+\]: IOERROR: fstating sieve script [/a-zA-Z^]+/defaultbc: No such file or directory +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/lmtpunix\[[0-9]+\]: WARNING: sieve script /var/spool/sieve/[/[:alnum:]^]+defaultbc doesn't exist: No such file or directory +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/sieve\[[0-9]+\]: entered bc_action_emit with filelen: [0-9]+$ +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/(imaps?|pop3s?)\[[0-9]+\]: no secret in database$ +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/cyr_expire\[[0-9]+\]: expunged 0 out of 0 messages from 0 mailboxes$ +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/(imaps?|pop3s?)\[[0-9]+\]: Expunged [0-9]+ messages from +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/(lmtp|lmtpunix)\[[0-9]+\]: Delivered: ]+>? +to mailbox: .*$ +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ perl: DIGEST-MD5 client step [0-9]$ +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/lmtpunix\[[0-9]+\]: sieve redirected: ]+>? +to: [._[:alnum:]-]+@[._[:alnum:]-]+$ +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/(lmtp|lmtpunix)\[[0-9]+\]: duplicate_(check|mark): .*$ + --- cyrus-imapd-2.2-2.2.13.orig/debian/cyrus-admin-2.2.README.Debian +++ cyrus-imapd-2.2-2.2.13/debian/cyrus-admin-2.2.README.Debian @@ -0,0 +1,9 @@ +Cyrus IMAP for Debian, admin utilities +$Id: cyrus-admin-2.2.README.Debian 229 2005-12-08 23:26:29Z astronut $ +--------------------- + +Refer to the cyrus-doc-2.2 package for more information. There is a lot +of it, and it will save you hours (or days) of frustating bug-hunting if +you read them first. + + -- Henrique de Moraes Holschuh --- cyrus-imapd-2.2-2.2.13.orig/debian/cyrus-imapd-2.2.links +++ cyrus-imapd-2.2-2.2.13/debian/cyrus-imapd-2.2.links @@ -0,0 +1 @@ +usr/share/doc/cyrus-common-2.2 usr/share/doc/cyrus-imapd-2.2 --- cyrus-imapd-2.2-2.2.13.orig/debian/libcyrus-imap-perl22.install +++ cyrus-imapd-2.2-2.2.13/debian/libcyrus-imap-perl22.install @@ -0,0 +1,2 @@ +usr/lib/perl* +usr/share/perl* --- cyrus-imapd-2.2-2.2.13.orig/debian/cyrus.conf +++ cyrus-imapd-2.2-2.2.13/debian/cyrus.conf @@ -0,0 +1,89 @@ +# Debian defaults for Cyrus IMAP server/cluster implementation +# see cyrus.conf(5) for more information +# +# All the tcp services are tcpd-wrapped. see hosts_access(5) +# $Id: cyrus.conf 567 2006-08-14 18:19:32Z sven $ + +START { + # do not delete this entry! + recover cmd="/usr/sbin/ctl_cyrusdb -r" + + # this is only necessary if idlemethod is set to "idled" in imapd.conf + #idled cmd="idled" + + # this is useful on backend nodes of a Murder cluster + # it causes the backend to syncronize its mailbox list with + # the mupdate master upon startup + #mupdatepush cmd="/usr/sbin/ctl_mboxlist -m" + + # this is recommended if using duplicate delivery suppression + delprune cmd="/usr/sbin/cyr_expire -E 3" + # this is recommended if caching TLS sessions + tlsprune cmd="/usr/sbin/tls_prune" +} + +# UNIX sockets start with a slash and are absolute paths +# you can use a maxchild=# to limit the maximum number of forks of a service +# you can use babysit=true and maxforkrate=# to keep tight tabs on the service +# most services also accept -U (limit number of reuses) and -T (timeout) +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 + nntp cmd="nntpd -U 30" listen="nntp" prefork=0 maxchild=100 + #nntps cmd="nntpd -s -U 30" listen="nntps" prefork=0 maxchild=100 + + # At least one form of LMTP is required for delivery + # (you must keep the Unix socket name in sync with imap.conf) + #lmtp cmd="lmtpd" listen="localhost:lmtp" prefork=0 maxchild=20 + lmtpunix cmd="lmtpd" listen="/var/run/cyrus/socket/lmtp" prefork=0 maxchild=20 + # ---------------------------------------------- + + # useful if you need to give users remote access to sieve + # by default, we limit this to localhost in Debian + sieve cmd="timsieved" listen="localhost:sieve" prefork=0 maxchild=100 + + # this one is needed for the notification services + notify cmd="notifyd" listen="/var/run/cyrus/socket/notify" proto="udp" prefork=1 + + # --- Murder frontends ------------------------- + # enable these and disable the matching services above, + # except for sieve (which deals automatically with Murder) + + # mupdate database service - must prefork at least 1 + # (mupdate slaves) + #mupdate cmd="mupdate" listen=3905 prefork=1 + # (mupdate master, only one in the entire cluster) + #mupdate cmd="mupdate -m" listen=3905 prefork=1 + + # proxies that will connect to the backends + #imap cmd="proxyd" listen="imap" prefork=0 maxchild=100 + #imaps cmd="proxyd -s" listen="imaps" prefork=0 maxchild=100 + #pop3 cmd="pop3proxyd" listen="pop3" prefork=0 maxchild=50 + #pop3s cmd="pop3proxyd -s" listen="pop3s" prefork=0 maxchild=50 + #lmtp cmd="lmtpproxyd" listen="lmtp" prefork=1 maxchild=20 + # ---------------------------------------------- +} + +EVENTS { + # this is required + checkpoint cmd="/usr/sbin/ctl_cyrusdb -c" period=30 + + # this is only necessary if using duplicate delivery suppression + delprune cmd="/usr/sbin/cyr_expire -E 3" at=0401 + + # this is only necessary if caching TLS sessions + tlsprune cmd="/usr/sbin/tls_prune" at=0401 + + # indexing of mailboxs for server side fulltext searches + + # reindex changed mailboxes (fulltext) approximately every other hour + #squatter_1 cmd="/usr/bin/nice -n 19 /usr/sbin/squatter -s" period=120 + + # reindex all mailboxes (fulltext) daily + #squatter_a cmd="/usr/sbin/squatter" at=0517 +} + --- cyrus-imapd-2.2-2.2.13.orig/debian/cyrus-makedirs.8 +++ cyrus-imapd-2.2-2.2.13/debian/cyrus-makedirs.8 @@ -0,0 +1,49 @@ +.\" Hey, EMACS: -*- nroff -*- +.\" $Id: cyrus-makedirs.8 229 2005-12-08 23:26:29Z astronut $ +.\" +.\" First parameter, NAME, should be all caps +.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection +.\" other parameters are allowed: see man(7), man(1) +.TH CYRUS-MAKEDIRS 8 "2002-12-08" +.\" Please adjust this date whenever revising the manpage. +.\" +.\" Some roff macros, for reference: +.\" .nh disable hyphenation +.\" .hy enable hyphenation +.\" .ad l left justify +.\" .ad b justify to both left and right margins +.\" .nf disable filling +.\" .fi enable filling +.\" .br insert line break +.\" .sp insert n+1 empty lines +.\" for manpage-specific macros, see man(7) +.SH NAME +cyrus-makedirs \- Sets up the Cyrus IMAPd system directories (spools) +.SH SYNOPSIS +.B cyrus-makedirs +.RI [ configfile ] +.br +.SH DESCRIPTION +This manual page documents briefly the +.B cyrus-makedirs +command. +Cyrus-makedirs is the Debian version of Cyrus upstream's mkimap program. +.PP +You +.B should +call /usr/sbin/cyrus-makedirs when you change any imapd.conf(5) options +that create or rename Cyrus mail stores/spools/partitions. It will be called +automatically on package upgrades. +.PP +.\" TeX users may be more comfortable with the \fB\fP and +.\" \fI\fP escape sequences to invode bold face and italics, +.\" respectively. +.SH OPTIONS +You can optionally tell cyrus-makedirs the Cyrus imapd.conf config file +to use. /etc/imapd.conf is assumed, if no parameters are given. +.SH SEE ALSO +.BR imapd.conf(5), +.BR /etc/default/cyrus2.2 +.SH AUTHOR +This manual page was written by Henrique de Moraes Holschuh , +for the Debian GNU/Linux system (but may be used by others). --- cyrus-imapd-2.2-2.2.13.orig/debian/cyrus-common-2.2.install +++ cyrus-imapd-2.2-2.2.13/debian/cyrus-common-2.2.install @@ -0,0 +1,20 @@ +etc/*conf +etc/pam.d/lmtp +etc/pam.d/sieve +usr/sbin/cyr* +usr/sbin/ctl_* +usr/sbin/cvt_* +usr/sbin/chk_* +usr/sbin/ipurge +usr/sbin/tls_prune +usr/sbin/mbpath +usr/sbin/arbitron* +usr/lib/cyrus/bin/lmtpd +usr/lib/cyrus/bin/timsieved +usr/lib/cyrus/bin/sievec +usr/lib/cyrus/bin/mbexamine +usr/lib/cyrus/bin/smmapd +usr/lib/cyrus/bin/notifyd +usr/lib/cyrus/bin/fud +usr/lib/cyrus/get-backtrace.gdb +usr/share/snmp --- cyrus-imapd-2.2-2.2.13.orig/debian/libcyrus-imap-perl22.manpages +++ cyrus-imapd-2.2-2.2.13/debian/libcyrus-imap-perl22.manpages @@ -0,0 +1,5 @@ +perl/imap/blib/man3/Cyrus::IMAP.3pm +perl/imap/blib/man3/Cyrus::IMAP::Admin.3pm +perl/imap/blib/man3/Cyrus::IMAP::IMSP.3pm +perl/imap/blib/man3/Cyrus::IMAP::Shell.3pm +perl/sieve/managesieve/blib/man3/Cyrus::SIEVE::managesieve.3pm --- cyrus-imapd-2.2-2.2.13.orig/debian/cyrus-clients-2.2.manpages +++ cyrus-imapd-2.2-2.2.13/debian/cyrus-clients-2.2.manpages @@ -0,0 +1 @@ +man/*test.1 --- cyrus-imapd-2.2-2.2.13.orig/debian/pop.pam +++ cyrus-imapd-2.2-2.2.13/debian/pop.pam @@ -0,0 +1,14 @@ +# PAM configuration file for Cyrus POP3 service +# $Id: pop.pam 5 2005-03-12 23:19:45Z sven $ +# +# If you want to use Cyrus in a setup where users don't have +# accounts on the local machine, you'll need to make sure +# you use something like pam_permit for account checking. +# +# Remember that SASL (and therefore Cyrus) accesses PAM +# modules through saslauthd, and that SASL can only deal with +# plaintext passwords if PAM is used. +# + +@include common-auth +@include common-account --- cyrus-imapd-2.2-2.2.13.orig/debian/cyrus-common-2.2.prerm +++ cyrus-imapd-2.2-2.2.13/debian/cyrus-common-2.2.prerm @@ -0,0 +1,43 @@ +#! /bin/sh +# prerm script for cyrus-common-2.2 +# Copyright (c) 2002 by Henrique de Moraes Holschuh +# Distributed under the GNU General Public License version 2 +# $Id: cyrus-common-2.2.prerm 229 2005-12-08 23:26:29Z astronut $ +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * `remove' +# * `upgrade' +# * `failed-upgrade' +# * `remove' `in-favour' +# * `deconfigure' `in-favour' +# `removing' +# +# for details, see http://www.debian.org/doc/debian-policy/ or +# the debian-policy package + + +case "$1" in + remove|upgrade|deconfigure) + # Call initscript, if it is there to stop the daemon + invoke-rc.d cyrus2.2 stop || true + ;; + failed-upgrade) + ;; + *) + echo "prerm called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 + + --- cyrus-imapd-2.2-2.2.13.orig/debian/cyrus-db-types.upgrading_from_1.5.txt +++ cyrus-imapd-2.2-2.2.13/debian/cyrus-db-types.upgrading_from_1.5.txt @@ -0,0 +1,6 @@ +DBENGINE BerkeleyDB3.2 +DUPLICATE db3_nosync +MBOX db3 +SEEN db3 +SUBS flat +TLS db3_nosync --- cyrus-imapd-2.2-2.2.13.orig/debian/cyrus-common-2.2.cyrus2.2.init +++ cyrus-imapd-2.2-2.2.13/debian/cyrus-common-2.2.cyrus2.2.init @@ -0,0 +1,248 @@ +#! /bin/sh +# +### BEGIN INIT INFO +# Provides: cyrus-common-2.2 +# Required-Start: $remote_fs $syslog $network +# Required-Stop: $remote_fs $syslog $network +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: common init system for cyrus 2.2 IMAP/POP3 daemons. +# Description: common init system the for cyrus 2.2 IMAP/POP3 daemons. +# starts the central cyrus 2.2 master process, which can +# then start various services depending on configuration. +# Typically starts IMAP and POP3 daemons, but might also +# start an NNTP daemon and various helper daemons for +# distributed mail/news storage systems (high-performance +# and/or high-reliability setups). +### END INIT INFO +# +# Copyright 2001-2005 by Henrique de Moraes Holschuh +# Various modifications done by Sven Mueller +# Distributed under the GPL version 2 +# +# $Id: cyrus-common-2.2.cyrus2.2.init 759 2008-04-02 15:06:19Z sven $ + +# Make sure we get sane results on borked locales +LC_ALL=C +export LC_ALL + +# Overridable defaults +unset CYRUS_VERBOSE +unset LISTENQUEUE +unset CONF +unset MASTERCONF +[ -r /etc/default/cyrus2.2 ] && . /etc/default/cyrus2.2 + +[ "x${CYRUS_VERBOSE}" != "x" ] && export CYRUS_VERBOSE +# Make sure the master process is daemonized +OPTIONS="${OPTIONS} -d" +[ "x${CONF}" != "x" ] && OPTIONS="-C ${CONF} ${OPTIONS}" +[ "x${MASTERCONF}" != "x" ] && OPTIONS="-M ${MASTERCONF} ${OPTIONS}" +[ "x${LISTENQUEUE}" != "x" ] && OPTIONS="-l ${LISTENQUEUE} ${OPTIONS}" + +PATH=/sbin:/usr/sbin:/bin:/usr/bin +DAEMON=/usr/sbin/cyrmaster +NAME=cyrmaster +[ "x${PIDFILE}" = "x" ] && PIDFILE="/var/run/${NAME}.pid" +DESC="Cyrus IMAPd" + +# Check if Cyrus 2.2 is installed +test -x ${DAEMON} || exit 0 +grep -qE '^PACKAGE_VERSION[[:blank:]]+2[.]2' \ + /usr/lib/cyrus/cyrus-hardwired-config.txt >/dev/null 2>&1 || exit 0 + +set -e + +START="--start --quiet --pidfile ${PIDFILE} --exec ${DAEMON} --name ${NAME} -- ${OPTIONS}" + +verifydb() { + while read -r DBKEY DBVALUE ; do + match=`sort -u < $1 | gawk "/^${DBKEY}[[:blank:]]/ { print \\$2 }"` + [ "x${match}" != "x${DBVALUE}" ] && return 0 + done + return 1 +} + +createdir() { +# $1 = user +# $2 = group +# $3 = permissions (octal) +# $4 = path to directory + [ -d "$4" ] || mkdir -p "$4" + chown -c -h "$1:$2" "$4" + chmod -c "$3" "$4" +} + +missingstatoverride () { + echo "$0: You are missing a dpkg-statoverride on $1. Add it." >&2 + exit 1 +} + +fixdirs () { + dir=`dpkg-statoverride --list /var/run/cyrus` \ + || missingstatoverride /var/run/cyrus + [ -z "$dir" ] \ + || createdir $dir + dir=`dpkg-statoverride --list /var/run/cyrus/socket` \ + || missingstatoverride /var/run/cyrus/socket + [ -z "$dir" ] \ + || createdir $dir +} + +check_status () { + if [ "$1" = "verbose" ]; then + PRINTIT=echo + else + PRINTIT=true + fi + if [ ! -f ${PIDFILE} ]; then + # using [c] in the grep avoids catching the grep + # process itself + if ps auxww | grep -qE 'usr/sbin/[c]yrmaster' ; then + # Damn, PID file doesn't exist, but cyrmaster process + # exists. Though strictly speaking, we should not + # do this, reconstruct the PID file here. + pidof /usr/sbin/cyrmaster > /dev/null 2>&1 \ + && pidof /usr/sbin/cyrmaster > ${PIDFILE} + ${PRINTIT} "cyrmaster running with PID `cat ${PIDFILE}`" + return 0 + fi + fi + if [ -s ${PIDFILE} ] && kill -0 `cat ${PIDFILE}` > /dev/null 2>&1; then + ${PRINTIT} "cyrmaster running with PID `cat ${PIDFILE}`" + return 0 + else + # the PID file might simply not match the cyrmaster process. + if pidof /usr/sbin/cyrmaster > /dev/null 2>&1 ; then + # go ahead and fix it + pidof /usr/sbin/cyrmaster > ${PIDFILE} + ${PRINTIT} "cyrmaster running with PID `cat ${PIDFILE}`" + return 0 + else + # no process and/or no PID file, return failure + ${PRINTIT} "cyrmaster not running with" + return 1 + fi + fi + # this point should never be reached, return unknown status if it + # is anyway + return 4 +} + +case "$1" in + start) + # Verify if there are old Cyrus 1.5 spools that were not upgraded + [ -f /var/lib/cyrus/mailboxes -a -d /var/lib/cyrus/deliverdb -a \ + -d /var/spool/cyrus/mail/user -a ! -d /var/spool/cyrus/mail/stage. ] && { + echo "$0: It appears that you still have an version 1.5 spool" 1>&2 + echo "$0: that needs to be upgraded. Please refer to the guide" 1>&2 + echo "$0: at /usr/share/doc/cyrus-common-2.2/UPGRADE.Debian" 1>&2 + echo + echo "$0: Cyrmaster not started." + exit 6 + } + # Verify consistency of database backends + [ -f /usr/lib/cyrus/cyrus-db-types.active ] && { + # is it safe to start cyrmaster? compare "key value" pairs + # from the (old) active database types file with the new one + ( sort -u /usr/lib/cyrus/cyrus-db-types.active \ + | grep DBENGINE \ + | verifydb /usr/lib/cyrus/cyrus-db-types.txt \ + ) && { + echo "$0: Database backends mismatch! You must manually" 1>&2 + echo "$0: verify and update the Cyrus databases to the" 1>&2 + echo "$0: new backends." 1>&2 + echo "$0: Please refer to /usr/share/doc/cyrus-common-2.2/README.Debian" 1>&2 + echo "$0: for instructions." 1>&2 + echo + echo "$0: Cyrmaster not started." + exit 6 + } + } + echo -n "Starting ${DESC}: " + fixdirs + if check_status ; then + echo "${DAEMON} already running." + exit 0 + fi + if start-stop-daemon ${START} >/dev/null 2>&1 ; then + echo "$NAME." + else + if ! check_status ; then + echo "(failed)." + exit 1 + fi + fi + ;; + stop) + echo -n "Stopping $DESC: " + if start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid \ + --name ${NAME} --quiet --startas $DAEMON >/dev/null 2>&1 ; then + echo "$NAME." + rm -f ${PIDFILE} + exit 0 + else + # process running? + if check_status; then + # Yes, report failure. + echo "(failed)." + exit 1 + else + # No, return as if stopped a running process + # successfully. + echo "." + rm -f ${PIDFILE} + exit 0 + fi + fi + ;; + reload|force-reload) + echo "Reloading $DESC configuration files." + if start-stop-daemon --stop --signal 1 --quiet \ + --name ${NAME} --pidfile /var/run/$NAME.pid >/dev/null 2>&1 ; then + exit 0 + else + exit 1 + fi + ;; + restart) + $0 stop && { + echo -n "Waiting for complete shutdown..." + i=5 + while [ $i -gt 0 ] ; do + # exit look when server is not running + check_status || break + sleep 2s + i=$(($i - 1)) + echo -n "." + done + [ $i -eq 0 ] && { + echo + echo "fatal: incomplete shutdown detected, aborting." + exit 1 + } + echo + } + exec $0 start + ;; + status) + check_status verbose + exit $? + ;; + try-restart) + check_status + if [ "$?" -eq 0 ]; then + exec $0 restart + else + # LSB says to return 0 in try-restart if the service is + # not running. + exit 0 + fi + ;; + *) + echo "Usage: $0 {start|stop|restart|reload|force-reload}" 1>&2 + exit 1 + ;; +esac + +exit 0 --- cyrus-imapd-2.2-2.2.13.orig/debian/cyrus-common-2.2.contrib +++ cyrus-imapd-2.2-2.2.13/debian/cyrus-common-2.2.contrib @@ -0,0 +1,7 @@ +contrib/cyrus-graphtools.1.0 +contrib/fud-client.c +contrib/README +contrib/sieve-spamasssassin +contrib/squatrunner.pl +contrib/squatrunner.txt +contrib/add-cyrus-user --- cyrus-imapd-2.2-2.2.13.orig/debian/cyrus-common-2.2.postinst +++ cyrus-imapd-2.2-2.2.13/debian/cyrus-common-2.2.postinst @@ -0,0 +1,160 @@ +#! /bin/sh +# postinst script for cyrus-common-2.2 +# Copyright (c) 2002 by Henrique de Moraes Holschuh +# Distributed under the GNU General Public License version 2 +# $Id: cyrus-common-2.2.postinst 825 2009-09-08 08:22:44Z sven $ +# +# see: dh_installdeb(1) + +# debconf hook +. /usr/share/debconf/confmodule + +set -e + +# summary of how this script can be called: +# * `configure' +# * `abort-upgrade' +# * `abort-remove' `in-favour' +# +# * `abort-deconfigure' `in-favour' +# `removing' +# +# for details, see /usr/doc/packaging-manual/ +# +# quoting from the policy: +# Any necessary prompting should almost always be confined to the +# post-installation script, and should be protected with a conditional +# so that unnecessary prompting doesn't happen if a package's +# installation fails and the `postinst' is called with `abort-upgrade', +# `abort-remove' or `abort-deconfigure'. + +export PATH=/sbin:/usr/sbin:/bin:/usr/bin + +verifydb() { + while read -r DBKEY DBVALUE ; do + match=`LC_ALL=C gawk "/^${DBKEY}[[:blank:]]/ { print \\$2 }" < $1` + [ "x${match}" != "x${DBVALUE}" ] && return 0 + done + return 1 +} + +verifydbkey() { + while read -r DBKEY DBVALUE ; do + if [ "${DBKEY}" = "$2" ] ; then + match=`LC_ALL=C gawk "/^${DBKEY}[[:blank:]]/ { print \\$2 }" < $1` + [ "x${match}" != "x${DBVALUE}" ] && return 0 + fi + done + return 1 +} + +case "$1" in + configure) + # Add the cyrus user (requires adduser >= 3.34) + echo "Creating/updating cyrus user account..." + adduser --quiet --system --ingroup mail --home /var/spool/cyrus \ + --shell /bin/sh --no-create-home --disabled-password \ + --gecos "Cyrus Mailsystem User" cyrus >/dev/null || { + if getent passwd | grep -s -q -E '^cyrus:'; then + echo "Non-system user cyrus found. I will not overwrite a non-system" >&2 + echo "user. Remove the user and reinstall cyrus-common-2.2." >&2 + exit 1 + fi + # unknown adduser error, simply exit + exit 1 + } + + # Force correct owner and modes + dpkg-statoverride --list /var/lib/cyrus 2>&1 >/dev/null || + dpkg-statoverride --update --add cyrus mail 750 /var/lib/cyrus + dpkg-statoverride --list /var/spool/cyrus 2>&1 >/dev/null || + dpkg-statoverride --update --add cyrus mail 755 /var/spool/cyrus + dpkg-statoverride --list /var/spool/sieve 2>&1 >/dev/null || + dpkg-statoverride --update --add cyrus mail 755 /var/spool/sieve + dpkg-statoverride --list /var/run/cyrus 2>&1 >/dev/null || + dpkg-statoverride --update --add cyrus mail 755 /var/run/cyrus + dpkg-statoverride --list /var/run/cyrus/socket 2>&1 >/dev/null || + dpkg-statoverride --update --add cyrus mail 750 \ + /var/run/cyrus/socket + + # Add user cyrus to group SASL, if such group exists + adduser cyrus sasl || true + + # Convert the spool to the proper mode, if needed (autodetects + # only Debian's default spool, this codepath is meant for package + # upgrades only) + # DISABLED, since rehash seems busted + #[ -d /var/spool/cyrus/mail/A ] && { + # echo Converting spools to basic hash scheme... + # #su - cyrus -c "/usr/lib/cyrus/upgrade/rehash basic" + # start-stop-daemon --start --exec /usr/lib/cyrus/upgrade/rehash --chuid cyrus:mail --verbose -- basic + #} + + # Parse imapd.conf and generate all required directories... + # also kill any left over squatter indexes + # only run if old upstream version is lower than the new upstream + # version (or if its a fresh install) + if [ "$2" = "" ] || dpkg --compare-versions "$( echo $2 | cut -d- -f2)" lt "2.2.13" ; then + cyrus-makedirs --cleansquat + fi + + # Deal with database type information + if [ -f /usr/lib/cyrus/cyrus-db-types.active ] ; then + # is it safe to start cyrmaster? compare "key value" pairs + # from the (old) active database types file with the new one + if verifydb /usr/lib/cyrus/cyrus-db-types.txt \ + < /usr/lib/cyrus/cyrus-db-types.active ; then + db_input high cyrus-common-2.2/warnbackendchange || true + db_go || true + else + cp -p /usr/lib/cyrus/cyrus-db-types.txt /usr/lib/cyrus/cyrus-db-types.active + db_fset cyrus-common-2.2/warnbackendchange seen false || true + fi + else + [ -f /usr/lib/cyrus/cyrus-db-types.txt ] && \ + cp -p /usr/lib/cyrus/cyrus-db-types.txt /usr/lib/cyrus/cyrus-db-types.active + db_fset cyrus-common-2.2/warnbackendchange seen false || true + fi + + # Deal with hardwired config changes + if [ -f /usr/lib/cyrus/cyrus-hardwired-config.active ] ; then + # do we need to do something about a spool hash type change + # if verifydbkey /usr/lib/cyrus/cyrus-hardwired-config.txt USE_DIR_FULL \ + # < /usr/lib/cyrus/cyrus-hardwired-config.active ; then + # ... (do hash conversion)... + # fi + cp -p /usr/lib/cyrus/cyrus-hardwired-config.txt \ + /usr/lib/cyrus/cyrus-hardwired-config.active + else + [ -f /usr/lib/cyrus/cyrus-hardwired-config.txt ] && \ + cp -p /usr/lib/cyrus/cyrus-hardwired-config.txt \ + /usr/lib/cyrus/cyrus-hardwired-config.active + fi + + # No leaking of debconf file handles to the initscript stuff + db_stop + + # Register initscript, and start it (it is ok if start fails) + [ -x /etc/init.d/cyrus2.2 ] && { + update-rc.d cyrus2.2 defaults >/dev/null + invoke-rc.d cyrus2.2 start || true + } + ;; + + abort-upgrade|abort-remove|abort-deconfigure) + ;; + + *) + echo "postinst called with unknown argument \`$1'" >&2 + exit 0 + ;; +esac + +db_stop + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 --- cyrus-imapd-2.2-2.2.13.orig/debian/cyrus-nntpd-2.2.links +++ cyrus-imapd-2.2-2.2.13/debian/cyrus-nntpd-2.2.links @@ -0,0 +1 @@ +usr/share/doc/cyrus-common-2.2 usr/share/doc/cyrus-nntpd-2.2 --- cyrus-imapd-2.2-2.2.13.orig/debian/copyright +++ cyrus-imapd-2.2-2.2.13/debian/copyright @@ -0,0 +1,78 @@ +$Id: copyright 619 2006-09-19 00:48:49Z astronut $ + +This package was debianized by Henrique de Moraes Holschuh on +Wed Sep 12 09:35:30 BRT 2001, based on previous work by Michael-John Turner + and David Parker . + +The Debian packaging of Cyrus IMAPd v2.2 is: + Copyright (c) 2002-2006 by Henrique de Moraes Holschuh , + Sven Mueller , + Benjamin Seidenberg + and distributed in the same license as the upstream source it applies to. + +The debian packages are maintained in a subversion repository at: + https://mail.incase.de/svn/cyrus22/ + +Upstream sources are at: ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/. + +Upstream Author: Carnegie Mellon University +Upstream bugs: http://bugzilla.andrew.cmu.edu/ + +Patches: +The Debian version of Cyrus IMAP is heavily patched to adequate it to Debian, +and sometimes to add functionality. All such patches are submitted upstream to +CMU, for proper inclusion in Cyrus -- but not all of them will be accepted, of +course. See README.Debian for more details. Also, many patches from the +current CVS release of Cyrus IMAPd are folded in Debian updates; these are +identified by "patchset" numbers, created by the cvsps utility. + +The IPv6 patch by Hajimu UMEMOTO has been applied. + +CMU release tarballs are often repacked minus the CVS/ directories to avoid +problems in my build system. + +Copyright: +ALL versions of the Cyrus IMAP server are now covered by the +following copyright notice: + + * Copyright (c) 1994-2000 Carnegie Mellon University. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The name "Carnegie Mellon University" must not be used to + * endorse or promote products derived from this software without + * prior written permission. For permission or any legal + * details, please contact + * Office of Technology Transfer + * Carnegie Mellon University + * 5000 Forbes Avenue + * Pittsburgh, PA 15213-3890 + * (412) 268-4387, fax: (412) 268-7395 + * tech-transfer@andrew.cmu.edu + * + * 4. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by Computing Services + * at Carnegie Mellon University (http://www.cmu.edu/computing/)." + * + * CARNEGIE MELLON UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO + * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS, IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY BE LIABLE + * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN + * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +For more information, see http://asg.web.cmu.edu/cyrus/imapd/license.html +(local copy stored in /usr/share/doc/cyrus2-common/license.html) + --- cyrus-imapd-2.2-2.2.13.orig/debian/README.postfix +++ cyrus-imapd-2.2-2.2.13/debian/README.postfix @@ -0,0 +1,147 @@ +Setting up Cyrus IMAPd for Postfix (Debian) +$Id: README.postfix 649 2006-10-09 17:07:53Z astronut $ +=========================================================== + +Cyrus works wonderfully well with Postfix, both in single-system stores (where +Postfix runs in the same host as Cyrus IMAPd), and remote mail stores (where +Cyrus IMAPd is in a different host than Postfix). + +Delivery to Cyrus should _always_ be done through direct LMTP from Postfix. It +is far simpler and faster to do such delivery using Unix sockets, but Unix +sockets are only an option for single-system stores. Cyrdeliver is just a +stdio-to-LMTP proxy, and it slows down mail delivery greatly. + +Cyrus requires LMTP deliveries to be authenticated. It assumes that any +deliveries done through an Unix socket are trustable, and pre-authenticates +them as if coming from the "postman" (fictitious) user (but you _can_ +re-authenticate them as another lmtp admin user, if you wish). + +Deliveries done through TCP sockets are not limited to the same host, unlike +the Unix socket ones, and can therefore be used in remote mail stores. +However, Cyrus requires that the LMTP session be authenticated using one of the +SASL mechs available to Cyrus (you can switch this off by giving a "-a" +parameter to lmtpd in cyrus.conf, but that is unsafe since anyone can bypass +any user authentication controls you might have on mail delivery, that way). + +TCP-socket LMTP sessions should be authenticated as one of the Cyrus LMTP +admins, normal Cyrus users are not enough. This requires Postfix with SASL +support. + + +Setting up Postfix for LMTP delivery to Cyrus +============================================= + +Just set up a transport (either using a transport map, or the default_transport +configuration directive of Postfix). Do not use cyrdeliver. + +I suggest that the lmtp transport be duplicated and renamed to cyrus if you +use it to talk to anything else (such as amavisd-new, or amavis-ng). That +way, LMTP connection caching to the Cyrus store gets optimized, and you can +use the lmtp-named LMTP transport for something else. + +WARNING: Postfix 2.0 does not downcase the recipient in LMTP deliveries, so if +your users require it, you will have to set lmtp_downcase_rcpt: yes in +imapd.conf. + + +Unix sockets: +------------- + +For Unix sockets, the Postfix transport is specified as +"lmtp:unix:/var/run/cyrus/socket/lmtp", (we are using the default Cyrus unix +socket location as an example, you can change it in /etc/cyrus.conf and +/etc/imapd.conf). + +You need a Cyrus lmtpd service listening on that socket, of course, so make +sure something like: + +lmtpunix cmd="lmtpd" listen="/var/run/cyrus/socket/lmtp" + +is in the SERVICES section of the /etc/cyrus.conf file. You also need to make +sure both Cyrus and Postfix can talk through that socket. Unix sockets work +just like files, so that translates to making sure both the user "cyrus" and +the user Postfix is using for LMTP delivery can both read and write to that +file. + +WARNING: Since Cyrus pre-auths anything coming through the Unix socket, anyone +who can write to it will be able to inject email into Cyrus directly. + +Use dpkg-statoverride to make sure your configuration for the socket +permissions will not be overwritten by the Cyrus packages. Do remember that +Postfix usually runs the LMTP transport as user "postfix" (configurable in +/etc/postfix/master.cf). Also, do not run the postfix lmtp transport chrooted +if the socket is not inside the chroot. + +1. Create a lmtp group: + # addgroup lmtp + +2. Put user postfix in that group: + # adduser postfix lmtp + +3. Fix the socket directory permissions: + # dpkg-statoverride --force --update --add \ + cyrus lmtp 750 /var/run/cyrus/socket + +4. Restart Postfix and Cyrus IMAPd + # /etc/init.d/postfix restart + # /etc/init.d/cyrus2.2 restart + + +TCP sockets: +------------ + +TCP sockets are easier on the Cyrus side, and more complicated on the Postfix +side. For Cyrus, it is enough to have an "lmtpd" service listening on the +desired IP interface (or in all of them, if you leave the interface unspecified +as in the example below), that means something like this in /etc/cyrus.conf +SERVICES area: + +lmtp cmd="lmtpd" listen="lmtp" + +(do note that you MUST have an lmtp entry in /etc/services for this to work. +This can be any available port, for historical reasons, 2003 is most often used). + +Also, remember that Cyrus observes tcpwrapper permissions (/etc/hosts.allow and +/etc/hosts.deny), make sure they're set up correctly or Cyrus might refuse the +connections. + +To configure Postfix' lmtp transport to authenticate using SASL, do the +following: +Note: On Sarge systems, you will also need the postfix-tls package for SASL +support. On etch and above, the support is included in the postfix package. + +1. Configure the lmtp transport SASL layer: + (add to /etc/postfix/main.cf): + lmtp_sasl_auth_enable = yes + lmtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd + lmtp_sasl_security_options = + lmtp_destination_concurrency_limit = 100 + lmtp_destination_recipient_limit = 0 + + The *_limit values should match whatever you configured as limits in + Cyrus. The above configuration will allow plain text logins. + + Create the password map /etc/postfix/sasl_passwd to tell postfix + of a Cyrus LMTP administrator user and password to use. + + e.g.: + echo "mycyrusspool.my.domain.org postman:foobar" >sasl_passwd + postmap sasl_passwd + +2. Configure Cyrus to accept that user as a lmtp administrator + (add to /etc/imapd.conf) + lmtp_admins: postman + +3. Tell postfix to use the lmtp transport to deliver email using + transport maps or something else. I suggest making a copy of the + postfix lmtp transport in master.cf, renaming it to "cyrus", and + using that. + +4. Note that to use the new feature of virtual domains in Cyrus v2.2, + you need to tell postfix to use the lmtp transport as the + virtual_transport. If you also want "local" mail recipients, i.e. + those that are addressed to hosts listed in mydestination, to + be delivered to Cyrus v2.2, you also need to use lmtp as the + mailbox_transport. + + That's it! --- cyrus-imapd-2.2-2.2.13.orig/debian/TODO.Debian +++ cyrus-imapd-2.2-2.2.13/debian/TODO.Debian @@ -0,0 +1,67 @@ +Todo list +--------- + +$Id: TODO.Debian 521 2006-07-29 03:39:05Z astronut $ + +CONFIRMED TODO FOR 2.2: +o Cyrus 2.1 has alarm() lock breaking on lib/lock_fcntl(). This has + not been ported to 2.2 yet. And it should not be ported until + #358742 is fixed. Note that if the user has to *kill* imapd to + unstick the lock, the issue is not in the alarm() code. + + +EXTRA HIGH +o master leaks memory when a service path is not null + +HIGH +o Update copyright to my new template +o Shout loudly if anything in .stage needs cleaning up +o VERIFY SASL LEAKING CRAP TO prot_stream + [info-cyrus Re: Log messages going into imap/pop stream] +o Revise rehash, it is busted... +o Write nice shell wrapper for chk_cyrus and suggest a event to run it +o Clean up script, that finds all crap over one day old in .stage + and delete it (after logging a warning). Add it as event. + +o https://bugzilla.andrew.cmu.edu/show_bug.cgi?id=1735 + +MEDIUM +o Verify kerberos build is still OK [gssapi] +o Add switch to enable do-not-add-return-path-if-it-is-already-there to + deliver and LMTP input: + - Return-path: Override (default: drop old return-paths, add ours) + add (add if there isn't one in there already) + note that no return-path is NOT an option ;-) + Obs: - lmtpengine uses msg->return_path to know wether it got a mail from! + - dropping old return-paths is non-trivial +o Fulldir-hash detection using the same mech as db-backend +o auth_ldap, and runtime-selection of auth backends. Add kerberos backend + and kerberos support while at it, as well. [ cyrus 2.2 only ] + +LOW +o Verify alpha build logs, and fix the warnings +o Better logcheck.ignore +o verify section of libcyrus-*-perl, as well as the manpages' +o Fix bogosity on perl manpages .TH +o netsaint example of full monitoring (imap, pop, lmtp, master via snmp) +o cyrus2-admin.menu +o find and package snmp loggers for cyrus (as examples) +o automated database backend conversion? +o sanitize usernames and folders to lowercase, no spaces or ill. chars + [does this make any sense? shouldn't that be done by user name canon.?] + +WON'T DO +o cyrus2-{pop3d,imapd} should deal with cyrus.conf + - not needed; cyrus deals gracefully with missing binaries +o Debconf configuration + - too troublesome; lusers are not welcome to using cyrus + without reading docs anyway, and it is all SASL's fault. + +BACKBURNER IDEAS +o master + - capabilities, so as to be able to bind to ports <1024 + - jailing at user level (and what of shared mbx?) + - Better handling of fucked up children that refuse to start? + + requires 5th forked state in master +o i18n (GNU gettext, with kerberos guard for logs, messages; + sanity-enforced txt files for return messages) --- cyrus-imapd-2.2-2.2.13.orig/debian/cyrus-doc-2.2.doc-base +++ cyrus-imapd-2.2-2.2.13/debian/cyrus-doc-2.2.doc-base @@ -0,0 +1,10 @@ +Document: cyrus2.2-manual +Title: CMU Cyrus 2.2 Manual +Author: Carnegie Mellon University +Abstract: This manual describes how to configure and administer + the Cyrus POP/IMAP mail system, version 2.2 +Section: Network/Communication/Mail + +Format: HTML +Index: /usr/share/doc/cyrus-doc-2.2/html/index.html +Files: /usr/share/doc/cyrus-doc-2.2/html/*.html --- cyrus-imapd-2.2-2.2.13.orig/debian/cyrus-common-2.2.cyrus22.cron.daily +++ cyrus-imapd-2.2-2.2.13/debian/cyrus-common-2.2.cyrus22.cron.daily @@ -0,0 +1,74 @@ +#!/bin/sh +# Cyrus IMAPd daily maintenance script +# Copyright (c) 2002,2003 by Henrique M. Holschuh +# $Id: cyrus-common-2.2.cyrus22.cron.daily 673 2006-10-25 13:24:13Z sven $ +# Distributed under the terms of the GNU General Public License version 2 +# +# This script: +# 1. Backups the mailbox database to the portable text format, +# and compresses the result. This backup can be used to restore +# the Cyrus mailbox database using ctl_mboxlist (after uncompressing +# the backup file). +# +# 2. Cleans up any leftover crap in .stage directories. +# +# 3. Runs chk_cyrus and outputs warning messages (so that cron +# sends them to the administrator) if any problems are detected. + +set -e + +# Make sure we get sane behaviour in broken locales +LC_ALL=C +export LC_ALL + +bak=/var/backups +bakfile=${bak}/cyrus-mboxlist.txt.gz +CONF=/etc/imapd.conf +CHKCYRUS=0 +[ -r /etc/default/cyrus2.2 ] && . /etc/default/cyrus2.2 +umask 022 + +# check wether ctl_mboxlist and cyrus-hardwired-config.txt exist +# exit cleanly if they don't +[ -x /usr/sbin/ctl_mboxlist ] \ +&& [ -f /usr/lib/cyrus/cyrus-hardwired-config.txt ] \ +|| exit 0 +# Check if Cyrus 2.2 is installed (vs. removed but not purged) +grep -qE '^PACKAGE_VERSION[[:blank:]]+2[.]2' \ + /usr/lib/cyrus/cyrus-hardwired-config.txt >/dev/null 2>&1 || exit 0 + +# 1. backup mailbox database +[ -d $bak ] || ( mkdir -p $bak ; chmod 600 $bak ) +[ -f $bakfile ] && mv ${bakfile} ${bakfile}.bak +# su "--command=/usr/sbin/ctl_mboxlist -d" - cyrus | ... +start-stop-daemon --start --exec /usr/sbin/ctl_mboxlist --quiet --chuid cyrus -- -d | gzip -9 >${bakfile} + +# 2. clean up all leftover .stage directories in all spools listed in +# the default config file +[ $CHKCYRUS -ne 0 ] && { + [ -r "$CONF" ] || { + echo $0: unable to read configuration file $CONF. Aborting... + exit 1 + } + partitions=$(sed --silent -e "/^[[:blank:]]*partition-[[:alnum:]]\+:/ { \ + s#^[[:blank:]]*partition-[[:alnum:]]\+:[[:blank:]]*## \ + p + } " < "$CONF" | sort | uniq | xargs) + for i in $partitions ; do + find "$i" -name '.stage' -type d -print0 | \ + xargs --null -n 1 -r -i'{1}' \ + find {1} -type f -ctime +1 -exec rm -f {} \; + done +} + +# 3. runs chk_cyrus +[ -x /usr/sbin/chk_cyrus ] && { + tmpfile=$(mktemp -t cyrus-daily-cronjob.XXXXXXXXXX) + trap 'rm -f "${tmpfile}"' 0 +# su "--command=/usr/sbin/chk_cyrus" - cyrus | ... + start-stop-daemon --start --exec /usr/sbin/chk_cyrus --quiet --chuid cyrus >"${tmpfile}" 2>&1 || cat "${tmpfile}" 1>&2 + rm -f "${tmpfile}" + trap '' 0 +} + +exit 0 --- cyrus-imapd-2.2-2.2.13.orig/debian/cyrus-murder-2.2.install +++ cyrus-imapd-2.2-2.2.13/debian/cyrus-murder-2.2.install @@ -0,0 +1,3 @@ +etc/pam.d/mupdate +usr/lib/cyrus/bin/*proxyd +usr/lib/cyrus/bin/mupdate* --- cyrus-imapd-2.2-2.2.13.orig/debian/watch +++ cyrus-imapd-2.2-2.2.13/debian/watch @@ -0,0 +1,2 @@ +version=2 +ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-imapd-(2\.2\..*).tar.(?:gz|bz2) --- cyrus-imapd-2.2-2.2.13.orig/debian/cyrus-common-2.2.cyrus2.2.default +++ cyrus-imapd-2.2-2.2.13/debian/cyrus-common-2.2.cyrus2.2.default @@ -0,0 +1,40 @@ +# Defaults for Cyrus IMAPd 2.2 scripts +# $Id: cyrus-common-2.2.cyrus2.2.default 543 2006-08-08 16:36:00Z sven $ +# sourced by /etc/init.d/cyrus2.2, /usr/sbin/cyrus-makedirs +# installed at /etc/default/cyrus2.2 by the maintainer scripts +# + +# +# This is a POSIX shell fragment +# + +# Set this to 1 or higher to enable debugging on cyrmaster +#CYRUS_VERBOSE=1 + +# Socket listen queue backlog size +# See listen(2). Default is 32, you may want to increase +# this number if you have a very high connection rate +#LISTENQUEUE=32 + +# Wether cyrus-makedirs should optimize filesystems +# or not. Switch it off if you are going to do your +# own optimizations. Set to 1 to enable, 0 to disable +#CYRUSOPTFILESYS=1 + +# The default Cyrus IMAP config file that the scripts should +# use. You better know what you're doing if you change this +#CONF=/etc/imapd.conf + +# The default cyrus master config file that the scripts shoud +# use. You better know what you're doing if you change this. +#MASTERCONF=/etc/cyrus.conf + +# Check spool condition with chk_cyrus on daily cronjob +# Set to 1 to enable, default is disabled +#CHKCYRUS=0 + +# Set the path to the PID file +#PIDFILE=/var/run/cyrmaster.pid + +# Set other Options here. +OPTIONS="" --- cyrus-imapd-2.2-2.2.13.orig/debian/libcyrus-imap-perl22.lintian +++ cyrus-imapd-2.2-2.2.13/debian/libcyrus-imap-perl22.lintian @@ -0,0 +1 @@ +libcyrus-imap-perl22: package-installs-nonbinary-perl-in-usr-lib-perl5 --- cyrus-imapd-2.2-2.2.13.orig/debian/cyrus-admin-2.2.menu +++ cyrus-imapd-2.2-2.2.13/debian/cyrus-admin-2.2.menu @@ -0,0 +1,6 @@ +?package(cyrus-admin-2.2):needs="text" section="Applications/System/Administration"\ + hints="Mail,Admin,Cyrus"\ + title="Cyrus 2.2 cyradm (cyrus@localhost)"\ + longtitle="Administer local Cyrus IMAPd 2.2 accounts as user cyrus"\ + icon="/usr/share/icons/cyradm.xpm"\ + command="/usr/bin/cyradm --user cyrus localhost" --- cyrus-imapd-2.2-2.2.13.orig/debian/cyrus-nntpd-2.2.manpages +++ cyrus-imapd-2.2-2.2.13/debian/cyrus-nntpd-2.2.manpages @@ -0,0 +1,2 @@ +man/fetchnews.8 +man/nntpd.8 --- cyrus-imapd-2.2-2.2.13.orig/debian/logcheck.violations.ignore +++ cyrus-imapd-2.2-2.2.13/debian/logcheck.violations.ignore @@ -0,0 +1,8 @@ +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/(lmtp|lmtpunix)\[[0-9]+\]: IOERROR: fstating sieve script [/a-zA-Z^]+/defaultbc: No such file or directory$ +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/lmtpunix\[[0-9]+\]: WARNING: sieve script %s doesn't exist: [/a-zA-Z^]+/defaultbc: No such file or directory +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/(imaps?|pop3s?|lmtp|lmtpunix)\[[0-9]+\]: SQUAT failed to open index file$ +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/(imaps?|pop3s?|lmtp|lmtpunix)\[[0-9]+\]: SQUAT failed$ +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/(imaps?|pop3s?|lmtp|lmtpunix)\[[0-9]+\]: DBERROR db[34]: [0-9]+ lockers$ +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/(imaps?|pop3s?)\[[0-9]+\]: (START)?TLS( negotiation)? failed: +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cyrus/(lmtp|lmtpunix)\[[0-9]+\]: duplicate_(check|mark): .*$ + --- cyrus-imapd-2.2-2.2.13.orig/debian/cyrus-common-2.2.templates +++ cyrus-imapd-2.2-2.2.13/debian/cyrus-common-2.2.templates @@ -0,0 +1,34 @@ +# These templates have been reviewed by the debian-l10n-english +# team +# +# If modifications/additions/rewording are needed, please ask +# debian-l10n-english@lists.debian.org for advice. +# +# Even minor modifications require translation updates and such +# changes should be coordinated with translators and reviewers. + +Template: cyrus-common-2.2/warnbackendchange +Type: error +_Description: Modified database backends + Comparison between /usr/lib/cyrus/cyrus-db-types.txt and + /usr/lib/cyrus/cyrus-db-types.active shows that database backends for + Cyrus IMAPd have been changed. + . + This means that those databases for which the database backends changed + might need to be converted manually to the new format, using the + cvt_cyrusdb(8) utility. + . + Please refer to /usr/share/doc/cyrus-common-2.2/README.Debian.database + for more information. Do not start cyrmaster until you have converted + the databases to the new format. + +Template: cyrus-common-2.2/removespools +Type: boolean +Default: false +_Description: Remove the mail and news spools? + The Cyrus mail and news spools, as well as users' sieve scripts, + can be removed when the package is purged. + . + This question only applies to the default spools and sieve script + directories in /var. If you modified their location in imapd.conf, the + new locations will not be removed; just the old ones in /var. --- cyrus-imapd-2.2-2.2.13.orig/debian/cyrus-murder-2.2.links +++ cyrus-imapd-2.2-2.2.13/debian/cyrus-murder-2.2.links @@ -0,0 +1 @@ +usr/share/doc/cyrus-common-2.2 usr/share/doc/cyrus-murder-2.2 --- cyrus-imapd-2.2-2.2.13.orig/debian/cyrus-common-2.2.links +++ cyrus-imapd-2.2-2.2.13/debian/cyrus-common-2.2.links @@ -0,0 +1,3 @@ +var/spool/sieve etc/sieve +usr/sbin/cyrreconstruct usr/lib/cyrus/bin/reconstruct +usr/sbin/cyrquota usr/lib/cyrus/bin/quota --- cyrus-imapd-2.2-2.2.13.orig/debian/cyrus-common-2.2.docs +++ cyrus-imapd-2.2-2.2.13/debian/cyrus-common-2.2.docs @@ -0,0 +1,2 @@ +debian/UPGRADE.Debian +debian/README.* --- cyrus-imapd-2.2-2.2.13.orig/debian/control +++ cyrus-imapd-2.2-2.2.13/debian/control @@ -0,0 +1,218 @@ +Source: cyrus-imapd-2.2 +Section: mail +Priority: extra +Maintainer: Debian Cyrus Team +Uploaders: Henrique de Moraes Holschuh , Sven Mueller , Benjamin Seidenberg , OndĹ™ej SurĂ˝ , Christoph Berg +Standards-Version: 3.8.3 +Build-Depends: debhelper (>= 5), quilt, tcl-dev | tcl8.3-dev, libwrap0-dev, libpam0g-dev, libdb4.8-dev, libssl-dev, libzephyr-dev, libsasl2-dev (>= 2.1.9), comerr-dev, libsnmp-dev | libsnmp9-dev, perl, xutils-dev | xutils, flex, bison, autotools-dev, po-debconf, transfig, ghostscript | gs-gpl, groff, libkvm-dev [kfreebsd-i386], libkvm-dev [kfreebsd-amd64], heimdal-dev +Vcs-Browser: https://mail.incase.de/viewcvs/trunk/?root=cyrus22 +Vcs-Svn: https://mail.incase.de/svn/cyrus22/trunk +Homepage: http://cyrusimap.web.cmu.edu/ + +Package: cyrus-common-2.2 +Architecture: any +Section: mail +Depends: postfix | mail-transport-agent, adduser (>= 3.34), dpkg (>> 1.9.0), netbase (>= 4.07), gawk, ${shlibs:Depends}, ${perl:Depends}, ${misc:Depends} +Recommends: cyrus-imapd-2.2 | cyrus-pop3d-2.2 | cyrus-murder-2.2 | cyrus-nntpd-2.2 | cyrus-admin-2.2 +Suggests: cyrus-clients-2.2, cyrus-admin-2.2, cyrus-imapd-2.2, cyrus-pop3d-2.2, cyrus-murder-2.2, cyrus-nntpd-2.2, cyrus-doc-2.2, sasl2-bin, apt-listchanges (>= 2.35) +Conflicts: suidmanager (<< 0.50), cyrus-common, cyrus21-common, cyrus22-common +Replaces: cyrus21-common, cyrus22-common +Provides: cyrus21-common, cyrus22-common +Description: Cyrus mail system - common files + Cyrus is an IMAP server designed to handle massive quantities of mail, + with a number of features not found in other IMAP implementations, + including support for: + - running the daemon without root privileges; + - POP3 and NNTP in addition to plain IMAP; + - POP/IMAP-before-SMTP using DRAC; + - secure IMAP using SSL; + - server-side filtering with Sieve; + - mail users without login accounts; + - simple mail quotas; + - virtual domains; + - IPv6. + . + Cyrus doesn't support reading from and storing mail in the + standard mail spool. It stores mail in a separate directory in its + own MH-like format. + . + This package contains the common files needed by the other Cyrus + components. The cyrus22-imapd and/or cyrus22-pop3d packages are needed + to enable IMAP and POP3 support respectively. cyrus22-murder can be + used to enable IMAP, POP3, and LMTP proxying. + +Package: cyrus-doc-2.2 +Architecture: all +Section: doc +Provides: cyrus21-doc, cyrus22-doc +Depends: ${misc:Depends} +Replaces: cyrus21-doc, cyrus22-doc +Conflicts: cyrus21-doc, cyrus22-doc +Description: Cyrus mail system - documentation files + Cyrus is an IMAP server designed to handle massive quantities of mail, + with a number of features not found in other IMAP implementations, + including support for: + - running the daemon without root privileges; + - POP3 and NNTP in addition to plain IMAP; + - POP/IMAP-before-SMTP using DRAC; + - secure IMAP using SSL; + - server-side filtering with Sieve; + - mail users without login accounts; + - simple mail quotas; + - virtual domains; + - IPv6. + . + This package contains the documentation for the Cyrus IMAPd suite. + +Package: cyrus-imapd-2.2 +Architecture: any +Section: mail +Depends: cyrus-common-2.2 (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: imap-server, cyrus21-imapd, cyrus22-imapd +Conflicts: imap-server, cyrus21-imapd, cyrus22-imapd +Replaces: cyrus21-imapd, cyrus22-imapd +Description: Cyrus mail system - IMAP support + Cyrus is an IMAP server designed to handle massive quantities of mail, + with a number of features not found in other IMAP implementations, + including support for: + - running the daemon without root privileges; + - POP3 and NNTP in addition to plain IMAP; + - POP/IMAP-before-SMTP using DRAC; + - secure IMAP using SSL; + - server-side filtering with Sieve; + - mail users without login accounts; + - simple mail quotas; + - virtual domains; + - IPv6. + . + This package contains the IMAP (Internet Mail Access Protocol) portion + of the Cyrus IMAPd suite. + +Package: cyrus-pop3d-2.2 +Architecture: any +Section: mail +Depends: cyrus-common-2.2 (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: cyrus21-pop3d, cyrus22-pop3d, pop3-server +Conflicts: cyrus21-pop3d, cyrus22-pop3d, pop3-server +Replaces: cyrus21-pop3d, cyrus22-pop3d +Description: Cyrus mail system - POP3 support + Cyrus is an IMAP server designed to handle massive quantities of mail, + with a number of features not found in other IMAP implementations, + including support for: + - running the daemon without root privileges; + - POP3 and NNTP in addition to plain IMAP; + - POP/IMAP-before-SMTP using DRAC; + - secure IMAP using SSL; + - server-side filtering with Sieve; + - mail users without login accounts; + - simple mail quotas; + - virtual domains; + - IPv6. + . + This package contains the POP3 (Post Office Protocol) portion of the Cyrus + IMAPd suite. + +Package: cyrus-admin-2.2 +Architecture: all +Section: mail +Depends: libcyrus-imap-perl22 (>= ${source:Version}), ${misc:Depends} +Suggests: sasl2-bin +Conflicts: cyrus-admin, cyrus21-admin, cyrus22-admin +Replaces: cyrus21-admin, cyrus22-admin +Provides: cyrus21-admin, cyrus22-admin +Description: Cyrus mail system - administration tools + Cyrus is an IMAP server designed to handle massive quantities of mail, + with a number of features not found in other IMAP implementations, + including support for: + - running the daemon without root privileges; + - POP3 and NNTP in addition to plain IMAP; + - POP/IMAP-before-SMTP using DRAC; + - secure IMAP using SSL; + - server-side filtering with Sieve; + - mail users without login accounts; + - simple mail quotas; + - virtual domains; + - IPv6. + . + This package provides the administrative tools for the Cyrus IMAPd suite. + It contains cyradm, which can be used to administer both local and remote + Cyrus mail systems, plus sieveshell (and its deprecated cousin + installsieve), which can be used to manage Sieve scripts. + +Package: cyrus-murder-2.2 +Section: mail +Architecture: any +Depends: cyrus-common-2.2 (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends} +Recommends: cyrus-imapd-2.2 (= ${binary:Version}), cyrus-pop3d-2.2 (= ${binary:Version}) +Conflicts: cyrus21-murder, cyrus22-murder +Replaces: cyrus21-murder, cyrus22-murder +Provides: cyrus21-murder, cyrus22-murder +Description: Cyrus mail system (proxies and aggregator) + This package contains the Cyrus IMAPd suite murder aggregator system, + i.e. IMAP, POP3 and LMTP proxies, and the mupdate mailbox master daemon. + It allows for cluster setups where there are many backend Cyrus spools and + frontend proxy servers. + . + For more information, please see the cyrus-common-2.2 package. + +Package: cyrus-nntpd-2.2 +Architecture: any +Section: mail +Depends: cyrus-common-2.2 (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends} +Conflicts: news-transport-system +Replaces: cyrus21-nntpd, cyrus22-nntpd +Provides: news-transport-system, cyrus21-nntpd, cyrus22-nntpd +Description: Cyrus mail system (NNTP support) + This package contains the NNTP (Network News Transfer Protocol) portion of + the Cyrus IMAPd suite. + . + For more information, please see the cyrus-common-2.2 package. + +Package: cyrus-clients-2.2 +Architecture: any +Section: mail +Depends: ${shlibs:Depends}, ${misc:Depends} +Conflicts: cyrus21-clients, cyrus22-clients +Provides: cyrus21-clients, cyrus22-clients +Replaces: cyrus21-clients, cyrus22-clients +Description: Cyrus mail system (test clients) + This package contains client tools to test the Cyrus IMAPd suite. + It contains the mupdatetest, sivtest, smtptest, lmtptest, + imtest and pop3test tools which can be used to interactively talk to + a mupdate, Sieve, SMTP, LMTP, IMAP or POP3 server. + The clients are fully SASL-enabled for authentication. + . + For more information, please see the cyrus-common-2.2 package. + +Package: cyrus-dev-2.2 +Architecture: any +Section: devel +Depends: libcyrus-imap-perl22 (>= ${binary:Version}), cyrus-common-2.2 (= ${binary:Version}), libsasl2-dev (>= 2.1.9), ${misc:Depends} +Conflicts: cyrus-dev, cyrus21-dev, cyrus22-dev, libdb3-dev (<< 3.2.9-15), libdb2-dev (<< 2.7.7.0-6), libdb4.2-dev (<<4.2.52) +Replaces: cyrus21-dev, cyrus22-dev +Provides: cyrus21-dev, cyrus22-dev +Description: Cyrus mail system (developer files) + This package contains header files and the static library needed + to develop IMAP applications that interface with the Cyrus IMAPd suite. + . + For more information, please see the cyrus-common-2.2 package. + +Package: libcyrus-imap-perl22 +Architecture: any +Depends: ${perl:Depends}, ${shlibs:Depends}, ${misc:Depends} +Provides: libcyrus-imap-perl, libcyrus-imap-perl21 +Conflicts: libcyrus-imap-perl, libcyrus-imap-perl21 +Replaces: libcyrus-imap-perl21 +Section: perl +Description: Interface to Cyrus imap client imclient library + The Cyrus::IMAP module provides an interface to the Cyrus imclient + library. These are primarily useful for implementing cyradm operations + within a Perl script; there are easier ways to implement general client + operations, although they may be more limited in terms of authentication + options when talking to a Cyrus imapd. + . + The modules that compose Cyrus::SIEVE are also included, but they are + undocumented upstream. + . + For more information, please see the cyrus-common-2.2 package. + --- cyrus-imapd-2.2-2.2.13.orig/debian/cyrus-nntpd-2.2.dirs +++ cyrus-imapd-2.2-2.2.13/debian/cyrus-nntpd-2.2.dirs @@ -0,0 +1,2 @@ +usr/sbin +usr/lib/cyrus --- cyrus-imapd-2.2-2.2.13.orig/debian/cyrus-imapd-2.2.dirs +++ cyrus-imapd-2.2-2.2.13/debian/cyrus-imapd-2.2.dirs @@ -0,0 +1,2 @@ +usr/sbin +usr/lib/cyrus --- cyrus-imapd-2.2-2.2.13.orig/debian/cyrus-pop3d-2.2.dirs +++ cyrus-imapd-2.2-2.2.13/debian/cyrus-pop3d-2.2.dirs @@ -0,0 +1 @@ +usr/lib/cyrus --- cyrus-imapd-2.2-2.2.13.orig/debian/cyrus-clients-2.2.dirs +++ cyrus-imapd-2.2-2.2.13/debian/cyrus-clients-2.2.dirs @@ -0,0 +1 @@ +usr/bin --- cyrus-imapd-2.2-2.2.13.orig/debian/mupdate.pam +++ cyrus-imapd-2.2-2.2.13/debian/mupdate.pam @@ -0,0 +1,14 @@ +# PAM configuration file for Cyrus Murder mupdate service +# $Id: mupdate.pam 5 2005-03-12 23:19:45Z sven $ +# +# If you want to use Cyrus in a setup where users don't have +# accounts on the local machine, you'll need to make sure +# you use something like pam_permit for account checking. +# +# Remember that SASL (and therefore Cyrus) accesses PAM +# modules through saslauthd, and that SASL can only deal with +# plaintext passwords if PAM is used. +# + +@include common-auth +@include common-account --- cyrus-imapd-2.2-2.2.13.orig/debian/rules +++ cyrus-imapd-2.2-2.2.13/debian/rules @@ -0,0 +1,336 @@ +#!/usr/bin/make -f +# debian/rules for CMU Cyrus IMAP version 2.2 +# GNU copyright 1997 by Joey Hess. +# Copyright (c) 2001 by Henrique de Moraes Holschuh +# Published under the GNU GPL license +# Based on previous work by Michael-John Turner , +# David Parker +# + +# DebHelper control +export DH_ALWAYS_EXCLUDE=CVS + +export MAINPKG=cyrus-common-2.2 +export DOCPKG=cyrus-doc-2.2 +export TMPPKG := $(CURDIR)/debian/tmp +export PKGDIR := $(CURDIR)/debian/$(MAINPKG) +export DOCDIR := $(CURDIR)/debian/$(DOCPKG)/usr/share/doc/$(DOCPKG) + +export DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) +export DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) + +include /usr/share/quilt/quilt.make + +# Extra version information to add to Cyrus IMAPd ID +DEBVERSION:=$(shell LCALL=C dpkg-parsechangelog | sed -ne 's/^Version: \(.*-\)/\1/p') +EXTRA_IDENT:="Debian-$(DEBVERSION)" + +# DB engine version +DBENGINE=BerkeleyDB4.8 + +DEBUGFLAGS=-g +ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) + DEBUGFLAGS += -O0 +else + DEBUGFLAGS += -O2 +endif + +# TODO: Support parallel builds (make -j x) + +# FOR AUTOCONF 2.52 AND NEWER ONLY +CONFFLAGS = +ifeq ($(DEB_BUILD_GNU_TYPE), $(DEB_HOST_GNU_TYPE)) + CONFFLAGS += --build $(DEB_HOST_GNU_TYPE) +else + CONFFLAGS += --build $(DEB_BUILD_GNU_TYPE) --host $(DEB_HOST_GNU_TYPE) +endif + +# Other oddities +ifneq (,$(findstring strict,$(DEB_BUILD_OPTIONS))) + CONFFLAGS += --enable-warnings-are-errors +endif + +# The clean target will remove any and all cruft (as defined by +# configure ; make distclean ; cd intl; make distclean ). +# This is done to make sure the build daemon's source tree is the +# same as the one I am using to produce the i386 debs. +clean: unpatch + dh_testdir + dh_testroot + -xargs -t -r chmod +x < debian/executable.files + -rm -f build-indep-stamp build-arch-stamp configure-stamp install-arch-stamp install-indep-stamp build-stamp + [ ! -f Makefile ] || $(MAKE) -i distclean + -rm -f config.h config.cache config.status config.log stamp-config confdefs.h + -rm -f config.sub config.guess + -rm -f netnews/Makefile perl/imap/Makefile.old perl/sieve/managesieve/Makefile.old snmp/Makefile Makefile et/Makefile + -rm -f doc/pod2htm* + -rm -f master/makedepend.log imap/idled sieve/sievec sieve/sieved + -rm -rf doc/man + -rm -f debian/cyrus-db-types.txt debian/cyrus-hardwired-config.txt debian/README.configure-options + # -rm -rf et/ + rm -rf autom4te.cache + -xargs -t -r rm -f < debian/deletable.files + dh_clean + +build: build-arch build-indep + +configure-stamp: $(QUILT_STAMPFN) + dh_testdir + cp /usr/share/misc/config.sub config.sub + cp /usr/share/misc/config.guess config.guess + touch configure.in && touch aclocal.m4 && touch configure + # + # IF YOU CHANGE BERKELEY DB VERSION, MAKE SURE TO UPDATE + # DBENGINE AT THE TOP OF THIS MAKEFILE! + ./configure CFLAGS="-fno-strict-aliasing -fPIC -Wall -pipe $(DEBUGFLAGS)" $(CONFFLAGS) \ + --with-extraident=$(EXTRA_IDENT) \ + --prefix=/usr/share --exec-prefix=/usr --libexecdir=/usr/sbin \ + --bindir=/usr/sbin --sbindir=/usr/sbin \ + --includedir=/usr/include/cyrus \ + --datadir=/usr/share/cyrus --sysconfdir=/etc \ + --with-statedir=/var/state \ + --sharedstatedir=/usr/share/cyrus \ + --localstatedir=/var/lib/cyrus \ + --mandir=/usr/share/man \ + --with-cyrus-prefix=/usr/lib/cyrus --with-lock=fcntl \ + --with-perl=/usr/bin/perl \ + --with-openssl=/usr --with-auth=unix \ + --enable-murder --enable-nntp \ + --disable-listext --enable-annotatemore --with-sasl=/usr \ + --with-drac=/usr \ + --with-cyrus-user=cyrus --with-cyrus-group=mail \ + --with-tclsh=/usr/bin/tclsh --with-com_err=/usr \ + --with-pidfile=/var/run/cyrmaster.pid \ + --with-syslogfacility=MAIL \ + --with-seen-db=skiplist --with-mboxlist-db=skiplist \ + --enable-gssapi --with-gss_impl=heimdal \ + --with-ucdsnmp=/usr + if grep -q "WARNING: Disabling GSSAPI" config.log ; then \ + echo "ERROR: GSSAPI not found by configure" >&2 ;\ + exit 1 ;\ + fi + echo 'To build this package, configure was called as follows:' \ + > debian/README.configure-options + grep with\ options config.status \ + | sed -e 's/^.*options \\"/configure /;s/\\"$///' \ + >> debian/README.configure-options + sed -i 's/ -lsensors//' master/Makefile + touch configure-stamp + +build-arch: build-arch-stamp +build-arch-stamp: configure-stamp + dh_testdir + # + PERL_MM_OPT="INSTALLDIRS=vendor" $(MAKE) + # store database configuration for possible automatic + # upgrading later + echo "DBENGINE $(DBENGINE)" >>debian/cyrus-db-types.txt + grep _db lib/imapoptions \ + | cut -d, -f1-2 | sed -e 's/{ "//;s/_db", "/ /;s/"$$//' \ + | sed -e 's/^tls.* /TLS /;s/^subs.* /SUBS /;s/^seen.* /SEEN /;s/^pts.* /PTS /;s/^mbox.* /MBOX /'\ + | awk '{printf("%s %s\n",toupper($$1),$$2);}' \ + >>debian/cyrus-db-types.txt + mv debian/cyrus-db-types.txt debian/cyrus-db-types.txt.old \ + && sort -u < debian/cyrus-db-types.txt.old > debian/cyrus-db-types.txt \ + && rm debian/cyrus-db-types.txt.old + # + # store some useful state about the current package + echo "PACKAGE_VERSION $(DEBVERSION)" >debian/cyrus-hardwired-config.txt + if grep -q -s -n -E '^[[:space:]]*#define[[:space:]]+USE_DIR_FULL[[:space:]]+1' config.h ; then \ + echo "USE_DIR_FULL 1" >>debian/cyrus-hardwired-config.txt ;\ + else \ + echo "USE_DIR_FULL 0" >>debian/cyrus-hardwired-config.txt ;\ + fi + touch build-arch-stamp + +# We aren't actually able to build arch-indep independently from +# arch-dep, so we guarantee that the arch build has been done first +build-indep: build-indep-stamp +build-indep-stamp: configure-stamp build-arch-stamp + dh_testdir + cd doc &&\ + pod2man ../perl/sieve/scripts/sieveshell.pl > ../man/sieveshell.1 &&\ + fig2dev -L png murder.fig murder.png &&\ + rm -f groff-html-*.png pod2htm* + cd doc &&\ + mkdir -p man &&\ + for man in ../man/*.[1-9] ../debian/*.[1-9]; do \ + echo "Generating html manpage for $$man..."; \ + groff -man -Thtml $$man > man/`basename $$man`.html; \ + done + pod2html perl/imap/cyradm.sh > doc/man/cyradm.1.html + rm -f pod2htm* + touch build-indep-stamp + +install-arch: build-arch-stamp + dh_testdir + dh_testroot + dh_clean -k + dh_installdirs -a + $(MAKE) install DESTDIR=$(TMPPKG) + # fix totaly broken location of the include files; + # while at it, also avoid namespace colision, and move + # lots of admin-only/system-only stuff to sbin and lib + # also, do the renaming needed for alternatives + # and fix the weird side-effect of setting the proper cyrus + # location in configure. + mkdir -p $(TMPPKG)/usr/sbin + mkdir -p $(TMPPKG)/usr/lib/cyrus + for i in master reconstruct quota deliver ; do \ + mv $(TMPPKG)/usr/lib/cyrus/bin/$$i $(TMPPKG)/usr/sbin/cyr$$i ;\ + done + for i in mbpath ctl_mboxlist ctl_deliver ctl_cyrusdb squatter \ + tls_prune ipurge cyrdump cvt_cyrusdb chk_cyrus arbitron \ + cyr_expire; do \ + mv $(TMPPKG)/usr/lib/cyrus/bin/$$i $(TMPPKG)/usr/sbin/$$i ;\ + done + mkdir -p $(TMPPKG)/usr/include + mv $(TMPPKG)/usr/share/include/cyrus $(TMPPKG)/usr/include + #mv $(TMPPKG)/bin/* $(TMPPKG)/usr/bin + # Move the perl crap to a saner place + mkdir -p $(TMPPKG)/usr/lib + mkdir -p $(TMPPKG)/usr/share/perl5 + #mv $(TMPPKG)/lib/perl5/Cyrus $(TMPPKG)/usr/share/perl5/Cyrus + #mv $(TMPPKG)/lib/* $(TMPPKG)/usr/lib + # for stuff in /etc + mkdir -p $(TMPPKG)/etc/cyrus $(TMPPKG)/etc/pam.d + install -m 644 debian/imapd.conf $(TMPPKG)/etc + install -m 644 debian/cyrus.conf $(TMPPKG)/etc + (cd debian ; for i in *.pam ;\ + do install -m 644 $$i $(TMPPKG)/etc/pam.d/$${i%.pam} ;\ + done) + # We rename some utils, so we need to sort out the manpages + for i in master reconstruct quota deliver ; do \ + mv $(TMPPKG)/usr/share/man/man8/$$i.8 $(TMPPKG)/usr/share/man/man8/cyr$${i}.8 ; \ + done + # And add our own manpages + mkdir -p $(TMPPKG)/usr/share/man/man8 + install -m 644 debian/cyrdump.8 $(TMPPKG)/usr/share/man/man8/cyrdump.8 + install -m 644 debian/cyrus-makedirs.8 $(TMPPKG)/usr/share/man/man8/cyrus-makedirs.8 + install -m 644 debian/arbitronsort.8 $(TMPPKG)/usr/share/man/man8/arbitronsort.8 + # SNMP files + mkdir -p $(TMPPKG)/usr/share/snmp/mibs + install -m 644 master/CYRUS-MASTER.mib $(TMPPKG)/usr/share/snmp/mibs/CYRUS-MASTER-MIB.txt + # Install cyradm icons + mkdir -p $(TMPPKG)/usr/share/icons/mini + install -m 644 debian/cyradm-32x32.xpm $(TMPPKG)/usr/share/icons/cyradm.xpm + install -m 644 debian/cyradm-16x16.xpm $(TMPPKG)/usr/share/icons/mini/cyradm.xpm + # Install debian-provided scripts + install debian/cyrus-makedirs $(TMPPKG)/usr/sbin/cyrus-makedirs + install -m 644 debian/get-backtrace.gdb $(TMPPKG)/usr/lib/cyrus/get-backtrace.gdb + # and logcheck files + install -m 644 debian/logcheck.ignore \ + $(PKGDIR)/etc/logcheck/ignore.d.server/logcheck-cyrus2_2 + install -m 644 debian/logcheck.violations.ignore \ + $(PKGDIR)/etc/logcheck/violations.ignore.d/logcheck-cyrus2_2 + # Install the stuff needed for upgrades + for i in convert-sieve.pl dohash rehash undohash translatesieve \ + upgradesieve masssievec; do \ + install -m 755 tools/$$i $(PKGDIR)/usr/lib/cyrus/upgrade ;\ + done + install -m 644 debian/cyrus-db-types.upgrading_from_1.5.txt $(PKGDIR)/usr/lib/cyrus/upgrade + # And other upgrade helpers + install -m 644 debian/cyrus-db-types.txt debian/cyrus-hardwired-config.txt \ + $(PKGDIR)/usr/lib/cyrus + # And other misc useful tools + install -m 755 tools/arbitronsort.pl $(TMPPKG)/usr/sbin/arbitronsort + # Install imtest and its symlinks + mv $(TMPPKG)/usr/bin/imtest $(CURDIR)/debian/cyrus-clients-2.2/usr/bin + for i in $(TMPPKG)/usr/bin/*test ; do \ + rm -f "$$i" || true ;\ + (cd $(CURDIR)/debian/cyrus-clients-2.2/usr/bin &&\ + ln -s imtest `basename $$i`) ;\ + done + # Lintian overrides + cd debian ; \ + for i in *.lintian ; do \ + mkdir -p "$${i%%.lintian}/usr/share/lintian/overrides" ;\ + install -m 644 "$$i" "$${i%%.lintian}/usr/share/lintian/overrides/$${i%%.lintian}" ;\ + done + dh_install -a --sourcedir=$(TMPPKG) + touch install-arch-stamp + +# We aren't actually able to install arch-indep independently from +# arch-dep, so we guarantee that the arch build has been done first +install-indep: build-indep-stamp install-arch + dh_testdir + dh_testroot + #dh_clean -k + dh_installdirs -i + # + # Massage the documentation into place + #mkdir -p $(DOCDIR) + #find doc/text -name '[Ra-z]*' -type f -exec cp -f {} $(PKGDIR)/usr/share/doc/$(MAINPKG) \; + #-(cd $(PKGDIR)/usr/share/doc/$(MAINPKG) && rm copyrights changes htmlstrip.c) + #find $(PKGDIR)/usr/share/doc/$(MAINPKG) -type f ! -name '*txt' ! -name '*.*' -exec mv {} {}.txt \; + # + # Install the html docs and examples + mkdir -p $(DOCDIR)/html + install -m 644 doc/*.html doc/murder.png $(DOCDIR)/html + cp -a doc/man $(DOCDIR)/html + cp -a debian/examples $(DOCDIR) + install -m 644 doc/cyrusv2.mc $(DOCDIR)/examples + # + # Install contrib/ files + mkdir -p $(DOCDIR)/contrib + xargs < debian/cyrus-common-2.2.contrib -rti cp -r '{}' $(DOCDIR)/contrib + # + dh_install -i --sourcedir=$(TMPPKG) + +binary-indep: install-indep + dh_testdir -i + dh_testroot -i +# dh_installdebconf -i + dh_installdocs -p cyrus-admin-2.2 -p cyrus-doc-2.2 + dh_installexamples -p cyrus-admin-2.2 + dh_installmenu -i +# dh_installlogrotate -i +# dh_installpam -i +# dh_installmime -i +# dh_installcron -i + dh_installman -i + dh_installchangelogs -p cyrus-admin-2.2 doc/changes.html + dh_installchangelogs -p cyrus-doc-2.2 + dh_strip -i + dh_link -i + dh_compress -i + dh_fixperms -i + dh_makeshlibs -i + dh_installdeb -i + dh_perl -i + dh_shlibdeps -i + dh_gencontrol -i + dh_md5sums -i + dh_builddeb -i + +binary-arch: install-arch + dh_testdir -a + dh_testroot -a + dh_installdebconf -a + dh_installdocs -p $(MAINPKG) -p cyrus-clients-2.2 -p libcyrus-imap-perl22 + dh_installexamples -p $(MAINPKG) -p libcyrus-imap-perl22 -p cyrus-clients-2.2 + dh_installmenu -a +# dh_installlogrotate -a +# dh_installpam -a +# dh_installmime -a + dh_installinit -p $(MAINPKG) --noscripts --name=cyrus2.2 + dh_installcron -a --name=cyrus22 + dh_installman -a +# dh_installinfo -a + dh_installchangelogs -p $(MAINPKG) -p cyrus-clients-2.2 doc/changes.html + dh_installchangelogs -p libcyrus-imap-perl22 perl/imap/Changes + dh_fixperms -a + dh_strip -a + dh_link -a + dh_compress -a + dh_fixperms -a + dh_makeshlibs -a + dh_installdeb -a + dh_perl -a + dh_shlibdeps -a + dh_gencontrol -a + dh_md5sums -a + dh_builddeb -a + +binary: binary-indep binary-arch +.PHONY: build build-indep build-arch clean binary-indep binary-arch binary install-arch install-indep --- cyrus-imapd-2.2-2.2.13.orig/debian/compat +++ cyrus-imapd-2.2-2.2.13/debian/compat @@ -0,0 +1 @@ +5 --- cyrus-imapd-2.2-2.2.13.orig/debian/changelog +++ cyrus-imapd-2.2-2.2.13/debian/changelog @@ -0,0 +1,598 @@ +cyrus-imapd-2.2 (2.2.13-18) experimental; urgency=low + + [ Henrique de Moraes Holschuh ] + * sieve/bc_eval.c (0025-upstream-fix-cve-2009-3235.dpatch): + update for completeness to match the patch used by the security-team: + use snprintf for scount, to future-proof against "int" larger than + 64 bits. + + [ Christoph Berg ] + * Add myself to Uploaders. + * Upgrade to use BerkeleyDB 4.8. (Closes: #421942) + * Convert to use quilt, and update the patch headers to use clean paths. + (Closes: #563303) + * Add patch by Mathieu Parent to fix conflicting getline definition. + (Closes: #552865) + + -- Christoph Berg Fri, 22 Jan 2010 22:16:02 +0100 + +cyrus-imapd-2.2 (2.2.13-17) unstable; urgency=high + + * Security Update: CVE-2009-3235: + Multiple stack-based buffer overflows in the Sieve parsing code, + patches taken from upstream CVS (closes: #547947) + + -- Henrique de Moraes Holschuh Tue, 22 Sep 2009 17:17:17 -0300 + +cyrus-imapd-2.2 (2.2.13-16) unstable; urgency=high + + * Justification for high urgency: Get security update from -15 into + testing as fast as possible since -15 was removed before it could + migrate. + * Fix build dependency on tcl-dev (keeping old tcl8.3-dev to make + backports easier) (Closes: 545281) + * Fix up README.Debian.database (Closes: 543293) + * Build against newer cyrus-sasl (Closes: 527495,528468) + * Fix cyrus-common postinst to only run makedirs if a new upstream + is installed (Closes: 545512), add a README to note that the + postinst needs to be changed with each new upstream + * Fix find syntax in cyrus-makedirs (Closes: 545554) + + -- Sven Mueller Tue, 08 Sep 2009 10:04:14 +0200 + +cyrus-imapd-2.2 (2.2.13-15) unstable; urgency=high + + [Security Update] + * Fixes buffer overflow in SIEVE script handling -> high urgency + Problem has no CVE tag assigned, is not yet announced by upstream, + but upstream patch is in public CVS -> not embargoed. + + [Sven Mueller] + * change example script mbox2cyrus to remove bashisms (Closes: #489558, + thanks to Andres Mejia) + * change Makefile so that no (intended) non-phony target invokes a phony + target. Also remove empty lines inside rules or replace them by comment + lines + * Added patches for translation updates as provided by Christian Perrier + (see below) + * update cyrus-makedirs to be more performant (using xargs to call chmod + et al. instead of using find -exec, this avoids lots of forks) + * remove build dependency alternate libsnmp5-dev (not even in oldstable + anymore), add alternative libsnmp-dev (as in stable) + * update standards-version to 3.8.3.0 + - add README.source + - remove version from perl build dependency + + [ Christian Perrier ] + * Debconf templates and debian/control reviewed by the debian-l10n- + english team as part of the Smith review project. Closes: #523989 + * [Debconf translation updates] + - Swedish. Closes: #524090 + - Czech. Closes: #524092 + - Japanese. Closes: #524121 + - Russian. Closes: #525704 + - Portuguese. Closes: #525912 + - German. Closes: #525913 + - Galician. Closes: #524267 + - Italian. Closes: #524312 + - French. Closes: #524954 + - Finnish. Closes: #526182 + - BokmĂĄl, Norwegian. Closes: #526231 + - Spanish. Closes: #526358 + - Basque. Closes: #530856 + + -- Sven Mueller Fri, 04 Sep 2009 09:58:54 +0200 + +cyrus-imapd-2.2 (2.2.13-14) unstable; urgency=low + + [ Sven Mueller ] + * Fix a problem in lib/Makefile.in with multi-word CCs + (problem found by Uwe Hermann's try at building all Debian packages with + Open64 - kudos to him for this nice little project) + * Update portoguese debconf translations (Closes: #439405) + * Add Homepage field to debian/control + * Use official VCS fields to document repository + + [ Benjamin Seidenberg ] + * Fix the finds in cyrus-makedirs (which weren't working properly) to use + xargs instead of -exec. (Closes #442491) + + [ Sven Mueller ] + * Fix control file (lintian warning: substvar-source-version-is-deprecated) + * Check for necessary changes regarding policy version 3.7.3.0, there where + none, so upgrading debian/control + * Fix init script LSB header (closes: 470110) + * Update logcheck rules and the rule filenames (closes: 473526) + * Add finnish translation (Closes: 473792) + * Update galician translation (Closes: 473886) + * Add basque translation (Closes: 473914) + * add norwegian bokmal translation (Closes: 474360) + * Add patch to add sasl_{minimum,maximum}_layer details can be found + in libsasl documentation. (Closes: 402814) + + -- Sven Mueller Tue, 15 Apr 2008 12:37:26 +0200 + +cyrus-imapd-2.2 (2.2.13-13) unstable; urgency=low + + * Change messages and chown's in cyrus-makedirs (Use find instead) + (Closes: #404446, 411529) + * Fix logcheck rule to ignore nonexistant sieve scripts (Closes #416826) + * Update README.exim to something more debian specific. Thanks: Romain + Chantereau and Steve Kemp . + (Closes: #395504) + * Update README.Debian.databases. Along with other fixes from a long time + ago, this addresses almost all of the issues raised in an upgrade report. + (Closes: #409945) + * Add a patch by Andrew Morgan that adds a config option + to disable referrals from frontends to backends + + -- Benjamin Seidenberg Fri, 22 Jun 2007 16:50:45 +0100 + +cyrus-imapd-2.2 (2.2.13-12) unstable; urgency=low + + * The "This-would-be-a-lot-easier-if-Ross-Boylan-used-courier" Release + + [ Sven Mueller ] + * Add rules to logcheck.violations.ignore, eliminating "SQUAT failed" + generic error message as far as logcheck is concerned. + * Fix bug number in README.Debian (151295, not 151925) (Closes: #426334) + + [ Benjamin Seidenberg ] + * Remove a redundant part of patches//13-master_process_handling.dpatch + which causes a double free. (Closes: #425844, #429164) + * Add information about tls_[service]_* options changing in UPGRADE.Debian. + (Closes: #408503) + + -- Benjamin Seidenberg Mon, 18 Jun 2007 15:38:01 -0400 + +cyrus-imapd-2.2 (2.2.13-11) unstable; urgency=low + + * Fix a bug in cyrus-common-2.2 postrm script: + Even when a package Depends on debconf, it is not guaranteed to be there + when postrm is called. (Closes: #416739) + * Assume removal of spools is not desired if debconf isn't available (least + surprise / least chance of data loss principle). + * Add Xs-Vcs-Browser and Xs-Vcs-Svn control fields for the PTS. + * Fix a number of small issues with the 64bit quota patch. + * update automake/autoconf patch with latest autotools-dev and + automake/autoconf packages from unstable. + * Add optional patch which allows uploads of messages with "From " headers. + Taken from fastmail.fm patchset. + * Add upstream patch to avoid sending empty literal responses. + * Add upstream patch to sort illegal dates before legal ones. + * Add galician debconf translation (Closes: #412809) + * Add portuguese debconf translation (Closes: #410964) + * Add a little more detail to the squatter manpage (Closes: #395063) + * Add dependency on heimdal-dev, add check to debian/rules wether GSSAPI is + used (Closes: #423970) + + -- Sven Mueller Fri, 18 May 2007 13:05:58 +0200 + +cyrus-imapd-2.2 (2.2.13-10) unstable; urgency=high + + * High urgency due to #400747 + + [ Sven Mueller ] + * Update README.Debian.simpleinstall (Closes: #395250) + * Upstream change: applied RFC4314 READ-ONLY logic + + [ Benjamin Seidenberg ] + * Add notice about lmtp overquota configuration option rename to + UPGRADE.Debian (Closes: #400645) + * Disable upstream patch 0019 due to bad sasl interactions (Closes: #400747) + + -- Benjamin Seidenberg Sat, 9 Dec 2006 10:03:38 -0500 + +cyrus-imapd-2.2 (2.2.13-9) unstable; urgency=high + + * The "Benjamin made it in time for etch" release. + * High urgency upload with simple fixes for Etch + + [ Henrique de Moraes Holschuh ] + * Prevent cronjobs and initscript from working when another version + of Cyrus IMAPD is installed and 2.2 is in removed but not purged + state (Closes: #393596) + + -- Benjamin Seidenberg Wed, 25 Oct 2006 13:39:08 -0400 + +cyrus-imapd-2.2 (2.2.13-8) unstable; urgency=medium + + [ Sven Mueller ] + * Remove unneeded drac dependency + * New vietnamese translation (thanks to Clytie Siddall, Closes: #383281) + * New russian translation (thanks to Yuri Kozlov, Closes: #383217) + * Updated dutch translation (thanks to Kurt De Bree, Closes: #384870) + * Updated logcheck rules a bit more, thanks to Ross Boylan (Closes: #384265) + * Add spanish debconf translation thanks to CĂ©sar GĂłmez MartĂ­n. + * Add patch to fix FTBFS on GNU/kFreeBSD thanks to Petr Salinger. + (Closes: #388242) + * Run autoconf to generate update configure script after above patch was + applied to configure.in + * Add patch by Ben Poliakoff which fixes an inability to set annotations + from IMAP::Admin perl module (Closes: #389597) + urgency=medium because of this bug. Might have been medium, but the + combination of this bug and the one below seems severe enough for high. + It makes the package unusable to anyone using annotations (guess is 40% + of new installs). + * Update dutch debconf translation (Closes: #389783) + * Fix a problem with repeated builds from the same tree. + * Add upstream patch to imtest.c prefixing raw client responses with C: + + [ Henrique de Moraes Holschuh ] + * Update pt_BR debconf translation + + [ Benjamin Seidenberg ] + * Update date span in debian/copyright + * Fix mistake in init script, ! check_status instead of !check_status. + Thanks to Farzad FARID + * Fix DOS encoding on several files in debian/ (Closes: #391092) + Thanks to Farzad FARID + * Changed my email in debian/control + + -- Benjamin Seidenberg Mon, 16 Oct 2006 19:41:37 -0400 + +cyrus-imapd-2.2 (2.2.13-7) unstable; urgency=low + + * The "Bad translations in the middle of the night" release. + * Update czech translation by Martin ?Ă­n + (Closes: #382775,#383226) + * Add logcheck ignore line for lmtp delivery log entries (Closes: #382942) + * Update imapd.conf and cyrus.conf to reflect the configurable IDLE patch + applied since 2.2.13-5. (Closes: #382938) + * Update a debconf question so that it doesn't ask in first persion. Fixes a + lintian warning or even two. + * Fix delprune event in cyrus.conf to use cyr_expire (Closes: #383015) + * Add swedish translation by Daniel Nylander + * Fix some mistakes in the german translation, most corrections by Holger + Wansing + * Update italian translation by Cristian Rigamonti + * Correct README.Debian.database regarding number of .seen and .sub + databases. (Closes: #383484) + * Change wording regarding installsieve in README.Debian. (Closes: #383485) + * Add a "WARNING" prefix to the error message about missing sieve scripts. + (Closes: #383640) + * Add a logcheck ignore clause for sieve redirects. (Closes: #384265) + * Fix an implicit pointer conversion in imap/global.c (Closes: #384279) + * Update french translation thanks to Philippe Batailler and the + debian-l10n-french mailing list. (Closes: #384288) + * added 'sieve_allowreferrals' option which controls whether timsieved + issues referrals (default) or proxies (by murch@andrew.cmu.edu) + * update japanese debconf translation, thanks to Hideki Yamane + (henrich@samba.gr.jp) + * Update logcheck rules (thanks to Paul Traina ) + (Closes: #387180) + * Add a patch to change a log message when a user has no sieve file. + + -- Sven Mueller Thu, 14 Sep 2006 18:58:49 +0200 + +cyrus-imapd-2.2 (2.2.13-6) unstable; urgency=low + + * Fix a problem in cyrus-common-2.2 preinst + + -- Sven Mueller Thu, 10 Aug 2006 03:58:58 +0200 + +cyrus-imapd-2.2 (2.2.13-5) unstable; urgency=low + + * The "Need to clean the Windows" release + + [ Benjamin Seidenberg ] + * Update the following documentation: + - README.Debian + - README.Debian.database + - README.Debian.postfix + - README.Debian. + (Closes: #378520, #369882) + * Bump debian policy to version 3.7.2 (No changes required) + * Move cyr_expire to /usr/sbin as this is used in cyrus.conf. + Thanks to Alexander Turic . (Closes: #380595) + * Rename cron script to cyrus22 since dots aren't allowed + (Closes: #382069) + + [ Sven Mueller ] + * Remove outdated entry about netnews removal from README.Debian + (Closes: #378519) + * Add --no-create-home to adduser arguments in cyrus-common2.2's + postinst script. (Closes: #378518) + * Modify debian/rules to once again create a meaningful + cyrus-db-types.txt file (Closes: #366957) + * Improve imapd.conf documentation to show how service specific options can + be given. Also update packaged imapd.conf to reflect 2.2 syntax and + behaviour. (Closes: #379881) + * Use ssl-cert and reference system-wide ssl certificates in imapd.conf, + leaving the service specific ssl certs as-is. + * Update imapd.conf documentation to clarify behaviour of allowplaintext in + combination with sasl_mech_list. + * Sync with 2.2 CVS tree from upstream, including a few documentation fixes + and a fix returning empty strings for empty message parts instead of NULL + * Use configurable idle patch from OndĹ™ej SurĂ˝ + * Add some more options to /etc/default/cyrus2.2 and use them in the init + script, including a generic OPTIONS variable to allow setting of any + commandline option for cyrmaster. (Closes: #382061) + * Add logic in cyrus-common-2.2 preinst/postrm scripts to rename the + cron.daily script. Supplements change by Benjamin Seidenberg, closing + #382069. + + -- Sven Mueller Thu, 10 Aug 2006 03:17:27 +0200 + +cyrus-imapd-2.2 (2.2.13-4) unstable; urgency=low + + [ Benjamin Seidenberg ] + * Switch from dh_movefiles (deprecated) to dh_install + + [ Sven Mueller ] + * Integrate 4 upstream CVS updates/fixes: + - Upstream fix: only free() the backend struct if we allocated it + (don't free cached connections) + - remove limit on the size of mailbox files that can be received by UNDUMP + (write file directly to disk rather than reading the literal into + memory) + - better logging to facilitate message tracking (Wes Craig + ) + - remove redundant check for wildcards in mailbox names (Wes Craig + ) + * Move expiry from ctl_deliver to cyr_expire as suggested by upstreams + upgrade information. + * Add upstream patch to fix a small issue with linking and libRSAglue + * Add upstream patch to compile with MIT krb5 1.4.3 (Philip Guenther + ) + * Add upstream patch to allow reporting of mailbox sizes above 4GB + * Add upstream patch to fix a documentation error in imapoptions + * Add patch to fix some compiler warnings about casts from pointer to + integer of different size + * Change the init script to actuall print some information when called with + the "status" argument + * Add upstream typo fixes of the day. See 0016-upstream-fix-typos for + reference to upstream CVS + + [ Benjamin Seidenberg ] + * Fix typos in UPGRADE.Debian (Closes: #368675) + * Fix link in doc/html/readme.html (Closes: #368676) + * Add upstream patch to fix POP locking when reconstructing + + -- Sven Mueller Wed, 28 Jun 2006 22:21:51 +0200 + +cyrus-imapd-2.2 (2.2.13-3) unstable; urgency=high + + [ Sven Mueller ] + * [Security] Add upstream patch to disallow user probes + * Add upstream patch to fix dump/undump of remote mailboxes (ctl_mboxlist) + * Add upstream patch to allow ACL removal for invalid IDs + * Add upstream patch to properly handle timezones and DST in fetchnews + * Urgency=high for both security fix and patch to dump/undump bug which + makes package unusuable in many supported setups + + [ Benjamin Seidenberg ] + * Add build dependency on libkvm-dev for kfreebsd (Closes: #366113) + + -- Sven Mueller Fri, 5 May 2006 18:01:41 +0200 + +cyrus-imapd-2.2 (2.2.13-2) unstable; urgency=low + + [ Sven Mueller ] + * Apply fix from upstream CVS to imap/backend.c (Closes: #365629) + + -- Sven Mueller Tue, 2 May 2006 22:14:03 +0200 + +cyrus-imapd-2.2 (2.2.13-1) unstable; urgency=low + + [ Sven Mueller ] + * Switch to new upstream release (2.2.13) + * Fix spelling mistake in debian/control (Closes: #363329) + * Fix logcheck rule (Closes: #364835) + + -- Sven Mueller Sat, 29 Apr 2006 22:31:42 +0200 + +cyrus-imapd-2.2 (2.2.12-5) unstable; urgency=low + + [ Sven Mueller ] + * Add example entries for squatter to cyrus.conf (Closes: #355303) + * Fix URLs in README.sendmail (Closes: #355771) + * Remove STDERR redirection from cyrus-common-2.2 postinst call to adduser + + [ Benjamin Seidenberg ] + * Default to lmtp_downcase_rcpt: yes for compliance with RFC 2821 + (Closes: #357040) + + -- Sven Mueller Fri, 31 Mar 2006 20:11:54 +0200 + +cyrus-imapd-2.2 (2.2.12-4) unstable; urgency=low + + [ Benjamin Seidenberg ] + * Change maintainer to mailing list + * Remove multiple provides: lines in cyrus-nntpd-2.2 (Closes: #352240) + * Add lintian override for CVS dirs in source tarball, we need to hit + upstream with a cluebat for this. + * Move all Build-Depends-Indep dependencies to Build-Depends because of the + way debian/rules invokes this target, they are not installed, fixes FTBFS. + (Closes: #352775, #352779) + + [ Sven Mueller ] + * Disable DRAC authentication + * Fix reference in debian/po/POTFILES.in (Closes: #352948) + + [ OndĹ™ej SurĂ˝ ] + * Upload to unstable. + + -- OndĹ™ej SurĂ˝ Wed, 15 Feb 2006 22:42:35 +0100 + +cyrus-imapd-2.2 (2.2.12-3) unstable; urgency=low + + [ Sven Mueller ] + * Add a script which helps downloading, editing and re-uploading + sieve scripts + * Add a patch to fix db_err callback prototype when building against + Berkeley DB 4.3 or newer + + [ Henrique de Moraes Holschuh ] + * UPGRADE.Debian: warn of dangerous problem in cyrus-imapd from sarge, + which would cause data loss when UPGRADE.Debian instructions were + followed. + + [ Benjamin Seidenberg ] + * Changed debian/control so that the doc package is in section doc to match + ftpmaster override. + + [ OndĹ™ej SurĂ˝ ] + * Updated and renamed logcheck rules. + * Upload to unstable. + + -- OndĹ™ej SurĂ˝ Mon, 13 Feb 2006 14:16:44 +0100 + +cyrus-imapd-2.2 (2.2.12-2) experimental; urgency=low + + [ Henrique de Moraes Holschuh ] + * Modify the Debian default TLS cipher list to use only secure ciphers + suitable for imap/pop/smtp/lmtp TLS, and add an explanation + + [ Benjamin Seidenberg ] + * Rewrote descriptions to all refer to cyrus-common-2.2 + * Changed all package names in all required files within /debian to reflect + the new naming scheme + * Deleted two files in /usr/lib/cyrus in the purge target of postrm so that + this folder is deleted correctly + * Changed policy version to 3.6.2 + * Added upstream patchset 6662: + imap/spool.c:1.7->1.8: don't catch our own NULL (off by one error) + (Closes: #342314) + + [ Sven Mueller ] + * Add a small sed call to debian rules to work around libsnmp[59]-dev + problem which causes an unneccesary "-lsensors" in master/Makefile, + resulting in an unnessary build dependency on libsensors-dev. + Proper fix has to go into netsmp packages, also we need to properly use + Debian's libtool. (Closes: #341580) + * Add czech translation (thanks to Martin Sin and the debian-l10n-czech + team) with a spelling correction from Ondrej SurĂ˝. + * Adjust kolab2 annotation patch according to patch from Steffen Joeris + (Closes: #347527) + * Apply patch fixing some error messages in Shell.pm (Closes: #347658) + + [ OndĹ™ej SurĂ˝ ] + * Upload to experimental. + + -- OndĹ™ej SurĂ˝ Fri, 13 Jan 2006 11:52:58 +0100 + +cyrus22-imapd (2.2.12-1) experimental; urgency=low + + [ Benjamin Seidenberg ] + * Revised to build against pristine upstream sources. + [ Sven Mueller ] + * Fixed a discrepancy between documentation and actual behaviour of the + "dracinterval" imapd.conf option. Documentation always said the default + would be 0, while the default was actually 5. + [ Henrique de Moraes Holschuh ] + * Change build-dependency from libsnmp4.2-dev (ucd snmp) to libsnmp9-dev | + libsnmp5-dev (netsnmp), so that it works right in sid/etch and sarge + * Upload to experimental + + -- Henrique de Moraes Holschuh Tue, 29 Nov 2005 02:10:21 -0200 + +cyrus22-imapd (2.2.12-0.9) unstable; urgency=low + + [ Sven Mueller ] + * Add patch to be compatible with BerkeleyDB 4.3 + * Add patch to fix TLS/SSL shutdown in timsieved + + -- Sven Mueller Mon, 14 Nov 2005 14:56:20 +0100 + +cyrus22-imapd (2.2.12-0.8) unstable; urgency=low + + [ Sven Mueller ] + * Fix a problem in the init scripts new status check, found by Benjamin + Seidenberg. + + -- Sven Mueller Sun, 13 Nov 2005 20:14:05 +0100 + +cyrus22-imapd (2.2.12-0.7) unstable; urgency=low + + [ Sven Mueller ] + * Switch most deletions of autogenerated files to use debian/deletable.files + * Switch all remaining patches to dpatch so that the .diff.gz should now be + clean except for the files in debian/. + + -- Sven Mueller Thu, 10 Nov 2005 16:06:09 +0100 + +cyrus22-imapd (2.2.12-0.6) unstable; urgency=low + + [ Sven Mueller ] + * Added kolab2 annotation patch as proposed by Christoper Sacca + * Added a small patch to lower the minimum pop3 timeout to 1 minute. + The default is still at 10 minutes. I also added some documentation to make + it clear to admins that it is _not_ recommended to lower the value to less + than 10 minutes (because that is what the standard says it should be at). + I needed this change for use at my workplace though. The patch is disabled + by default. + * Patched init script to support everything LSB 3.0 asks for, including the + "right" return codes, as far as we can. + * Add patch to enhance sieveshell a bit: + - Add --execfile parameter to read commands from a file + - Add --password parameter to pass the users parameter on the commandline + - Add code to return with a non-zero exit code if the last command + executed failed for some reason. + + [ OndĹ™ej SurĂ˝ ] + * Add 64bit quota dpatch. + * Rerun autoconf and add result as dpatch. + + -- Sven Mueller Fri, 23 Sep 2005 18:55:57 +0200 + +cyrus22-imapd (2.2.12-0.5) unstable; urgency=low + + * Update upgrading information + * Include masssievec in cyrus22-common + * Applied patch from RaphaĂ«l 'SurcouF' Bordet to add + nntp support again. + * Eliminate an unused variable from tools/masssievec to get rid of perl + warning. + * Update Recommends and Suggests for cyrus22-common as suggested by HMH + * Move several patches from patching the source directly to patching through + the use of dpatch + + -- Sven Mueller Tue, 24 May 2005 23:13:18 +0200 + +cyrus22-imapd (2.2.12-0.4) unstable; urgency=low + + * Fix usage message in deliver.c to reflect Debian naming of (cyr)deliver, + (cyr)quota and (cyr)reconstruct + * Document the defaultdomain setting a bit better (hopefully) + * fix deletion of debian/cyrus-hardwired-config.txt during cleanup + * build both arch-dependend and arch-independend parts when debian/rules is + called for the build target + * Add Sven Mueller to the list of uploaders + + -- Sven Mueller Fri, 29 Apr 2005 00:14:04 +0200 + +cyrus22-imapd (2.2.12-0.3) unstable; urgency=low + + * Add a README which contains the configure options used to + compile the package. The README is auto-generated by debian/rules + * cyrus22-clients needs to conflict with cyrus21-clients + * cyrus22-common needs to conflict with cyrus21-common + * Add a guess of what the problem might be to the set_cert_stuff failure + message + * Update a few Replaces:, Provides: and Conflicts: lines in debian/control + + -- Sven Mueller Thu, 24 Mar 2005 12:26:27 +0100 + +cyrus22-imapd (2.2.12-0.2) unstable; urgency=low + + * Fix some more perl executable paths + * clean up debian directory a bit + * install sievec with cyrus22-common + * install mbexamine with cyrus22-common + * install smmapd with cyrus22-common + * install cyr_expire with cyrus22-common + * install installsieve with cyrus22-admin + + -- Sven Mueller Tue, 22 Mar 2005 14:48:33 +0100 + +cyrus22-imapd (2.2.12-0.1) unstable; urgency=low + + * Initial revision of cyrus22-imapd package + - debian packaging taken from cyrus21-imapd_2.1.18-1 + * Add/fix imapd.conf info regarding virtual domains + * Add DRAC support (i.e. apply DRAC patch from /contrib) + * Add syncldap2cyrus.pl script from #260833 (a cyrus21 bug) + + -- Sven Mueller Fri, 18 Mar 2005 13:34:09 +0100 + --- cyrus-imapd-2.2-2.2.13.orig/debian/README.sendmail +++ cyrus-imapd-2.2-2.2.13/debian/README.sendmail @@ -0,0 +1,69 @@ +Setting up Cyrus IMAPd for Sendmail (Debian) +$Id: README.sendmail 308 2006-03-07 20:02:36Z sven $ +=========================================================== + +[This is user-contributed, unverified information] + +First, do *not* use the old cyrus*.m4 macros, they won't work well. The one +you can use is cyrusv2.m4. There are many methods of connecting Cyrus to +sendmail, and replacing the local mailer with Cyrus lmtpd is just one of +them. + +Andrzej Filip says: +http://anfi.homeunix.net/sendmail/localNalias.html + Cyrus Aliases + It allows to use user@CYRUS redirections in virtusertable, + aliases and .forward file e.g. I use the following ~anfi/.forward: + anfi@CYRUS + +http://anfi.homeunix.net/sendmail/localtab.html + Local Table + +http://anfi.homeunix.net/sendmail/rtcyrus2.html + Real Time Cyrus Integration + It allows sendmail to check presence of cyrus mailbox in real time, + sendmail rejects message to non existing cyrus mailboxes in reply to + "RCPT TO:" + + +I am not sure how well these will work with sieve. The one report I have +for Cyrus + sendmail with working sieve is: + +"cyrus/sieve vacation seems to work only if you integrate cyrus via +cyrusv2.m4 into sendmail (8.12.3-4)." + +Sample sendmail.mc that seems to work: +-------- +[...] +dnl define BIND_OPTS',`-DNSRCH -DEFNAMES')dnl +define(`confLOCAL_MAILER', `cyrusv2')dnl +MAILER(`local')dnl +MAILER(`smtp')dnl +MAILER(`cyrusv2')dnl +dnl MODIFY_MAILER_FLAGS(`cyrus',`+w')dnl + +LOCAL_RULE_0 +Rbb + $+ < @ $=w . > $#cyrusbb $: $1 +[...] +-------- + +Here's a sieve test script you can try. Change it as needed for your +site: + +require "fileinto"; +require "vacation"; +require "envelope"; + +if header :contains "subject" "vactest" { + vacation :days 7 :addresses ["me@home.de"] "vactest!"; +} + + +Pierre Gambarotto says: +The minimum in order to make it work with sendmail is: + +define(`confLOCAL_MAILER', `cyrusv2') +define(`CYRUSV2_MAILER_ARGS',`FILE /var/run/cyrus/socket/lmtp') +MAILER(`cyrusv2') + +The CYRUSV2_MAILER_ARGS is the key. --- cyrus-imapd-2.2-2.2.13.orig/debian/cyrus-makedirs +++ cyrus-imapd-2.2-2.2.13/debian/cyrus-makedirs @@ -0,0 +1,146 @@ +#!/bin/sh -e +# +# cyrus-makedirs - Parses a Cyrus imap.d configuration file, and creates +# the correct directory trees for all partitions +# +# Copyright 2001,2002 by Henrique de Moraes Holschuh , 2008. +msgid "" +msgstr "" +"Project-Id-Version: cyrus-imapd-2.2-eu\n" +"Report-Msgid-Bugs-To: cyrus-imapd-2.2@packages.debian.org\n" +"POT-Creation-Date: 2009-04-14 17:58+0200\n" +"PO-Revision-Date: 2009-05-28 11:56+0200\n" +"Last-Translator: pi \n" +"Language-Team: Euskara \n" +"Language: eu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Pootle 1.2.1\n" + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "Modified database backends" +msgstr "Eraldatutako datu-base interfazeak" + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "" +"Comparison between /usr/lib/cyrus/cyrus-db-types.txt and /usr/lib/cyrus/" +"cyrus-db-types.active shows that database backends for Cyrus IMAPd have been " +"changed." +msgstr "" +"/usr/lib/cyrus/cyrus-db-types.txt eta /usr/lib/cyrus/cyrus-db-types.active " +"arteko parekatzeak Cyrus IMAPd-en datu-base interfazea aldatu dela erakusten " +"du." + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "" +"This means that those databases for which the database backends changed " +"might need to be converted manually to the new format, using the cvt_cyrusdb" +"(8) utility." +msgstr "" +"Honek datu-base interfazea aldatu diren datu-baseetan formatu berrira " +"cvt_cyrusdb(8) lanabesa erabiliaz eskuzko bihurketa bat egin behar dela esan " +"nahi du." + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "" +"Please refer to /usr/share/doc/cyrus-common-2.2/README.Debian.database for " +"more information. Do not start cyrmaster until you have converted the " +"databases to the new format." +msgstr "" +"Mesedez begiratu /usr/share/doc/cyrus-common-2.2/README.Debian. datu-base " +"argibide gehiagorako. Ez cyrmaster abiarazi datu-basea formatu berrira " +"bihurtu arte." + +#. Type: boolean +#. Description +#: ../cyrus-common-2.2.templates:3001 +msgid "Remove the mail and news spools?" +msgstr "Eposta eta ilara berriak ezabatu?" + +#. Type: boolean +#. Description +#: ../cyrus-common-2.2.templates:3001 +#| msgid "" +#| "The Cyrus mail and news spools, as well as the user's sieve scripts can " +#| "be removed when the package is purged." +msgid "" +"The Cyrus mail and news spools, as well as users' sieve scripts, can be " +"removed when the package is purged." +msgstr "" +"Cyrus posta eta ilara berriak, baita erabiltzaileren sieve script-ak ere " +"ezabatu egin daitezke paketea garbitzerakoan." + +#. Type: boolean +#. Description +#: ../cyrus-common-2.2.templates:3001 +msgid "" +"This question only applies to the default spools and sieve script " +"directories in /var. If you modified their location in imapd.conf, the new " +"locations will not be removed; just the old ones in /var." +msgstr "" +"Galdera honek /var direktorioko lehenetsiriko ilara eta sieve script-ei " +"bakarrik dagokie. Zuk horien kokapena imapd-con fitxategian aldatu baduzu, " +"kokaleku berriaz ez dira ezabatu, /var-en daudenak zaharrak bakarrik " +"ezabatuko dira." + +#~ msgid "Database backends have changed!" +#~ msgstr "Datubase interfazea aldatu egin da!" --- cyrus-imapd-2.2-2.2.13.orig/debian/po/vi.po +++ cyrus-imapd-2.2-2.2.13/debian/po/vi.po @@ -0,0 +1,95 @@ +# Vietnamese translation for Cyrus-IMAPd. +# Copyright © 2006 Free Software Foundation, Inc. +# Clytie Siddall , 2006. +# +msgid "" +msgstr "" +"Project-Id-Version: cyrus-imapd-2.2.13\n" +"Report-Msgid-Bugs-To: cyrus-imapd-2.2@packages.debian.org\n" +"POT-Creation-Date: 2009-04-14 17:58+0200\n" +"PO-Revision-Date: 2006-08-16 18:12+0930\n" +"Last-Translator: Clytie Siddall \n" +"Language-Team: Vietnamese \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: LocFactoryEditor 1.6fc1\n" + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "Modified database backends" +msgstr "" + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "" +"Comparison between /usr/lib/cyrus/cyrus-db-types.txt and /usr/lib/cyrus/" +"cyrus-db-types.active shows that database backends for Cyrus IMAPd have been " +"changed." +msgstr "" +"Việc so sánh vá»›i chứng minh ráş±ng háş­u phương co sở dữ liệu cho Cyrus IMAPd bị " +"thay đổi." + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "" +"This means that those databases for which the database backends changed " +"might need to be converted manually to the new format, using the cvt_cyrusdb" +"(8) utility." +msgstr "" +"CĂł nghÄ©a lĂ  những co sở dữ liệu cho Ä‘Ăł háş­u phương co sở dữ liệu Ä‘ĂŁ thay đổi " +"sáş˝ cần phải tá»± được chuyá»n đổi sang dạng thức má»›i, dĂąng tiện Ă­ch « cvt_cyrusdb" +"(8) »." + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "" +"Please refer to /usr/share/doc/cyrus-common-2.2/README.Debian.database for " +"more information. Do not start cyrmaster until you have converted the " +"databases to the new format." +msgstr "" +"HĂŁy xem tĂ i liệu Äọc Äi Ä‘á» tìm thĂ´ng tin thĂŞm. Äừng khởi chạy tiáşżn trình cyrmaster trĆ°á»›c " +"khi bạn Ä‘ĂŁ chuyá»n đổi những co sở dữ liệu sang dạng thức má»›i." + +#. Type: boolean +#. Description +#: ../cyrus-common-2.2.templates:3001 +msgid "Remove the mail and news spools?" +msgstr "Gỡ bỏ ống chỉ thĆ° vĂ  tin tức khĂ´ng?" + +#. Type: boolean +#. Description +#: ../cyrus-common-2.2.templates:3001 +#, fuzzy +#| msgid "" +#| "The Cyrus mail and news spools, as well as the user's sieve scripts can " +#| "be removed when the package is purged." +msgid "" +"The Cyrus mail and news spools, as well as users' sieve scripts, can be " +"removed when the package is purged." +msgstr "" +"Những ống chỉ thĆ° vĂ  tin tức Cyrus, cĹ©ng nhĆ° những táş­p lệnh sieve của người " +"dĂąng, cĂł thỠđược gỡ bỏ khi gĂłi được táş©y." + +#. Type: boolean +#. Description +#: ../cyrus-common-2.2.templates:3001 +msgid "" +"This question only applies to the default spools and sieve script " +"directories in /var. If you modified their location in imapd.conf, the new " +"locations will not be removed; just the old ones in /var." +msgstr "" +"Câu hỏi nĂ y áp dụng chỉ cho những ống chỉ vĂ  thĆ° mục táş­p lệnh sieve máş·c định " +"náş±m trong . Náşżu bạn Ä‘ĂŁ sá»­a đổi vị trĂ­ trong táş­p tin cấu hình « imapd." +"conf », những vị trĂ­ má»›i sáş˝ khĂ´ng được gỡ bỏ; chỉ những vị trĂ­ náş±m trong sáş˝ được gỡ bỏ." + +#~ msgid "Database backends have changed!" +#~ msgstr "Háş­u phương co sở dữ liệu bị thay đổi !" --- cyrus-imapd-2.2-2.2.13.orig/debian/po/nb.po +++ cyrus-imapd-2.2-2.2.13/debian/po/nb.po @@ -0,0 +1,90 @@ +# translation of nb.po to Norwegian BokmĂĄl +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Bjørn Steensrud , 2008, 2009. +msgid "" +msgstr "" +"Project-Id-Version: nb\n" +"Report-Msgid-Bugs-To: cyrus-imapd-2.2@packages.debian.org\n" +"POT-Creation-Date: 2009-04-14 17:58+0200\n" +"PO-Revision-Date: 2009-04-30 02:18+0200\n" +"Last-Translator: Bjørn Steensrud \n" +"Language-Team: Norwegian BokmĂĄl \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 0.3\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "Modified database backends" +msgstr "Endrede databasemotorer" + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "" +"Comparison between /usr/lib/cyrus/cyrus-db-types.txt and /usr/lib/cyrus/" +"cyrus-db-types.active shows that database backends for Cyrus IMAPd have been " +"changed." +msgstr "" +"Sammenlikning mellom /usr/lib/cyrus/cyrus-db-types.txt og /usr/lib/cyrus/" +"cyrus-db-types.active viser at databasemotorene for Cyrus IMAPd er endret." + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "" +"This means that those databases for which the database backends changed " +"might need to be converted manually to the new format, using the cvt_cyrusdb" +"(8) utility." +msgstr "" +"Dette betyr at det kan være nødvendig ĂĄ konvertere til det nye formatet de " +"databasene der bakgrunnsmotorene er endret. Det gjøres med verktøyet " +"cvt_cyrusdb(8)." + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "" +"Please refer to /usr/share/doc/cyrus-common-2.2/README.Debian.database for " +"more information. Do not start cyrmaster until you have converted the " +"databases to the new format." +msgstr "" +"Se etter mer informasjon i /usr/share/doc/cyrus-common-2.2/README.Debian." +"database. Ikke start cyrmaster før databasene er blitt konvertert til det " +"nye formatet." + +#. Type: boolean +#. Description +#: ../cyrus-common-2.2.templates:3001 +msgid "Remove the mail and news spools?" +msgstr "Skal e-postlager og njuslagre fjernes?" + +#. Type: boolean +#. Description +#: ../cyrus-common-2.2.templates:3001 +msgid "" +"The Cyrus mail and news spools, as well as users' sieve scripts, can be " +"removed when the package is purged." +msgstr "" +"E-postlageret og njuslagrene til Cyrus, og ogsĂĄ brukernes sieve-skripter, " +"kan fjernes nĂĄr pakka fjernes fullstendig." + +#. Type: boolean +#. Description +#: ../cyrus-common-2.2.templates:3001 +msgid "" +"This question only applies to the default spools and sieve script " +"directories in /var. If you modified their location in imapd.conf, the new " +"locations will not be removed; just the old ones in /var." +msgstr "" +"Dette spørsmĂĄlet gjelder bare standard lagre og sieve-skripter i mapper " +"under /var. Hvis de er gitt nye adresser i imapd.conf, sĂĄ blir ikke de nye " +"stedene ryddet, bare de gamle i /var." + +#~ msgid "Database backends have changed!" +#~ msgstr "Databasemotorene i bakgrunnen er endret!" --- cyrus-imapd-2.2-2.2.13.orig/debian/po/es.po +++ cyrus-imapd-2.2-2.2.13/debian/po/es.po @@ -0,0 +1,114 @@ +# cyrus-imapd-2.2 po-debconf translation to Spanish +# Copyright (C) 2006, 2009 Software in the Public Interest +# This file is distributed under the same license as the cyrus-imapd-2.2 package. +# +# Changes: +# - Initial translation +# CĂ©sar GĂłmez MartĂ­n , 2006 +# +# - Updates +# Francisco Javier Cuadrado , 2009 +# +# Traductores, si no conocen el formato PO, merece la pena leer la +# documentaciĂłn de gettext, especialmente las secciones dedicadas a este +# formato, por ejemplo ejecutando: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# +# Equipo de traducciĂłn al español, por favor, lean antes de traducir +# los siguientes documentos: +# +# - El proyecto de traducciĂłn de Debian al español +# http://www.debian.org/intl/spanish/ +# especialmente las notas de traducciĂłn en +# http://www.debian.org/intl/spanish/notas +# +# - La guĂ­a de traducciĂłn de po's de debconf: +# /usr/share/doc/po-debconf/README-trans +# o http://www.debian.org/intl/l10n/po-debconf/README-trans +# +msgid "" +msgstr "" +"Project-Id-Version: cyrus-imapd-2.2 2.2.13-15\n" +"Report-Msgid-Bugs-To: cyrus-imapd-2.2@packages.debian.org\n" +"POT-Creation-Date: 2009-04-14 17:58+0200\n" +"PO-Revision-Date: 2009-04-27 10:51+0100\n" +"Last-Translator: Francisco Javier Cuadrado \n" +"Language-Team: Debian l10n spanish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "Modified database backends" +msgstr "Gestores de base de datos modificados" + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "" +"Comparison between /usr/lib/cyrus/cyrus-db-types.txt and /usr/lib/cyrus/" +"cyrus-db-types.active shows that database backends for Cyrus IMAPd have been " +"changed." +msgstr "" +"La comparaciĂłn entre «/usr/lib/cyrus/cyrus-db-types.txt» y «/usr/lib/cyrus/" +"cyrus-db-types.active» muestra que se han cambiado los gestores de base de " +"datos de Cyrus IMAPd." + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "" +"This means that those databases for which the database backends changed " +"might need to be converted manually to the new format, using the cvt_cyrusdb" +"(8) utility." +msgstr "" +"Esto significa que, quizás, se necesite convertir manualmente al nuevo " +"formato las bases de datos para las que ha cambiado el gestor, para ello " +"puede usar la herramienta cvt_cyrusdb(8)." + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "" +"Please refer to /usr/share/doc/cyrus-common-2.2/README.Debian.database for " +"more information. Do not start cyrmaster until you have converted the " +"databases to the new format." +msgstr "" +"Por favor, consulte «/usr/share/doc/cyrus-common-2.2/README.Debian.database» " +"si desea más informaciĂłn. No ejecute cyrmaster hasta que se hayan convertido " +"las bases de datos al nuevo formato." + +#. Type: boolean +#. Description +#: ../cyrus-common-2.2.templates:3001 +msgid "Remove the mail and news spools?" +msgstr "ÂżDesea eliminar las colas de correo y noticias?" + +#. Type: boolean +#. Description +#: ../cyrus-common-2.2.templates:3001 +msgid "" +"The Cyrus mail and news spools, as well as users' sieve scripts, can be " +"removed when the package is purged." +msgstr "" +"Al purgar el paquete se pueden eliminar tanto el correo de Cyrus y las colas " +"de noticias, como los scripts de filtrado de los usuarios." + +#. Type: boolean +#. Description +#: ../cyrus-common-2.2.templates:3001 +msgid "" +"This question only applies to the default spools and sieve script " +"directories in /var. If you modified their location in imapd.conf, the new " +"locations will not be removed; just the old ones in /var." +msgstr "" +"Esta pregunta sĂłlo se aplica a los directorios predeterminados de las colas " +"y de los scripts de filtrado de «/var». Si modificĂł sus ubicaciones en el " +"archivo «imapd.conf», las nuevas ubicaciones no se eliminarán; sĂłlo lo harán " +"las viejas de «/var»." + +#~ msgid "Database backends have changed!" +#~ msgstr "¡Los gestores de la base de datos han cambiado!" --- cyrus-imapd-2.2-2.2.13.orig/debian/po/fi.po +++ cyrus-imapd-2.2-2.2.13/debian/po/fi.po @@ -0,0 +1,86 @@ +# Esko Arajärvi , 2009. +msgid "" +msgstr "" +"Project-Id-Version: cyrus-imapd-2.2\n" +"Report-Msgid-Bugs-To: cyrus-imapd-2.2@packages.debian.org\n" +"POT-Creation-Date: 2009-04-14 17:58+0200\n" +"PO-Revision-Date: 2009-04-29 21:54+0300\n" +"Last-Translator: Esko Arajärvi \n" +"Language-Team: Finnish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Finnish\n" +"X-Poedit-Country: FINLAND\n" +"X-Generator: Lokalize 0.3\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "Modified database backends" +msgstr "Taustatietokantoja on muutettu" + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "" +"Comparison between /usr/lib/cyrus/cyrus-db-types.txt and /usr/lib/cyrus/" +"cyrus-db-types.active shows that database backends for Cyrus IMAPd have been " +"changed." +msgstr "" +"Tiedostojen /usr/lib/cyrus/cyrus-db-types.txt ja /usr/lib/cyrus/cyrus-db-" +"types.active vertailu osoittaa, että Cyrus IMAPdin taustatietokantoja on " +"muutettu." + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "" +"This means that those databases for which the database backends changed " +"might need to be converted manually to the new format, using the cvt_cyrusdb" +"(8) utility." +msgstr "" +"Tämä tarkoittaa, että muuttuneet taustatietokannat täytyy ehkä muuntaa käsin " +"uuteen muotoon käyttäen työkalua cvt_cyrusdb(8)." + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "" +"Please refer to /usr/share/doc/cyrus-common-2.2/README.Debian.database for " +"more information. Do not start cyrmaster until you have converted the " +"databases to the new format." +msgstr "" +"Lisätietoja löytyy tiedostosta /usr/share/doc/cyrus-common-2.2/README.Debian." +"database. Ohjelmaa cyrmaster ei tule käynnistää ennen kuin tietokannat on " +"muuunnettu uuteen muotoon." + +#. Type: boolean +#. Description +#: ../cyrus-common-2.2.templates:3001 +msgid "Remove the mail and news spools?" +msgstr "Poistetaanko sähköposti- ja uutislaatikot?" + +#. Type: boolean +#. Description +#: ../cyrus-common-2.2.templates:3001 +msgid "" +"The Cyrus mail and news spools, as well as users' sieve scripts, can be " +"removed when the package is purged." +msgstr "" +"Cyrusin sähköposti-ja uutislaatikot, samoin kuin käyttäjien sieve-" +"komentosarjat, voidaan poistaa, kun paketti siivotaan." + +#. Type: boolean +#. Description +#: ../cyrus-common-2.2.templates:3001 +msgid "" +"This question only applies to the default spools and sieve script " +"directories in /var. If you modified their location in imapd.conf, the new " +"locations will not be removed; just the old ones in /var." +msgstr "" +"Tämä kysymys koskee vain oletuslaatikoita ja hakemistopuussa /var olevia " +"sieve-komentosarjahakemistoja. Jos näiden sijaintia on muokattu tiedostossa " +"imapd.conf, siirrettyjä ei poisteta vaan ainoastaan vanhat hakemistopuusta /" +"var." --- cyrus-imapd-2.2-2.2.13.orig/debian/po/ru.po +++ cyrus-imapd-2.2-2.2.13/debian/po/ru.po @@ -0,0 +1,98 @@ +# translation of ru.po to Russian +# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans# +# Developers do not need to manually edit POT or PO files. +# +# Yuri Kozlov , 2006. +# Yuri Kozlov , 2009. +msgid "" +msgstr "" +"Project-Id-Version: cyrus-imapd-2.2 2.2.13-15\n" +"Report-Msgid-Bugs-To: cyrus-imapd-2.2@packages.debian.org\n" +"POT-Creation-Date: 2009-04-14 17:58+0200\n" +"PO-Revision-Date: 2009-04-20 20:08+0400\n" +"Last-Translator: Yuri Kozlov \n" +"Language-Team: Russian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" +"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "Modified database backends" +msgstr "Đзменения в поддержке баз данных" + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "" +"Comparison between /usr/lib/cyrus/cyrus-db-types.txt and /usr/lib/cyrus/" +"cyrus-db-types.active shows that database backends for Cyrus IMAPd have been " +"changed." +msgstr "" +"Сравнение файлов /usr/lib/cyrus/cyrus-db-types.txt и /usr/lib/cyrus/cyrus-db-" +"types.active показало, что интерфейŃŃ‹ баз данных для Cyrus IMAPd были " +"изменены." + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "" +"This means that those databases for which the database backends changed " +"might need to be converted manually to the new format, using the cvt_cyrusdb" +"(8) utility." +msgstr "" +"Đ­Ń‚Đľ означает, что для баз данных Ń Đ¸Đ·ĐĽĐµĐ˝Ń‘Đ˝Đ˝ĐľĐą Ńерверной чаŃŃ‚ŃŚŃŽ может " +"потребоватьŃŃŹ преобразование в новый формат врŃчнŃŃŽ Ń ĐżĐľĐĽĐľŃ‰ŃŚŃŽ Ńтилиты " +"cvt_cyrusdb(8)." + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "" +"Please refer to /usr/share/doc/cyrus-common-2.2/README.Debian.database for " +"more information. Do not start cyrmaster until you have converted the " +"databases to the new format." +msgstr "" +"Подробней об этом напиŃано в файле /usr/share/doc/cyrus-common-2.2/README." +"Debian.database. Не Đ·Đ°ĐżŃŃкайте cyrmaster, пока не преобразŃете базы данных в " +"новый формат." + +#. Type: boolean +#. Description +#: ../cyrus-common-2.2.templates:3001 +msgid "Remove the mail and news spools?" +msgstr "Удалять бŃферы почты и новоŃтей?" + +#. Type: boolean +#. Description +#: ../cyrus-common-2.2.templates:3001 +msgid "" +"The Cyrus mail and news spools, as well as users' sieve scripts, can be " +"removed when the package is purged." +msgstr "" +"Đ‘Ńферы Cyrus для почты и новоŃтей, Đ° также пользовательŃкие фильтрŃющие " +"Ńценарии могŃŃ‚ ŃдалятьŃŃŹ при вычиŃтке пакета." + +#. Type: boolean +#. Description +#: ../cyrus-common-2.2.templates:3001 +msgid "" +"This question only applies to the default spools and sieve script " +"directories in /var. If you modified their location in imapd.conf, the new " +"locations will not be removed; just the old ones in /var." +msgstr "" +"Đ­Ń‚Đľ отноŃитŃŃŹ только Đş бŃферам по Ńмолчанию и каталогам Ń Ń„Đ¸Đ»ŃŚŃ‚Ń€Ńющими " +"Ńценариями в /var. Đ•Ńли вы изменили их раŃположение в файле imapd.conf, Ń‚Đľ в " +"новых меŃŃ‚Đ°Ń… они ŃдалятьŃŃŹ не бŃĐ´ŃŃ‚ -- только Ńтарые в /var." --- cyrus-imapd-2.2-2.2.13.orig/debian/po/pt_BR.po +++ cyrus-imapd-2.2-2.2.13/debian/po/pt_BR.po @@ -0,0 +1,93 @@ +# PO-DEBCONF TEMPLATE FOR cyrus22-imapd. +# Copyright (C) 2002 Henrique de Moraes Holschuh +# This file is distributed under the same license as the cyrus22-imapd package. +# $Id: pt_BR.po 779 2009-06-20 14:48:02Z sven $ +# +msgid "" +msgstr "" +"Project-Id-Version: cyrus-imapd-2.2 2.1.12-1\n" +"Report-Msgid-Bugs-To: cyrus-imapd-2.2@packages.debian.org\n" +"POT-Creation-Date: 2009-04-14 17:58+0200\n" +"PO-Revision-Date: 2003-03-03 10:45-0300\n" +"Last-Translator: Henrique de Moraes Holschuh \n" +"Language-Team: pt_BR \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-15\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "Modified database backends" +msgstr "" + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "" +"Comparison between /usr/lib/cyrus/cyrus-db-types.txt and /usr/lib/cyrus/" +"cyrus-db-types.active shows that database backends for Cyrus IMAPd have been " +"changed." +msgstr "" +"Comparaçăo entre /usr/lib/cyrus/cyrus-db-types.txt e /usr/lib/cyrus/cyrus-db-" +"types.active levam a crer que o sistema de base de dados do Cyrus IMAPd foi " +"mudado." + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "" +"This means that those databases for which the database backends changed " +"might need to be converted manually to the new format, using the cvt_cyrusdb" +"(8) utility." +msgstr "" +"Isso significa que as bases de dados cujo sistema mudou precisam ser " +"migradas para o novo sistema manualmente, através do utilitário cvt_cyrusdb" +"(8)." + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "" +"Please refer to /usr/share/doc/cyrus-common-2.2/README.Debian.database for " +"more information. Do not start cyrmaster until you have converted the " +"databases to the new format." +msgstr "" +"Maiores informaçőes estăo disponíveis em /usr/share/doc/cyrus-common-2.2/" +"README.Debian.database. Năo inicie cyrmaster até ter convertido o " +"formatodas bases de dados." + +#. Type: boolean +#. Description +#: ../cyrus-common-2.2.templates:3001 +msgid "Remove the mail and news spools?" +msgstr "Removo as spools do Cyrus e os scripts sieve?" + +#. Type: boolean +#. Description +#: ../cyrus-common-2.2.templates:3001 +#, fuzzy +#| msgid "" +#| "The Cyrus mail and news spools, as well as the user's sieve scripts can " +#| "be removed when the package is purged." +msgid "" +"The Cyrus mail and news spools, as well as users' sieve scripts, can be " +"removed when the package is purged." +msgstr "" +"É possível remover as áreas de armazenagem (spools) usadas pelo Cyrus, e " +"também as áreas usadas para armazenar os scripts sieve dos usuários quando o " +"pacote for eliminado (purge) do sistema." + +#. Type: boolean +#. Description +#: ../cyrus-common-2.2.templates:3001 +msgid "" +"This question only applies to the default spools and sieve script " +"directories in /var. If you modified their location in imapd.conf, the new " +"locations will not be removed; just the old ones in /var." +msgstr "" +"Apenas as áreas padrăo em /var serăo removidas. Caso vocę tenha configurado " +"outras áreas em imapd.conf, elas năo serăo removidas." + +#~ msgid "Database backends have changed!" +#~ msgstr "Mudança de sistema nas bases de dados!" --- cyrus-imapd-2.2-2.2.13.orig/debian/po/it.po +++ cyrus-imapd-2.2-2.2.13/debian/po/it.po @@ -0,0 +1,86 @@ +# Traduzione italiana di cyrus22-imapd +# Copyright (C) 2009 Free Software Foundation, Inc. +# Cristian Rigamonti , 2009. +msgid "" +msgstr "" +"Project-Id-Version: cyrus-imapd-2.2 2.2.13-15\n" +"Report-Msgid-Bugs-To: cyrus-imapd-2.2@packages.debian.org\n" +"POT-Creation-Date: 2009-04-14 17:58+0200\n" +"PO-Revision-Date: 2009-04-15 21:13+0200\n" +"Last-Translator: Cristian Rigamonti \n" +"Language-Team: Italian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "Modified database backends" +msgstr "Backend di database cambiati" + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "" +"Comparison between /usr/lib/cyrus/cyrus-db-types.txt and /usr/lib/cyrus/" +"cyrus-db-types.active shows that database backends for Cyrus IMAPd have been " +"changed." +msgstr "" +"Il confronto tra /usr/lib/cyrus/cyrus-db-types.txt e /usr/lib/cyrus/cyrus-db-" +"types.active mostra che i backend di database per Cyrus IMAPd sono cambiati." + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "" +"This means that those databases for which the database backends changed " +"might need to be converted manually to the new format, using the cvt_cyrusdb" +"(8) utility." +msgstr "" +"Ciň significa che i database per cui sono cambiati i backend devono essere " +"convertiti manualmente al nuovo formato, usando l'utilitŕ cvt_cyrusdb(8)." + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "" +"Please refer to /usr/share/doc/cyrus-common-2.2/README.Debian.database for " +"more information. Do not start cyrmaster until you have converted the " +"databases to the new format." +msgstr "" +"Si veda /usr/share/doc/cyrus-common-2.2/README.Debian.database per maggiori " +"informazioni. Non avviare cyrmaster prima di aver convertito i database al " +"nuovo formato." + +#. Type: boolean +#. Description +#: ../cyrus-common-2.2.templates:3001 +msgid "Remove the mail and news spools?" +msgstr "Rimuovere gli spool di Cyrus e gli script sieve degli utenti?" + +#. Type: boolean +#. Description +#: ../cyrus-common-2.2.templates:3001 +msgid "" +"The Cyrus mail and news spools, as well as users' sieve scripts, can be " +"removed when the package is purged." +msgstr "" +"Gli spool di posta e news di Cyrus, oltre agli script sieve degli utenti, " +"possono essere rimossi quando il pacchetto sarŕ rimosso." + +#. Type: boolean +#. Description +#: ../cyrus-common-2.2.templates:3001 +msgid "" +"This question only applies to the default spools and sieve script " +"directories in /var. If you modified their location in imapd.conf, the new " +"locations will not be removed; just the old ones in /var." +msgstr "" +"Questa domanda si riferisce solo agli spool predefiniti e alle directory " +"degli script sieve in /var. Se la posizione di questi file č stata " +"modificata in imapd.conf, essi non saranno rimossi; saranno rimossi solo i " +"file in /var." + +#~ msgid "Database backends have changed!" +#~ msgstr "I backend di database sono cambiati!" --- cyrus-imapd-2.2-2.2.13.orig/debian/po/nl.po +++ cyrus-imapd-2.2-2.2.13/debian/po/nl.po @@ -0,0 +1,105 @@ +# Translation of cyrus-imapd-2.2 2.2.13-7_templates.po to Debian l10n Dutch +# This file is distributed under the same license as the cyrus-imapd package. +# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans# +# Developers do not need to manually edit POT or PO files. +# +# Luk Claes , 2004 +# Kurt De Bree , 2006 +# This is an unofficial translation +# +msgid "" +msgstr "" +"Project-Id-Version: cyrus-imapd-2.2 2.2.13-7\n" +"Report-Msgid-Bugs-To: cyrus-imapd-2.2@packages.debian.org\n" +"POT-Creation-Date: 2009-04-14 17:58+0200\n" +"PO-Revision-Date: 2006-09-18 20:27+0100\n" +"Last-Translator: Kurt De Bree \n" +"Language-Team: Debian l10n Dutch \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "Modified database backends" +msgstr "" + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "" +"Comparison between /usr/lib/cyrus/cyrus-db-types.txt and /usr/lib/cyrus/" +"cyrus-db-types.active shows that database backends for Cyrus IMAPd have been " +"changed." +msgstr "" +"Een vergelijking tussen /usr/lib/cyrus/cyrus-db-types.txt en /usr/lib/cyrus/" +"cyrus-db-types.active leert ons dat de database-backends voor Cyrus IMAPd " +"gewijzigd zijn." + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "" +"This means that those databases for which the database backends changed " +"might need to be converted manually to the new format, using the cvt_cyrusdb" +"(8) utility." +msgstr "" +"Dit betekent dat deze databases, waarvan de database-backends zijn " +"gewijzigd, mogelijk handmatig moeten worden geconverteerd naar de nieuwe " +"indeling, gebruikmakend van het cvt_cyrusdb(8)-hulpmiddel." + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "" +"Please refer to /usr/share/doc/cyrus-common-2.2/README.Debian.database for " +"more information. Do not start cyrmaster until you have converted the " +"databases to the new format." +msgstr "" +"Raadpleeg /usr/share/doc/cyrus-common-2.2/README.Debian.database voor meer " +"informatie. Start cyrmaster niet vooraleer u de databases naar de nieuwe " +"indeling geconverteerd hebt." + +#. Type: boolean +#. Description +#: ../cyrus-common-2.2.templates:3001 +msgid "Remove the mail and news spools?" +msgstr "Mail- en nieuws-spools verwijderen?" + +#. Type: boolean +#. Description +#: ../cyrus-common-2.2.templates:3001 +#, fuzzy +#| msgid "" +#| "The Cyrus mail and news spools, as well as the user's sieve scripts can " +#| "be removed when the package is purged." +msgid "" +"The Cyrus mail and news spools, as well as users' sieve scripts, can be " +"removed when the package is purged." +msgstr "" +"De Cyrus mail- en nieuws-spools alsook de gebruikers-sieve-scripts kunnen " +"worden verwijderd wanneer het pakket wordt gewist (purged)." + +#. Type: boolean +#. Description +#: ../cyrus-common-2.2.templates:3001 +msgid "" +"This question only applies to the default spools and sieve script " +"directories in /var. If you modified their location in imapd.conf, the new " +"locations will not be removed; just the old ones in /var." +msgstr "" +"Deze vraag heeft enkel betrekking op de standaard spools en de sieve-" +"scriptmappen in /var. Als u deze locatie heeft gewijzigd in imapd.conf, dan " +"zal de nieuwe locatie niet worden verwijderd; enkel de oude in /var." + +#~ msgid "Database backends have changed!" +#~ msgstr "Database-backends zijn gewijzigd!" --- cyrus-imapd-2.2-2.2.13.orig/debian/po/ja.po +++ cyrus-imapd-2.2-2.2.13/debian/po/ja.po @@ -0,0 +1,93 @@ +# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans +# +# Developers do not need to manually edit POT or PO files. +# +# +msgid "" +msgstr "" +"Project-Id-Version: cyrus-imapd-2.2 2.2.13-15\n" +"Report-Msgid-Bugs-To: cyrus-imapd-2.2@packages.debian.org\n" +"POT-Creation-Date: 2009-04-14 17:58+0200\n" +"PO-Revision-Date: 2009-04-15 05:25+0900\n" +"Last-Translator: Hideki Yamane (Debian-JP) \n" +"Language-Team: Japanese \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "Modified database backends" +msgstr "ăăクエăłă‰ă®ă‡ăĽă‚żă™ăĽă‚ąă®ĺ¤‰ć›´" + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "" +"Comparison between /usr/lib/cyrus/cyrus-db-types.txt and /usr/lib/cyrus/" +"cyrus-db-types.active shows that database backends for Cyrus IMAPd have been " +"changed." +msgstr "" +"/usr/lib/cyrus/cyrus-db-types.txt 㨠/usr/lib/cyrus/cyrus-db-types.active ă‚’" +"比čĽă—ăźă¨ă“ă‚Ť Cyrus IMAPd ă®ă‡ăĽă‚żă™ăĽă‚ąăŚĺ¤‰ć›´ă•ă‚Śă¦ă„ăľă™ă€‚" + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "" +"This means that those databases for which the database backends changed " +"might need to be converted manually to the new format, using the cvt_cyrusdb" +"(8) utility." +msgstr "" +"ă“れらă®ăăクエăłă‰ăŚĺ¤‰ć›´ă•ă‚Śăźă‡ăĽă‚żă™ăĽă‚ąăŻ cvt_cyrusdb(8) ă¦ăĽă†ă‚ŁăŞă†ă‚Ł" +"を使ăŁă¦ć‰‹ĺ‹•ă§ć–°ă—ă„形式ă«ĺ¤‰ćŹ›ă™ă‚‹ĺż…č¦ăŚă‚ă‚Šăľă™ă€‚" + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "" +"Please refer to /usr/share/doc/cyrus-common-2.2/README.Debian.database for " +"more information. Do not start cyrmaster until you have converted the " +"databases to the new format." +msgstr "" +"ă‚ă‚Šč©łç´°ă«ă¤ă„ă¦ăŻ /usr/share/doc/cyrus-common-2.2/README.Debian.database ă‚’" +"参照ă—ă¦ăŹă ă•ă„。ă‡ăĽă‚żă™ăĽă‚ąă‚’ć–°ă—ă„形式ă«ĺ¤‰ćŹ›ă™ă‚‹ăľă§ cyrmaster ă‚’čµ·ĺ‹•ă—ăŞ" +"ă„ă§ăŹă ă•ă„。" + +#. Type: boolean +#. Description +#: ../cyrus-common-2.2.templates:3001 +msgid "Remove the mail and news spools?" +msgstr "Cyrus ă‚ąă—ăĽă«ă¨ă€ă¦ăĽă‚¶ă® sieve ă‚ąă‚ŻăŞă—ăを削除ă—ăľă™ă‹?" + +#. Type: boolean +#. Description +#: ../cyrus-common-2.2.templates:3001 +msgid "" +"The Cyrus mail and news spools, as well as users' sieve scripts, can be " +"removed when the package is purged." +msgstr "" +"Cyrus ăˇăĽă«ă»news ă‚ąă—ăĽă«ăŻ sieve ă‚ąă‚ŻăŞă—ăă¨ĺŚć§ă«ă€ă‘ăケăĽă‚¸ăŚĺ®Śĺ…¨ă«ĺ‰Š" +"除ă•ă‚Śă‚‹éš›ă«ă¦ăĽă‚¶ăŚĺ‰Šé™¤ă§ăŤăľă™ă€‚" + +#. Type: boolean +#. Description +#: ../cyrus-common-2.2.templates:3001 +msgid "" +"This question only applies to the default spools and sieve script " +"directories in /var. If you modified their location in imapd.conf, the new " +"locations will not be removed; just the old ones in /var." +msgstr "" +"ă“ă®čłŞĺ•ŹăŻ /var ă«ă‚る標準ă®ă‚ąă—ăĽă«ă¨ sieve ă‚ąă‚ŻăŞă—ăă‡ă‚Łă¬ă‚ŻăăŞă«ă®ăżé©ç”¨" +"ă•ă‚Śăľă™ă€‚imapd.conf ă§ă‡ă‚Łă¬ă‚ŻăăŞă‚’変更ă—ă¦ă„ă‚‹ĺ ´ĺă€ĺ¤‰ć›´ĺľŚă®ă‡ă‚Łă¬ă‚ŻăăŞă«" +"ă‚ă‚‹ă‚‚ă®ăŻĺ‰Šé™¤ă•ă‚Śăľă›ă‚“。/var ă«ă‚る古ă„ă‚‚ă®ă ă‘ă§ă™ă€‚" --- cyrus-imapd-2.2-2.2.13.orig/debian/po/templates.pot +++ cyrus-imapd-2.2-2.2.13/debian/po/templates.pot @@ -0,0 +1,73 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: cyrus-imapd-2.2@packages.debian.org\n" +"POT-Creation-Date: 2009-04-14 17:58+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "Modified database backends" +msgstr "" + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "" +"Comparison between /usr/lib/cyrus/cyrus-db-types.txt and /usr/lib/cyrus/" +"cyrus-db-types.active shows that database backends for Cyrus IMAPd have been " +"changed." +msgstr "" + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "" +"This means that those databases for which the database backends changed " +"might need to be converted manually to the new format, using the cvt_cyrusdb" +"(8) utility." +msgstr "" + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "" +"Please refer to /usr/share/doc/cyrus-common-2.2/README.Debian.database for " +"more information. Do not start cyrmaster until you have converted the " +"databases to the new format." +msgstr "" + +#. Type: boolean +#. Description +#: ../cyrus-common-2.2.templates:3001 +msgid "Remove the mail and news spools?" +msgstr "" + +#. Type: boolean +#. Description +#: ../cyrus-common-2.2.templates:3001 +msgid "" +"The Cyrus mail and news spools, as well as users' sieve scripts, can be " +"removed when the package is purged." +msgstr "" + +#. Type: boolean +#. Description +#: ../cyrus-common-2.2.templates:3001 +msgid "" +"This question only applies to the default spools and sieve script " +"directories in /var. If you modified their location in imapd.conf, the new " +"locations will not be removed; just the old ones in /var." +msgstr "" --- cyrus-imapd-2.2-2.2.13.orig/debian/po/gl.po +++ cyrus-imapd-2.2-2.2.13/debian/po/gl.po @@ -0,0 +1,91 @@ +# Galician translation of cyrus21-imapd's debconf templates +# This file is distributed under the same license as the cyrus21-imapd package. +# +# Jacobo Tarrio , 2007, 2008. +# marce villarino , 2009. +msgid "" +msgstr "" +"Project-Id-Version: cyrus21-imapd\n" +"Report-Msgid-Bugs-To: cyrus-imapd-2.2@packages.debian.org\n" +"POT-Creation-Date: 2009-04-14 17:58+0200\n" +"PO-Revision-Date: 2009-04-15 22:42+0200\n" +"Last-Translator: marce villarino \n" +"Language-Team: Galician \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 0.2\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "Modified database backends" +msgstr "Modificáronse as infraestruturas de base de datos" + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "" +"Comparison between /usr/lib/cyrus/cyrus-db-types.txt and /usr/lib/cyrus/" +"cyrus-db-types.active shows that database backends for Cyrus IMAPd have been " +"changed." +msgstr "" +"A comparaciĂłn entre /usr/lib/cyrus/cyrus-db-types.txt e /usr/lib/cyrus/cyrus-" +"db-types.active mostra que os motores de bases de datos de Cyrus IMAPd " +"cambiaron." + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "" +"This means that those databases for which the database backends changed " +"might need to be converted manually to the new format, using the cvt_cyrusdb" +"(8) utility." +msgstr "" +"Isto quere dicir que Ă© posible que as bases de datos para as que os motores " +"cambiaron se teñan que converter manualmente ao novo formato, empregando a " +"utilidade cvt_cyrusdb(8)." + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "" +"Please refer to /usr/share/doc/cyrus-common-2.2/README.Debian.database for " +"more information. Do not start cyrmaster until you have converted the " +"databases to the new format." +msgstr "" +"Consulte /usr/share/doc/cyrus-common-2.2/README.Debian.database para máis " +"informaciĂłn. Non inicie cyrmaster ata que teña convertido as bases de datos " +"ao novo formato." + +#. Type: boolean +#. Description +#: ../cyrus-common-2.2.templates:3001 +msgid "Remove the mail and news spools?" +msgstr "Desexa eliminar os directorios de correo e novas?" + +#. Type: boolean +#. Description +#: ../cyrus-common-2.2.templates:3001 +msgid "" +"The Cyrus mail and news spools, as well as users' sieve scripts, can be " +"removed when the package is purged." +msgstr "" +"PĂłdense eliminar os directorios de correo e novas de Cyrus, asĂ­ como os " +"scripts de sieve dos usuarios, ao purgar o paquete." + +#. Type: boolean +#. Description +#: ../cyrus-common-2.2.templates:3001 +msgid "" +"This question only applies to the default spools and sieve script " +"directories in /var. If you modified their location in imapd.conf, the new " +"locations will not be removed; just the old ones in /var." +msgstr "" +"Esta pregunta sĂł se aplica aos directorios de traballo e de scripts de sieve " +"por defecto de /var. Se modificou a sĂşa localizaciĂłn en imapd.conf, non se " +"han eliminar as novas localizaciĂłns; sĂł as antigas de /var." + +#~ msgid "Database backends have changed!" +#~ msgstr "Os motores de bases de datos cambiaron" --- cyrus-imapd-2.2-2.2.13.orig/debian/po/de.po +++ cyrus-imapd-2.2-2.2.13/debian/po/de.po @@ -0,0 +1,87 @@ +# translation of cyrus-imapd_2.2 2.2.13-15_de.po to German +# +# Erik Schanze , 2004-2009. +msgid "" +msgstr "" +"Project-Id-Version: cyrus-imapd_2.2 2.2.13-15_de\n" +"Report-Msgid-Bugs-To: cyrus-imapd-2.2@packages.debian.org\n" +"POT-Creation-Date: 2009-04-14 17:58+0200\n" +"PO-Revision-Date: 2009-04-27 22:30+0200\n" +"Last-Translator: Erik Schanze \n" +"Language-Team: German \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "Modified database backends" +msgstr "Datenbankanbindungen geändert" + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "" +"Comparison between /usr/lib/cyrus/cyrus-db-types.txt and /usr/lib/cyrus/" +"cyrus-db-types.active shows that database backends for Cyrus IMAPd have been " +"changed." +msgstr "" +"Ein Vergleich der Dateien /usr/lib/cyrus/cyrus-db-types.txt und /usr/lib/" +"cyrus/cyrus-db-types.active zeigt, dass die Datenbankanbindungen des Cyrus " +"IMAPd geändert wurden." + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "" +"This means that those databases for which the database backends changed " +"might need to be converted manually to the new format, using the cvt_cyrusdb" +"(8) utility." +msgstr "" +"Die Datenbanken, fĂĽr die sich die Anbindung geändert hat, mĂĽssen mit dem " +"Hilfsprogramm cvt_cyrusdb(8) gegebenenfalls manuell in das neue Format " +"ĂĽberfĂĽhrt werden." + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "" +"Please refer to /usr/share/doc/cyrus-common-2.2/README.Debian.database for " +"more information. Do not start cyrmaster until you have converted the " +"databases to the new format." +msgstr "" +"Mehr Informationen finden Sie in der Datei /usr/share/doc/cyrus-common-2.2/" +"README.Debian.database. Starten Sie keinesfalls »cyrmaster«, bevor Sie die " +"Datenbank in das neue Format ĂĽberfĂĽhrt haben." + +#. Type: boolean +#. Description +#: ../cyrus-common-2.2.templates:3001 +msgid "Remove the mail and news spools?" +msgstr "E-Mail- und News-Zwischenspeicher entfernen?" + +#. Type: boolean +#. Description +#: ../cyrus-common-2.2.templates:3001 +msgid "" +"The Cyrus mail and news spools, as well as users' sieve scripts, can be " +"removed when the package is purged." +msgstr "" +"Die Zwischenspeicher von Cyrus fĂĽr E-Mail und News, sowie die Filterskripte " +"(Sieve-Skripte) der Benutzer, können gelöscht werden, wenn das Paket restlos " +"entfernt wird (purge)." + +#. Type: boolean +#. Description +#: ../cyrus-common-2.2.templates:3001 +msgid "" +"This question only applies to the default spools and sieve script " +"directories in /var. If you modified their location in imapd.conf, the new " +"locations will not be removed; just the old ones in /var." +msgstr "" +"Diese Frage betrifft nur die Standard-Zwischenspeicher und -" +"Filterskriptverzeichnisse in /var. Wenn Sie deren Ort in der Datei imapd." +"conf geändert haben, werden sie an den neuen Stellen nicht gelöscht, nur an " +"den alten im Verzeichnis /var." --- cyrus-imapd-2.2-2.2.13.orig/debian/po/POTFILES.in +++ cyrus-imapd-2.2-2.2.13/debian/po/POTFILES.in @@ -0,0 +1 @@ +[type: gettext/rfc822deb] cyrus-common-2.2.templates --- cyrus-imapd-2.2-2.2.13.orig/debian/po/sv.po +++ cyrus-imapd-2.2-2.2.13/debian/po/sv.po @@ -0,0 +1,99 @@ +# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans +# +# Developers do not need to manually edit POT or PO files. +# +msgid "" +msgstr "" +"Project-Id-Version: cyrus22-imapd\n" +"Report-Msgid-Bugs-To: cyrus-imapd-2.2@packages.debian.org\n" +"POT-Creation-Date: 2009-04-14 17:58+0200\n" +"PO-Revision-Date: 2009-04-14 20:18+0100\n" +"Last-Translator: Martin Bagge \n" +"Language-Team: Swedish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Swedish\n" +"X-Poedit-Country: Sweden\n" + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "Modified database backends" +msgstr "Förändrade databasbakdelar" + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "" +"Comparison between /usr/lib/cyrus/cyrus-db-types.txt and /usr/lib/cyrus/" +"cyrus-db-types.active shows that database backends for Cyrus IMAPd have been " +"changed." +msgstr "" +"En jämförelse mellan /usr/lib/cyrus/cyrus-db-types.txt och /usr/lib/cyrus/" +"cyrus-db-types.active visar att databasbakänderna för Cyrus IMAPd har " +"ändrats." + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "" +"This means that those databases for which the database backends changed " +"might need to be converted manually to the new format, using the cvt_cyrusdb" +"(8) utility." +msgstr "" +"Detta innebär att de databaser som databasbakdelarna har ändrats för kanske " +"manuellt behöver konverteras till det nya formatet med verktyget cvt_cyrusdb" +"(8)." + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "" +"Please refer to /usr/share/doc/cyrus-common-2.2/README.Debian.database for " +"more information. Do not start cyrmaster until you have converted the " +"databases to the new format." +msgstr "" +"Läs /usr/share/doc/cyrus-common-2.2/README.Debian.database för mer " +"information. Starta inte cyrmaster innan du har konverterat databaserna till " +"det nya formatet." + +#. Type: boolean +#. Description +#: ../cyrus-common-2.2.templates:3001 +msgid "Remove the mail and news spools?" +msgstr "Ta bort köfiler för e-post och nyhetsgrupper?" + +#. Type: boolean +#. Description +#: ../cyrus-common-2.2.templates:3001 +msgid "" +"The Cyrus mail and news spools, as well as users' sieve scripts, can be " +"removed when the package is purged." +msgstr "" +"Cyrus köfiler för e-post och nyhetsgrupper, sĂĄväl som användarnas sieve-" +"skript kan tas bort när paketet rensas ut." + +#. Type: boolean +#. Description +#: ../cyrus-common-2.2.templates:3001 +msgid "" +"This question only applies to the default spools and sieve script " +"directories in /var. If you modified their location in imapd.conf, the new " +"locations will not be removed; just the old ones in /var." +msgstr "" +"Denna frĂĄga gäller endast för standardköfilerna och sieve-skriptkatalogerna " +"under /var. Om du har ändrat dess plats i imapd.conf kommer inte de nya " +"platserna att tas bort, endast de gamla under /var." + +#~ msgid "Database backends have changed!" +#~ msgstr "Databasbakänderna har ändrats!" --- cyrus-imapd-2.2-2.2.13.orig/debian/po/cs.po +++ cyrus-imapd-2.2-2.2.13/debian/po/cs.po @@ -0,0 +1,84 @@ +# Czech translation of cyrus-imapd-2.2 templates +# +msgid "" +msgstr "" +"Project-Id-Version: cyrus-imapd-2.2\n" +"Report-Msgid-Bugs-To: cyrus-imapd-2.2@packages.debian.org\n" +"POT-Creation-Date: 2009-04-14 17:58+0200\n" +"PO-Revision-Date: 2009-04-14 20:28+0200\n" +"Last-Translator: Martin Sin \n" +"Language-Team: Czech \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "Modified database backends" +msgstr "UpravenĂ© databázovĂ© backendy" + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "" +"Comparison between /usr/lib/cyrus/cyrus-db-types.txt and /usr/lib/cyrus/" +"cyrus-db-types.active shows that database backends for Cyrus IMAPd have been " +"changed." +msgstr "" +"SrovnánĂ­ mezi /usr/lib/cyrus/cyrus-db-types.txt a /usr/lib/cyrus/cyrus-db-" +"types.active ukázalo, Ĺľe se zmÄ›nil backend databáze pro Cyrus IMAPd." + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "" +"This means that those databases for which the database backends changed " +"might need to be converted manually to the new format, using the cvt_cyrusdb" +"(8) utility." +msgstr "" +"To znamená, Ĺľe ty databáze, u kterĂ˝ch se databázovĂ© backendy zmÄ›nily, budou " +"moĹľná vyĹľadovat ruÄŤnĂ­ pĹ™evod do novĂ©ho formátu utilitou cvt_cyrusdb(8)." + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "" +"Please refer to /usr/share/doc/cyrus-common-2.2/README.Debian.database for " +"more information. Do not start cyrmaster until you have converted the " +"databases to the new format." +msgstr "" +"Pro vĂ­ce informacĂ­ se prosĂ­m podĂ­vejte do /usr/share/doc/cyrus-common-2.2/" +"README.Debian.database. NespouštÄ›jte cyrmaster, dokud nepĹ™evedete databáze " +"do novĂ©ho formátu." + +#. Type: boolean +#. Description +#: ../cyrus-common-2.2.templates:3001 +msgid "Remove the mail and news spools?" +msgstr "Odstranit spool adresáře pošty a news?" + +#. Type: boolean +#. Description +#: ../cyrus-common-2.2.templates:3001 +msgid "" +"The Cyrus mail and news spools, as well as users' sieve scripts, can be " +"removed when the package is purged." +msgstr "" +"PĹ™i odstranÄ›nĂ­ balĂ­ku mohou bĂ˝t smazány i spool adresáře s poštou a news " +"příspÄ›vky a takĂ© uĹľivatelskĂ© filtrovacĂ­ skripty v jazyce Sieve." + +#. Type: boolean +#. Description +#: ../cyrus-common-2.2.templates:3001 +msgid "" +"This question only applies to the default spools and sieve script " +"directories in /var. If you modified their location in imapd.conf, the new " +"locations will not be removed; just the old ones in /var." +msgstr "" +"Tato otázka se tĂ˝ká pouze vĂ˝chozĂ­ch spool adresářů a Sieve skriptĹŻ ve /var. " +"PĹ™i zmÄ›nÄ› jejich umĂ­stÄ›nĂ­ v imapd.conf nebude odstranÄ›no jejich novĂ© " +"umĂ­stÄ›nĂ­, ale pouze jejich starĂ© ve /var." + +#~ msgid "Database backends have changed!" +#~ msgstr "Backendy databáze se zmÄ›nily!" --- cyrus-imapd-2.2-2.2.13.orig/debian/po/fr.po +++ cyrus-imapd-2.2-2.2.13/debian/po/fr.po @@ -0,0 +1,93 @@ +# French translation for cyrus22-imapd. +# Copyright (C) 2009 Debian French l10n team +# This file is distributed under the same license as the cyrus22-imapd package. +# +# Translators: +# Philippe Batailler , 2009 +# +msgid "" +msgstr "" +"Project-Id-Version: cyrus-imapd-2.2 2.2.13\n" +"Report-Msgid-Bugs-To: cyrus-imapd-2.2@packages.debian.org\n" +"POT-Creation-Date: 2009-04-14 17:58+0200\n" +"PO-Revision-Date: 2009-04-16 20:31+0200\n" +"Last-Translator: Philippe Batailler \n" +"Language-Team: French \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "Modified database backends" +msgstr "Modifications de l'interface avec les bases de donnĂ©es" + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "" +"Comparison between /usr/lib/cyrus/cyrus-db-types.txt and /usr/lib/cyrus/" +"cyrus-db-types.active shows that database backends for Cyrus IMAPd have been " +"changed." +msgstr "" +"Une comparaison entre /usr/lib/cyrus/cyrus-db-types.txt et /usr/lib/cyrus/" +"cyrus-db-types.active montre que l'interface entre Cyrus IMAPd et les bases " +"de donnĂ©es a changĂ©." + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "" +"This means that those databases for which the database backends changed " +"might need to be converted manually to the new format, using the cvt_cyrusdb" +"(8) utility." +msgstr "" +"Cela signifie que les bases de donnĂ©es pour lesquelles l'interface a changĂ© " +"peuvent nĂ©cessiter une conversion manuelle au nouveau format avec " +"l'utilitaire cvt_cyrusdb(8)." + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "" +"Please refer to /usr/share/doc/cyrus-common-2.2/README.Debian.database for " +"more information. Do not start cyrmaster until you have converted the " +"databases to the new format." +msgstr "" +"Veuillez-vous reporter Ă  /usr/share/doc/cyrus-common-2.2/README.Debian." +"database pour des informations supplĂ©mentaires. Ne lancez pas cyrmaster " +"avant d'avoir converti les bases de donnĂ©es au nouveau format." + +#. Type: boolean +#. Description +#: ../cyrus-common-2.2.templates:3001 +msgid "Remove the mail and news spools?" +msgstr "" +"Faut-il supprimer les rĂ©pertoires contenant les courriers et les nouvelles ?" + +#. Type: boolean +#. Description +#: ../cyrus-common-2.2.templates:3001 +msgid "" +"The Cyrus mail and news spools, as well as users' sieve scripts, can be " +"removed when the package is purged." +msgstr "" +"Les rĂ©pertoires stockant le courrier et les nouvelles, ainsi que les filtres " +"sieve des utilisateurs, peuvent ĂŞtre supprimĂ©s en mĂŞme temps que le paquet." + +#. Type: boolean +#. Description +#: ../cyrus-common-2.2.templates:3001 +msgid "" +"This question only applies to the default spools and sieve script " +"directories in /var. If you modified their location in imapd.conf, the new " +"locations will not be removed; just the old ones in /var." +msgstr "" +"Cette question concerne uniquement les rĂ©pertoires par dĂ©faut situĂ©s dans /" +"var et contenant le « spool » et les filtres sieve. Si vous aviez modifiĂ© " +"leurs emplacements grâce au fichier imapd.conf, ils ne seront pas " +"supprimĂ©s ; seuls les anciens, dans /var, le seront." + +#~ msgid "Database backends have changed!" +#~ msgstr "Modifications dans l'interfaçage avec les bases de donnĂ©es" --- cyrus-imapd-2.2-2.2.13.orig/debian/po/pt.po +++ cyrus-imapd-2.2-2.2.13/debian/po/pt.po @@ -0,0 +1,85 @@ +# Portuguese translation of cyrus-imapd-2.2 debconf messages. +# Copyright (C) 2009 Carlos Lisboa +# This file is distributed under the same license as the cyrus-imapd-2.2 package. +# Carlos Lisboa , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: cyrus-imapd-2.2\n" +"Report-Msgid-Bugs-To: cyrus-imapd-2.2@packages.debian.org\n" +"POT-Creation-Date: 2009-04-14 17:58+0200\n" +"PO-Revision-Date: 2009-04-27 21:19+0100\n" +"Last-Translator: Carlos Lisboa \n" +"Language-Team: Portuguese \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "Modified database backends" +msgstr "Base de dados do 'backend' modificada" + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "" +"Comparison between /usr/lib/cyrus/cyrus-db-types.txt and /usr/lib/cyrus/" +"cyrus-db-types.active shows that database backends for Cyrus IMAPd have been " +"changed." +msgstr "" +"Comparando /usr/lib/cyrus/cyrus-db-types.txt e /usr/lib/cyrus/cyrus-db-types." +"active mostra que o 'backend' da base de dados Cyrus IMAPd foi alterado." + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "" +"This means that those databases for which the database backends changed " +"might need to be converted manually to the new format, using the cvt_cyrusdb" +"(8) utility." +msgstr "" +"Isto significa que as bases de dados cujos 'backends' foram alterados " +"poderĂŁo necessitar de conversĂŁo manual para o novo formato, usando o " +"utilitário cvt_cyrusdb(8)." + +#. Type: error +#. Description +#: ../cyrus-common-2.2.templates:2001 +msgid "" +"Please refer to /usr/share/doc/cyrus-common-2.2/README.Debian.database for " +"more information. Do not start cyrmaster until you have converted the " +"databases to the new format." +msgstr "" +"Por favor veja o /usr/share/doc/cyrus-common-2.2/README.Debian.database para " +"mais informações. NĂŁo inicie o cyrmaster atĂ© que tenha convertido as bases " +"de dados para o novo formato." + +#. Type: boolean +#. Description +#: ../cyrus-common-2.2.templates:3001 +msgid "Remove the mail and news spools?" +msgstr "Remover os spools de e-mail e notĂ­cias (news)?" + +#. Type: boolean +#. Description +#: ../cyrus-common-2.2.templates:3001 +msgid "" +"The Cyrus mail and news spools, as well as users' sieve scripts, can be " +"removed when the package is purged." +msgstr "" +"Os spools de e-mail e notĂ­cias Cyrus, assim como os 'scripts sieve' do " +"utilizador, podem ser removidos quando o pacote for purgado." + +#. Type: boolean +#. Description +#: ../cyrus-common-2.2.templates:3001 +msgid "" +"This question only applies to the default spools and sieve script " +"directories in /var. If you modified their location in imapd.conf, the new " +"locations will not be removed; just the old ones in /var." +msgstr "" +"Esta questĂŁo apenas se aplica aos directĂłrios de spools e script sieve por " +"omissĂŁo em /var. Se tiver modificado o seu local em imapd.conf, os novos " +"locais nĂŁo serĂŁo removidos, apenas os antigos em /var." --- cyrus-imapd-2.2-2.2.13.orig/debian/patches/0009-upstream-remove-redundant-wildcard-check.dpatch +++ cyrus-imapd-2.2-2.2.13/debian/patches/0009-upstream-remove-redundant-wildcard-check.dpatch @@ -0,0 +1,56 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 0009-upstream-remove-redundant-wildcard-check by Sven Mueller +## +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: remove redundant check for wildcards in mailbox names +## DP: (Wes Craig ) + +@DPATCH@ +diff -urNad cyrus-imapd-2.2.13/imap/imapd.c cyrus-imapd-2.2.13/imap/imapd.c +--- cyrus-imapd-2.2.13/imap/imapd.c 2006-05-12 12:18:02.000000000 +0200 ++++ cyrus-imapd-2.2.13/imap/imapd.c 2006-05-12 12:18:43.442725508 +0200 +@@ -38,7 +38,7 @@ + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +-/* $Id: imapd.c,v 1.498 2006/01/13 22:06:28 murch Exp $ */ ++/* $Id: imapd.c,v 1.500 2006/05/10 15:41:44 murch Exp $ */ + + #include + +@@ -3952,11 +3952,6 @@ + } + } + +- /* verify that the mailbox doesn't have a wildcard in it */ +- for (p = oldmailboxname; !r && *p; p++) { +- if (*p == '*' || *p == '%') r = IMAP_MAILBOX_BADNAME; +- } +- + /* attempt to rename the base mailbox */ + if (!r) { + r = mboxlist_renamemailbox(oldmailboxname, newmailboxname, partition, +diff -urNad cyrus-imapd-2.2.13/imap/mboxlist.c cyrus-imapd-2.2.13/imap/mboxlist.c +--- cyrus-imapd-2.2.13/imap/mboxlist.c 2006-05-06 10:34:48.000000000 +0200 ++++ cyrus-imapd-2.2.13/imap/mboxlist.c 2006-05-12 12:18:12.192660857 +0200 +@@ -40,7 +40,7 @@ + * + */ + /* +- * $Id: mboxlist.c,v 1.241 2005/11/22 18:20:51 murch Exp $ ++ * $Id: mboxlist.c,v 1.242 2006/05/10 15:41:52 murch Exp $ + */ + + #include +@@ -476,10 +476,6 @@ + free(acl); + return IMAP_PERMISSION_DENIED; + } +- /* disallow wildcards in userids with inboxes. */ +- if (strchr(mbox, '*') || strchr(mbox, '%') || strchr(mbox, '?')) { +- return IMAP_MAILBOX_BADNAME; +- } + + /* + * Users by default have all access to their personal mailbox(es), --- cyrus-imapd-2.2-2.2.13.orig/debian/patches/02-add_mkinstalldirs.dpatch +++ cyrus-imapd-2.2-2.2.13/debian/patches/02-add_mkinstalldirs.dpatch @@ -0,0 +1,160 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 02-add_mkinstalldirs.dpatch by Sven Mueller +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: add mkinstalldirs + +@DPATCH@ +--- /dev/null ++++ b/mkinstalldirs +@@ -0,0 +1,150 @@ ++#! /bin/sh ++# mkinstalldirs --- make directory hierarchy ++ ++scriptversion=2005-02-02.21 ++ ++# Original author: Noah Friedman ++# Created: 1993-05-16 ++# Public domain. ++# ++# This file is maintained in Automake, please report ++# bugs to or send patches to ++# . ++ ++errstatus=0 ++dirmode="" ++ ++usage="\ ++Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ... ++ ++Create each directory DIR (with mode MODE, if specified), including all ++leading file name components. ++ ++Report bugs to ." ++ ++# process command line arguments ++while test $# -gt 0 ; do ++ case $1 in ++ -h | --help | --h*) # -h for help ++ echo "$usage" ++ exit $? ++ ;; ++ -m) # -m PERM arg ++ shift ++ test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } ++ dirmode=$1 ++ shift ++ ;; ++ --version) ++ echo "$0 $scriptversion" ++ exit $? ++ ;; ++ --) # stop option processing ++ shift ++ break ++ ;; ++ -*) # unknown option ++ echo "$usage" 1>&2 ++ exit 1 ++ ;; ++ *) # first non-opt arg ++ break ++ ;; ++ esac ++done ++ ++for file ++do ++ if test -d "$file"; then ++ shift ++ else ++ break ++ fi ++done ++ ++case $# in ++ 0) exit 0 ;; ++esac ++ ++# Solaris 8's mkdir -p isn't thread-safe. If you mkdir -p a/b and ++# mkdir -p a/c at the same time, both will detect that a is missing, ++# one will create a, then the other will try to create a and die with ++# a "File exists" error. This is a problem when calling mkinstalldirs ++# from a parallel make. We use --version in the probe to restrict ++# ourselves to GNU mkdir, which is thread-safe. ++case $dirmode in ++ '') ++ if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then ++ echo "mkdir -p -- $*" ++ exec mkdir -p -- "$@" ++ else ++ # On NextStep and OpenStep, the `mkdir' command does not ++ # recognize any option. It will interpret all options as ++ # directories to create, and then abort because `.' already ++ # exists. ++ test -d ./-p && rmdir ./-p ++ test -d ./--version && rmdir ./--version ++ fi ++ ;; ++ *) ++ if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 && ++ test ! -d ./--version; then ++ echo "mkdir -m $dirmode -p -- $*" ++ exec mkdir -m "$dirmode" -p -- "$@" ++ else ++ # Clean up after NextStep and OpenStep mkdir. ++ for d in ./-m ./-p ./--version "./$dirmode"; ++ do ++ test -d $d && rmdir $d ++ done ++ fi ++ ;; ++esac ++ ++for file ++do ++ set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` ++ shift ++ ++ pathcomp= ++ for d ++ do ++ pathcomp="$pathcomp$d" ++ case $pathcomp in ++ -*) pathcomp=./$pathcomp ;; ++ esac ++ ++ if test ! -d "$pathcomp"; then ++ echo "mkdir $pathcomp" ++ ++ mkdir "$pathcomp" || lasterr=$? ++ ++ if test ! -d "$pathcomp"; then ++ errstatus=$lasterr ++ else ++ if test ! -z "$dirmode"; then ++ echo "chmod $dirmode $pathcomp" ++ lasterr="" ++ chmod "$dirmode" "$pathcomp" || lasterr=$? ++ ++ if test ! -z "$lasterr"; then ++ errstatus=$lasterr ++ fi ++ fi ++ fi ++ fi ++ ++ pathcomp="$pathcomp/" ++ done ++done ++ ++exit $errstatus ++ ++# Local Variables: ++# mode: shell-script ++# sh-indentation: 2 ++# eval: (add-hook 'write-file-hooks 'time-stamp) ++# time-stamp-start: "scriptversion=" ++# time-stamp-format: "%:y-%02m-%02d.%02H" ++# time-stamp-end: "$" ++# End: --- cyrus-imapd-2.2-2.2.13.orig/debian/patches/61-64bit-quota.dpatch +++ cyrus-imapd-2.2-2.2.13/debian/patches/61-64bit-quota.dpatch @@ -0,0 +1,668 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 60-64bit-quota.dpatch by Ondrej Sury +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Add support for 64-bit quotas + +@DPATCH@ +diff -urNad cyrus-imapd-2.2.13/configure.in cyrus-imapd-2.2.13/configure.in +--- cyrus-imapd-2.2.13/configure.in 2007-02-24 18:46:32.000000000 +0100 ++++ cyrus-imapd-2.2.13/configure.in 2007-02-24 18:46:35.598277322 +0100 +@@ -107,6 +107,15 @@ + dnl fi + AC_C_INLINE + ++dnl Check if `long long int' is available ++AC_CHECK_SIZEOF(long long int) ++AC_CHECK_SIZEOF(unsigned long long int) ++if test "$ac_cv_sizeof_long_long_int" -eq 8 -a \ ++ "$ac_cv_sizeof_unsigned_long_long_int" -eq 8; then ++ AC_DEFINE(HAVE_LONG_LONG_INT,[],[Does the compiler support long long int?]) ++ AC_C_BIGENDIAN ++fi ++ + CMU_C___ATTRIBUTE__ + CMU_C_FPIC + +diff -urNad cyrus-imapd-2.2.13/imap/append.c cyrus-imapd-2.2.13/imap/append.c +--- cyrus-imapd-2.2.13/imap/append.c 2006-11-13 19:21:27.000000000 +0100 ++++ cyrus-imapd-2.2.13/imap/append.c 2007-02-24 18:46:35.599277223 +0100 +@@ -140,7 +140,7 @@ + if (!r) { + if (m.quota.limit >= 0 && quotacheck >= 0 && + m.quota.used + quotacheck > +- ((unsigned) m.quota.limit * QUOTA_UNITS)) { ++ ((uquota_t) m.quota.limit * QUOTA_UNITS)) { + r = IMAP_QUOTA_EXCEEDED; + } + } +@@ -208,7 +208,7 @@ + if (!r) { + if (as->m.quota.limit >= 0 && quotacheck >= 0 && + as->m.quota.used + quotacheck > +- ((unsigned) as->m.quota.limit * QUOTA_UNITS)) { ++ ((uquota_t) as->m.quota.limit * QUOTA_UNITS)) { + quota_abort(&as->tid); + mailbox_close(&as->m); + r = IMAP_QUOTA_EXCEEDED; +diff -urNad cyrus-imapd-2.2.13/imap/imapd.c cyrus-imapd-2.2.13/imap/imapd.c +--- cyrus-imapd-2.2.13/imap/imapd.c 2007-02-24 18:46:32.000000000 +0100 ++++ cyrus-imapd-2.2.13/imap/imapd.c 2007-02-24 18:46:35.602276928 +0100 +@@ -2664,10 +2664,10 @@ + */ + int warnsize = config_getint(IMAPOPT_QUOTAWARNKB); + if (warnsize <= 0 || warnsize >= imapd_mailbox->quota.limit || +- (int)((imapd_mailbox->quota.limit * QUOTA_UNITS) - +- imapd_mailbox->quota.used) < (warnsize * QUOTA_UNITS)) { ++ ((uquota_t) (imapd_mailbox->quota.limit - warnsize)) * QUOTA_UNITS < ++ imapd_mailbox->quota.used) { + usage = ((double) imapd_mailbox->quota.used * 100.0) / (double) +- (imapd_mailbox->quota.limit * QUOTA_UNITS); ++ ((uquota_t) imapd_mailbox->quota.limit * QUOTA_UNITS); + if (usage >= 100.0) { + prot_printf(imapd_out, "* NO [ALERT] %s\r\n", + error_message(IMAP_NO_OVERQUOTA)); +@@ -4660,7 +4660,7 @@ + printastring(name); + prot_printf(imapd_out, " ("); + if (quota.limit >= 0) { +- prot_printf(imapd_out, "STORAGE %lu %d", ++ prot_printf(imapd_out, "STORAGE " UQUOTA_T_FMT " %d", + quota.used/QUOTA_UNITS, quota.limit); + } + prot_printf(imapd_out, ")\r\n"); +@@ -4722,7 +4722,7 @@ + printastring(mailboxname); + prot_printf(imapd_out, " ("); + if (mailbox.quota.limit >= 0) { +- prot_printf(imapd_out, "STORAGE %lu %d", ++ prot_printf(imapd_out, "STORAGE " UQUOTA_T_FMT " %d", + mailbox.quota.used/QUOTA_UNITS, + mailbox.quota.limit); + } +diff -urNad cyrus-imapd-2.2.13/imap/mailbox.c cyrus-imapd-2.2.13/imap/mailbox.c +--- cyrus-imapd-2.2.13/imap/mailbox.c 2007-02-24 18:46:31.000000000 +0100 ++++ cyrus-imapd-2.2.13/imap/mailbox.c 2007-02-24 18:46:35.604276731 +0100 +@@ -84,6 +84,7 @@ + #include "seen.h" + #include "util.h" + #include "xmalloc.h" ++#include "byteorder64.h" + + static int mailbox_doing_reconstruct = 0; + #define zeromailbox(m) { memset(&m, 0, sizeof(struct mailbox)); \ +@@ -788,6 +789,13 @@ + mailbox->last_uid = + ntohl(*((bit32 *)(mailbox->index_base+OFFSET_LAST_UID))); + ++#ifdef HAVE_LONG_LONG_INT ++ if (mailbox->minor_version > 5) { ++ /* newer versions may use 64bit quotas now */ ++ mailbox->quota_mailbox_used = ++ ntohll(*((bit64 *)(mailbox->index_base+OFFSET_QUOTA_MAILBOX_USED64))); ++ } else ++#endif + mailbox->quota_mailbox_used = + ntohl(*((bit32 *)(mailbox->index_base+OFFSET_QUOTA_MAILBOX_USED-quota_upgrade_offset))); + +@@ -1183,9 +1191,18 @@ + *((bit32 *)(buf+OFFSET_EXISTS)) = htonl(mailbox->exists); + *((bit32 *)(buf+OFFSET_LAST_APPENDDATE)) = htonl(mailbox->last_appenddate); + *((bit32 *)(buf+OFFSET_LAST_UID)) = htonl(mailbox->last_uid); +- *((bit32 *)(buf+OFFSET_QUOTA_RESERVED_FIELD)) = htonl(0); /* RESERVED */ ++ ++ /* quotas may be 64bit now */ ++#ifdef HAVE_LONG_LONG_INT ++ *((bit64 *)(buf+OFFSET_QUOTA_MAILBOX_USED64)) = ++ htonll(mailbox->quota_mailbox_used); ++#else ++ /* zero the unused 32bits */ ++ *((bit32 *)(buf+OFFSET_QUOTA_MAILBOX_USED64)) = htonl(0); + *((bit32 *)(buf+OFFSET_QUOTA_MAILBOX_USED)) = + htonl(mailbox->quota_mailbox_used); ++#endif ++ + *((bit32 *)(buf+OFFSET_POP3_LAST_LOGIN)) = htonl(mailbox->pop3_last_login); + *((bit32 *)(buf+OFFSET_UIDVALIDITY)) = htonl(mailbox->uidvalidity); + *((bit32 *)(buf+OFFSET_DELETED)) = htonl(mailbox->deleted); +@@ -1433,9 +1450,18 @@ + *((bit32 *)(buf+OFFSET_EXISTS)) = htonl(mailbox->exists); + *((bit32 *)(buf+OFFSET_LAST_APPENDDATE)) = htonl(mailbox->last_appenddate); + *((bit32 *)(buf+OFFSET_LAST_UID)) = htonl(mailbox->last_uid); +- /* OFFSET_QUOTA_RESERVED_FIELD left as zero */ ++ ++ /* newer versions may use 64bit quotas */ ++#ifdef HAVE_LONG_LONG_INT ++ *((bit64 *)(buf+OFFSET_QUOTA_MAILBOX_USED64)) = ++ htonll(mailbox->quota_mailbox_used); ++#else ++ /* zero the unused 32bits */ ++ *((bit32 *)(buf+OFFSET_QUOTA_MAILBOX_USED64)) = htonl(0); + *((bit32 *)(buf+OFFSET_QUOTA_MAILBOX_USED)) = + htonl(mailbox->quota_mailbox_used); ++#endif ++ + *((bit32 *)(buf+OFFSET_POP3_LAST_LOGIN)) = htonl(mailbox->pop3_last_login); + *((bit32 *)(buf+OFFSET_UIDVALIDITY)) = htonl(mailbox->uidvalidity); + *((bit32 *)(buf+OFFSET_DELETED)) = htonl(mailbox->deleted); +@@ -1611,7 +1637,8 @@ + size_t fnamebuf_len; + FILE *newindex = NULL, *newcache = NULL; + unsigned long *deleted; +- unsigned numdeleted = 0, quotadeleted = 0; ++ unsigned numdeleted = 0; ++ uquota_t quotadeleted = 0; + unsigned numansweredflag = 0; + unsigned numdeletedflag = 0; + unsigned numflaggedflag = 0; +@@ -1838,8 +1865,13 @@ + *((bit32 *)(buf+OFFSET_FLAGGED)) = htonl(newflagged); + + /* Fix up quota_mailbox_used */ ++#ifdef HAVE_LONG_LONG_INT ++ *((bit64 *)(buf+OFFSET_QUOTA_MAILBOX_USED64)) = ++ htonll(ntohll(*((bit64 *)(buf+OFFSET_QUOTA_MAILBOX_USED64)))-quotadeleted); ++#else + *((bit32 *)(buf+OFFSET_QUOTA_MAILBOX_USED)) = + htonl(ntohl(*((bit32 *)(buf+OFFSET_QUOTA_MAILBOX_USED)))-quotadeleted); ++#endif + /* Fix up start offset if necessary */ + if (mailbox->start_offset < INDEX_HEADER_SIZE) { + *((bit32 *)(buf+OFFSET_START_OFFSET)) = htonl(INDEX_HEADER_SIZE); +@@ -1871,7 +1903,7 @@ + if (!r) quota_commit(&tid); + else { + syslog(LOG_ERR, +- "LOSTQUOTA: unable to record free of %u bytes in quota %s", ++ "LOSTQUOTA: unable to record free of " UQUOTA_T_FMT " bytes in quota %s", + quotadeleted, mailbox->quota.root); + } + } +@@ -2146,7 +2178,7 @@ + r = quota_write(&mailbox->quota, &tid); + if (r) { + syslog(LOG_ERR, +- "LOSTQUOTA: unable to record free of %lu bytes in quota %s", ++ "LOSTQUOTA: unable to record free of " UQUOTA_T_FMT " bytes in quota %s", + mailbox->quota_mailbox_used, mailbox->quota.root); + } + else +@@ -2265,7 +2297,7 @@ + strcmp(oldmailbox->quota.root, newmailbox->quota.root) != 0) { + if (!r && newmailbox->quota.limit >= 0 && + newmailbox->quota.used + oldmailbox->quota_mailbox_used > +- ((unsigned) newmailbox->quota.limit * QUOTA_UNITS)) { ++ ((uquota_t) newmailbox->quota.limit * QUOTA_UNITS)) { + r = IMAP_QUOTA_EXCEEDED; + } + } +@@ -2479,7 +2511,7 @@ + strcmp(oldmailbox.quota.root, newmailbox.quota.root) != 0) { + if (!r && newmailbox.quota.limit >= 0 && + newmailbox.quota.used + oldmailbox.quota_mailbox_used > +- ((unsigned) newmailbox.quota.limit * QUOTA_UNITS)) { ++ ((uquota_t) newmailbox.quota.limit * QUOTA_UNITS)) { + r = IMAP_QUOTA_EXCEEDED; + } + } +@@ -2632,7 +2664,7 @@ + else if (r2 == IMAP_QUOTAROOT_NONEXISTENT) r2 = 0; + if (r2) { + syslog(LOG_ERR, +- "LOSTQUOTA: unable to record use of %lu bytes in quota %s", ++ "LOSTQUOTA: unable to record use of " UQUOTA_T_FMT " bytes in quota %s", + newmailbox.quota_mailbox_used, newmailbox.quota.root); + } + } +diff -urNad cyrus-imapd-2.2.13/imap/mailbox.h cyrus-imapd-2.2.13/imap/mailbox.h +--- cyrus-imapd-2.2.13/imap/mailbox.h 2006-11-13 19:21:27.000000000 +0100 ++++ cyrus-imapd-2.2.13/imap/mailbox.h 2007-02-24 18:46:35.604276731 +0100 +@@ -45,6 +45,7 @@ + #include + #include + #include ++#include + + #include "auth.h" + #include "quota.h" +@@ -61,6 +62,10 @@ + #error dont know what to use for bit32 + #endif + ++#ifdef HAVE_LONG_LONG_INT ++typedef unsigned long long int bit64; ++#endif ++ + #define MAX_MAILBOX_NAME 490 + #define MAX_MAILBOX_PATH 4096 + +@@ -126,7 +131,7 @@ + unsigned long exists; + time_t last_appenddate; + unsigned long last_uid; +- unsigned long quota_mailbox_used; ++ uquota_t quota_mailbox_used; + unsigned long pop3_last_login; + unsigned long uidvalidity; + +@@ -168,8 +173,8 @@ + #define OFFSET_EXISTS 20 + #define OFFSET_LAST_APPENDDATE 24 + #define OFFSET_LAST_UID 28 +-#define OFFSET_QUOTA_RESERVED_FIELD 32 /* Reserved for 64bit quotas */ +-#define OFFSET_QUOTA_MAILBOX_USED 36 ++#define OFFSET_QUOTA_MAILBOX_USED64 32 /* offset for 64bit quotas */ ++#define OFFSET_QUOTA_MAILBOX_USED 36 /* offset for 32bit quotas */ + #define OFFSET_POP3_LAST_LOGIN 40 + #define OFFSET_UIDVALIDITY 44 + #define OFFSET_DELETED 48 /* added for ACAP */ +diff -urNad cyrus-imapd-2.2.13/imap/mbdump.c cyrus-imapd-2.2.13/imap/mbdump.c +--- cyrus-imapd-2.2.13/imap/mbdump.c 2007-02-24 18:46:32.000000000 +0100 ++++ cyrus-imapd-2.2.13/imap/mbdump.c 2007-02-24 18:46:35.605276633 +0100 +@@ -507,7 +507,7 @@ + { + struct buf file, data; + char c; +- int quotaused = 0; ++ uquota_t quotaused = 0; + int r = 0; + int curfile = -1; + const char *userid = NULL; +diff -urNad cyrus-imapd-2.2.13/imap/mbexamine.c cyrus-imapd-2.2.13/imap/mbexamine.c +--- cyrus-imapd-2.2.13/imap/mbexamine.c 2006-11-13 19:21:27.000000000 +0100 ++++ cyrus-imapd-2.2.13/imap/mbexamine.c 2007-02-24 18:46:35.605276633 +0100 +@@ -266,7 +266,7 @@ + printf(" Minor Version: %d\n", mailbox.minor_version); + printf(" Header Size: %ld bytes Record Size: %ld bytes\n", + mailbox.start_offset, mailbox.record_size); +- printf(" Number of Messages: %lu Mailbox Size: %lu bytes\n", ++ printf(" Number of Messages: %lu Mailbox Size: " UQUOTA_T_FMT " bytes\n", + mailbox.exists, mailbox.quota_mailbox_used); + printf(" Last Append Date: (%ld) %s", mailbox.last_appenddate, + ctime(&mailbox.last_appenddate)); +diff -urNad cyrus-imapd-2.2.13/imap/mboxlist.c cyrus-imapd-2.2.13/imap/mboxlist.c +--- cyrus-imapd-2.2.13/imap/mboxlist.c 2007-02-24 18:46:31.000000000 +0100 ++++ cyrus-imapd-2.2.13/imap/mboxlist.c 2007-02-24 18:46:35.606276534 +0100 +@@ -2536,7 +2536,7 @@ + r = quota_write(&mailbox.quota, tid); + if (r) { + syslog(LOG_ERR, +- "LOSTQUOTA: unable to record free of %lu bytes in quota %s", ++ "LOSTQUOTA: unable to record free of " UQUOTA_T_FMT " bytes in quota %s", + mailbox.quota_mailbox_used, mailbox.quota.root); + } + free(mailbox.quota.root); +diff -urNad cyrus-imapd-2.2.13/imap/quota.c cyrus-imapd-2.2.13/imap/quota.c +--- cyrus-imapd-2.2.13/imap/quota.c 2007-02-24 18:46:31.000000000 +0100 ++++ cyrus-imapd-2.2.13/imap/quota.c 2007-02-24 18:46:35.607276436 +0100 +@@ -107,7 +107,7 @@ + struct quota quota; + int refcount; + int deleted; +- unsigned long newused; ++ uquota_t newused; + }; + + /* forward declarations */ +@@ -473,7 +473,7 @@ + (*count)++; + } + if (quota[thisquota].quota.used != quota[thisquota].newused) { +- printf("%s: usage was %lu, now %lu\n", quota[thisquota].quota.root, ++ printf("%s: usage was " UQUOTA_T_FMT ", now " UQUOTA_T_FMT "\n", quota[thisquota].quota.root, + quota[thisquota].quota.used, quota[thisquota].newused); + quota[thisquota].quota.used = quota[thisquota].newused; + r = quota_write("a[thisquota].quota, tid); +@@ -539,12 +539,12 @@ + int i; + char buf[MAX_MAILBOX_PATH+1]; + +- printf(" Quota %% Used Used Root\n"); ++ printf(" Quota %% Used Used Root\n"); + + for (i = 0; i < quota_num; i++) { + if (quota[i].deleted) continue; + if (quota[i].quota.limit > 0) { +- printf(" %7d %7ld", quota[i].quota.limit, ++ printf(" %7d " QUOTA_REPORT_FMT , quota[i].quota.limit, + ((quota[i].quota.used / QUOTA_UNITS) * 100) / quota[i].quota.limit); + } + else if (quota[i].quota.limit == 0) { +@@ -557,6 +557,6 @@ + (*quota_namespace.mboxname_toexternal)("a_namespace, + quota[i].quota.root, + "cyrus", buf); +- printf(" %7ld %s\n", quota[i].quota.used / QUOTA_UNITS, buf); ++ printf(" " QUOTA_REPORT_FMT " %s\n", quota[i].quota.used / QUOTA_UNITS, buf); + } + } +diff -urNad cyrus-imapd-2.2.13/imap/quota.h cyrus-imapd-2.2.13/imap/quota.h +--- cyrus-imapd-2.2.13/imap/quota.h 2006-11-13 19:21:27.000000000 +0100 ++++ cyrus-imapd-2.2.13/imap/quota.h 2007-02-24 18:46:35.607276436 +0100 +@@ -45,18 +45,37 @@ + #define INCLUDED_QUOTA_H + + #include "cyrusdb.h" ++#include + + #define FNAME_QUOTADB "/quotas.db" + + #define QUOTA_UNITS (1024) + ++/* Define the proper quota type, it should either be a ++ * long or a long long int depending upon what the ++ * the compiler supports. ++ */ ++#ifdef HAVE_LONG_LONG_INT ++typedef unsigned long long int uquota_t; ++typedef long long int quota_t; ++#define UQUOTA_T_FMT "%llu" ++#define QUOTA_T_FMT "%lld" ++#define QUOTA_REPORT_FMT "%8llu" ++#else ++typedef unsigned long uquota_t; ++typedef long quota_t; ++#define UQUOTA_T_FMT "%lu" ++#define QUOTA_T_FMT "%ld" ++#define QUOTA_REPORT_FMT "%8lu" ++#endif ++ + extern struct db *qdb; + + struct quota { + char *root; + + /* Information in quota entry */ +- unsigned long used; ++ uquota_t used; + int limit; /* in QUOTA_UNITS */ + }; + +diff -urNad cyrus-imapd-2.2.13/imap/quota_db.c cyrus-imapd-2.2.13/imap/quota_db.c +--- cyrus-imapd-2.2.13/imap/quota_db.c 2006-11-13 19:21:27.000000000 +0100 ++++ cyrus-imapd-2.2.13/imap/quota_db.c 2007-02-24 18:46:35.608276338 +0100 +@@ -89,7 +89,7 @@ + + switch (r) { + case CYRUSDB_OK: +- sscanf(data, "%lu %d", "a->used, "a->limit); ++ sscanf(data, UQUOTA_T_FMT " %d", "a->used, "a->limit); + break; + + case CYRUSDB_AGAIN: +@@ -151,7 +151,7 @@ + if (!qrlen) return IMAP_QUOTAROOT_NONEXISTENT; + + len = snprintf(buf, sizeof(buf) - 1, +- "%lu %d", quota->used, quota->limit); ++ UQUOTA_T_FMT " %d", quota->used, quota->limit); + r = QDB->store(qdb, quota->root, qrlen, buf, len, tid); + + switch (r) { +diff -urNad cyrus-imapd-2.2.13/imap/reconstruct.c cyrus-imapd-2.2.13/imap/reconstruct.c +--- cyrus-imapd-2.2.13/imap/reconstruct.c 2007-02-24 18:46:31.000000000 +0100 ++++ cyrus-imapd-2.2.13/imap/reconstruct.c 2007-02-24 18:46:35.608276338 +0100 +@@ -93,6 +93,7 @@ + #include "retry.h" + #include "convert_code.h" + #include "util.h" ++#include "byteorder64.h" + + extern int optind; + extern char *optarg; +@@ -434,7 +435,7 @@ + char *list_acl, *list_part; + int list_type; + +- unsigned long new_quota = 0; ++ uquota_t new_quota = 0; + + struct index_record message_index, old_index; + static struct index_record zero_index; +@@ -690,7 +691,14 @@ + *((bit32 *)(buf+OFFSET_EXISTS)) = htonl(new_exists); + *((bit32 *)(buf+OFFSET_LAST_APPENDDATE)) = htonl(mailbox.last_appenddate); + *((bit32 *)(buf+OFFSET_LAST_UID)) = htonl(mailbox.last_uid); ++ ++ /* quotas may be 64bit now */ ++#ifdef HAVE_LONG_LONG_INT ++ *((bit64 *)(buf+OFFSET_QUOTA_MAILBOX_USED64)) = htonll(new_quota); ++#else + *((bit32 *)(buf+OFFSET_QUOTA_MAILBOX_USED)) = htonl(new_quota); ++#endif ++ + *((bit32 *)(buf+OFFSET_POP3_LAST_LOGIN)) = htonl(mailbox.pop3_last_login); + *((bit32 *)(buf+OFFSET_UIDVALIDITY)) = htonl(mailbox.uidvalidity); + *((bit32 *)(buf+OFFSET_DELETED)) = htonl(new_deleted); +diff -urNad cyrus-imapd-2.2.13/lib/Makefile.in cyrus-imapd-2.2.13/lib/Makefile.in +--- cyrus-imapd-2.2.13/lib/Makefile.in 2007-02-24 18:46:32.000000000 +0100 ++++ cyrus-imapd-2.2.13/lib/Makefile.in 2007-02-24 18:46:35.609276239 +0100 +@@ -87,7 +87,7 @@ + $(srcdir)/lsort.h $(srcdir)/stristr.h \ + $(srcdir)/util.h $(srcdir)/xstrlcpy.h $(srcdir)/xstrlcat.h $(srcdir)/xmalloc.h $(srcdir)/imapurl.h \ + $(srcdir)/cyrusdb.h $(srcdir)/iptostring.h $(srcdir)/rfc822date.h \ +- $(srcdir)/libcyr_cfg.h ++ $(srcdir)/libcyr_cfg.h $(srcdir)/byteorder64.h + + LIBCYR_OBJS = acl.o bsearch.o charset.o glob.o retry.o util.o \ + libcyr_cfg.o mkgmtime.o prot.o parseaddr.o imclient.o imparse.o \ +@@ -95,7 +95,7 @@ + chartable.o imapurl.o nonblock_@WITH_NONBLOCK@.o lock_@WITH_LOCK@.o \ + gmtoff_@WITH_GMTOFF@.o map_@WITH_MAP@.o $(ACL) $(AUTH) \ + @LIBOBJS@ @CYRUSDB_OBJS@ \ +- iptostring.o xstrlcpy.o xstrlcat.o xmalloc.o wildmat.o ++ iptostring.o xstrlcpy.o xstrlcat.o xmalloc.o wildmat.o byteorder64.o + + LIBCYRM_HDRS = $(srcdir)/hash.h $(srcdir)/mpool.h $(srcdir)/xstrlcpy.h $(srcdir)/xstrlcat.h $(srcdir)/xmalloc.h \ + $(srcdir)/strhash.o $(srcdir)/libconfig.h \ +diff -urNad cyrus-imapd-2.2.13/lib/byteorder64.c cyrus-imapd-2.2.13/lib/byteorder64.c +--- cyrus-imapd-2.2.13/lib/byteorder64.c 1970-01-01 01:00:00.000000000 +0100 ++++ cyrus-imapd-2.2.13/lib/byteorder64.c 2007-02-24 18:46:35.609276239 +0100 +@@ -0,0 +1,95 @@ ++/* byteorder64.c -- convert 64-bit values between host and network byte order ++ * ++ * Copyright (c) 2004 Carnegie Mellon University. All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in ++ * the documentation and/or other materials provided with the ++ * distribution. ++ * ++ * 3. The name "Carnegie Mellon University" must not be used to ++ * endorse or promote products derived from this software without ++ * prior written permission. For permission or any other legal ++ * details, please contact ++ * Office of Technology Transfer ++ * Carnegie Mellon University ++ * 5000 Forbes Avenue ++ * Pittsburgh, PA 15213-3890 ++ * (412) 268-4387, fax: (412) 268-7395 ++ * tech-transfer@andrew.cmu.edu ++ * ++ * 4. Redistributions of any form whatsoever must retain the following ++ * acknowledgment: ++ * "This product includes software developed by Computing Services ++ * at Carnegie Mellon University (http://www.cmu.edu/computing/)." ++ * ++ * CARNEGIE MELLON UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO ++ * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY ++ * AND FITNESS, IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY BE LIABLE ++ * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES ++ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN ++ * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING ++ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ * ++ * $Id: byteorder64.c,v 1.1.2.1 2004/08/09 18:51:21 ken3 Exp $ ++ */ ++ ++#include ++ ++#if defined(HAVE_LONG_LONG_INT) && !defined(WORDS_BIGENDIAN) ++ ++#include ++ ++/* Structure used to swap the bytes in a 64-bit unsigned long long. */ ++union byteswap_64_u { ++ unsigned long long a; ++ uint32_t b[2]; ++}; ++ ++/* Function to byteswap 64bit unsigned integers on ++ * little endian machines to big endian network order. ++ * On big endian machines this will be a null macro. ++ * The macro htonll() is defined in byteorder64.h, ++ * and if needed refers to _htonll() here. ++ */ ++unsigned long long _htonll(unsigned long long x) ++{ ++ union byteswap_64_u u1; ++ union byteswap_64_u u2; ++ ++ u1.a = x; ++ ++ u2.b[0] = htonl(u1.b[1]); ++ u2.b[1] = htonl(u1.b[0]); ++ ++ return u2.a; ++} ++ ++ ++/* Function to byteswap big endian 64bit unsigned integers ++ * back to little endian host order on little endian machines. ++ * As above, on big endian machines this will be a null macro. ++ * The macro ntohll() is defined in byteorder64.h, and if needed, ++ * refers to _ntohll() here. ++ */ ++unsigned long long _ntohll(unsigned long long x) ++{ ++ union byteswap_64_u u1; ++ union byteswap_64_u u2; ++ ++ u1.a = x; ++ ++ u2.b[1] = ntohl(u1.b[0]); ++ u2.b[0] = ntohl(u1.b[1]); ++ ++ return u2.a; ++} ++ ++#endif /* defined(HAVE_LONG_LONG_INT) && !defined(WORDS_BIGENDIAN) */ +diff -urNad cyrus-imapd-2.2.13/lib/byteorder64.h cyrus-imapd-2.2.13/lib/byteorder64.h +--- cyrus-imapd-2.2.13/lib/byteorder64.h 1970-01-01 01:00:00.000000000 +0100 ++++ cyrus-imapd-2.2.13/lib/byteorder64.h 2007-02-24 18:46:35.609276239 +0100 +@@ -0,0 +1,65 @@ ++/* byteorder64.h -- convert 64-bit values between host and network byte order ++ * ++ * Copyright (c) 2004 Carnegie Mellon University. All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in ++ * the documentation and/or other materials provided with the ++ * distribution. ++ * ++ * 3. The name "Carnegie Mellon University" must not be used to ++ * endorse or promote products derived from this software without ++ * prior written permission. For permission or any other legal ++ * details, please contact ++ * Office of Technology Transfer ++ * Carnegie Mellon University ++ * 5000 Forbes Avenue ++ * Pittsburgh, PA 15213-3890 ++ * (412) 268-4387, fax: (412) 268-7395 ++ * tech-transfer@andrew.cmu.edu ++ * ++ * 4. Redistributions of any form whatsoever must retain the following ++ * acknowledgment: ++ * "This product includes software developed by Computing Services ++ * at Carnegie Mellon University (http://www.cmu.edu/computing/)." ++ * ++ * CARNEGIE MELLON UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO ++ * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY ++ * AND FITNESS, IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY BE LIABLE ++ * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES ++ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN ++ * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING ++ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ * ++ * $Id: byteorder64.h,v 1.1.2.2 2004/08/16 11:44:34 ken3 Exp $ ++ */ ++ ++#ifndef _BYTEORDER64_H ++#define _BYTEORDER64_H ++ ++#include ++ ++#ifdef HAVE_LONG_LONG_INT ++ ++/* 64-bit host/network byte-order swap macros */ ++#ifdef WORDS_BIGENDIAN ++#define htonll(x) (x) ++#define ntohll(x) (x) ++#else ++#define htonll(x) _htonll(x) ++#define ntohll(x) _ntohll(x) ++ ++/* little-endian 64-bit host/network byte-order swap functions */ ++extern unsigned long long _htonll(unsigned long long); ++extern unsigned long long _ntohll(unsigned long long); ++ ++#endif /* WORDS_BIGENDIAN */ ++#endif /* HAVE_LONG_LONG_INT */ ++#endif /* _BYTEORDER64_H */ +diff -urNad cyrus-imapd-2.2.13/lib/prot.c cyrus-imapd-2.2.13/lib/prot.c +--- cyrus-imapd-2.2.13/lib/prot.c 2006-11-13 19:21:27.000000000 +0100 ++++ cyrus-imapd-2.2.13/lib/prot.c 2007-02-24 18:46:35.610276141 +0100 +@@ -871,6 +871,11 @@ + char buf[30]; + va_start(pvar, fmt); + ++#ifdef HAVE_LONG_LONG_INT ++ long long int ll; ++ unsigned long long int ull; ++#endif ++ + assert(s->write); + + while ((percent = strchr(fmt, '%')) != 0) { +@@ -894,6 +899,27 @@ + prot_write(s, buf, strlen(buf)); + break; + ++#ifdef HAVE_LONG_LONG_INT ++ case 'l': ++ switch (*++percent) { ++ case 'd': ++ ll = va_arg(pvar, long long int); ++ snprintf(buf, sizeof(buf), "%lld", ll); ++ prot_write(s, buf, strlen(buf)); ++ break; ++ ++ case 'u': ++ ull = va_arg(pvar, unsigned long long int); ++ snprintf(buf, sizeof(buf), "%llu", ull); ++ prot_write(s, buf, strlen(buf)); ++ break; ++ ++ default: ++ abort(); ++ } ++ break; ++#endif ++ + default: + abort(); + } --- cyrus-imapd-2.2-2.2.13.orig/debian/patches/14-xmalloc.dpatch +++ cyrus-imapd-2.2-2.2.13/debian/patches/14-xmalloc.dpatch @@ -0,0 +1,31 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 14-xmalloc.dpatch by Sven Mueller +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Fix xmalloc usage + +@DPATCH@ +diff -urNad complete.dpatch/lib/map_stupidshared.c complete.dpatch/lib/map_stupidshared.c +--- complete.dpatch/lib/map_stupidshared.c 2003-10-22 20:50:12.000000000 +0200 ++++ complete.dpatch/lib/map_stupidshared.c 2005-11-11 14:29:02.586035529 +0100 +@@ -52,6 +52,7 @@ + #include + #include + ++#include "xmalloc.h" + #include "map.h" + #include "exitcodes.h" + +diff -urNad complete.dpatch/lib/xmalloc.h complete.dpatch/lib/xmalloc.h +--- complete.dpatch/lib/xmalloc.h 2003-10-22 20:50:12.000000000 +0200 ++++ complete.dpatch/lib/xmalloc.h 2005-11-11 14:29:30.174327237 +0100 +@@ -65,7 +65,7 @@ + + /* Functions using xmalloc.h must provide a function called fatal() conforming + to the following: */ +-extern void fatal(const char *fatal_message, int fatal_code); +-/* __attribute__ ((noreturn));*/ ++extern void fatal(const char *fatal_message, int fatal_code) ++ __attribute__ ((noreturn)); + + #endif /* INCLUDED_XMALLOC_H */ --- cyrus-imapd-2.2-2.2.13.orig/debian/patches/0021-upstream-applied_RFC4314_READ-ONLY_logic.dpatch +++ cyrus-imapd-2.2-2.2.13/debian/patches/0021-upstream-applied_RFC4314_READ-ONLY_logic.dpatch @@ -0,0 +1,58 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 0021-upstream-applied_RFC4314_READ-ONLY_logic.dpatch by Sven Mueller +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Upstream: applied RFC4314 READ-ONLY logic (by murch) + +@DPATCH@ +diff -urNad cyrus-imapd-2.2.13/imap/imapd.c cyrus-imapd-2.2.13/imap/imapd.c +--- cyrus-imapd-2.2.13/imap/imapd.c 2006-11-13 19:25:43.000000000 +0100 ++++ cyrus-imapd-2.2.13/imap/imapd.c 2006-11-13 19:25:48.253689109 +0100 +@@ -38,7 +38,7 @@ + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +-/* $Id: imapd.c,v 1.500 2006/05/10 15:41:44 murch Exp $ */ ++/* $Id: imapd.c,v 1.501 2006/11/13 16:17:52 murch Exp $ */ + + #include + +@@ -2643,7 +2643,7 @@ + + /* Examine command puts mailbox in read-only mode */ + if (cmd[0] == 'E') { +- imapd_mailbox->myrights &= ~(ACL_SEEN|ACL_WRITE|ACL_DELETE); ++ imapd_mailbox->myrights &= ~ACL_READ_WRITE; + } + + if (imapd_mailbox->myrights & ACL_DELETE) { +@@ -2682,7 +2682,7 @@ + } + + prot_printf(imapd_out, "%s OK [READ-%s] %s\r\n", tag, +- (imapd_mailbox->myrights & (ACL_WRITE|ACL_DELETE)) ? ++ (imapd_mailbox->myrights & ACL_READ_WRITE) ? + "WRITE" : "ONLY", error_message(IMAP_OK_COMPLETED)); + + proc_register("imapd", imapd_clienthost, imapd_userid, mailboxname); +diff -urNad cyrus-imapd-2.2.13/lib/acl.h cyrus-imapd-2.2.13/lib/acl.h +--- cyrus-imapd-2.2.13/lib/acl.h 2005-03-12 23:09:22.000000000 +0100 ++++ cyrus-imapd-2.2.13/lib/acl.h 2006-11-13 19:22:53.756725336 +0100 +@@ -42,7 +42,7 @@ + * Start Date: 6/28/93 + */ + +-/* $Id: acl.h,v 1.16 2004/03/05 19:19:21 rjs3 Exp $ */ ++/* $Id: acl.h,v 1.17 2006/11/13 16:17:53 murch Exp $ */ + + #ifndef INCLUDED_ACL_H + #define INCLUDED_ACL_H +@@ -75,6 +75,8 @@ + #define ACL_USER9 0x40000L + #define ACL_FULL 0xFFFFFL + ++#define ACL_READ_WRITE (ACL_SEEN|ACL_WRITE|ACL_INSERT|ACL_DELETE) ++ + #define ACL_MODE_SET 0 + #define ACL_MODE_ADD 1 + #define ACL_MODE_REMOVE 2 --- cyrus-imapd-2.2-2.2.13.orig/debian/patches/0019-upstream-sieve_allowreferrals.dpatch +++ cyrus-imapd-2.2-2.2.13/debian/patches/0019-upstream-sieve_allowreferrals.dpatch @@ -0,0 +1,650 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 0019-upstream-sieve_allowreferrals.dpatch by Sven Mueller +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Upstream: patch sieve to allow referrals + +@DPATCH@ +diff -urNad cyrus-imapd-2.2.13/doc/changes.html cyrus-imapd-2.2.13/doc/changes.html +--- cyrus-imapd-2.2.13/doc/changes.html 2006-08-31 16:46:21.000000000 +0200 ++++ cyrus-imapd-2.2.13/doc/changes.html 2006-08-31 16:53:15.970326054 +0200 +@@ -1,6 +1,6 @@ + +- ++ + + + +@@ -14,6 +14,14 @@ + making it useful for remote mailboxes. + + ++

Changes to the Cyrus IMAP Server since 2.2.13

++
    ++
  • ctl_mboxlist now dumps/undumps the mailbox type flags, ++making it useful for remote mailboxes.
  • ++
  • Added sieve_allowreferrals option to control whether ++timsieved issues referrals or proxys traffic to backends.
  • ++
++ +

Changes to the Cyrus IMAP Server since 2.2.12

+
    +
  • Allow sieve scripts to be run on shared mailboxes (via sieve +@@ -2034,7 +2042,7 @@ +
+ +
+-last modified: $Date: 2006/03/31 15:24:29 $
++last modified: $Date: 2006/08/30 16:29:10 $
+ Return to the Cyrus IMAP Server Home Page + + +diff -urNad cyrus-imapd-2.2.13/imap/backend.c cyrus-imapd-2.2.13/imap/backend.c +--- cyrus-imapd-2.2.13/imap/backend.c 2006-08-31 16:46:21.000000000 +0200 ++++ cyrus-imapd-2.2.13/imap/backend.c 2006-08-31 16:55:26.609576327 +0200 +@@ -39,7 +39,7 @@ + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +-/* $Id: backend.c,v 1.41 2006/05/11 18:05:29 murch Exp $ */ ++/* $Id: backend.c,v 1.42 2006/08/30 16:29:11 murch Exp $ */ + + #include + +@@ -74,7 +74,8 @@ + #include "util.h" + + static char *ask_capability(struct protstream *pout, struct protstream *pin, +- struct protocol_t *prot, unsigned long *capa) ++ struct protocol_t *prot, unsigned long *capa, ++ int banner) + { + char str[4096]; + char *ret = NULL, *tmp; +@@ -82,7 +83,7 @@ + + *capa = 0; + +- if (prot->capa_cmd.cmd) { ++ if (!banner && prot->capa_cmd.cmd) { + /* request capabilities of server */ + prot_printf(pout, "%s\r\n", prot->capa_cmd.cmd); + prot_flush(pout); +@@ -239,7 +240,7 @@ + /* If we don't have a usable mech, do TLS and try again */ + } while (r == SASL_NOMECH && CAPA(s, CAPA_STARTTLS) && + do_starttls(s, &prot->tls_cmd) != -1 && +- (*mechlist = ask_capability(s->out, s->in, prot, &s->capability))); ++ (*mechlist = ask_capability(s->out, s->in, prot, &s->capability, 0))); + + /* xxx unclear that this is correct */ + free_callbacks(cb); +@@ -378,20 +379,23 @@ + ret->sock = sock; + prot_setflushonread(ret->in, ret->out); + +- if (prot->capa_cmd.cmd) { +- /* read the initial greeting */ +- if (!prot_fgets(buf, sizeof(buf), ret->in)) { +- syslog(LOG_ERR, +- "backend_connect(): couldn't read initial greeting: %s", +- ret->in->error ? ret->in->error : "(null)"); +- if (!ret_backend) free(ret); +- close(sock); +- return NULL; +- } ++ if (!prot->banner.is_capa) { ++ do { /* read the initial greeting */ ++ if (!prot_fgets(buf, sizeof(buf), ret->in)) { ++ syslog(LOG_ERR, ++ "backend_connect(): couldn't read initial greeting: %s", ++ ret->in->error ? ret->in->error : "(null)"); ++ if (!ret_backend) free(ret); ++ close(sock); ++ return NULL; ++ } ++ } while (strncasecmp(buf, prot->banner.resp, ++ strlen(prot->banner.resp))); + } + + /* get the capabilities */ +- mechlist = ask_capability(ret->out, ret->in, prot, &ret->capability); ++ mechlist = ask_capability(ret->out, ret->in, prot, &ret->capability, ++ prot->banner.is_capa); + + /* now need to authenticate to backend server, + unless we're doing LMTP on a UNIX socket (deliver) */ +diff -urNad cyrus-imapd-2.2.13/imap/protocol.c cyrus-imapd-2.2.13/imap/protocol.c +--- cyrus-imapd-2.2.13/imap/protocol.c 2006-08-31 16:44:13.000000000 +0200 ++++ cyrus-imapd-2.2.13/imap/protocol.c 2006-08-31 16:53:15.973325759 +0200 +@@ -39,7 +39,7 @@ + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +-/* $Id: protocol.c,v 1.13 2004/12/07 19:26:24 ken3 Exp $ */ ++/* $Id: protocol.c,v 1.14 2006/08/30 16:29:11 murch Exp $ */ + + #include + +@@ -89,8 +89,24 @@ + return success; + } + ++static char *sieve_parsesuccess(char *str, const char **status) ++{ ++ char *success = NULL, *tmp; ++ ++ if (!strncmp(str, "OK (", 4) && ++ (tmp = strstr(str+4, "SASL \"")) != NULL) { ++ success = tmp+6; /* skip SASL " */ ++ tmp = strstr(success, "\""); ++ *tmp = '\0'; /* clip " */ ++ } ++ ++ if (status) *status = NULL; ++ return success; ++} ++ + struct protocol_t protocol[] = { + { "imap", "imap", ++ { 0, "* OK" }, + { "C01 CAPABILITY", "C01 ", &imap_parsemechlist, + { { " AUTH=", CAPA_AUTH }, + { " STARTTLS", CAPA_STARTTLS }, +@@ -103,6 +119,7 @@ + { "N01 NOOP", "N01 OK" }, + { "Q01 LOGOUT", "Q01 " } }, + { "pop3", "pop", ++ { 0, "+OK " }, + { "CAPA", ".", NULL, + { { "SASL ", CAPA_AUTH }, + { "STLS", CAPA_STARTTLS }, +@@ -112,6 +129,7 @@ + { "NOOP", "+OK" }, + { "QUIT", "+OK" } }, + { "nntp", "nntp", ++ { 0, "20" }, + { "CAPABILITIES", ".", NULL, + { { "SASL ", CAPA_AUTH }, + { "STARTTLS", CAPA_STARTTLS }, +@@ -121,6 +139,7 @@ + { "DATE", "111" }, + { "QUIT", "205" } }, + { "lmtp", "lmtp", ++ { 0, "220 " }, + { "LHLO murder", "250 ", NULL, + { { "AUTH ", CAPA_AUTH }, + { "STARTTLS", CAPA_STARTTLS }, +@@ -132,11 +151,22 @@ + { "NOOP", "250" }, + { "QUIT", "221" } }, + { "mupdate", "mupdate", ++ { 1, "* OK" }, + { NULL, "* OK", NULL, + { { "* AUTH ", CAPA_AUTH }, + { NULL, 0 } } }, + { "S01 STARTTLS", "S01 OK", "S01 NO" }, + { "A01 AUTHENTICATE", INT_MAX, 1, "A01 OK", "A01 NO", "", "*", NULL }, + { "N01 NOOP", "N01 OK" }, +- { "Q01 LOGOUT", "Q01 " } } ++ { "Q01 LOGOUT", "Q01 " } }, ++ { "sieve", SIEVE_SERVICE_NAME, ++ { 1, "OK" }, ++ { "CAPABILITY", "OK", NULL, ++ { { "\"SASL\" ", CAPA_AUTH }, ++ { "\"STARTTLS\"", CAPA_STARTTLS }, ++ { NULL, 0 } } }, ++ { "STARTTLS", "OK", "NO" }, ++ { "AUTHENTICATE", INT_MAX, 1, "OK", "NO", NULL, "*", &sieve_parsesuccess }, ++ { NULL, NULL, NULL }, ++ { "LOGOUT", NULL, "OK" } } + }; +diff -urNad cyrus-imapd-2.2.13/imap/protocol.h cyrus-imapd-2.2.13/imap/protocol.h +--- cyrus-imapd-2.2.13/imap/protocol.h 2006-08-31 16:44:13.000000000 +0200 ++++ cyrus-imapd-2.2.13/imap/protocol.h 2006-08-31 16:53:15.973325759 +0200 +@@ -39,7 +39,7 @@ + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +-/* $Id: protocol.h,v 1.5 2004/05/06 18:52:07 ken3 Exp $ */ ++/* $Id: protocol.h,v 1.6 2006/08/30 16:29:11 murch Exp $ */ + + #ifndef _INCLUDED_PROTOCOL_H + #define _INCLUDED_PROTOCOL_H +@@ -70,9 +70,13 @@ + + struct protocol_t; + ++struct banner_t { ++ int is_capa; /* banner is capability response */ ++ char *resp; /* end of banner response */ ++}; ++ + struct capa_cmd_t { +- const char *cmd; /* [OPTIONAL] capability command string +- (NULL = capabilities in banner) */ ++ const char *cmd; /* [OPTIONAL] capability command string */ + const char *resp; /* end of capability response */ + char *(*parse_mechlist)(const char *str, struct protocol_t *prot); + /* [OPTIONAL] parse capability string, +@@ -95,6 +99,7 @@ + struct protocol_t { + const char *service; /* INET service name */ + const char *sasl_service; /* SASL service name */ ++ struct banner_t banner; + struct capa_cmd_t capa_cmd; + struct tls_cmd_t tls_cmd; + struct sasl_cmd_t sasl_cmd; +@@ -109,7 +114,8 @@ + PROTOCOL_POP3, + PROTOCOL_NNTP, + PROTOCOL_LMTP, +- PROTOCOL_MUPDATE ++ PROTOCOL_MUPDATE, ++ PROTOCOL_SIEVE + }; + + #endif /* _INCLUDED_PROTOCOL_H */ +diff -urNad cyrus-imapd-2.2.13/imap/saslclient.c cyrus-imapd-2.2.13/imap/saslclient.c +--- cyrus-imapd-2.2.13/imap/saslclient.c 2006-08-31 16:44:13.000000000 +0200 ++++ cyrus-imapd-2.2.13/imap/saslclient.c 2006-08-31 16:53:15.972325858 +0200 +@@ -39,7 +39,7 @@ + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +-/* $Id: saslclient.c,v 1.13 2004/07/07 19:49:05 rjs3 Exp $ */ ++/* $Id: saslclient.c,v 1.14 2006/08/30 16:29:11 murch Exp $ */ + + #include + +@@ -237,21 +237,24 @@ + do { + char *p; + ++ base64 = buf; ++ *base64 = '\0'; ++ + if (clientout) { /* response */ + /* convert to base64 */ +- base64 = buf; + r = sasl_encode64(clientout, clientoutlen, + base64, BASE64_BUF_SIZE, NULL); + + clientout = NULL; ++ } + +- /* send to server */ +- if (sendliteral) { +- prot_printf(pout, "{%d+}\r\n", strlen(base64)); +- prot_flush(pout); +- } +- prot_printf(pout, "%s", base64); ++ /* send to server */ ++ if (sendliteral) { ++ prot_printf(pout, "{%d+}\r\n", strlen(base64)); ++ prot_flush(pout); + } ++ prot_printf(pout, "%s", base64); ++ + noinitresp: + prot_printf(pout, "\r\n"); + prot_flush(pout); +@@ -281,10 +284,23 @@ + r = SASL_BADAUTH; + break; + } +- else if (!strncasecmp(buf, sasl_cmd->cont, strlen(sasl_cmd->cont))) { ++ else if (sasl_cmd->cont && ++ !strncasecmp(buf, sasl_cmd->cont, strlen(sasl_cmd->cont))) { + /* continue */ + base64 = buf + strlen(sasl_cmd->cont); + } ++ else if (!sasl_cmd->cont && buf[0] == '{') { ++ unsigned int litsize = atoi(buf+1); ++ ++ /* get actual literal data */ ++ if (!prot_fgets(buf, AUTH_BUF_SIZE, pin)) { ++ if (sasl_result) *sasl_result = SASL_FAIL; ++ if (status) *status = "EOF from server"; ++ return IMAP_SASL_PROTERR; ++ } ++ ++ base64 = buf; ++ } + else { + /* unknown response */ + if (status) *status = buf; +diff -urNad cyrus-imapd-2.2.13/lib/imapoptions cyrus-imapd-2.2.13/lib/imapoptions +--- cyrus-imapd-2.2.13/lib/imapoptions 2006-08-31 16:46:22.000000000 +0200 ++++ cyrus-imapd-2.2.13/lib/imapoptions 2006-08-31 16:53:44.074560998 +0200 +@@ -42,7 +42,7 @@ + .\" AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + .\" OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + .\" +-.\" $Id: imapoptions,v 1.37 2006/06/05 23:31:22 murch Exp $ ++.\" $Id: imapoptions,v 1.38 2006/08/30 16:29:11 murch Exp $ + .SH NAME + imapd.conf \- IMAP configuration file + .SH DESCRIPTION +@@ -853,6 +853,11 @@ + /* If using the alternate IMAP namespace, the prefix for the other users + namespace. The hierarchy delimiter will be automatically appended. */ + ++{ "sieve_allowreferrals", 1, SWITCH } ++/* If enabled, timsieved will issue referrals to clients when the ++ user's scripts reside on a remote server (in a Murder). ++ Otherwise, timsieved will proxy traffic to the remote server. */ ++ + # xxx badly worded + { "unix_group_enable", 1, SWITCH } + /* Should we look up groups when using auth_unix (disable this if you are +diff -urNad cyrus-imapd-2.2.13/timsieved/Makefile.in cyrus-imapd-2.2.13/timsieved/Makefile.in +--- cyrus-imapd-2.2.13/timsieved/Makefile.in 2006-08-31 16:44:13.000000000 +0200 ++++ cyrus-imapd-2.2.13/timsieved/Makefile.in 2006-08-31 16:53:15.967326349 +0200 +@@ -1,5 +1,5 @@ + # Makefile.in - timsieved makefile +-# $Id: Makefile.in,v 1.24 2004/05/28 18:03:10 rjs3 Exp $ ++# $Id: Makefile.in,v 1.25 2006/08/30 16:29:11 murch Exp $ + # @configure_input@ + # + # Copyright (c) 1998-2000 Carnegie Mellon University. All rights reserved. +@@ -83,7 +83,7 @@ + $(INSTALL) -m 755 timsieved $(DESTDIR)$(service_path) + + OBJS= actions.o lex.o mystring.o scripttest.o timsieved.o parser.o \ +- ../imap/tls.o ++ ../imap/tls.o ../imap/backend.o + + timsieved: $(OBJS) $(SERVICE) + $(CC) $(LDFLAGS) -o timsieved \ +diff -urNad cyrus-imapd-2.2.13/timsieved/actions.c cyrus-imapd-2.2.13/timsieved/actions.c +--- cyrus-imapd-2.2.13/timsieved/actions.c 2006-08-31 16:44:13.000000000 +0200 ++++ cyrus-imapd-2.2.13/timsieved/actions.c 2006-08-31 16:53:15.967326349 +0200 +@@ -1,6 +1,6 @@ + /* actions.c -- executes the commands for timsieved + * Tim Martin +- * $Id: actions.c,v 1.38 2005/11/18 14:18:18 murch Exp $ ++ * $Id: actions.c,v 1.39 2006/08/30 16:29:11 murch Exp $ + */ + /* + * Copyright (c) 1998-2003 Carnegie Mellon University. All rights reserved. +@@ -177,8 +177,9 @@ + int mechcount; + + /* implementation */ +- prot_printf(conn, "\"IMPLEMENTATION\" \"Cyrus timsieved %s\"\r\n", +- CYRUS_VERSION); ++ prot_printf(conn, ++ "\"IMPLEMENTATION\" \"Cyrus timsieved%s %s\"\r\n", ++ config_mupdate_server ? " (Murder)" : "", CYRUS_VERSION); + + /* SASL */ + if (!authenticated && +diff -urNad cyrus-imapd-2.2.13/timsieved/parser.c cyrus-imapd-2.2.13/timsieved/parser.c +--- cyrus-imapd-2.2.13/timsieved/parser.c 2006-08-31 16:44:13.000000000 +0200 ++++ cyrus-imapd-2.2.13/timsieved/parser.c 2006-08-31 16:53:15.968326251 +0200 +@@ -1,7 +1,7 @@ + /* parser.c -- parser used by timsieved + * Tim Martin + * 9/21/99 +- * $Id: parser.c,v 1.39 2005/11/03 13:41:54 murch Exp $ ++ * $Id: parser.c,v 1.40 2006/08/30 16:29:11 murch Exp $ + */ + /* + * Copyright (c) 1998-2003 Carnegie Mellon University. All rights reserved. +@@ -60,6 +60,7 @@ + #include "libconfig.h" + #include "global.h" + #include "auth.h" ++#include "backend.h" + #include "mboxname.h" + #include "mboxlist.h" + #include "xmalloc.h" +@@ -90,6 +91,7 @@ + /* from elsewhere */ + void fatal(const char *s, int code); + extern int sieved_logfd; ++extern struct backend *backend; + + /* forward declarations */ + static void cmd_logout(struct protstream *sieved_out, +@@ -680,19 +682,20 @@ + } + + if(type & MBTYPE_REMOTE) { +- /* It's a remote mailbox, we want to set up a referral */ +- if (sieved_domainfromip) { +- char *authname, *p; ++ /* It's a remote mailbox */ ++ if (config_getswitch(IMAPOPT_SIEVE_ALLOWREFERRALS)) { ++ /* We want to set up a referral */ ++ if (sieved_domainfromip) { ++ char *authname, *p; + +- /* get a new copy of the userid */ +- free(username); +- username = xstrdup(canon_user); ++ /* get a new copy of the userid */ ++ free(username); ++ username = xstrdup(canon_user); + +- /* get the authid from SASL */ +- sasl_result=sasl_getprop(sieved_saslconn, SASL_AUTHUSER, +- (const void **) &canon_user); +- if (sasl_result!=SASL_OK) +- { ++ /* get the authid from SASL */ ++ sasl_result=sasl_getprop(sieved_saslconn, SASL_AUTHUSER, ++ (const void **) &canon_user); ++ if (sasl_result!=SASL_OK) { + *errmsg = "Internal SASL error"; + syslog(LOG_ERR, "SASL: sasl_getprop SASL_AUTHUSER: %s", + sasl_errstring(sasl_result, NULL, NULL)); +@@ -704,21 +707,46 @@ + ret = FALSE; + goto cleanup; + } +- authname = xstrdup(canon_user); ++ authname = xstrdup(canon_user); + +- if ((p = strchr(authname, '@'))) *p = '%'; +- if ((p = strchr(username, '@'))) *p = '%'; ++ if ((p = strchr(authname, '@'))) *p = '%'; ++ if ((p = strchr(username, '@'))) *p = '%'; + +- referral_host = +- (char*) xmalloc(strlen(authname)+1+strlen(username)+1+ +- strlen(server)+1); +- sprintf((char*) referral_host, "%s;%s@%s", +- authname, username, server); ++ referral_host = ++ (char*) xmalloc(strlen(authname)+1+strlen(username)+1+ ++ strlen(server)+1); ++ sprintf((char*) referral_host, "%s;%s@%s", ++ authname, username, server); + +- free(authname); ++ free(authname); ++ } ++ else ++ referral_host = xstrdup(server); ++ } ++ else { ++ /* We want to set up a connection to the backend for proxying */ ++ const char *statusline = NULL; ++ ++ /* xxx hide the fact that we are storing partitions */ ++ if (server) { ++ char *c; ++ c = strchr(server, '!'); ++ if(c) *c = '\0'; ++ } ++ ++ backend = backend_connect(NULL, server, &protocol[PROTOCOL_SIEVE], ++ username, &statusline); ++ ++ if (!backend) { ++ syslog(LOG_ERR, "couldn't authenticate to backend server"); ++ prot_printf(sieved_out, "NO \"%s\"\r\n", ++ statusline ? statusline : ++ "Authentication to backend server failed"); ++ prot_flush(sieved_out); ++ ++ goto cleanup; ++ } + } +- else +- referral_host = xstrdup(server); + } else if (actions_setuser(username) != TIMSIEVE_OK) { + *errmsg = "internal error"; + syslog(LOG_ERR, "error in actions_setuser()"); +diff -urNad cyrus-imapd-2.2.13/timsieved/timsieved.c cyrus-imapd-2.2.13/timsieved/timsieved.c +--- cyrus-imapd-2.2.13/timsieved/timsieved.c 2006-08-31 16:44:13.000000000 +0200 ++++ cyrus-imapd-2.2.13/timsieved/timsieved.c 2006-08-31 16:53:15.968326251 +0200 +@@ -1,7 +1,7 @@ + /* timsieved.c -- main file for timsieved (sieve script accepting program) + * Tim Martin + * 9/21/99 +- * $Id: timsieved.c,v 1.56 2005/11/18 14:18:35 murch Exp $ ++ * $Id: timsieved.c,v 1.57 2006/08/30 16:29:11 murch Exp $ + */ + /* + * Copyright (c) 1998-2003 Carnegie Mellon University. All rights reserved. +@@ -82,6 +82,7 @@ + + #include "auth.h" + #include "acl.h" ++#include "backend.h" + #include "mboxlist.h" + #include "util.h" + +@@ -117,12 +118,24 @@ + 1, 1, &sieved_authstate, &sieved_userisadmin, NULL + }; + ++/* PROXY stuff */ ++struct backend *backend = NULL; ++ ++static void bitpipe(void); ++/* end PROXY stuff */ ++ + /* + * Cleanly shut down and exit + */ + void shut_down(int code) __attribute__ ((noreturn)); + void shut_down(int code) + { ++ /* close backend connection */ ++ if (backend) { ++ backend_disconnect(backend, &protocol[PROTOCOL_SIEVE]); ++ free(backend); ++ } ++ + /* close mailboxes */ + mboxlist_close(); + mboxlist_done(); +@@ -161,6 +174,14 @@ + + while (ret != TRUE) + { ++ if (backend) { ++ /* create a pipe from client to backend */ ++ bitpipe(); ++ ++ /* pipe has been closed */ ++ return; ++ } ++ + ret = parser(sieved_out, sieved_in); + } + +@@ -202,7 +223,7 @@ + char **argv __attribute__((unused)), + char **envp __attribute__((unused))) + { +- global_sasl_init(0, 1, mysasl_cb); ++ global_sasl_init(1, 1, mysasl_cb); + + /* open mailboxes */ + mboxlist_init(0); +@@ -351,3 +372,79 @@ + + return SASL_OK; + } ++ ++/* we've authenticated the client, we've connected to the backend. ++ now it's all up to them */ ++static void bitpipe(void) ++{ ++ struct protgroup *protin = protgroup_new(2); ++ struct protgroup *protout = NULL; ++ struct timeval timeout; ++ int n, shutdown = 0; ++ char buf[4096]; ++ ++ /* Reset protin to all zeros (to preserve memory allocation) */ ++ protgroup_reset(protin); ++ protgroup_insert(protin, sieved_in); ++ protgroup_insert(protin, backend->in); ++ ++ for (;;) { ++ /* check for shutdown file */ ++ if (shutdown_file(buf, sizeof(buf))) { ++ shutdown = 1; ++ goto done; ++ } ++ ++ /* Clear protout if needed */ ++ protgroup_free(protout); ++ protout = NULL; ++ ++ timeout.tv_sec = 60; ++ timeout.tv_usec = 0; ++ ++ n = prot_select(protin, PROT_NO_FD, &protout, NULL, &timeout); ++ if (n == -1) { ++ syslog(LOG_ERR, "prot_select() failed in bitpipe(): %m"); ++ fatal("prot_select() failed in bitpipe()", EC_TEMPFAIL); ++ } ++ if (n && protout) { ++ struct protstream *ptmp; ++ ++ for (; n; n--) { ++ ptmp = protgroup_getelement(protout, n-1); ++ ++ if (ptmp == sieved_in) { ++ do { ++ int c = prot_read(sieved_in, buf, sizeof(buf)); ++ if (c == 0 || c < 0) goto done; ++ prot_write(backend->out, buf, c); ++ } while (sieved_in->cnt > 0); ++ prot_flush(backend->out); ++ } ++ else if (ptmp == backend->in) { ++ do { ++ int c = prot_read(backend->in, buf, sizeof(buf)); ++ if (c == 0 || c < 0) goto done; ++ prot_write(sieved_out, buf, c); ++ } while (backend->in->cnt > 0); ++ prot_flush(sieved_out); ++ } ++ else { ++ /* XXX shouldn't get here !!! */ ++ fatal("unknown protstream returned by prot_select in bitpipe()", ++ EC_SOFTWARE); ++ } ++ } ++ } ++ } ++ ++ ++ done: ++ /* ok, we're done. */ ++ protgroup_free(protin); ++ protgroup_free(protout); ++ ++ if (shutdown) prot_printf(sieved_out, "NO \"%s\"\r\n", buf); ++ ++ return; ++} --- cyrus-imapd-2.2-2.2.13.orig/debian/patches/15-munge_8bit.dpatch +++ cyrus-imapd-2.2-2.2.13/debian/patches/15-munge_8bit.dpatch @@ -0,0 +1,75 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 15_munge_8bit.dpatch by Sven Mueller +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Add support for munge8bit + +@DPATCH@ +diff -urNad complete.dpatch/imap/message.c complete.dpatch/imap/message.c +--- complete.dpatch/imap/message.c 2004-09-16 19:58:54.000000000 +0200 ++++ complete.dpatch/imap/message.c 2005-11-10 17:02:02.658034914 +0100 +@@ -227,6 +227,7 @@ + int n; + int sawcr = 0, sawnl; + int reject8bit = config_getswitch(IMAPOPT_REJECT8BIT); ++ int munge8bit = config_getswitch(IMAPOPT_MUNGE8BIT); + int inheader = 1, blankline = 1; + + while (size) { +@@ -262,7 +263,7 @@ + /* We have been configured to reject all mail of this + form. */ + if (!r) r = IMAP_MESSAGE_CONTAINS8BIT; +- } else { ++ } else if (munge8bit) { + /* We have been configured to munge all mail of this + form. */ + *p = 'X'; +diff -urNad complete.dpatch/imap/spool.c complete.dpatch/imap/spool.c +--- complete.dpatch/imap/spool.c 2004-10-27 22:40:50.000000000 +0200 ++++ complete.dpatch/imap/spool.c 2005-11-10 17:02:02.658034914 +0100 +@@ -140,6 +140,7 @@ + state s = NAME_START; + int r = 0; + int reject8bit = config_getswitch(IMAPOPT_REJECT8BIT); ++ int munge8bit = config_getswitch(IMAPOPT_MUNGE8BIT); + const char **skip = NULL; + + if (namelen == 0) { +@@ -266,7 +267,7 @@ + form. */ + r = IMAP_MESSAGE_CONTAINS8BIT; + goto ph_error; +- } else { ++ } else if (munge8bit) { + /* We have been configured to munge all mail of this + form. */ + c = 'X'; +diff -urNad complete.dpatch/lib/imapoptions complete.dpatch/lib/imapoptions +--- complete.dpatch/lib/imapoptions 2004-07-21 21:07:45.000000000 +0200 ++++ complete.dpatch/lib/imapoptions 2005-11-10 17:02:02.659034816 +0100 +@@ -458,6 +458,11 @@ + { "mboxlist_db", "skiplist", STRINGLIST("flat", "berkeley", "skiplist")} + /* The cyrusdb backend to use for the mailbox list. */ + ++{ "munge8bit", 1, SWITCH } ++/* If enabled, lmtpd changes 8-bit characters to `X'. Also see reject8bit. ++ (A proper soultion to non-ASCII characters in headers is offered by ++ RFC 2047 and its predecessors.) */ ++ + # xxx badly worded + { "mupdate_connections_max", 128, INT } + /* The max number of connections that a mupdate process will allow, this +@@ -670,9 +675,9 @@ + + { "reject8bit", 0, SWITCH } + /* If enabled, lmtpd rejects messages with 8-bit characters in the +- headers. Otherwise, 8-bit characters are changed to `X'. (A +- proper soultion to non-ASCII characters in headers is offered by +- RFC 2047 and its predecessors.) */ ++ headers. Also see munge8bit, which is only applied if reject8bit is ++ not activated. (A proper soultion to non-ASCII characters in headers ++ is offered by RFC 2047 and its predecessors.) */ + + { "rfc2046_strict", 0, SWITCH } + /* If enabled, imapd will be strict (per RFC 2046) when matching MIME --- cyrus-imapd-2.2-2.2.13.orig/debian/patches/0017-upstream-no-body-empty-string-instead-of-null.dpatch +++ cyrus-imapd-2.2-2.2.13/debian/patches/0017-upstream-no-body-empty-string-instead-of-null.dpatch @@ -0,0 +1,52 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 0017-upstream-no-body-empty-string-instead-of-null by murch@andrew.cmu.edu +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: return an empty string for empty body parts instead of NULL + +@DPATCH@ +diff -urNad cyrus-imapd-2.2.13/lib/charset.c cyrus-imapd-2.2.13/lib/charset.c +--- cyrus-imapd-2.2.13/lib/charset.c 2005-03-12 23:09:22.000000000 +0100 ++++ cyrus-imapd-2.2.13/lib/charset.c 2006-08-06 19:55:36.020854674 +0200 +@@ -39,7 +39,7 @@ + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + /* +- * $Id: charset.c,v 1.44 2003/10/22 18:50:12 rjs3 Exp $ ++ * $Id: charset.c,v 1.45 2006/06/14 12:44:05 murch Exp $ + */ + #include + #include +@@ -861,24 +861,22 @@ + return (char *) msg_base; + + case ENCODING_QP: +- if (alloced < len) +- *retval = xrealloc(*retval, len); +- *outlen = charset_readqp(&state, *retval, len); +- return (*outlen ? *retval : NULL); ++ state.rawproc = charset_readqp; ++ break; + + case ENCODING_BASE64: +- if (alloced < len) +- *retval = xrealloc(*retval, len); +- *outlen = charset_readbase64(&state, *retval, len); +- return (*outlen ? *retval : NULL); ++ state.rawproc = charset_readbase64; ++ break; + + default: + /* Don't know encoding--nothing can match */ + return NULL; + } + +- /* should never get here */ +- return NULL; ++ if (alloced < len+1) *retval = xrealloc(*retval, len+1); ++ *outlen = (*state.rawproc)(&state, *retval, len); ++ (*retval)[*outlen] = '\0'; ++ return *retval; + } + + /* --- cyrus-imapd-2.2-2.2.13.orig/debian/patches/09-kerberos-ipv4-ipv6-kludge-removal.dpatch +++ cyrus-imapd-2.2-2.2.13/debian/patches/09-kerberos-ipv4-ipv6-kludge-removal.dpatch @@ -0,0 +1,53 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 09-kerberos-ipv4-ipv6-kludge-removal.dpatch by Sven Mueller +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Remove a kludge which turned IPv4 addresses in IPv6 address space back +## DP: into real IPv4 addresses. + +@DPATCH@ +diff -urNad complete.dpatch/imap/pop3d.c complete.dpatch/imap/pop3d.c +--- complete.dpatch/imap/pop3d.c 2005-11-11 00:11:13.000000000 +0100 ++++ complete.dpatch/imap/pop3d.c 2005-11-11 00:15:17.166894681 +0100 +@@ -522,41 +522,6 @@ + } + + #ifdef HAVE_KRB +-/* translate IPv4 mapped IPv6 address to IPv4 address */ +-#ifdef IN6_IS_ADDR_V4MAPPED +-static void sockaddr_unmapped(struct sockaddr *sa, socklen_t *len) +-{ +- struct sockaddr_in6 *sin6; +- struct sockaddr_in *sin4; +- uint32_t addr; +- int port; +- +- if (sa->sa_family != AF_INET6) +- return; +- sin6 = (struct sockaddr_in6 *)sa; +- if (!IN6_IS_ADDR_V4MAPPED((&sin6->sin6_addr))) +- return; +- sin4 = (struct sockaddr_in *)sa; +- addr = *(uint32_t *)&sin6->sin6_addr.s6_addr[12]; +- port = sin6->sin6_port; +- memset(sin4, 0, sizeof(struct sockaddr_in)); +- sin4->sin_addr.s_addr = addr; +- sin4->sin_port = port; +- sin4->sin_family = AF_INET; +-#ifdef HAVE_SOCKADDR_SA_LEN +- sin4->sin_len = sizeof(struct sockaddr_in); +-#endif +- *len = sizeof(struct sockaddr_in); +-} +-#else +-static void sockaddr_unmapped(struct sockaddr *sa __attribute__((unused)), +- socklen_t *len __attribute__((unused))) +-{ +- return; +-} +-#endif +- +- + /* + * MIT's kludge of a kpop protocol + * Client does a krb_sendauth() first thing --- cyrus-imapd-2.2-2.2.13.orig/debian/patches/0005-upstream-fix-ctl_mboxlist-dump-undump.dpatch +++ cyrus-imapd-2.2-2.2.13/debian/patches/0005-upstream-fix-ctl_mboxlist-dump-undump.dpatch @@ -0,0 +1,92 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 0005-upstream-fix-ctl_mboxlist-dump-undump.dpatch by Sven Mueller +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Fix a problem in ctl_mboxlist with remote mailboxes (it now also dumps +## DP: and undumps mailbox type flags) + +@DPATCH@ +diff -urNad cyrus-imapd-2.2.13/doc/changes.html cyrus-imapd-2.2.13/doc/changes.html +--- cyrus-imapd-2.2.13/doc/changes.html 2006-05-03 17:19:51.000000000 +0200 ++++ cyrus-imapd-2.2.13/doc/changes.html 2006-05-03 17:26:24.115155499 +0200 +@@ -8,6 +8,12 @@ + + + ++

Changes to the Cyrus IMAP Server since 2.2.13

++
    ++
  • ctl_mboxlist now dumps/undumps the mailbox type flags, ++making it useful for remote mailboxes.
  • ++
++ +

Changes to the Cyrus IMAP Server since 2.2.12

+
    +
  • Allow sieve scripts to be run on shared mailboxes (via sieve +diff -urNad cyrus-imapd-2.2.13/imap/ctl_mboxlist.c cyrus-imapd-2.2.13/imap/ctl_mboxlist.c +--- cyrus-imapd-2.2.13/imap/ctl_mboxlist.c 2006-05-03 17:19:51.000000000 +0200 ++++ cyrus-imapd-2.2.13/imap/ctl_mboxlist.c 2006-05-03 17:26:24.129154183 +0200 +@@ -187,7 +187,7 @@ + switch (d->op) { + case DUMP: + if(!d->partition || !strcmp(d->partition, part)) { +- printf("%s\t%s\t%s\n", name, part, acl); ++ printf("%s\t%d %s\t%s\n", name, mbtype, part, acl); + if(d->purge) { + config_mboxlist_db->delete(mbdb, key, keylen, &(d->tid), 0); + } +@@ -490,7 +490,7 @@ + while (fgets(buf, sizeof(buf), stdin)) { + char *name, *partition, *acl; + char *p; +- int tries = 0; ++ int mbtype = 0, tries = 0; + + line++; + +@@ -501,6 +501,12 @@ + continue; + } + *p++ = '\0'; ++ if (isdigit((int) *p)) { ++ /* new style dump */ ++ mbtype = strtol(p, &p, 10); ++ /* skip trailing space */ ++ if (*p == ' ') p++; ++ } + partition = p; + for (; *p && *p != '\t'; p++) ; + if (!*p) { +@@ -523,7 +529,7 @@ + } + + key = name; keylen = strlen(key); +- data = mboxlist_makeentry(0, partition, acl); datalen = strlen(data); ++ data = mboxlist_makeentry(mbtype, partition, acl); datalen = strlen(data); + + tries = 0; + retry: +diff -urNad cyrus-imapd-2.2.13/man/ctl_mboxlist.8 cyrus-imapd-2.2.13/man/ctl_mboxlist.8 +--- cyrus-imapd-2.2.13/man/ctl_mboxlist.8 2006-05-03 17:19:51.000000000 +0200 ++++ cyrus-imapd-2.2.13/man/ctl_mboxlist.8 2006-05-03 17:26:24.125154559 +0200 +@@ -104,7 +104,9 @@ + .TP + .B \-d + Dump the contents of the database to standard output in a portable +-flat-text format. ++flat-text format. NOTE: In Cyrus versions 2.2.13 and earlier, the dump ++format did not include the mailbox type flags, breaking remote ++mailboxes (frontends, mupdate master) when undumped. + .TP + .B \-x + When performing a dump, remove the mailboxes dumped from the mailbox list +@@ -115,7 +117,9 @@ + .TP + .B \-u + Load the contents of the database from standard input. The input MUST +-be in the format output using the \fB\-d\fR option. ++be in the format output using the \fB\-d\fR option. NOTE: Both the ++old and new formats can be loaded, but the old format will break ++remote mailboxes. + .TP + .B \-m + For backend servers in the Cyrus Murder, synchronize the local mailbox list --- cyrus-imapd-2.2-2.2.13.orig/debian/patches/04-add_autogen.sh.dpatch +++ cyrus-imapd-2.2-2.2.13/debian/patches/04-add_autogen.sh.dpatch @@ -0,0 +1,88 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 04-add_autogen.sh.dpatch by Sven Mueller +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Add autogen.sh + +@DPATCH@ +diff -urNad cyrus-imapd-2.2.12/autogen.sh cyrus-imapd-2.2.12/autogen.sh +--- cyrus-imapd-2.2.12/autogen.sh 1970-01-01 01:00:00.000000000 +0100 ++++ cyrus-imapd-2.2.12/autogen.sh 2005-11-11 19:47:43.571058024 +0100 +@@ -0,0 +1,77 @@ ++#!/bin/sh ++# ++# autogen.sh glue for CMU Cyrus IMAP ++# $Id: autogen.sh,v 1.16 2004/09/12 15:30:23 hmh Exp $ ++# ++# Requires: automake 1.9, autoconf 2.57, dpkg-dev ++set -e ++ ++# Refresh GNU autotools toolchain. ++echo Running GNU autotools toolchain... ++AUTOMAKEDIR=/usr/share/automake-1.9 ++[ -n "$AUTOMAKEDIR" ] && ++ for i in config.guess config.sub install-sh mkinstalldirs ; do ++ test -r ${AUTOMAKEDIR}/${i} && { ++ rm -f ${i} || true ++ cp ${AUTOMAKEDIR}/${i} . ++ } ++ chmod 755 ${i} ++ done ++ ++aclocal-1.9 -I cmulocal ++autoheader ++#automake --verbose --foreign --add-missing ++autoconf ++ ++# For the Debian build ++test -d debian && { ++ # Kill executable list first ++ #rm -f debian/executable.files ++ ++ # Make sure our executable and removable lists won't be screwed up ++ #debclean && echo Cleaned buildtree just in case... ++ ++ # refresh list of executable scripts, to avoid possible breakage if ++ # upstream tarball does not include the file or if it is mispackaged ++ # for whatever reason. ++ #echo Generating list of executable files... ++ #rm -f debian/executable.files ++ #find -type f -perm +111 ! -name '.*' -print | sort > debian/executable.files ++ ++ # even in Debian builds, copy them in, don't link them ++ rm -f config.sub config.guess ++ cp /usr/share/misc/config.sub . ++ cp /usr/share/misc/config.guess . ++ ++ # Remove any files in upstream tarball that we don't have in the Debian ++ # package (because diff cannot remove files) ++ # THIS CRAP IS NOT EMBEDDED SPACE-SAFE! ++ version=`dpkg-parsechangelog | awk '/Version:/ { print $2 }' | sed -e 's/-[^-]\+$//'` ++ source=`dpkg-parsechangelog | awk '/Source:/ { print $2 }' | tr -d ' '` ++ #if test -r ../${source}_${version}.orig.tar.gz ; then ++ # echo Generating list of files that should be removed... ++ # rm -f debian/deletable.files ++ # touch debian/deletable.files.new ++ # mkdir debian/tmp ++ # cd debian/tmp ++ # tar -zxf ../../../${source}_${version}.orig.tar.gz ++ # # et/ we handle directly ++ # rm -fr */et/ ++ # cd ../.. ++ # for i in `find debian/tmp/ -type f ! -name '.*' -print | xargs` ; do ++ # if test -r ${i} ; then ++ # filename=`echo "${i}" | sed -e 's#.*debian/tmp/[^/]+/##'` ++ # test -r "${filename}" || echo "${filename}" >>debian/deletable.files.new ++ # fi ++ # done ++ # sort < debian/deletable.files.new > debian/deletable.files \ ++ # && rm debian/deletable.files.new ++ # rm -fr debian/tmp ++ #else ++ # echo Emptying list of files that should be deleted... ++ # rm -f debian/deletable.files ++ # touch debian/deletable.files ++ #fi ++} ++ ++exit 0 --- cyrus-imapd-2.2-2.2.13.orig/debian/patches/85-fix-option-passing.dpatch +++ cyrus-imapd-2.2-2.2.13/debian/patches/85-fix-option-passing.dpatch @@ -0,0 +1,19 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 85-fix-option-passing.dpatch by Sven Mueller +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: No description. + +@DPATCH@ +diff -urNad cyrus-imapd-2.2.13~/lib/Makefile.in cyrus-imapd-2.2.13/lib/Makefile.in +--- cyrus-imapd-2.2.13~/lib/Makefile.in 2007-08-06 21:16:23.419137227 +0200 ++++ cyrus-imapd-2.2.13/lib/Makefile.in 2007-08-06 21:23:51.158077242 +0200 +@@ -134,7 +134,7 @@ + $(RANLIB) libcyrus_min.a + + imapopts.c: imapoptions $(srcdir)/../tools/config2header +- sed -e "s/%IDLE%/$(IDLE)/g" < $(srcdir)/imapoptions | $(srcdir)/../tools/config2header CC=$(CC) $(srcdir)/imapopts.c $(srcdir)/imapopts.h ++ sed -e "s/%IDLE%/$(IDLE)/g" < $(srcdir)/imapoptions | $(srcdir)/../tools/config2header CC="$(CC)" $(srcdir)/imapopts.c $(srcdir)/imapopts.h + + imapopts.h: imapopts.c + --- cyrus-imapd-2.2-2.2.13.orig/debian/patches/0008-upstream-better-message-track-logging.dpatch +++ cyrus-imapd-2.2-2.2.13/debian/patches/0008-upstream-better-message-track-logging.dpatch @@ -0,0 +1,114 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 0008-upstream-better-message-track-logging by Sven Mueller +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: better logging to facilitate message tracking (Wes Craig ) + +@DPATCH@ +diff -urNad cyrus-imapd-2.2.13/imap/lmtp_sieve.c cyrus-imapd-2.2.13/imap/lmtp_sieve.c +--- cyrus-imapd-2.2.13/imap/lmtp_sieve.c 2006-03-31 20:18:13.000000000 +0200 ++++ cyrus-imapd-2.2.13/imap/lmtp_sieve.c 2006-05-12 12:17:52.579503152 +0200 +@@ -1,6 +1,6 @@ + /* lmtp_sieve.c -- Sieve implementation for lmtpd + * +- * $Id: lmtp_sieve.c,v 1.11 2005/11/21 16:26:16 murch Exp $ ++ * $Id: lmtp_sieve.c,v 1.12 2006/05/10 16:27:17 murch Exp $ + * Copyright (c) 1998-2003 Carnegie Mellon University. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without +@@ -327,6 +327,8 @@ + sievedb, strlen(sievedb), time(NULL), 0); + + snmp_increment(SIEVE_REDIRECT, 1); ++ syslog(LOG_INFO, "sieve redirected: %s to: %s", ++ m->id ? m->id : "", rc->addr); + return SIEVE_OK; + } else { + if (res == -1) { +@@ -349,17 +351,8 @@ + snmp_increment(SIEVE_DISCARD, 1); + + /* ok, we won't file it, but log it */ +- if (md->id && strlen(md->id) < 80) { +- char pretty[160]; +- +- beautify_copy(pretty, md->id); +- syslog(LOG_INFO, "sieve: discarded message to %s id %s", +- sd->username, pretty); +- } +- else { +- syslog(LOG_INFO, "sieve: discarded message to %s", +- sd->username); +- } ++ syslog(LOG_INFO, "sieve discarded: %s", ++ md->id ? md->id : ""); + + return SIEVE_OK; + } +@@ -383,7 +376,7 @@ + + if (strlen(md->return_path) == 0) { + syslog(LOG_INFO, "sieve: discarded reject to <> for %s id %s", +- sd->username, md->id); ++ sd->username, md->id ? md->id : ""); + return SIEVE_OK; + } + +@@ -393,6 +386,8 @@ + origreceip, sd->username, + rc->msg, md->data)) == 0) { + snmp_increment(SIEVE_REJECT, 1); ++ syslog(LOG_INFO, "sieve rejected: %s to: %s", ++ md->id ? md->id : "", md->return_path); + return SIEVE_OK; + } else { + if (res == -1) { +diff -urNad cyrus-imapd-2.2.13/imap/lmtpd.c cyrus-imapd-2.2.13/imap/lmtpd.c +--- cyrus-imapd-2.2.13/imap/lmtpd.c 2006-05-06 10:34:48.000000000 +0200 ++++ cyrus-imapd-2.2.13/imap/lmtpd.c 2006-05-12 12:17:52.578503246 +0200 +@@ -1,6 +1,6 @@ + /* lmtpd.c -- Program to deliver mail to a mailbox + * +- * $Id: lmtpd.c,v 1.143 2006/01/20 20:29:33 jeaton Exp $ ++ * $Id: lmtpd.c,v 1.144 2006/05/10 16:27:17 murch Exp $ + * Copyright (c) 1998-2003 Carnegie Mellon University. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without +@@ -321,6 +321,7 @@ + strlen(mailboxname), now, uid); + + append_commit(&as, quotaoverride ? -1 : 0, NULL, &uid, NULL); ++ syslog(LOG_INFO, "Delivered: %s to mailbox: %s", id, mailboxname); + } + } + +diff -urNad cyrus-imapd-2.2.13/imap/mailbox.c cyrus-imapd-2.2.13/imap/mailbox.c +--- cyrus-imapd-2.2.13/imap/mailbox.c 2006-05-06 10:34:48.000000000 +0200 ++++ cyrus-imapd-2.2.13/imap/mailbox.c 2006-05-12 12:17:52.581502964 +0200 +@@ -1,5 +1,5 @@ + /* mailbox.c -- Mailbox manipulation routines +- * $Id: mailbox.c,v 1.159 2005/04/07 00:25:52 shadow Exp $ ++ * $Id: mailbox.c,v 1.160 2006/05/10 16:27:18 murch Exp $ + * Copyright (c) 1998-2003 Carnegie Mellon University. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without +@@ -1931,6 +1931,11 @@ + } + } + ++ if (numdeleted > 0) { ++ syslog(LOG_NOTICE, "Expunged %d messages from %s", ++ numdeleted, mailbox->name); ++ } ++ + free(buf); + if (deleted) free(deleted); + +@@ -2187,6 +2192,7 @@ + *tail = '\0'; + } while (rmdir(buf) == 0 && (tail = strrchr(buf, '/'))); + ++ syslog(LOG_NOTICE, "Deleted mailbox %s", mailbox->name); + mailbox_close(mailbox); + return 0; + } --- cyrus-imapd-2.2-2.2.13.orig/debian/patches/26-local-getline.dpatch +++ cyrus-imapd-2.2-2.2.13/debian/patches/26-local-getline.dpatch @@ -0,0 +1,88 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 26-local-getline.dpatch by Mathieu Parent +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Rename conflicting function getline +## DP: See http://bugs.debian.org/552865 and http://bugs.debian.org/552848 + +@DPATCH@ +diff -urNad kolab-cyrus-imapd-2.2.13~/contrib/sieve-spamasssassin kolab-cyrus-imapd-2.2.13/contrib/sieve-spamasssassin +--- kolab-cyrus-imapd-2.2.13~/contrib/sieve-spamasssassin 2002-05-10 00:00:46.000000000 +0200 ++++ kolab-cyrus-imapd-2.2.13/contrib/sieve-spamasssassin 2009-11-11 19:52:40.000000000 +0100 +@@ -85,7 +85,7 @@ + + /* spam support */ + + + + static int +-+ getline (int s, char *buf, int len) +++ local_getline (int s, char *buf, int len) + + { + + char *bp = buf; + + int ret = 1; +@@ -129,8 +129,8 @@ + + int score; + + int threshold; + + +-+ if (! getline (s, buf, sizeof (buf))) { +-+ syslog (LOG_ERR, "read_response: response getline failed"); +++ if (! local_getline (s, buf, sizeof (buf))) { +++ syslog (LOG_ERR, "read_response: response local_getline failed"); + + return SIEVE_FAIL; + + } + + if (sscanf (buf, "SPAMD/%d.%d %d %*s", &major, &minor, &response) != 3) { +@@ -143,8 +143,8 @@ + + major, minor); + + return SIEVE_FAIL; + + } +-+ if (! getline (s, buf, sizeof (buf))) { +-+ syslog (LOG_ERR, "read_response: header getline failed"); +++ if (! local_getline (s, buf, sizeof (buf))) { +++ syslog (LOG_ERR, "read_response: header local_getline failed"); + + return SIEVE_FAIL; + + } + + if (sscanf (buf, "Spam: %5s ; %d / %d", is_spam, &score, &threshold) != 3) { +diff -urNad kolab-cyrus-imapd-2.2.13~/makedepend/def.h kolab-cyrus-imapd-2.2.13/makedepend/def.h +--- kolab-cyrus-imapd-2.2.13~/makedepend/def.h 2003-02-13 21:15:43.000000000 +0100 ++++ kolab-cyrus-imapd-2.2.13/makedepend/def.h 2009-11-11 19:51:34.000000000 +0100 +@@ -161,7 +161,7 @@ + + char *copy(); + char *base_name(); +-char *getline(); ++char *local_getline(); + struct symtab *slookup(); + struct symtab *isdefined(); + struct symtab *fdefined(); +diff -urNad kolab-cyrus-imapd-2.2.13~/makedepend/main.c kolab-cyrus-imapd-2.2.13/makedepend/main.c +--- kolab-cyrus-imapd-2.2.13~/makedepend/main.c 2003-02-13 21:15:44.000000000 +0100 ++++ kolab-cyrus-imapd-2.2.13/makedepend/main.c 2009-11-11 19:51:03.000000000 +0100 +@@ -548,7 +548,7 @@ + * Get the next line. We only return lines beginning with '#' since that + * is all this program is ever interested in. + */ +-char *getline(filep) ++char *local_getline(filep) + register struct filepointer *filep; + { + register char *p, /* walking pointer */ +diff -urNad kolab-cyrus-imapd-2.2.13~/makedepend/parse.c kolab-cyrus-imapd-2.2.13/makedepend/parse.c +--- kolab-cyrus-imapd-2.2.13~/makedepend/parse.c 2003-02-13 21:15:44.000000000 +0100 ++++ kolab-cyrus-imapd-2.2.13/makedepend/parse.c 2009-11-11 19:51:19.000000000 +0100 +@@ -82,7 +82,7 @@ + register int type; + boolean recfailOK; + +- while (line = getline(filep)) { ++ while (line = local_getline(filep)) { + switch(type = deftype(line, filep, file_red, file, TRUE)) { + case IF: + doif: +@@ -204,7 +204,7 @@ + register char *line; + register int type; + +- while (line = getline(filep)) { ++ while (line = local_getline(filep)) { + switch(type = deftype(line, filep, file_red, file, FALSE)) { + case IF: + case IFFALSE: + --- cyrus-imapd-2.2-2.2.13.orig/debian/patches/0002-allow_invalid_id_acl_removal.dpatch +++ cyrus-imapd-2.2-2.2.13/debian/patches/0002-allow_invalid_id_acl_removal.dpatch @@ -0,0 +1,51 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 0002-allow_invalid_id_acl_removal.dpatch by Sven Mueller +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Upstream: Allow removal of invalid ID ACLs + +@DPATCH@ +diff -urNad cyrus-imapd-2.2.13/lib/acl_afs.c cyrus-imapd-2.2.13/lib/acl_afs.c +--- cyrus-imapd-2.2.13/lib/acl_afs.c 2005-03-12 23:09:22.000000000 +0100 ++++ cyrus-imapd-2.2.13/lib/acl_afs.c 2006-05-03 15:27:47.049193574 +0200 +@@ -114,6 +114,7 @@ + cyrus_acl_canonproc_t *canonproc; + void *canonrock; + { ++ const char *canonid; + char *newidentifier = 0; + char *newacl; + char *thisid, *nextid; +@@ -122,9 +123,14 @@ + + /* Convert 'identifier' into canonical form */ + if (*identifier == '-') { +- char *canonid = auth_canonifyid(identifier+1, 0); ++ canonid = auth_canonifyid(identifier+1, 0); + if (!canonid) { +- return -1; ++ if (access != 0L) { ++ return -1; ++ } else { ++ /* trying to delete invalid/non-existent identifier */ ++ canonid = identifier+1; ++ } + } + newidentifier = xmalloc(strlen(canonid)+2); + newidentifier[0] = '-'; +@@ -135,9 +141,13 @@ + } + } + else { +- identifier = auth_canonifyid(identifier, 0); +- if (!identifier) { ++ canonid = auth_canonifyid(identifier, 0); ++ if (canonid) { ++ identifier = canonid; ++ } else if (access != 0L) { + return -1; ++ } else { ++ /* trying to delete invalid/non-existent identifier */ + } + if (canonproc) { + access = canonproc(canonrock, identifier, access); --- cyrus-imapd-2.2-2.2.13.orig/debian/patches/19-fix_tls_ssl.dpatch +++ cyrus-imapd-2.2-2.2.13/debian/patches/19-fix_tls_ssl.dpatch @@ -0,0 +1,78 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 19-fix_tls_errormessage.dpatch by Sven Mueller +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Make TLS/SSL error message more informative + +@DPATCH@ +diff -urNad complete.dpatch/imap/tls.c complete.dpatch/imap/tls.c +--- complete.dpatch/imap/tls.c 2005-11-11 15:31:40.000000000 +0100 ++++ complete.dpatch/imap/tls.c 2005-11-11 15:31:41.926478833 +0100 +@@ -166,7 +166,7 @@ + * tim - this seems to just be giving logging messages + */ + +-static void apps_ssl_info_callback(SSL * s, int where, int ret) ++static void apps_ssl_info_callback(const SSL * s, int where, int ret) + { + char *str; + int w; +@@ -679,7 +679,7 @@ + s_key_file = config_getstring(IMAPOPT_TLS_KEY_FILE); + + if (!set_cert_stuff(s_ctx, s_cert_file, s_key_file)) { +- syslog(LOG_ERR,"TLS server engine: cannot load cert/key data"); ++ syslog(LOG_ERR,"TLS server engine: cannot load cert/key data, may be a cert/key mismatch?"); + return (-1); + } + SSL_CTX_set_tmp_rsa_callback(s_ctx, tmp_rsa_cb); +@@ -1098,7 +1098,7 @@ + + if (c_cert_file || c_key_file) { + if (!set_cert_stuff(c_ctx, c_cert_file, c_key_file)) { +- syslog(LOG_ERR,"TLS client engine: cannot load cert/key data"); ++ syslog(LOG_ERR,"TLS client engine: cannot load cert/key data, may be a cert/key mismatch?"); + return (-1); + } + } +diff -urNad complete.dpatch/imtest/imtest.c complete.dpatch/imtest/imtest.c +--- complete.dpatch/imtest/imtest.c 2005-11-11 15:31:41.000000000 +0100 ++++ complete.dpatch/imtest/imtest.c 2005-11-11 15:31:57.244983198 +0100 +@@ -63,6 +63,7 @@ + + #include + #include ++#include + + #include + #include +@@ -418,7 +419,7 @@ + * tim - this seems to just be giving logging messages + */ + +-static void apps_ssl_info_callback(SSL * s, int where, int ret) ++static void apps_ssl_info_callback(const SSL * s, int where, int ret) + { + char *str; + int w; +@@ -531,7 +532,7 @@ + + if (c_cert_file || c_key_file) + if (!set_cert_stuff(tls_ctx, c_cert_file, c_key_file)) { +- printf("TLS engine: cannot load cert/key data\n"); ++ printf("TLS engine: cannot load cert/key data, maybe a cert/key mismatch?\n"); + return IMTEST_FAIL; + } + SSL_CTX_set_tmp_rsa_callback(tls_ctx, tmp_rsa_cb); +diff -urNad complete.dpatch/lib/imclient.c complete.dpatch/lib/imclient.c +--- complete.dpatch/lib/imclient.c 2005-11-11 15:31:40.000000000 +0100 ++++ complete.dpatch/lib/imclient.c 2005-11-11 15:31:41.928478637 +0100 +@@ -1733,7 +1733,7 @@ + + if (c_cert_file || c_key_file) + if (!set_cert_stuff(imclient->tls_ctx, c_cert_file, c_key_file)) { +- printf("[ TLS engine: cannot load cert/key data ]\n"); ++ printf("[ TLS engine: cannot load cert/key data, might be a cert/key mismatch]\n"); + return -1; + } + SSL_CTX_set_tmp_rsa_callback(imclient->tls_ctx, tmp_rsa_cb); --- cyrus-imapd-2.2-2.2.13.orig/debian/patches/77-change-missing-sieve-notice.dpatch +++ cyrus-imapd-2.2-2.2.13/debian/patches/77-change-missing-sieve-notice.dpatch @@ -0,0 +1,32 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 77-change-missing-sieve-notice.dpatch.dpatch by Sven Mueller +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Change the wording of sieved's notice when a user's default sieve +## DP: script is missing + +@DPATCH@ +diff -urNad cyrus-imapd-2.2.13/sieve/script.c cyrus-imapd-2.2.13/sieve/script.c +--- cyrus-imapd-2.2.13/sieve/script.c 2005-03-12 23:09:22.000000000 +0100 ++++ cyrus-imapd-2.2.13/sieve/script.c 2006-08-21 23:31:25.979899091 +0200 +@@ -37,6 +37,7 @@ + #include + #include + #include ++#include + + #include "xmalloc.h" + +@@ -418,7 +419,11 @@ + if (!fname || !ret) return SIEVE_FAIL; + + if (stat(fname, &sbuf) == -1) { +- syslog(LOG_DEBUG, "IOERROR: fstating sieve script %s: %m", fname); ++ if (errno == ENOENT) { ++ syslog(LOG_DEBUG, "WARNING: sieve script %s doesn't exist: %m", fname); ++ } else { ++ syslog(LOG_DEBUG, "IOERROR: fstating sieve script %s: %m", fname); ++ } + return SIEVE_FAIL; + } + --- cyrus-imapd-2.2-2.2.13.orig/debian/patches/13-master_process_handling.dpatch +++ cyrus-imapd-2.2-2.2.13/debian/patches/13-master_process_handling.dpatch @@ -0,0 +1,233 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 13-master_process_handling.dpatch by Sven Mueller +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Fixes process (child) handling in master process + +@DPATCH@ +diff -urNad cyrus-imapd-2.2-2.2.13~/master/master.c cyrus-imapd-2.2-2.2.13/master/master.c +--- cyrus-imapd-2.2-2.2.13~/master/master.c 2007-06-18 09:19:16.000000000 -0400 ++++ cyrus-imapd-2.2-2.2.13/master/master.c 2007-06-18 09:21:44.000000000 -0400 +@@ -162,6 +162,8 @@ + static struct centry *ctable[child_table_size]; + static struct centry *cfreelist; + ++static int child_mourning_time = 2; /* Time in seconds to remember child ++ after processing SIGCHLD */ + static int janitor_frequency = 1; /* Janitor sweeps per second */ + static int janitor_position; /* Entry to begin at in next sweep */ + static struct timeval janitor_mark; /* Last time janitor did a sweep */ +@@ -186,9 +188,9 @@ + int become_cyrus(void) + { + struct passwd *p; +- int newuid, newgid; ++ uid_t newuid, newgid; + int result; +- static int uid = 0; ++ static uid_t uid = 0; + + if (uid) return setuid(uid); + +@@ -915,7 +917,7 @@ + } + } + c->service_state = SERVICE_STATE_DEAD; +- c->janitor_deadline = time(NULL) + 2; ++ c->janitor_deadline = time(NULL) + child_mourning_time; + } else { + /* weird. Are we multithreaded now? we don't know this child */ + syslog(LOG_WARNING, +@@ -924,7 +926,7 @@ + c = get_centry(); + c->pid = pid; + c->service_state = SERVICE_STATE_DEAD; +- c->janitor_deadline = time(NULL) + 2; ++ c->janitor_deadline = time(NULL) + child_mourning_time; + c->si = SERVICE_NONE; + c->next = ctable[pid % child_table_size]; + ctable[pid % child_table_size] = c; +@@ -1079,6 +1081,36 @@ + } + } + ++/* ++ * Receives a message from a service. ++ * ++ * Returns zero if all goes well ++ * 1 if no msg available ++ * 2 if bad message received (incorrectly sized) ++ * -1 on error (errno set) ++ */ ++int read_msg(int fd, struct notify_message *msg) ++{ ++ ssize_t r; ++ size_t off = 0; ++ int s = sizeof(struct notify_message); ++ ++ while (s > 0) { ++ do ++ r = read(fd, msg + off, s); ++ while ((r == -1) && (errno == EINTR)); ++ if (r <= 0) break; ++ s -= r; ++ off += r; ++ } ++ if ( ((r == 0) && (off == 0)) || ++ ((r == -1) && (errno == EAGAIN)) ) ++ return 1; ++ if (r == -1) return -1; ++ if (s != 0) return 2; ++ return 0; ++} ++ + void process_msg(const int si, struct notify_message *msg) + { + struct centry *c; +@@ -1391,8 +1423,9 @@ + snprintf(buf, sizeof(buf), + "cannot find executable for service '%s'", name); + +- /* if it is not, we're misconfigured, die. */ +- fatal(buf, EX_CONFIG); ++ /* if it is not, we just skip it */ ++ syslog(LOG_WARNING, "WARNING: %s -- ignored", buf); ++ return; + } + + Services[i].maxforkrate = maxforkrate; +@@ -1404,7 +1437,7 @@ + Services[i].desired_workers = prefork; + Services[i].babysit = babysit; + Services[i].max_workers = atoi(max); +- if (Services[i].max_workers == -1) { ++ if (Services[i].max_workers < 0) { + Services[i].max_workers = INT_MAX; + } + } else { +@@ -1412,6 +1445,7 @@ + if (prefork > 1) prefork = 1; + Services[i].desired_workers = prefork; + Services[i].max_workers = 1; ++ Services[i].babysit = 0; + } + free(max); + +@@ -1450,7 +1484,7 @@ + if (!strcmp(cmd,"")) { + char buf[256]; + snprintf(buf, sizeof(buf), +- "unable to find command or port for event '%s'", name); ++ "unable to find command for event '%s'", name); + + if (rock != NULL) { + syslog(LOG_WARNING, "WARNING: %s -- ignored", buf); +@@ -1504,7 +1538,7 @@ + + rl.rlim_cur = x; + rl.rlim_max = x; +- if (setrlimit(RLIMIT_NUMFDS, &rl) < 0) { ++ if (setrlimit(RLIMIT_NUMFDS, &rl) < 0 && x != RLIM_INFINITY) { + syslog(LOG_ERR, "setrlimit: Unable to set file descriptors limit to %ld: %m", x); + + #ifdef HAVE_GETRLIMIT +@@ -1519,11 +1553,9 @@ + } + + +- if (verbose > 1) { +- r = getrlimit(RLIMIT_NUMFDS, &rl); +- syslog(LOG_DEBUG, "set maximum file descriptors to %ld/%ld", rl.rlim_cur, +- rl.rlim_max); +- } ++ if (verbose > 1 && getrlimit(RLIMIT_NUMFDS, &rl) >=0) ++ syslog(LOG_DEBUG, "set maximum file descriptors to %ld/%ld", ++ rl.rlim_cur, rl.rlim_max); + #else + } + #endif /* HAVE_GETRLIMIT */ +@@ -1557,13 +1589,18 @@ + Services[i].stat[0], Services[i].stat[1]); + + /* Only free the service info on the primary */ +- if(Services[i].associate == 0) { ++ if (Services[i].associate == 0) { ++ free(Services[i].name); + free(Services[i].listen); + free(Services[i].proto); + } ++ Services[i].name = NULL; + Services[i].listen = NULL; + Services[i].proto = NULL; + Services[i].desired_workers = 0; ++ Services[i].nforks = 0; ++ Services[i].nactive = 0; ++ Services[i].nconnections = 0; + + /* send SIGHUP to all children */ + for (j = 0 ; j < child_table_size ; j++ ) { +@@ -1646,9 +1683,9 @@ + p = getenv("CYRUS_VERBOSE"); + if (p) verbose = atoi(p) + 1; + #ifdef HAVE_NETSNMP +- while ((opt = getopt(argc, argv, "C:M:p:l:Ddj:P:x:")) != EOF) { ++ while ((opt = getopt(argc, argv, "C:M:p:l:DdjJ:P:x:")) != EOF) { + #else +- while ((opt = getopt(argc, argv, "C:M:p:l:Ddj:")) != EOF) { ++ while ((opt = getopt(argc, argv, "C:M:p:l:DdjJ:")) != EOF) { + #endif + switch (opt) { + case 'C': /* alt imapd.conf file */ +@@ -1681,8 +1718,15 @@ + /* Janitor frequency */ + janitor_frequency = atoi(optarg); + if(janitor_frequency < 1) +- fatal("The janitor period must be at least 1 second", EX_CONFIG); ++ fatal("The janitor frequency must be at least once per second", EX_CONFIG); + break; ++ case 'J': ++ /* Janitor delay before cleanup of a child */ ++ child_mourning_time = atoi(optarg); ++ if(child_mourning_time < 1) ++ fatal("The janitor's mourning time interval must be at least 1 second", ++ EX_CONFIG); ++ break; + #ifdef HAVE_NETSNMP + case 'P': /* snmp AgentXPingInterval */ + agentxpinginterval = atoi(optarg); +@@ -2058,13 +2102,19 @@ + int j; + + if (FD_ISSET(x, &rfds)) { +- r = read(x, &msg, sizeof(msg)); +- if (r != sizeof(msg)) { +- syslog(LOG_ERR, "got incorrectly sized response from child: %x", i); ++ while ((r = read_msg(x, &msg)) == 0) ++ process_msg(i, &msg); ++ ++ if (r == 2) { ++ syslog(LOG_ERR, ++ "got incorrectly sized response from child: %x", i); ++ continue; ++ } ++ if (r < 0) { ++ syslog(LOG_ERR, ++ "error while receiving message from child %x: %m", i); + continue; + } +- +- process_msg(i, &msg); + } + + if (Services[i].exec && +diff -urNad cyrus-imapd-2.2-2.2.13~/master/master.h cyrus-imapd-2.2-2.2.13/master/master.h +--- cyrus-imapd-2.2-2.2.13~/master/master.h 2004-12-17 11:32:24.000000000 -0500 ++++ cyrus-imapd-2.2-2.2.13/master/master.h 2007-06-18 09:19:18.000000000 -0400 +@@ -43,6 +43,7 @@ + extern struct service *Services; + extern int allocservices; + extern int nservices; ++void sighandler_setup(void); + + /* + * Description of multiple address family support from --- cyrus-imapd-2.2-2.2.13.orig/debian/patches/0016-upstream-fix-typos.dpatch +++ cyrus-imapd-2.2-2.2.13/debian/patches/0016-upstream-fix-typos.dpatch @@ -0,0 +1,64 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## upstream-fix-typos by Sven Mueller +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Upstream fix for some typos in manpages for reconstruct and chk_cyrus + +@DPATCH@ +diff -urNad cyrus-imapd-2.2.13/man/chk_cyrus.8 cyrus-imapd-2.2.13/man/chk_cyrus.8 +--- cyrus-imapd-2.2.13/man/chk_cyrus.8 2006-08-06 20:04:29.000000000 +0200 ++++ cyrus-imapd-2.2.13/man/chk_cyrus.8 2006-08-06 20:08:15.026586061 +0200 +@@ -40,7 +40,7 @@ + .\" OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + .\" + .SH NAME +-chk_cyrus \- perform a consistancy check of the cyrus mailstore ++chk_cyrus \- perform a consistency check of the cyrus mailstore + .SH SYNOPSIS + .B chk_cyrus + [ +@@ -57,7 +57,7 @@ + ] + .SH DESCRIPTION + .I Chk_cyrus +-is used to perform a consistancy check on the cyrus datastore, and output ++is used to perform a consistency check on the cyrus datastore, and output + a list of files/directories that are expected to exist, but do not. + Status messagess are output to stderr, the list of files/directories is + output to stdout. This list can be passed to a backup program to aid a +@@ -73,10 +73,10 @@ + Read configuration options from \fIconfig-file\fR. + .TP + .BI \-P " partition" +-Run the consistancy check for only the given partition. ++Run the consistency check for only the given partition. + May not be specified with -M. + .BI \-M " mailbox" +-Run the consistancy check for only the given mailbox. ++Run the consistency check for only the given mailbox. + May not be specified with -P. + .SH FILES + .TP +diff -urNad cyrus-imapd-2.2.13/man/reconstruct.8 cyrus-imapd-2.2.13/man/reconstruct.8 +--- cyrus-imapd-2.2.13/man/reconstruct.8 2006-08-06 20:04:29.000000000 +0200 ++++ cyrus-imapd-2.2.13/man/reconstruct.8 2006-08-06 20:10:35.754646314 +0200 +@@ -39,7 +39,7 @@ + .\" AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + .\" OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + .\" +-.\" $Id: reconstruct.8,v 1.19 2004/10/13 18:07:49 shadow Exp $ ++.\" $Id: reconstruct.8,v 1.20 2006/06/19 13:01:19 murch Exp $ + .SH NAME + reconstruct \- reconstruct mailboxes + .SH SYNOPSIS +@@ -118,8 +118,8 @@ + .B \-x + When processing a mailbox which is not in the mailbox list (e.g. via + the -p or -f options), do not import the metadata from the mailbox, +-instead create it anew (this specifically affects atleast the mailbox's seen +-stat unique identifier, user flags, and ACL). ++instead create it anew (this specifically affects at least the mailbox's seen ++state unique identifier, user flags, and ACL). + .TP + .B \-r + Recursively reconstruct all sub-mailboxes of the mailboxes or mailbox --- cyrus-imapd-2.2-2.2.13.orig/debian/patches/17-fix_tail_syntax_in_xversion.h.dpatch +++ cyrus-imapd-2.2-2.2.13/debian/patches/17-fix_tail_syntax_in_xversion.h.dpatch @@ -0,0 +1,16 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 17-fix_tail_syntax_in_xversion.h.dpatch by Sven Mueller +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: fix tail syntax in xversion.h (use "tail -n 1" instead of "tail -1") + +@DPATCH@ +diff -urNad complete.dpatch/imap/xversion.sh complete.dpatch/imap/xversion.sh +--- complete.dpatch/imap/xversion.sh 2003-10-22 20:03:00.000000000 +0200 ++++ complete.dpatch/imap/xversion.sh 2005-11-10 17:14:52.208238481 +0100 +@@ -22,4 +22,4 @@ + match ($0, pattern) { + printf "\"%s\"\n", substr($0, RSTART, RLENGTH) + }' pattern="$DATEPAT $TIMEPAT" | \ +- sort | tail -1 >> xversion.h ++ sort | tail -n 1 >> xversion.h --- cyrus-imapd-2.2-2.2.13.orig/debian/patches/0010-upstream-fix-libRSAglue-linkage.dpatch +++ cyrus-imapd-2.2-2.2.13/debian/patches/0010-upstream-fix-libRSAglue-linkage.dpatch @@ -0,0 +1,33 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 0010-upstream-fix-libRSAglue-linkage by Sven Mueller +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: check if we need libRSAglue before linking it +## DP: Upstream committer: murch + +@DPATCH@ +diff -urNad cyrus-imapd-2.2.13/cmulocal/openssl.m4 cyrus-imapd-2.2.13/cmulocal/openssl.m4 +--- cyrus-imapd-2.2.13/cmulocal/openssl.m4 2006-03-31 20:18:13.000000000 +0200 ++++ cyrus-imapd-2.2.13/cmulocal/openssl.m4 2006-05-17 21:06:43.162414202 +0200 +@@ -1,6 +1,6 @@ + dnl + dnl macros for configure.in to detect openssl +-dnl $Id: openssl.m4,v 1.10 2005/04/26 19:14:08 shadow Exp $ ++dnl $Id: openssl.m4,v 1.11 2006/05/17 18:30:19 murch Exp $ + dnl + + AC_DEFUN([CMU_HAVE_OPENSSL], [ +@@ -24,8 +24,11 @@ + dnl we need to include the rsaref libraries in the crypto check + LIB_RSAREF="" + AC_CHECK_LIB(rsaref, RSAPublicEncrypt, +- LIB_RSAREF="-lRSAglue -lrsaref"; cmu_have_rsaref=yes, +- cmu_have_rsaref=no) ++ cmu_have_rsaref=yes; ++ [AC_CHECK_LIB(RSAglue, RSAPublicEncrypt, ++ LIB_RSAREF="-lRSAglue -lrsaref", ++ LIB_RSAREF="-lrsaref")], ++ cmu_have_rsaref=no) + + AC_CHECK_HEADER(openssl/evp.h, [ + AC_CHECK_LIB(crypto, EVP_DigestInit, --- cyrus-imapd-2.2-2.2.13.orig/debian/patches/0006-upstream-free-backend-fix.dpatch +++ cyrus-imapd-2.2-2.2.13/debian/patches/0006-upstream-free-backend-fix.dpatch @@ -0,0 +1,93 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 0006-upstream-free-backend-fix.dpatch by Sven Mueller +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Upstream fix: only free() the backend struct if we allocated it +## DP: (don't free cached connections) + +@DPATCH@ +diff -urNad cyrus-imapd-2.2.13/imap/backend.c cyrus-imapd-2.2.13/imap/backend.c +--- cyrus-imapd-2.2.13/imap/backend.c 2006-05-12 12:01:09.000000000 +0200 ++++ cyrus-imapd-2.2.13/imap/backend.c 2006-05-12 12:14:12.909137753 +0200 +@@ -39,7 +39,7 @@ + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +-/* $Id: backend.c,v 1.39 2006/02/07 20:57:27 murch Exp $ */ ++/* $Id: backend.c,v 1.41 2006/05/11 18:05:29 murch Exp $ */ + + #include + +@@ -264,7 +264,7 @@ + } + } + +-struct backend *backend_connect(struct backend *ret, const char *server, ++struct backend *backend_connect(struct backend *ret_backend, const char *server, + struct protocol_t *prot, const char *userid, + const char **auth_status) + { +@@ -276,13 +276,16 @@ + struct sockaddr_un sunsock; + char buf[2048], *mechlist = NULL; + struct sigaction action; ++ struct backend *ret; + +- if (!ret) { ++ if (!ret_backend) { + ret = xmalloc(sizeof(struct backend)); + memset(ret, 0, sizeof(struct backend)); + strlcpy(ret->hostname, server, sizeof(ret->hostname)); + ret->timeout = NULL; + } ++ else ++ ret = ret_backend; + + if (server[0] == '/') { /* unix socket */ + res0 = &hints; +@@ -312,7 +315,7 @@ + if (err) { + syslog(LOG_ERR, "getaddrinfo(%s) failed: %s", + server, gai_strerror(err)); +- free(ret); ++ if (!ret_backend) free(ret); + return NULL; + } + /* Get addrinfo struct for local interface. */ +@@ -363,7 +366,7 @@ + if (res0 != &hints) + freeaddrinfo(res0); + syslog(LOG_ERR, "connect(%s) failed: %m", server); +- free(ret); ++ if (!ret_backend) free(ret); + return NULL; + } + memcpy(&ret->addr, res->ai_addr, res->ai_addrlen); +@@ -381,7 +384,7 @@ + syslog(LOG_ERR, + "backend_connect(): couldn't read initial greeting: %s", + ret->in->error ? ret->in->error : "(null)"); +- free(ret); ++ if (!ret_backend) free(ret); + close(sock); + return NULL; + } +@@ -396,14 +399,16 @@ + if ((r = backend_authenticate(ret, prot, &mechlist, userid, auth_status))) { + syslog(LOG_ERR, "couldn't authenticate to backend server: %s", + sasl_errstring(r, NULL, NULL)); +- free(ret); ++ if (!ret_backend) free(ret); + close(sock); + ret = NULL; + } + } + + if (mechlist) free(mechlist); +- ++ ++ if (!ret_backend) ret_backend = ret; ++ + return ret; + } + --- cyrus-imapd-2.2-2.2.13.orig/debian/patches/0025-upstream-fix-cve-2009-3235.dpatch +++ cyrus-imapd-2.2-2.2.13/debian/patches/0025-upstream-fix-cve-2009-3235.dpatch @@ -0,0 +1,73 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 0025_upstream-fix-cve-2009-3235.dpatch by Henrique de Moraes Holschuh +## +## DP: Fixes for CVE 2009-3235 (multiple Sieve buffer overruns, remote exploitable) +## DP: taken from upstream CVS, Debian bug #547947 + +@DPATCH@ +diff -urNad cyrus-imapd-2.2.13~/sieve/bc_eval.c cyrus-imapd-2.2.13/sieve/bc_eval.c +--- cyrus-imapd-2.2.13~/sieve/bc_eval.c 2009-09-23 09:18:50.557332445 -0300 ++++ cyrus-imapd-2.2.13/sieve/bc_eval.c 2009-09-23 09:20:15.831016330 -0300 +@@ -440,7 +440,7 @@ + int comparator=ntohl(bc[i+3].value); + int apart=ntohl(bc[i+4].value); + int count=0; +- char scount[3]; ++ char scount[21]; + int isReg = (match==B_REGEX); + int ctag = 0; + regex_t *reg; +@@ -574,7 +574,7 @@ + + if (match == B_COUNT) + { +- sprintf(scount, "%u", count); ++ snprintf(scount, sizeof(scount), "%u", count); + /* search through all the data */ + currd=datai+2; + for (z=0; zerr) { + char buf[1024]; + if (lastaction == -1) /* we never executed an action */ +- sprintf(buf, "%s", errmsg ? errmsg : sieve_errstr(ret)); ++ snprintf(buf, sizeof(buf), "%s", errmsg ? errmsg : sieve_errstr(ret)); + else +- sprintf(buf, "%s: %s", action_to_string(lastaction), ++ snprintf(buf, sizeof(buf), "%s: %s", action_to_string(lastaction), + errmsg ? errmsg : sieve_errstr(ret)); + + ret |= interp->execute_err(buf, interp->interp_context, +diff -urNad cyrus-imapd-2.2.13~/sieve/sieve.y cyrus-imapd-2.2.13/sieve/sieve.y +--- cyrus-imapd-2.2.13~/sieve/sieve.y 2009-09-23 09:18:50.557332445 -0300 ++++ cyrus-imapd-2.2.13/sieve/sieve.y 2009-09-23 09:18:51.627330879 -0300 +@@ -923,7 +923,7 @@ + else if (!strcmp(r, "ne")) {return NE;} + else if (!strcmp(r, "eq")) {return EQ;} + else{ +- sprintf(errbuf, "flag '%s': not a valid relational operation", r); ++ snprintf(errbuf, sizeof(errbuf), "flag '%s': not a valid relational operation", r); + yyerror(errbuf); + return -1; + } --- cyrus-imapd-2.2-2.2.13.orig/debian/patches/0011-upstream-allow-compile-with-krb5-1.4.3.dpatch +++ cyrus-imapd-2.2-2.2.13/debian/patches/0011-upstream-allow-compile-with-krb5-1.4.3.dpatch @@ -0,0 +1,43 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 0011-upstream-allow-compile-with-krb5-1.4.3 by Sven Mueller +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: patch to compile with MIT krb5 1.4.3 (Philip Guenther ) + +@DPATCH@ +diff -urNad cyrus-imapd-2.2.13/cmulocal/sasl2.m4 cyrus-imapd-2.2.13/cmulocal/sasl2.m4 +--- cyrus-imapd-2.2.13/cmulocal/sasl2.m4 2006-03-31 20:18:13.000000000 +0200 ++++ cyrus-imapd-2.2.13/cmulocal/sasl2.m4 2006-05-19 15:18:35.458325180 +0200 +@@ -1,6 +1,6 @@ + # sasl2.m4--sasl2 libraries and includes + # Rob Siemborski +-# $Id: sasl2.m4,v 1.51 2005/05/07 04:15:17 shadow Exp $ ++# $Id: sasl2.m4,v 1.52 2006/05/18 19:25:00 murch Exp $ + + # SASL2_CRYPT_CHK + # --------------- +@@ -110,9 +110,12 @@ + fi + + if test "$gss_impl" = "auto" -o "$gss_impl" = "mit"; then ++ # check for libkrb5support first ++ AC_CHECK_LIB(krb5support,krb5int_getspecific,K5SUP=-lkrb5support K5SUPSTATIC=$gssapi_dir/libkrb5support.a,,${LIB_SOCKET}) ++ + gss_failed=0 + AC_CHECK_LIB(gssapi_krb5,gss_unwrap,gss_impl="mit",gss_failed=1, +- ${GSSAPIBASE_LIBS} -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err ${LIB_SOCKET}) ++ ${GSSAPIBASE_LIBS} -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err ${K5SUP} ${LIB_SOCKET}) + if test "$gss_impl" != "auto" -a "$gss_failed" = "1"; then + gss_impl="failed" + fi +@@ -164,8 +167,8 @@ + fi + + if test "$gss_impl" = "mit"; then +- GSSAPIBASE_LIBS="$GSSAPIBASE_LIBS -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err" +- GSSAPIBASE_STATIC_LIBS="$GSSAPIBASE_LIBS $gssapi_dir/libgssapi_krb5.a $gssapi_dir/libkrb5.a $gssapi_dir/libk5crypto.a $gssapi_dir/libcom_err.a" ++ GSSAPIBASE_LIBS="$GSSAPIBASE_LIBS -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err ${K5SUP}" ++ GSSAPIBASE_STATIC_LIBS="$GSSAPIBASE_LIBS $gssapi_dir/libgssapi_krb5.a $gssapi_dir/libkrb5.a $gssapi_dir/libk5crypto.a $gssapi_dir/libcom_err.a ${K5SUPSTATIC}" + elif test "$gss_impl" = "heimdal"; then + CPPFLAGS="$CPPFLAGS -DKRB5_HEIMDAL" + GSSAPIBASE_LIBS="$GSSAPIBASE_LIBS -lgssapi -lkrb5 -lasn1 -lroken ${LIB_CRYPT} ${LIB_DES} -lcom_err" --- cyrus-imapd-2.2-2.2.13.orig/debian/patches/10-fix_potential_overflows.dpatch +++ cyrus-imapd-2.2-2.2.13/debian/patches/10-fix_potential_overflows.dpatch @@ -0,0 +1,198 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 10-fix_potential_overflows.dpatch by Sven Mueller +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: fix potential buffer overflows + +@DPATCH@ +diff -urNad complete.dpatch/imap/ctl_mboxlist.c complete.dpatch/imap/ctl_mboxlist.c +--- complete.dpatch/imap/ctl_mboxlist.c 2004-05-22 05:45:48.000000000 +0200 ++++ complete.dpatch/imap/ctl_mboxlist.c 2005-11-10 20:38:08.142040412 +0100 +@@ -479,7 +479,7 @@ + int r = 0; + char buf[16384]; + int line = 0; +- char last_commit[MAX_MAILBOX_NAME]; ++ char last_commit[MAX_MAILBOX_NAME+1]; + char *key=NULL, *data=NULL; + int keylen, datalen; + int untilCommit = PER_COMMIT; +diff -urNad complete.dpatch/imap/fud.c complete.dpatch/imap/fud.c +--- complete.dpatch/imap/fud.c 2004-12-17 17:32:07.000000000 +0100 ++++ complete.dpatch/imap/fud.c 2005-11-10 20:38:44.863358638 +0100 +@@ -119,9 +119,9 @@ + + while(1) { + /* For safety */ +- memset(username,'\0',MAXLOGNAME + MAXDOMNAME); +- memset(mbox,'\0',MAX_MAILBOX_NAME+1); +- memset(buf, '\0', MAXLOGNAME + MAX_MAILBOX_NAME + 1); ++ memset(username,'\0', sizeof(username)); ++ memset(mbox,'\0', sizeof(mbox)); ++ memset(buf, '\0', sizeof(buf)); + + if (signals_poll() == SIGHUP) { + /* caught a SIGHUP, return */ +diff -urNad complete.dpatch/imap/global.c complete.dpatch/imap/global.c +--- complete.dpatch/imap/global.c 2004-11-23 18:40:15.000000000 +0100 ++++ complete.dpatch/imap/global.c 2005-11-10 20:40:02.897537018 +0100 +@@ -467,7 +467,7 @@ + { + struct namespace namespace; + char *acl; +- char bufuser[MAX_MAILBOX_NAME], inboxname[MAX_MAILBOX_NAME]; ++ char bufuser[MAX_MAILBOX_NAME+1], inboxname[MAX_MAILBOX_NAME+1]; + int r; + + /* Set namespace */ +diff -urNad complete.dpatch/imap/idle_idled.c complete.dpatch/imap/idle_idled.c +--- complete.dpatch/imap/idle_idled.c 2003-10-22 22:05:11.000000000 +0200 ++++ complete.dpatch/imap/idle_idled.c 2005-11-10 20:40:56.266272619 +0100 +@@ -109,11 +109,11 @@ + idle_remote.sun_family = AF_UNIX; + idle_sock = config_getstring(IMAPOPT_IDLESOCKET); + if (idle_sock) { +- strcpy(idle_remote.sun_path, idle_sock); ++ strlcpy(idle_remote.sun_path, idle_sock, sizeof(idle_remote.sun_path)); + } + else { +- strcpy(idle_remote.sun_path, config_dir); +- strcat(idle_remote.sun_path, FNAME_IDLE_SOCK); ++ strlcpy(idle_remote.sun_path, config_dir, sizeof(idle_remote.sun_path)); ++ strlcat(idle_remote.sun_path, FNAME_IDLE_SOCK, sizeof(idle_remote.sun_path)); + } + idle_remote_len = sizeof(idle_remote.sun_family) + + strlen(idle_remote.sun_path) + 1; +diff -urNad complete.dpatch/imap/index.c complete.dpatch/imap/index.c +--- complete.dpatch/imap/index.c 2005-02-14 17:42:08.000000000 +0100 ++++ complete.dpatch/imap/index.c 2005-11-10 20:42:49.720157772 +0100 +@@ -3278,9 +3278,17 @@ + cur->from = get_localpart_addr(from + CACHE_ITEM_SIZE_SKIP); + break; + case SORT_SUBJECT: +- cur->xsubj = index_extract_subject(subj + CACHE_ITEM_SIZE_SKIP, +- CACHE_ITEM_LEN(subj), +- &cur->is_refwd); ++ { ++ int len = CACHE_ITEM_LEN(subj); ++ char *t = xmalloc(len+1); ++ ++ memcpy(t, subj + CACHE_ITEM_SIZE_SKIP, len); ++ t[len] = '\0'; ++ ++ cur->xsubj = index_extract_subject(t, len, &cur->is_refwd); ++ ++ free(t); ++ } + cur->xsubj_hash = strhash(cur->xsubj); + break; + case SORT_TO: +diff -urNad complete.dpatch/imap/mboxlist.h complete.dpatch/imap/mboxlist.h +--- complete.dpatch/imap/mboxlist.h 2004-03-17 19:07:49.000000000 +0100 ++++ complete.dpatch/imap/mboxlist.h 2005-11-10 20:43:33.110906719 +0100 +@@ -73,7 +73,7 @@ + + /* each mailbox has the following data */ + struct mbox_entry { +- char name[MAX_MAILBOX_NAME]; ++ char name[MAX_MAILBOX_NAME+1]; + int mbtype; + char partition[MAX_PARTITION_LEN]; + /* holds remote machine for REMOTE mailboxes */ +diff -urNad complete.dpatch/imap/message.c complete.dpatch/imap/message.c +--- complete.dpatch/imap/message.c 2005-11-10 18:19:03.000000000 +0100 ++++ complete.dpatch/imap/message.c 2005-11-10 20:44:17.400567516 +0100 +@@ -795,7 +795,7 @@ + /* Save header value */ + len = hdrend - hdr; + message_ibuf_ensure(ibuf, len+2); +- strncpy(ibuf->end, hdr, len); ++ strncpy(ibuf->end, hdr, len+1); + ibuf->end += len; + *(ibuf->end)++ = '\r'; + *(ibuf->end)++ = '\n'; +diff -urNad complete.dpatch/imap/mupdate.h complete.dpatch/imap/mupdate.h +--- complete.dpatch/imap/mupdate.h 2003-12-10 17:07:03.000000000 +0100 ++++ complete.dpatch/imap/mupdate.h 2005-11-10 20:44:52.257152442 +0100 +@@ -70,8 +70,8 @@ + struct buf tag, cmd, arg1, arg2, arg3; + + /* For client side mupdate_find calls */ +- char mailbox_buf[MAX_MAILBOX_NAME]; +- char server_buf[MAX_MAILBOX_NAME]; ++ char mailbox_buf[MAX_MAILBOX_NAME+1]; ++ char server_buf[MAX_MAILBOX_NAME+1]; + char *acl_buf; + size_t acl_buf_len; + struct mupdate_mailboxdata mailboxdata_buf; +diff -urNad complete.dpatch/imap/proxyd.c complete.dpatch/imap/proxyd.c +--- complete.dpatch/imap/proxyd.c 2005-11-10 18:19:03.000000000 +0100 ++++ complete.dpatch/imap/proxyd.c 2005-11-10 20:46:06.823846583 +0100 +@@ -1277,7 +1277,7 @@ + char **envp __attribute__((unused))) + { + socklen_t salen; +- char hbuf[NI_MAXHOST]; ++ char hbuf[NI_MAXHOST+1]; + struct sockaddr_storage proxyd_localaddr, proxyd_remoteaddr; + char localip[60], remoteip[60]; + int niflags; +diff -urNad complete.dpatch/imtest/imtest.c complete.dpatch/imtest/imtest.c +--- complete.dpatch/imtest/imtest.c 2005-11-10 18:19:03.000000000 +0100 ++++ complete.dpatch/imtest/imtest.c 2005-11-10 20:47:18.417831766 +0100 +@@ -1225,7 +1225,7 @@ + + /* can't have this and a file for input */ + sunsock.sun_family = AF_UNIX; +- strcpy(sunsock.sun_path, output_socket); ++ strlcpy(sunsock.sun_path, output_socket, sizeof(sunsock.sun_path)); + unlink(output_socket); + + listen_sock = socket(AF_UNIX, SOCK_STREAM, 0); +diff -urNad complete.dpatch/master/master.c complete.dpatch/master/master.c +--- complete.dpatch/master/master.c 2005-11-10 18:19:03.000000000 +0100 ++++ complete.dpatch/master/master.c 2005-11-10 20:50:59.813138032 +0100 +@@ -222,13 +222,17 @@ + return result; + } + +-void get_prog(char *path, unsigned size, char *const *cmd) ++void get_prog(char *path, unsigned int size, char *const *cmd) + { + if (cmd[0][0] == '/') { + /* master lacks strlcpy, due to no libcyrus */ + snprintf(path, size, "%s", cmd[0]); ++ path[size-1] = '\0'; ++ } ++ else { ++ snprintf(path, size, "%s/%s", SERVICE_PATH, cmd[0]); ++ path[size-1] = '\0'; + } +- else snprintf(path, size, "%s/%s", SERVICE_PATH, cmd[0]); + } + + void get_statsock(int filedes[2]) +diff -urNad complete.dpatch/master/masterconf.c complete.dpatch/master/masterconf.c +--- complete.dpatch/master/masterconf.c 2003-11-25 18:37:19.000000000 +0100 ++++ complete.dpatch/master/masterconf.c 2005-11-10 20:53:17.940602394 +0100 +@@ -133,7 +133,7 @@ + } else { + /* one word */ + for (i = 0; i < 255; i++) { +- if (isspace((int) *p)) break; ++ if ((!*p) || (isspace((int) *p))) break; + v[i] = *p++; + } + } +diff -urNad complete.dpatch/notifyd/notifyd.c complete.dpatch/notifyd/notifyd.c +--- complete.dpatch/notifyd/notifyd.c 2004-12-17 17:32:25.000000000 +0100 ++++ complete.dpatch/notifyd/notifyd.c 2005-11-10 20:55:15.058125035 +0100 +@@ -143,7 +143,7 @@ + if (cp) nopt = strtol(cp, NULL, 10); + if (nopt < 0 || errno == ERANGE) cp = NULL; + +- if (cp && nopt && ++ if (cp && (nopt > 0) && + !(options = (char**) xrealloc(options, nopt * sizeof(char*)))) { + fatal("xmalloc(): can't allocate options", EC_OSERR); + } --- cyrus-imapd-2.2-2.2.13.orig/debian/patches/0018-upstream-ntohl-instead-of-htonl.dpatch +++ cyrus-imapd-2.2-2.2.13/debian/patches/0018-upstream-ntohl-instead-of-htonl.dpatch @@ -0,0 +1,50 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 0018-upstream-ntohl-instead-of-htonl by murch@andrew.cmu.edu +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: use ntohl() instead of htonl() in mailbox_read_index_record() + +@DPATCH@ +diff -urNad cyrus-imapd-2.2.13/imap/mailbox.c cyrus-imapd-2.2.13/imap/mailbox.c +--- cyrus-imapd-2.2.13/imap/mailbox.c 2006-08-06 20:03:02.000000000 +0200 ++++ cyrus-imapd-2.2.13/imap/mailbox.c 2006-08-06 20:03:13.168502599 +0200 +@@ -1,5 +1,5 @@ + /* mailbox.c -- Mailbox manipulation routines +- * $Id: mailbox.c,v 1.161 2006/06/02 18:56:52 murch Exp $ ++ * $Id: mailbox.c,v 1.162 2006/08/04 14:40:54 murch Exp $ + * Copyright (c) 1998-2003 Carnegie Mellon University. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without +@@ -884,20 +884,20 @@ + + buf = (unsigned char*) mailbox->index_base + offset; + +- record->uid = htonl(*((bit32 *)(buf+OFFSET_UID))); +- record->internaldate = htonl(*((bit32 *)(buf+OFFSET_INTERNALDATE))); +- record->sentdate = htonl(*((bit32 *)(buf+OFFSET_SENTDATE))); +- record->size = htonl(*((bit32 *)(buf+OFFSET_SIZE))); +- record->header_size = htonl(*((bit32 *)(buf+OFFSET_HEADER_SIZE))); +- record->content_offset = htonl(*((bit32 *)(buf+OFFSET_CONTENT_OFFSET))); +- record->cache_offset = htonl(*((bit32 *)(buf+OFFSET_CACHE_OFFSET))); +- record->last_updated = htonl(*((bit32 *)(buf+OFFSET_LAST_UPDATED))); +- record->system_flags = htonl(*((bit32 *)(buf+OFFSET_SYSTEM_FLAGS))); ++ record->uid = ntohl(*((bit32 *)(buf+OFFSET_UID))); ++ record->internaldate = ntohl(*((bit32 *)(buf+OFFSET_INTERNALDATE))); ++ record->sentdate = ntohl(*((bit32 *)(buf+OFFSET_SENTDATE))); ++ record->size = ntohl(*((bit32 *)(buf+OFFSET_SIZE))); ++ record->header_size = ntohl(*((bit32 *)(buf+OFFSET_HEADER_SIZE))); ++ record->content_offset = ntohl(*((bit32 *)(buf+OFFSET_CONTENT_OFFSET))); ++ record->cache_offset = ntohl(*((bit32 *)(buf+OFFSET_CACHE_OFFSET))); ++ record->last_updated = ntohl(*((bit32 *)(buf+OFFSET_LAST_UPDATED))); ++ record->system_flags = ntohl(*((bit32 *)(buf+OFFSET_SYSTEM_FLAGS))); + for (n = 0; n < MAX_USER_FLAGS/32; n++) { +- record->user_flags[n] = htonl(*((bit32 *)(buf+OFFSET_USER_FLAGS+4*n))); ++ record->user_flags[n] = ntohl(*((bit32 *)(buf+OFFSET_USER_FLAGS+4*n))); + } +- record->content_lines = htonl(*((bit32 *)(buf+OFFSET_CONTENT_LINES))); +- record->cache_version = htonl(*((bit32 *)(buf+OFFSET_CACHE_VERSION))); ++ record->content_lines = ntohl(*((bit32 *)(buf+OFFSET_CONTENT_LINES))); ++ record->cache_version = ntohl(*((bit32 *)(buf+OFFSET_CACHE_VERSION))); + return 0; + } + --- cyrus-imapd-2.2-2.2.13.orig/debian/patches/0004-upstream-fetchnews-timezone-dst-fix.dpatch +++ cyrus-imapd-2.2-2.2.13/debian/patches/0004-upstream-fetchnews-timezone-dst-fix.dpatch @@ -0,0 +1,44 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 0004-upstream-fetchnews-timezone-dst-fix.dpatch by Sven Mueller +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Upstream: Fix fetchnews timezone handling with regards to DST +## DP: (daylight saving time) + +@DPATCH@ +diff -urNad cyrus-imapd-2.2.13/imap/fetchnews.c cyrus-imapd-2.2.13/imap/fetchnews.c +--- cyrus-imapd-2.2.13/imap/fetchnews.c 2006-03-31 20:18:13.000000000 +0200 ++++ cyrus-imapd-2.2.13/imap/fetchnews.c 2006-05-03 16:07:42.020785607 +0200 +@@ -60,6 +60,7 @@ + #include "cyrusdb.h" + #include "exitcodes.h" + #include "global.h" ++#include "gmtoff.h" + #include "lock.h" + #include "prot.h" + #include "xmalloc.h" +@@ -388,6 +389,7 @@ + &ctime.tm_hour, &ctime.tm_min, &ctime.tm_sec); + ctime.tm_year -= 1900; + ctime.tm_mon--; ++ ctime.tm_isdst = -1; + + /* read the previous timestamp */ + if (!sfile[0]) { +@@ -417,6 +419,7 @@ + /* ask for new articles */ + if (stamp) stamp -= 180; /* adjust back 3 minutes */ + ptime = gmtime(&stamp); ++ ptime->tm_isdst = -1; + strftime(buf, sizeof(buf), datefmt, ptime); + prot_printf(pout, "NEWNEWS %s %s GMT\r\n", wildmat, buf); + +@@ -433,7 +436,7 @@ + We can't change this, otherwise we'd be incompatible + with an old localtime timestamp. + */ +- stamp -= timezone; ++ stamp += gmtoff_of(&ctime, stamp); + } + + if (!newnews) { --- cyrus-imapd-2.2-2.2.13.orig/debian/patches/22-imapd_index_check.dpatch +++ cyrus-imapd-2.2-2.2.13/debian/patches/22-imapd_index_check.dpatch @@ -0,0 +1,51 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 22-imapd_index_check.dpatch by Sven Mueller +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Fix usage of index_check() + +@DPATCH@ +diff -urNad cyrus-imapd-2.2.13~/imap/imapd.c cyrus-imapd-2.2.13/imap/imapd.c +--- cyrus-imapd-2.2.13~/imap/imapd.c 2008-04-15 13:12:21.487623592 +0200 ++++ cyrus-imapd-2.2.13/imap/imapd.c 2008-04-15 13:12:21.703642098 +0200 +@@ -3125,8 +3125,8 @@ + + if (usinguid) { + fetchitems |= FETCH_UID; +- index_check(imapd_mailbox, 1, 0); + } ++ index_check(imapd_mailbox, 1, 0); + + fetchargs.fetchitems = fetchitems; + r = index_fetch(imapd_mailbox, sequence, usinguid, &fetchargs, +@@ -3141,6 +3141,9 @@ + } else if (fetchedsomething || usinguid) { + prot_printf(imapd_out, "%s OK %s (%s sec)\r\n", tag, + error_message(IMAP_OK_COMPLETED), mytime); ++ if(fetchargs.fetchitems & FETCH_SETSEEN) { ++ index_check(imapd_mailbox,usinguid,1); ++ } + } else { + /* normal FETCH, nothing came back */ + prot_printf(imapd_out, "%s NO %s (%s sec)\r\n", tag, +@@ -3259,7 +3262,8 @@ + + index_fetch(imapd_mailbox, msgno, 0, &fetchargs, &fetchedsomething); + +- index_check(imapd_mailbox, 0, 0); ++ index_check(imapd_mailbox, 0, ++ fetchedsomething && (fetchargs.fetchitems & FETCH_SETSEEN)); + + if (fetchedsomething) { + prot_printf(imapd_out, "%s OK %s\r\n", tag, +@@ -3391,7 +3395,9 @@ + r = index_store(imapd_mailbox, sequence, usinguid, &storeargs, + flag, nflags); + +- if (usinguid) { ++ if(storeargs.seen || storeargs.operation==STORE_REPLACE) { ++ index_check(imapd_mailbox, usinguid, 1); ++ } else if (usinguid) { + index_check(imapd_mailbox, 1, 0); + } + --- cyrus-imapd-2.2-2.2.13.orig/debian/patches/40-rehash_fix_pathes.dpatch +++ cyrus-imapd-2.2-2.2.13/debian/patches/40-rehash_fix_pathes.dpatch @@ -0,0 +1,36 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 40_rehash_fix_pathes.dpatch by Sven Mueller +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Fix paths in tools/rehash + +@DPATCH@ +diff -urNad cyrus-imapd-2.2.12/tools/rehash cyrus-imapd-2.2.12/tools/rehash +--- cyrus-imapd-2.2.12/tools/rehash 2005-05-24 22:56:53.000000000 +0200 ++++ cyrus-imapd-2.2.12/tools/rehash 2005-05-24 22:57:53.429121575 +0200 +@@ -170,7 +170,7 @@ + $imapdconf = shift || "/etc/imapd.conf"; + + $yn = "y"; +-$sievedir = "/usr/sieve"; ++$sievedir = "/var/spool/sieve"; + $nosievedir = 0; + $hashispool = 0; + $virtdomains = 0; +@@ -181,7 +181,7 @@ + read_conf($conf); + } + +-if (! $confdir) { $confdir = "/var/imap"; } ++if (! $confdir) { $confdir = "/var/lib/cyrus"; } + + if ($interactive) { + print "upgrade $confdir? "; +@@ -555,6 +555,7 @@ + or die "couldn't rename .$i/$s/$t to $s/$t"; + } + closedir MV; ++ rmdir ".$i/$s" or die "could not remove .$i/$s" + } + closedir SUB; + rmdir ".$i" or die "could not remove .$i"; --- cyrus-imapd-2.2-2.2.13.orig/debian/patches/70-fix_readme_link.dpatch +++ cyrus-imapd-2.2-2.2.13/debian/patches/70-fix_readme_link.dpatch @@ -0,0 +1,19 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 70-fix_readme_link.dpatch by Benjamin Seidenberg +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Fix a bad link in readme.html + +@DPATCH@ +diff -urNad cyrus-imapd-2.2.13~/doc/readme.html cyrus-imapd-2.2.13/doc/readme.html +--- cyrus-imapd-2.2.13~/doc/readme.html 2006-05-05 21:04:27.000000000 -0400 ++++ cyrus-imapd-2.2.13/doc/readme.html 2006-05-24 16:18:45.000000000 -0400 +@@ -56,7 +56,7 @@ +

    This system should be expected to have the same order-of-magnitude + installation complexity as a netnews system. Maintenance should have + similar complexity, except administrators will have to deal with creation and deletion of users and will have ++HREF="man/cyradm.1.html">creation and deletion of users and will have + the option of managing quotas and access control lists. + +

    This package is distributed as a source only release. It is --- cyrus-imapd-2.2-2.2.13.orig/debian/patches/99-berkelydb-4.8.dpatch +++ cyrus-imapd-2.2-2.2.13/debian/patches/99-berkelydb-4.8.dpatch @@ -0,0 +1,36 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run + +@DPATCH@ +--- a/cmulocal/berkdb.m4 ++++ b/cmulocal/berkdb.m4 +@@ -213,7 +213,11 @@ AC_DEFUN([CYRUS_BERKELEY_DB_CHK_LIB], + fi + + saved_LIBS=$LIBS +- for dbname in db-4.4 db4.4 db44 db-4.3 db4.3 db43 db-4.2 db4.2 db42 db-4.1 db4.1 db41 db-4.0 db4.0 db-4 db40 db4 db-3.3 db3.3 db33 db-3.2 db3.2 db32 db-3.1 db3.1 db31 db-3 db30 db3 db ++ for dbname in db-4.8 db4.8 db48 \ ++ db-4.7 db4.7 db47 \ ++ db-4.6 db4.6 db46 \ ++ db-4.5 db4.5 db45 \ ++ db-4.4 db4.4 db44 db-4.3 db4.3 db43 db-4.2 db4.2 db42 db-4.1 db4.1 db41 db-4.0 db4.0 db-4 db40 db4 db-3.3 db3.3 db33 db-3.2 db3.2 db32 db-3.1 db3.1 db31 db-3 db30 db3 db + do + LIBS="$saved_LIBS -l$dbname" + AC_TRY_LINK([#include ], +--- a/lib/cyrusdb_berkeley.c ++++ b/lib/cyrusdb_berkeley.c +@@ -173,7 +173,15 @@ static int init(const char *dbdir, int m + syslog(LOG_WARNING, + "DBERROR: invalid berkeley_locks_max value, using internal default"); + } else { ++#if DB_VERSION_MAJOR >= 4 ++ r = dbenv->set_lk_max_locks(dbenv, opt); ++ if (!r) ++ r = dbenv->set_lk_max_lockers(dbenv, opt); ++ if (!r) ++ r = dbenv->set_lk_max_objects(dbenv, opt); ++#else + r = dbenv->set_lk_max(dbenv, opt); ++#endif + if (r) { + dbenv->err(dbenv, r, "set_lk_max"); + syslog(LOG_ERR, "DBERROR: set_lk_max(): %s", db_strerror(r)); --- cyrus-imapd-2.2-2.2.13.orig/debian/patches/0013-upstream-allow-report-above-4GB-mboxsize.dpatch +++ cyrus-imapd-2.2-2.2.13/debian/patches/0013-upstream-allow-report-above-4GB-mboxsize.dpatch @@ -0,0 +1,33 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 0012-upstream-allow-report-above-4GB-mboxsize by Sven Mueller +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Upstream patch to allow reporting of mailbox sizes above 4GB + +@DPATCH@ +diff -urNad --exclude=CVS --exclude=.svn ./imap/annotate.c 66kS/cyrus-imapd-2.2.13/imap/annotate.c +--- ./imap/annotate.c 2006-04-25 17:28:58.000000000 +0200 ++++ 66kS/cyrus-imapd-2.2.13/imap/annotate.c 2006-06-08 13:46:52.018338460 +0200 +@@ -703,7 +703,13 @@ + struct mailbox mailbox; + struct index_record record; + int r = 0, msg; ++#ifdef HAVE_LONG_LONG_INT ++ unsigned long long totsize = 0; ++# define SIZE_FMT "%llu" ++#else + unsigned long totsize = 0; ++# define SIZE_FMT "%lu" ++#endif + char value[21]; + struct annotation_data attrib; + +@@ -735,7 +741,7 @@ + + mailbox_close(&mailbox); + +- if (r || snprintf(value, sizeof(value), "%lu", totsize) == -1) ++ if (r || snprintf(value, sizeof(value), SIZE_FMT, totsize) == -1) + return; + + memset(&attrib, 0, sizeof(attrib)); --- cyrus-imapd-2.2-2.2.13.orig/debian/patches/30-update_perlcalling.sh.dpatch +++ cyrus-imapd-2.2-2.2.13/debian/patches/30-update_perlcalling.sh.dpatch @@ -0,0 +1,493 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 30_update_perlcalling.sh.dpatch by Sven Mueller +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: updates calling of the perl interpreter to what we expect in Debian. +## DP: More precisely: Call /usr/bin/perl directly instead of using some +## DP: shell magic to locate perl and run it. +## DP: NOTE: only some script use the "-w" or even the "-T" flag for perl. +## DP: This should be the default actually. + +@DPATCH@ +diff -urNad cyrus-imapd-2.2.12/contrib/cyrus-graphtools.1.0/cgi-bin/cyrus_master.pl cyrus-imapd-2.2.12/contrib/cyrus-graphtools.1.0/cgi-bin/cyrus_master.pl +--- cyrus-imapd-2.2.12/contrib/cyrus-graphtools.1.0/cgi-bin/cyrus_master.pl 2005-05-24 22:13:04.000000000 +0200 ++++ cyrus-imapd-2.2.12/contrib/cyrus-graphtools.1.0/cgi-bin/cyrus_master.pl 2005-05-24 22:44:39.039570899 +0200 +@@ -1,4 +1,4 @@ +-#!/usr/local/bin/perl5 ++#!/usr/bin/perl + + # + # Created by Alison Greenwald 21 Sep 2000 +diff -urNad cyrus-imapd-2.2.12/contrib/cyrus-graphtools.1.0/cgi-bin/graph_cyrus_db-sum.pl cyrus-imapd-2.2.12/contrib/cyrus-graphtools.1.0/cgi-bin/graph_cyrus_db-sum.pl +--- cyrus-imapd-2.2.12/contrib/cyrus-graphtools.1.0/cgi-bin/graph_cyrus_db-sum.pl 2005-05-24 22:13:04.000000000 +0200 ++++ cyrus-imapd-2.2.12/contrib/cyrus-graphtools.1.0/cgi-bin/graph_cyrus_db-sum.pl 2005-05-24 22:44:39.038570809 +0200 +@@ -1,4 +1,4 @@ +-#!/usr/local/bin/perl5 ++#!/usr/bin/perl + + # + # Created by Alison Greenwald 21 Sep 2000 +diff -urNad cyrus-imapd-2.2.12/contrib/cyrus-graphtools.1.0/cgi-bin/graph_cyrus_db.pl cyrus-imapd-2.2.12/contrib/cyrus-graphtools.1.0/cgi-bin/graph_cyrus_db.pl +--- cyrus-imapd-2.2.12/contrib/cyrus-graphtools.1.0/cgi-bin/graph_cyrus_db.pl 2005-05-24 22:13:04.000000000 +0200 ++++ cyrus-imapd-2.2.12/contrib/cyrus-graphtools.1.0/cgi-bin/graph_cyrus_db.pl 2005-05-24 22:44:39.038570809 +0200 +@@ -1,4 +1,4 @@ +-#!/usr/local/bin/perl5 ++#!/usr/bin/perl + + # + # Created by Alison Greenwald 21 Sep 2000 +diff -urNad cyrus-imapd-2.2.12/contrib/mupdate-test.pl cyrus-imapd-2.2.12/contrib/mupdate-test.pl +--- cyrus-imapd-2.2.12/contrib/mupdate-test.pl 2005-05-24 22:13:04.000000000 +0200 ++++ cyrus-imapd-2.2.12/contrib/mupdate-test.pl 2005-05-24 22:44:39.048571710 +0200 +@@ -1,4 +1,4 @@ +-#!/usr/local/bin/perl ++#!/usr/bin/perl + + # Create a workload against a murder frontend + # that will give the MUPDATE server a workout. +diff -urNad cyrus-imapd-2.2.12/perl/imap/examples/auditmbox.pl cyrus-imapd-2.2.12/perl/imap/examples/auditmbox.pl +--- cyrus-imapd-2.2.12/perl/imap/examples/auditmbox.pl 2005-05-24 22:13:05.000000000 +0200 ++++ cyrus-imapd-2.2.12/perl/imap/examples/auditmbox.pl 2005-05-24 22:44:39.058572611 +0200 +@@ -1,4 +1,4 @@ +-#! /usr/bin/perl -w ++#!/usr/bin/perl -w + # + # Copyright (c) 2000 Carnegie Mellon University. All rights reserved. + # +diff -urNad cyrus-imapd-2.2.12/perl/imap/examples/imapcollate.pl cyrus-imapd-2.2.12/perl/imap/examples/imapcollate.pl +--- cyrus-imapd-2.2.12/perl/imap/examples/imapcollate.pl 2005-05-24 22:13:05.000000000 +0200 ++++ cyrus-imapd-2.2.12/perl/imap/examples/imapcollate.pl 2005-05-24 22:44:39.057572521 +0200 +@@ -1,4 +1,4 @@ +-#! /usr/bin/perl -w ++#!/usr/bin/perl -w + # + # Copyright (c) 2000 Carnegie Mellon University. All rights reserved. + # +diff -urNad cyrus-imapd-2.2.12/perl/imap/examples/imapdu.pl cyrus-imapd-2.2.12/perl/imap/examples/imapdu.pl +--- cyrus-imapd-2.2.12/perl/imap/examples/imapdu.pl 2005-05-24 22:13:05.000000000 +0200 ++++ cyrus-imapd-2.2.12/perl/imap/examples/imapdu.pl 2005-05-24 22:44:39.059572701 +0200 +@@ -1,4 +1,4 @@ +-#! /usr/local/bin/perl -w ++#!/usr/bin/perl -w + # + # $Id: imapdu.pl,v 1.8 2001/11/30 19:30:45 leg Exp $ + # +diff -urNad cyrus-imapd-2.2.12/perl/imap/examples/test-imsp.pl cyrus-imapd-2.2.12/perl/imap/examples/test-imsp.pl +--- cyrus-imapd-2.2.12/perl/imap/examples/test-imsp.pl 2005-05-24 22:13:05.000000000 +0200 ++++ cyrus-imapd-2.2.12/perl/imap/examples/test-imsp.pl 2005-05-24 22:44:39.057572521 +0200 +@@ -1,4 +1,4 @@ +-#!/usr/local/bin/perl -w ++#!/usr/bin/perl -w + + # test-imsp.pl + # +diff -urNad cyrus-imapd-2.2.12/perl/sieve/scripts/installsieve.pl cyrus-imapd-2.2.12/perl/sieve/scripts/installsieve.pl +--- cyrus-imapd-2.2.12/perl/sieve/scripts/installsieve.pl 2005-05-24 22:13:05.000000000 +0200 ++++ cyrus-imapd-2.2.12/perl/sieve/scripts/installsieve.pl 2005-05-24 22:44:39.061572881 +0200 +@@ -1,6 +1,4 @@ +-#! /bin/sh +-exec perl -x -S $0 ${1+"$@"} # -*-perl-*- +-#!perl -w ++#!/usr/bin/perl -w + # + # Copyright (c) 2000 Carnegie Mellon University. All rights reserved. + # +diff -urNad cyrus-imapd-2.2.12/perl/sieve/scripts/sieveshell.pl cyrus-imapd-2.2.12/perl/sieve/scripts/sieveshell.pl +--- cyrus-imapd-2.2.12/perl/sieve/scripts/sieveshell.pl 2005-05-24 22:13:05.000000000 +0200 ++++ cyrus-imapd-2.2.12/perl/sieve/scripts/sieveshell.pl 2005-05-24 22:44:39.062572971 +0200 +@@ -1,6 +1,4 @@ +-#! /bin/sh +-exec perl -x -S $0 ${1+"$@"} # -*-perl-*- +-#!perl -w ++#!/usr/bin/perl -w + # + # Copyright (c) 2000 Carnegie Mellon University. All rights reserved. + # +diff -urNad cyrus-imapd-2.2.12/snmp/snmpgen cyrus-imapd-2.2.12/snmp/snmpgen +--- cyrus-imapd-2.2.12/snmp/snmpgen 2005-05-24 22:13:05.000000000 +0200 ++++ cyrus-imapd-2.2.12/snmp/snmpgen 2005-05-24 22:44:39.073573962 +0200 +@@ -1,4 +1,4 @@ +-#!/bin/sh ++#!/usr/bin/perl -w + # + # Copyright (c) 2000 Carnegie Mellon University. All rights reserved. + # +@@ -38,25 +38,8 @@ + # AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + # OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + # +-exec perl -x -S $0 ${1+"$@"} # -*-perl-*- +-#!perl -w + # $Id: snmpgen,v 1.18 2005/04/11 06:08:58 shadow Exp $ + +-if ($] !~ /^5\..*/) { +- # uh-oh. this isn't perl 5. +- foreach (split(/:/, $ENV{PATH})) { # try to find "perl5". +- exec("$_/perl5", "-w", "-x", "-S", $0, @ARGV) if (-x "$_/perl5"); +- } +- # we failed. bail. +- die "Your perl is too old; I need perl 5.\n"; +-} +- +-# load the real script. this is isolated in an 'eval' so perl4 won't +-# choke on the perl5-isms. +-eval join("\n", ); +-if ($@) { die "$@"; } +- +-__END__ + require 5; + + #Tim Martin +diff -urNad cyrus-imapd-2.2.12/tools/arbitronsort.pl cyrus-imapd-2.2.12/tools/arbitronsort.pl +--- cyrus-imapd-2.2.12/tools/arbitronsort.pl 2005-05-24 22:13:04.000000000 +0200 ++++ cyrus-imapd-2.2.12/tools/arbitronsort.pl 2005-05-24 22:44:39.018569008 +0200 +@@ -1,4 +1,4 @@ +-#!/usr/local/bin/perl ++#!/usr/bin/perl + + # + # This script takes the output of arbitron (run without the -o option) +diff -urNad cyrus-imapd-2.2.12/tools/config2header cyrus-imapd-2.2.12/tools/config2header +--- cyrus-imapd-2.2.12/tools/config2header 2005-05-24 22:13:04.000000000 +0200 ++++ cyrus-imapd-2.2.12/tools/config2header 2005-05-24 22:44:39.017568918 +0200 +@@ -1,4 +1,5 @@ +-#!/bin/sh ++#!/usr/bin/perl -w ++# + # $Id: config2header,v 1.12 2005/04/19 18:54:32 shadow Exp $ + # + # Copyright (c) 2001 Carnegie Mellon University. All rights reserved. +@@ -39,24 +40,6 @@ + # AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + # OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + # +-exec perl -x -S $0 ${1+"$@"} # -*-perl-*- +-#!perl -w +- +-if ($] !~ /^5\..*/) { +- # uh-oh. this isn't perl 5. +- foreach (split(/:/, $ENV{PATH})) { # try to find "perl5". +- exec("$_/perl5", "-x", "-S", $0, @ARGV) if (-x "$_/perl5"); +- } +- # we failed. bail. +- die "Your perl is too old; I need perl 5.\n"; +-} +- +-# load the real script. this is isolated in an 'eval' so perl4 won't +-# choke on the perl5-isms. +-eval join("\n", ); +-if ($@) { die "$@"; } +- +-__END__ + require 5; + + use strict; +diff -urNad cyrus-imapd-2.2.12/tools/config2man cyrus-imapd-2.2.12/tools/config2man +--- cyrus-imapd-2.2.12/tools/config2man 2005-05-24 22:13:04.000000000 +0200 ++++ cyrus-imapd-2.2.12/tools/config2man 2005-05-24 22:44:39.020569188 +0200 +@@ -1,4 +1,5 @@ +-#!/bin/sh ++#!/usr/bin/perl -w ++# + # $Id: config2man,v 1.3 2003/12/09 18:33:52 ken3 Exp $ + # + # Copyright (c) 2001 Carnegie Mellon University. All rights reserved. +@@ -39,24 +40,6 @@ + # AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + # OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + # +-exec perl -x -S $0 ${1+"$@"} # -*-perl-*- +-#!perl -w +- +-if ($] !~ /^5\..*/) { +- # uh-oh. this isn't perl 5. +- foreach (split(/:/, $ENV{PATH})) { # try to find "perl5". +- exec("$_/perl5", "-x", "-S", $0, @ARGV) if (-x "$_/perl5"); +- } +- # we failed. bail. +- die "Your perl is too old; I need perl 5.\n"; +-} +- +-# load the real script. this is isolated in an 'eval' so perl4 won't +-# choke on the perl5-isms. +-eval join("\n", ); +-if ($@) { die "$@"; } +- +-__END__ + require 5; + + use strict; +diff -urNad cyrus-imapd-2.2.12/tools/dohash cyrus-imapd-2.2.12/tools/dohash +--- cyrus-imapd-2.2.12/tools/dohash 2005-05-24 22:13:04.000000000 +0200 ++++ cyrus-imapd-2.2.12/tools/dohash 2005-05-24 22:44:39.023569458 +0200 +@@ -1,4 +1,4 @@ +-#!/bin/sh ++#!/usr/bin/perl -w + # + # Copyright (c) 2000 Carnegie Mellon University. All rights reserved. + # +@@ -38,27 +38,10 @@ + # AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + # OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + # +-exec perl -x -S $0 ${1+"$@"} # -*-perl-*- +-#!perl -w + # script to upgrade from versions of imapd previous to 1.6.2 + # make sure you run it as the cyrus user + # $Id: dohash,v 1.11 2005/12/01 22:01:12 murch Exp $ + +-if ($] !~ /^5\..*/) { +- # uh-oh. this isn't perl 5. +- foreach (split(/:/, $ENV{PATH})) { # try to find "perl5". +- exec("$_/perl5", "-x", "-S", $0, @ARGV) if (-x "$_/perl5"); +- } +- # we failed. bail. +- die "Your perl is too old; I need perl 5.\n"; +-} +- +-# load the real script. this is isolated in an 'eval' so perl4 won't +-# choke on the perl5-isms. +-eval join("\n", ); +-if ($@) { die "$@"; } +- +-__END__ + require 5; + + $| = 1; +diff -urNad cyrus-imapd-2.2.12/tools/masssievec cyrus-imapd-2.2.12/tools/masssievec +--- cyrus-imapd-2.2.12/tools/masssievec 2005-05-24 22:13:04.000000000 +0200 ++++ cyrus-imapd-2.2.12/tools/masssievec 2005-05-24 22:44:39.019569098 +0200 +@@ -1,4 +1,6 @@ +-#!/bin/sh ++#!/usr/bin/perl -w ++# ++# Script for mass compilation of sieve scripts. + # + # Copyright (c) 2000 Carnegie Mellon University. All rights reserved. + # +@@ -38,28 +40,11 @@ + # AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + # OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + # +-exec perl -x -S $0 ${1+"$@"} # -*-perl-*- +-#!perl -w + # + # Script for mass compilation of sieve scripts. + # + # $Id: masssievec,v 1.5 2005/12/01 22:01:12 murch Exp $ + +-if ($] !~ /^5\..*/) { +- # uh-oh. this isn't perl 5. +- foreach (split(/:/, $ENV{PATH})) { # try to find "perl5". +- exec("$_/perl5", "-x", "-S", $0, @ARGV) if (-x "$_/perl5"); +- } +- # we failed. bail. +- die "Your perl is too old; I need perl 5.\n"; +-} +- +-# load the real script. this is isolated in an 'eval' so perl4 won't +-# choke on the perl5-isms. +-eval join("\n", ); +-if ($@) { die "$@"; } +- +-__END__ + require 5; + + $| = 1; +diff -urNad cyrus-imapd-2.2.12/tools/mkimap cyrus-imapd-2.2.12/tools/mkimap +--- cyrus-imapd-2.2.12/tools/mkimap 2005-05-24 22:13:04.000000000 +0200 ++++ cyrus-imapd-2.2.12/tools/mkimap 2005-05-24 22:44:39.030570089 +0200 +@@ -1,4 +1,4 @@ +-#!/bin/sh ++#!/usr/bin/perl + # + # Copyright (c) 2000 Carnegie Mellon University. All rights reserved. + # +@@ -38,25 +38,8 @@ + # AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + # OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + # +-exec perl -x -S $0 ${1+"$@"} # -*-perl-*- +-#!perl -w + # $Id: mkimap,v 1.17 2005/12/01 19:12:34 murch Exp $ + +-if ($] !~ /^5\..*/) { +- # uh-oh. this isn't perl 5. +- foreach (split(/:/, $ENV{PATH})) { # try to find "perl5". +- exec("$_/perl5", "-x", "-S", $0, @ARGV) if (-x "$_/perl5"); +- } +- # we failed. bail. +- die "Your perl is too old; I need perl 5.\n"; +-} +- +-# load the real script. this is isolated in an 'eval' so perl4 won't +-# choke on the perl5-isms. +-eval join("\n", ); +-if ($@) { die "$@"; } +- +-__END__ + require 5; + + sub read_conf { +diff -urNad cyrus-imapd-2.2.12/tools/mknewsgroups cyrus-imapd-2.2.12/tools/mknewsgroups +--- cyrus-imapd-2.2.12/tools/mknewsgroups 2005-05-24 22:13:04.000000000 +0200 ++++ cyrus-imapd-2.2.12/tools/mknewsgroups 2005-05-24 22:44:39.022569368 +0200 +@@ -1,5 +1,8 @@ +-#!/bin/sh ++#!/usr/bin/perl -w + # ++# Create newsgroups on imap server ++# Based on the make_fromactive.pl script by Tim Martin ++# + # Copyright (c) 2003 Carnegie Mellon University. All rights reserved. + # + # Redistribution and use in source and binary forms, with or without +@@ -38,29 +41,6 @@ + # AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + # OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + # +-exec perl -x -S $0 ${1+"$@"} # -*-perl-*- +-#!perl -w +-# +-# Create newsgroups on imap server +-# Based on the make_fromactive.pl script by Tim Martin +-# +-# $Id: mknewsgroups,v 1.2 2003/10/22 18:03:47 rjs3 Exp $ +- +-if ($] !~ /^5\..*/) { +- # uh-oh. this isn't perl 5. +- foreach (split(/:/, $ENV{PATH})) { # try to find "perl5". +- exec("$_/perl5", "-x", "-S", $0, @ARGV) if (-x "$_/perl5"); +- } +- # we failed. bail. +- die "Your perl is too old; I need perl 5.\n"; +-} +- +-# load the real script. this is isolated in an 'eval' so perl4 won't +-# choke on the perl5-isms. +-eval join("\n", ); +-if ($@) { die "$@"; } +- +-__END__ + require 5; + + use Getopt::Long; +diff -urNad cyrus-imapd-2.2.12/tools/rehash cyrus-imapd-2.2.12/tools/rehash +--- cyrus-imapd-2.2.12/tools/rehash 2005-05-24 22:13:04.000000000 +0200 ++++ cyrus-imapd-2.2.12/tools/rehash 2005-05-24 22:44:39.029569999 +0200 +@@ -1,4 +1,8 @@ +-#!/bin/sh ++#!/usr/bin/perl ++# script to upgrade from simple hashing scheme to full hashing scheme ++# make sure you run it as the cyrus user ++# ++# Written by Gary Mills + # + # Copyright (c) 2000 Carnegie Mellon University. All rights reserved. + # +@@ -38,8 +42,6 @@ + # AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + # OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + # +-exec perl -x -S $0 ${1+"$@"} # -*-perl-*- +-#!perl -w + # script to upgrade from simple hashing scheme to full hashing scheme + # make sure you run it as the cyrus user + # +@@ -47,21 +49,6 @@ + # + # $Id: rehash,v 1.8 2005/12/01 22:01:12 murch Exp $ + +-if ($] !~ /^5\..*/) { +- # uh-oh. this isn't perl 5. +- foreach (split(/:/, $ENV{PATH})) { # try to find "perl5". +- exec("$_/perl5", "-x", "-S", $0, @ARGV) if (-x "$_/perl5"); +- } +- # we failed. bail. +- die "Your perl is too old; I need perl 5.\n"; +-} +- +-# load the real script. this is isolated in an 'eval' so perl4 won't +-# choke on the perl5-isms. +-eval join("\n", ); +-if ($@) { die "$@"; } +- +-__END__ + require 5; + + $| = 1; +diff -urNad cyrus-imapd-2.2.12/tools/translatesieve cyrus-imapd-2.2.12/tools/translatesieve +--- cyrus-imapd-2.2.12/tools/translatesieve 2005-05-24 22:13:04.000000000 +0200 ++++ cyrus-imapd-2.2.12/tools/translatesieve 2005-05-24 22:44:39.027569818 +0200 +@@ -1,6 +1,4 @@ +-#!/bin/sh +-exec perl -x -S $0 ${1+"$@"} # -*-perl-*- +-#!perl -w ++#!/usr/bin/perl + # script to translate sieve scripts to use unixhierarchysep and/or altnamespace + # make sure you run it as the cyrus user + #!/usr/bin/perl +@@ -45,21 +43,6 @@ + # OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + # + +-if ($] !~ /^5\..*/) { +- # uh-oh. this isn't perl 5. +- foreach (split(/:/, $ENV{PATH})) { # try to find "perl5". +- exec("$_/perl5", "-x", "-S", $0, @ARGV) if (-x "$_/perl5"); +- } +- # we failed. bail. +- die "Your perl is too old; I need perl 5.\n"; +-} +- +-# load the real script. this is isolated in an 'eval' so perl4 won't +-# choke on the perl5-isms. +-eval join("\n", ); +-if ($@) { die "$@"; } +- +-__END__ + require 5; + + $| = 1; +diff -urNad cyrus-imapd-2.2.12/tools/undohash cyrus-imapd-2.2.12/tools/undohash +--- cyrus-imapd-2.2.12/tools/undohash 2005-05-24 22:13:04.000000000 +0200 ++++ cyrus-imapd-2.2.12/tools/undohash 2005-05-24 22:44:39.028569908 +0200 +@@ -1,4 +1,4 @@ +-#!/usr/bin/perl ++#!/usr/bin/perl -w + # script to downgrade from cyrus imapd 1.6.2+ to earlier. + # do NOT run this script while imapd's are running + # $Id: undohash,v 1.8 2005/12/01 22:01:13 murch Exp $ +diff -urNad cyrus-imapd-2.2.12/tools/upgradesieve cyrus-imapd-2.2.12/tools/upgradesieve +--- cyrus-imapd-2.2.12/tools/upgradesieve 2005-05-24 22:13:04.000000000 +0200 ++++ cyrus-imapd-2.2.12/tools/upgradesieve 2005-05-24 22:44:39.021569278 +0200 +@@ -1,6 +1,4 @@ +-#!/bin/sh +-exec perl -x -S $0 ${1+"$@"} # -*-perl-*- +-#!perl -w ++#!/usr/bin/perl -w + # script to upgrade sievedir from imapd 1.6.13 + # make sure you run it as the cyrus user + #!/usr/bin/perl +@@ -45,21 +43,6 @@ + # OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + # + +-if ($] !~ /^5\..*/) { +- # uh-oh. this isn't perl 5. +- foreach (split(/:/, $ENV{PATH})) { # try to find "perl5". +- exec("$_/perl5", "-x", "-S", $0, @ARGV) if (-x "$_/perl5"); +- } +- # we failed. bail. +- die "Your perl is too old; I need perl 5.\n"; +-} +- +-# load the real script. this is isolated in an 'eval' so perl4 won't +-# choke on the perl5-isms. +-eval join("\n", ); +-if ($@) { die "$@"; } +- +-__END__ + require 5; + + $| = 1; --- cyrus-imapd-2.2-2.2.13.orig/debian/patches/0007-upstream-remove-undump-size-limit.dpatch +++ cyrus-imapd-2.2-2.2.13/debian/patches/0007-upstream-remove-undump-size-limit.dpatch @@ -0,0 +1,128 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 0007-upstream-remove-undump-size-limit by Sven Mueller +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: remove limit on the size of mailbox files that can be received by UNDUMP +## DP: (write file directly to disk rather than reading the literal into memory) + +@DPATCH@ +diff -urNad cyrus-imapd-2.2.13/imap/mbdump.c cyrus-imapd-2.2.13/imap/mbdump.c +--- cyrus-imapd-2.2.13/imap/mbdump.c 2006-05-12 12:15:44.000000000 +0200 ++++ cyrus-imapd-2.2.13/imap/mbdump.c 2006-05-12 12:17:32.871354378 +0200 +@@ -1,5 +1,5 @@ + /* mbdump.c -- Mailbox dump routines +- * $Id: mbdump.c,v 1.30 2004/05/22 03:45:51 rjs3 Exp $ ++ * $Id: mbdump.c,v 1.31 2006/05/11 17:43:18 murch Exp $ + * Copyright (c) 1998-2003 Carnegie Mellon University. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without +@@ -585,6 +585,10 @@ + while(1) { + char fnamebuf[MAX_MAILBOX_PATH + 1024]; + char *seen_file = NULL; ++ int isnowait, sawdigit; ++ unsigned long size; ++ unsigned long cutoff = ULONG_MAX / 10; ++ unsigned digit, cutlim = ULONG_MAX % 10; + + c = getastring(pin, pout, &file); + if(c != ' ') { +@@ -676,13 +680,43 @@ + + continue; + } +- +- c = getbastring(pin, pout, &data); +- if(c != ' ' && c != ')') { ++ ++ /* read size of literal */ ++ c = prot_getc(pin); ++ if (c != '{') { + r = IMAP_PROTOCOL_ERROR; + goto done; + } + ++ size = isnowait = sawdigit = 0; ++ while ((c = prot_getc(pin)) != EOF && isdigit(c)) { ++ sawdigit = 1; ++ digit = c - '0'; ++ /* check for overflow */ ++ if (size > cutoff || (size == cutoff && digit > cutlim)) { ++ fatal("literal too big", EC_IOERR); ++ } ++ size = size*10 + digit; ++ } ++ if (c == '+') { ++ isnowait++; ++ c = prot_getc(pin); ++ } ++ if (c == '}') { ++ c = prot_getc(pin); ++ if (c == '\r') c = prot_getc(pin); ++ } ++ if (!sawdigit || c != '\n') { ++ r = IMAP_PROTOCOL_ERROR; ++ goto done; ++ } ++ ++ if (!isnowait) { ++ /* Tell client to send the message */ ++ prot_printf(pout, "+ go ahead\r\n"); ++ prot_flush(pout); ++ } ++ + if(userid && !strcmp(file.s, "SUBS")) { + /* overwriting this outright is absolutely what we want to do */ + char *s = mboxlist_hash_usersubs(userid); +@@ -742,7 +776,7 @@ + if(strncmp(file.s, "cyrus.", 6)) { + /* it doesn't match cyrus.*, so its a message file. + * charge it against the quota */ +- quotaused += data.len; ++ quotaused += size; + } + } + +@@ -760,10 +794,24 @@ + goto done; + } + +- if(write(curfile,data.s,data.len) == -1) { +- syslog(LOG_ERR, "IOERROR: writing %s: %m", fnamebuf); +- r = IMAP_IOERROR; +- goto done; ++ /* write data to file */ ++ while (size) { ++ char buf[4096+1]; ++ int n = prot_read(pin, buf, size > 4096 ? 4096 : size); ++ if (!n) { ++ syslog(LOG_ERR, ++ "IOERROR: reading message: unexpected end of file"); ++ r = IMAP_IOERROR; ++ goto done; ++ } ++ ++ size -= n; ++ ++ if (write(curfile, buf, n) != n) { ++ syslog(LOG_ERR, "IOERROR: writing %s: %m", fnamebuf); ++ r = IMAP_IOERROR; ++ goto done; ++ } + } + + close(curfile); +@@ -777,7 +825,12 @@ + unlink(fnamebuf); + } + +- if(c == ')') break; ++ c = prot_getc(pin); ++ if (c == ')') break; ++ if (c != ' ') { ++ r = IMAP_PROTOCOL_ERROR; ++ goto done; ++ } + } + + if(!r && quotaused) { --- cyrus-imapd-2.2-2.2.13.orig/debian/patches/0012-upstream-sasl-2.2.22-comapatibility-fix.dpatch +++ cyrus-imapd-2.2-2.2.13/debian/patches/0012-upstream-sasl-2.2.22-comapatibility-fix.dpatch @@ -0,0 +1,32 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 0012-upstream-sasl-2.2.22-comapatibility-fix.dpatch by Benjamin Seidenberg +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Upstream compatibility fix for SASL 2.1.22 + +@DPATCH@ +diff -urNad cyrus-imapd-2.2.13~/imtest/imtest.c cyrus-imapd-2.2.13/imtest/imtest.c +--- cyrus-imapd-2.2.13~/imtest/imtest.c 2006-05-05 21:04:25.000000000 -0400 ++++ cyrus-imapd-2.2.13/imtest/imtest.c 2006-05-25 17:49:37.000000000 -0400 +@@ -1,7 +1,7 @@ + /* imtest.c -- IMAP/POP3/NNTP/LMTP/SMTP/MUPDATE/MANAGESIEVE test client + * Ken Murchison (multi-protocol implementation) + * Tim Martin (SASL implementation) +- * $Id: imtest.c,v 1.107 2006/01/20 20:31:23 jeaton Exp $ ++ * $Id: imtest.c,v 1.108 2006/05/25 15:23:07 murch Exp $ + * + * Copyright (c) 1998-2003 Carnegie Mellon University. All rights reserved. + * +@@ -886,6 +886,12 @@ + } + + if (*str != '\r') { ++ /* trim CRLF */ ++ char *p = str + strlen(str) - 1; ++ if (p >= str && *p == '\n') *p-- = '\0'; ++ if (p >= str && *p == '\r') *p-- = '\0'; ++ ++ /* alloc space for decoded response */ + len = strlen(str) + 1; + *line = malloc(len); + if ((*line) == NULL) { --- cyrus-imapd-2.2-2.2.13.orig/debian/patches/45-kolab2-annotations.dpatch +++ cyrus-imapd-2.2-2.2.13/debian/patches/45-kolab2-annotations.dpatch @@ -0,0 +1,155 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 45-kolab2-annotations.dpatch by Sven Mueller +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Add kolab2 compatible annotation functionality + +@DPATCH@ +diff -urNad cyrus-imapd-2.2.13/imap/annotate.c cyrus-imapd-2.2.13/imap/annotate.c +--- cyrus-imapd-2.2.13/imap/annotate.c 2006-09-26 21:33:43.000000000 +0200 ++++ cyrus-imapd-2.2.13/imap/annotate.c 2006-09-26 21:33:53.973964626 +0200 +@@ -1673,6 +1673,11 @@ + { NULL, 0, ANNOTATION_PROXY_T_INVALID, 0, 0, NULL, NULL } + }; + ++const struct annotate_st_entry vendor_entry = ++ { NULL, ATTRIB_TYPE_STRING, BACKEND_ONLY, ++ ATTRIB_VALUE_SHARED | ATTRIB_VALUE_PRIV, ++ ACL_ADMIN, annotation_set_todb, NULL }; ++ + int annotatemore_store(char *mailbox, + struct entryattlist *l, + struct namespace *namespace, +@@ -1685,6 +1690,7 @@ + struct attvaluelist *av; + struct storedata sdata; + const struct annotate_st_entry *entries; ++ struct annotate_st_entry * working_entry; + time_t now = time(0); + + memset(&sdata, 0, sizeof(struct storedata)); +@@ -1706,37 +1712,55 @@ + while (e) { + int entrycount, attribs; + struct annotate_st_entry_list *nentry = NULL; ++ struct annotate_st_entry *ientry = NULL; + + /* See if we support this entry */ ++ working_entry = NULL; + for (entrycount = 0; + entries[entrycount].name; + entrycount++) { + if (!strcmp(e->entry, entries[entrycount].name)) { ++ working_entry = &(entries[entrycount]); + break; + } + } +- if (!entries[entrycount].name) { +- /* unknown annotation */ +- return IMAP_PERMISSION_DENIED; ++ if (working_entry==NULL) { ++ /* test for generic vendor annotation */ ++ if ((strncmp("/vendor/", e->entry, strlen("/vendor/"))==0) && ++ (strlen(e->entry)>strlen("/vendor/"))) { ++ working_entry = &(vendor_entry); ++ } ++ else { ++ /* unknown annotation */ ++ return IMAP_PERMISSION_DENIED; ++ } + } + + /* Add this entry to our list only if it + applies to our particular server type */ +- if (entries[entrycount].proxytype == PROXY_AND_BACKEND ++ if (working_entry->proxytype == PROXY_AND_BACKEND + || (proxy_store_func && +- entries[entrycount].proxytype == PROXY_ONLY) ++ working_entry->proxytype == PROXY_ONLY) + || (!proxy_store_func && +- entries[entrycount].proxytype == BACKEND_ONLY)) { ++ working_entry->proxytype == BACKEND_ONLY)) { ++ ientry = xzmalloc(sizeof(struct annotate_st_entry)); ++ ientry->name = e->entry; ++ ientry->type = working_entry->type; ++ ientry->proxytype = working_entry->proxytype; ++ ientry->attribs = working_entry->attribs; ++ ientry->acl = working_entry->acl; ++ ientry->set = working_entry->set; ++ ientry->rock = working_entry->rock; + nentry = xzmalloc(sizeof(struct annotate_st_entry_list)); + nentry->next = sdata.entry_list; +- nentry->entry = &(entries[entrycount]); ++ nentry->entry = ientry; + nentry->shared.modifiedsince = now; + nentry->priv.modifiedsince = now; + sdata.entry_list = nentry; + } + + /* See if we are allowed to set the given attributes. */ +- attribs = entries[entrycount].attribs; ++ attribs = working_entry->attribs; + av = e->attvalues; + while (av) { + const char *value; +@@ -1746,7 +1770,7 @@ + goto cleanup; + } + value = annotate_canon_value(av->value, +- entries[entrycount].type); ++ working_entry->type); + if (!value) { + r = IMAP_ANNOTATION_BADVALUE; + goto cleanup; +@@ -1772,7 +1796,7 @@ + goto cleanup; + } + value = annotate_canon_value(av->value, +- entries[entrycount].type); ++ working_entry->type); + if (!value) { + r = IMAP_ANNOTATION_BADVALUE; + goto cleanup; +@@ -1874,6 +1898,12 @@ + /* Free the entry list */ + while (sdata.entry_list) { + struct annotate_st_entry_list *freeme = sdata.entry_list; ++ if (freeme != NULL){ ++ struct annotate_st_entry *freeme2 = freeme->entry; ++ if (freeme2 != NULL) { ++ free( freeme2 ); ++ } ++ } + sdata.entry_list = sdata.entry_list->next; + free(freeme); + } +diff -urNad cyrus-imapd-2.2.13/perl/imap/IMAP/Admin.pm cyrus-imapd-2.2.13/perl/imap/IMAP/Admin.pm +--- cyrus-imapd-2.2.13/perl/imap/IMAP/Admin.pm 2006-09-25 20:41:19.000000000 +0200 ++++ cyrus-imapd-2.2.13/perl/imap/IMAP/Admin.pm 2006-09-26 21:34:36.112138623 +0200 +@@ -784,19 +784,21 @@ + "news2mail" => "/vendor/cmu/cyrus-imapd/news2mail", + "expire" => "/vendor/cmu/cyrus-imapd/expire", + "sieve" => "/vendor/cmu/cyrus-imapd/sieve", +- "squat" => "/vendor/cmu/cyrus-imapd/squat" ); ++ "squat" => "/vendor/cmu/cyrus-imapd/squat", ++ "folder-type" => "/vendor/kolab/folder-type", ++ "h-share-uid" => "/vendor/kolab/h-share-uid" ); + + if(!$self->{support_annotatemore}) { + $self->{error} = "Remote does not support ANNOTATEMORE."; + return undef; + } + +- if(!exists($values{$entry})) { +- $self->{error} = "Unknown parameter $entry"; ++ if(exists($values{$entry})) { ++ $entry = $values{$entry}; ++ } else { ++ $self->{error} = "Unknown parameter $entry" unless substr($entry,0,1) eq "/"; + } + +- $entry = $values{$entry}; +- + my ($rc, $msg); + + $value = undef if($value eq "none"); --- cyrus-imapd-2.2-2.2.13.orig/debian/patches/50-fix-imclient-manpage.dpatch +++ cyrus-imapd-2.2-2.2.13/debian/patches/50-fix-imclient-manpage.dpatch @@ -0,0 +1,19 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 50-fix-imclient-manpage.dpatch by Sven Mueller +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Fix formatting of imclient manpage + +@DPATCH@ +diff -urNad cyrus-imapd-2.2-2.2.13~/man/imclient.3 cyrus-imapd-2.2-2.2.13/man/imclient.3 +--- cyrus-imapd-2.2-2.2.13~/man/imclient.3 2005-04-11 07:48:28.000000000 +0200 ++++ cyrus-imapd-2.2-2.2.13/man/imclient.3 2009-09-08 09:24:19.651356667 +0200 +@@ -41,7 +41,7 @@ + .\" $Id: imclient.3,v 1.11 2005/04/11 05:48:28 shadow Exp $ + + .SH NAME +-imclient library - authenticating callback interface to IMAP/IMSP servers ++imclient \- (library) authenticating callback interface to IMAP/IMSP servers + .SH SYNOPSIS + .ad l + .ft B --- cyrus-imapd-2.2-2.2.13.orig/debian/patches/65-sieveshell-enhancements.dpatch +++ cyrus-imapd-2.2-2.2.13/debian/patches/65-sieveshell-enhancements.dpatch @@ -0,0 +1,258 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 65-sieveshell-enhancements.dpatch by Sven Mueller +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Adds some enhancements to sieveshell and fixes some paths. + +@DPATCH@ +diff -urNad cyrus-imapd-2.2.13/perl/imap/IMAP/Shell.pm cyrus-imapd-2.2.13/perl/imap/IMAP/Shell.pm +--- cyrus-imapd-2.2.13/perl/imap/IMAP/Shell.pm 2006-04-18 18:24:55.000000000 +0200 ++++ cyrus-imapd-2.2.13/perl/imap/IMAP/Shell.pm 2006-04-18 18:26:19.796548250 +0200 +@@ -126,7 +126,7 @@ + [\&_sc_info, '[mailbox]', + 'display mailbox/server metadata'], + mboxcfg => +- [\&_sc_mboxcfg, 'mailbox [comment|news2mail|expire|sieve|squat] value', ++ [\&_sc_mboxcfg, 'mailbox [comment|news2mail|expire|squat|/] value', + 'configure mailbox'], + mboxconfig => 'mboxcfg', + reconstruct => +@@ -437,7 +437,7 @@ + # programs, as opposed to things expected from within a program.) + sub shell { + my ($server, $port, $authz, $auth, $systemrc, $userrc, $dorc, $mech, $pw) = +- ('', 143, undef, $ENV{USER} || $ENV{LOGNAME}, '/usr/local/etc/cyradmrc.pl', ++ ('', 143, undef, $ENV{USER} || $ENV{LOGNAME}, '/etc/cyradmrc.pl', + "$ENV{HOME}/.cyradmrc.pl", 1, undef, undef); + GetOptions('user|u=s' => \$auth, + 'authz|z=s' => \$authz, +@@ -467,7 +467,7 @@ + -rock => \$cyradm}); + $cyradm->authenticate(-authz => $authz, -user => $auth, + -mechanism => $mech, -password => $pw) +- or die "cyradm: cannot authenticate to server with $mech as $auth\n"; ++ or die "cyradm: cannot authenticate to server" . (defined($mech)?" with $mech":"") . " as $auth\n"; + } + my $fstk = [*STDIN, *STDOUT, *STDERR]; + if ($dorc && $systemrc ne '' && -f $systemrc) { +@@ -1400,7 +1400,7 @@ + while (defined ($opt = shift(@argv))) { + last if $opt eq '--'; + if ($opt =~ /^-/) { +- die "usage: mboxconfig mailbox [comment|news2mail|expire|sieve|squat] value\n"; ++ die "usage: mboxconfig mailbox [comment|news2mail|expire|squat|/] value\n"; + } + else { + push(@nargv, $opt); +@@ -1409,7 +1409,7 @@ + } + push(@nargv, @argv); + if (@nargv < 2) { +- die "usage: mboxconfig mailbox [comment|news2mail|expire|sieve|squat] value\n"; ++ die "usage: mboxconfig mailbox [comment|news2mail|expire|squat|/] value\n"; + } + if (!$cyrref || !$$cyrref) { + die "mboxconfig: no connection to server\n"; +diff -urNad cyrus-imapd-2.2.13/perl/sieve/lib/request.c cyrus-imapd-2.2.13/perl/sieve/lib/request.c +--- cyrus-imapd-2.2.13/perl/sieve/lib/request.c 2006-04-18 18:24:55.000000000 +0200 ++++ cyrus-imapd-2.2.13/perl/sieve/lib/request.c 2006-04-18 18:25:11.549208277 +0200 +@@ -560,7 +560,6 @@ + char **refer_to, char **errstrp) + { + int res; +- mystring_t *str=NULL; + mystring_t *errstr=NULL; + lexstate_t state; + int ret = 0; +diff -urNad cyrus-imapd-2.2.13/perl/sieve/scripts/sieveshell.pl cyrus-imapd-2.2.13/perl/sieve/scripts/sieveshell.pl +--- cyrus-imapd-2.2.13/perl/sieve/scripts/sieveshell.pl 2006-04-18 18:25:07.000000000 +0200 ++++ cyrus-imapd-2.2.13/perl/sieve/scripts/sieveshell.pl 2006-04-18 18:25:11.550208179 +0200 +@@ -60,7 +60,9 @@ + my $username = $ENV{USER}; + my $authname = $ENV{USER}; + my $realm = ""; ++my $password; + my $ex = ""; ++my $exfile = ""; + my $help = 0; + my $man = 0; + my $ret; +@@ -68,7 +70,9 @@ + GetOptions("a|authname:s" => \$authname, + "u|username:s" => \$username, + "r|realm:s" => \$realm, ++ "p|password:s" => \$password, + "e|exec:s" => \$ex, ++ "f|execfile:s" => \$exfile, + "help|?" => \$help, + man => \$man) or pod2usage(2); + pod2usage(1) if $help; +@@ -83,20 +87,24 @@ + my $filehandle; + my $interactive; + +-if (! $ex eq "") { +- $filehandle = tempfile(); +- +- if (!$filehandle) { die "unable to open tmp file: $?"; } +- +- print $filehandle $ex; +- seek $filehandle, 0, 0; # rewind file ++if (! $exfile eq "") { ++ open(FILEH,"<$exfile") || die "unable to open file: $?"; ++ $filehandle = *FILEH; + $interactive = 0; + } else { +- $filehandle = *STDIN; +- $interactive = 1; +-} ++ if (! $ex eq "") { ++ $filehandle = tempfile(); + ++ if (!$filehandle) { die "unable to open tmp file: $?"; } + ++ print $filehandle $ex; ++ seek $filehandle, 0, 0; # rewind file ++ $interactive = 0; ++ } else { ++ $filehandle = *STDIN; ++ $interactive = 1; ++ } ++} + + sub list_cb { + +@@ -121,6 +129,8 @@ + return $authname; + } elsif (($type eq "realm") && (defined $realm)) { + return $realm; ++ } elsif (($type eq "password") && (defined $password)) { ++ return $password; + } + + my $ostty; +@@ -171,6 +181,8 @@ + + my $term = Term::ReadLine->new("sieveshell"); + ++my $exitcode = 0; ++ + $term->ornaments(0); + + while(defined($_ = ($interactive ? $term->readline('> ') : <$filehandle>))){ +@@ -197,6 +209,9 @@ + my $errstr = sieve_get_error($obj); + $errstr = "unknown error" if(!defined($errstr)); + print "upload failed: $errstr\n"; ++ $exitcode = 1; ++ } else { ++ $exitcode = 0; + } + } elsif (($words[0] eq "list") || + ($words[0] eq "l") || +@@ -206,6 +221,9 @@ + my $errstr = sieve_get_error($obj); + $errstr = "unknown error" if(!defined($errstr)); + print "list failed: $errstr\n"; ++ $exitcode = 1; ++ } else { ++ $exitcode = 0; + } + } elsif (($words[0] eq "activate") || + ($words[0] eq "a")) { +@@ -218,6 +236,9 @@ + my $errstr = sieve_get_error($obj); + $errstr = "unknown error" if(!defined($errstr)); + print "activate failed: $errstr\n"; ++ $exitcode = 1; ++ } else { ++ $exitcode = 0; + } + } elsif (($words[0] eq "deactivate") || + ($words[0] eq "da")) { +@@ -230,6 +251,9 @@ + my $errstr = sieve_get_error($obj); + $errstr = "unknown error" if(!defined($errstr)); + print "deactivate failed: $errstr\n"; ++ $exitcode = 1; ++ } else { ++ $exitcode = 0; + } + } elsif (($words[0] eq "delete") || + ($words[0] eq "d")) { +@@ -242,6 +266,9 @@ + my $errstr = sieve_get_error($obj); + $errstr = "unknown error" if(!defined($errstr)); + print "delete failed: $errstr\n"; ++ $exitcode = 1; ++ } else { ++ $exitcode = 0; + } + } elsif (($words[0] eq "get") || + ($words[0] eq "g")) { +@@ -255,25 +282,32 @@ + my $errstr = sieve_get_error($obj); + $errstr = "unknown error" if(!defined($errstr)); + print "get failed: $errstr\n"; ++ $exitcode = 1; + } else { + if ($words[2]) { + open (OUTPUT,">$words[2]") || die "Unable to open $words[2]"; + print OUTPUT $str; + close(OUTPUT); ++ $exitcode = 0; + } else { + print $str; ++ $exitcode = 0; + } + } + } elsif (($words[0] eq "quit") || ($words[0] eq "q")) { + sieve_logout($obj); +- exit 0; ++ exit $exitcode; + } elsif (($words[0] eq "help") || ($words[0] eq "?")) { + show_help(); ++ $exitcode = 0; + } else { + print "Invalid command: $words[0]\n"; ++ $exitcode = 1; + } + } + ++exit $exitcode; ++ + __END__ + + =head1 NAME +@@ -283,7 +317,8 @@ + =head1 SYNOPSIS + + sieveshell [B<--user>=I] [B<--authname>=I] +-[B<--realm>=I] [B<--exec>=I