#!/bin/sh # # Copyright (c) 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 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. # exec perl -x -S $0 ${1+"$@"} # -*-perl-*- #!perl -w # $Id: mkimap,v 1.13 2001/09/27 16:02:34 ken3 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; $imapdconf = shift || "/usr/local/etc/imapd.conf"; $sievedir = "/usr/sieve"; $nosievedir = 0; $hashispool = 0; $cyrus_user = $ENV{CYRUS_USER} || "cyrus"; $cyrus_group = $ENV{CYRUS_GROUP} || "cyrus"; open CONF, $imapdconf or die "can't open $imapdconf"; print "reading configure file...\n"; while () { if (/^#/) { next; } if (/^configdirectory:\s+(.*)$/) { $conf = $1; print "i will configure directory $conf.\n"; } if (/^sieveusehomedir:\s+(1|t|yes|on)/) { $nosievedir = 1; print "you are storing sieve scripts in user's home directories.\n"; } if (/^sievedir:\s+(.*)$/) { $sievedir = $1; print "you are using $sievedir as your sieve directory.\n"; } if (/^partition-.*:\s+(.*)$/) { if (grep /$1/, @parts) { next; } print "i saw partition $1.\n"; push @parts, $1; } if (/^hashimapspool:\s+(1|t|yes|on)/) { $hashispool = 1; print "i will also hash partitions.\n"; } } print "done\n"; close CONF; $d = $conf; print "creating $d...\n"; mkdir $d, 0755; chdir $d or die "couldn't change to $d"; #open FOO, ">mailboxes"; close FOO; mkdir "user", 0755; foreach $i ("a".."z") { mkdir "user/$i", 0755; } mkdir "quota", 0755; foreach $i ("a".."z") { mkdir "quota/$i", 0755; } mkdir "proc", 0755; mkdir "db", 0755; mkdir "socket", 0755; mkdir "log", 0755; mkdir "msg", 0755; system "/usr/sbin/chown -R $cyrus_user:$cyrus_group ."; # create the sieve stuff if (!$nosievedir) { print "creating $sievedir...\n"; mkdir $sievedir, 0755; if (chdir $sievedir) { foreach $i ("a".."z") { mkdir "$i", 0755; } } system "/usr/sbin/chown -R $cyrus_user:$cyrus_group $sievedir"; } $flag = 0; while ($part = shift @parts) { $flag = 1; print "creating $part...\n"; mkdir $part, 0755; chdir $part or die "couldn't change to partition $part"; mkdir "stage.", 0755; if ($hashispool) { foreach $i ("a".."z") { mkdir $i, 0755; } } system "/usr/sbin/chown -R $cyrus_user:$cyrus_group $part"; } print "done\n";