This file is indexed.

/usr/lib/cyrus/bin/makedirs is in cyrus-common 2.4.18-3.

This file is owned by root:root, with mode 0o755.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
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 <hmh@debian.org.
#  Released under the terms of the GNU General Public License (GPL) version 2

# See lib/util.c, dir_hash_c for Cyrus' directory hashing
# for the new hash style
#HASHDIRS="A B C D E F G H I J K L M N O P Q R S T U V W"
# for the old hash style
HASHDIRS="a b c d e f g h i j k l m n o p q r s t u v w x y z"

# Sane locale, please
LC_ALL=C
export LC_ALL

CYRUSOPTFILESYS=1
CONF=/etc/imapd.conf
[ -r /etc/default/cyrus-imapd ] && . /etc/default/cyrus-imapd

getconf () {
    if [ -r "$CONF" ]; then
	confvalue=$(sed --silent -e "/^[[:blank:]]*$1:/ { \
	s#^[[:blank:]]*$1:[[:blank:]]*## \
	p
	}" < "$CONF" | head -1)
	result=${confvalue:-$2}
    else
	result=${2}
    fi
}

killsquat=0
[ "$1" = "--cleansquat" ] && {
	killsquat=1
	shift
}

getconf configdirectory /var/lib/cyrus
confdir="$result"
[ -d "$confdir" ] || {
	echo $0: $confdir is not an directory. Aborting...
	exit 2
}

getconf sievedir /etc/sieve
sievedir="$result"

getconf sieveusehomedir 0
case "$result" in
	1|t|true|yes|on) nosievedir=1
			;;
	*)		nosievedir=0
			;;
esac

getconf hashimapspool 0
case "$result" in
	1|t|true|yes|on) hashspool=1
			;;
	*)		hashspool=0
			;;
esac

# Partitions list
if [ -r "${CONF}" ]; then
    partitions=`sed --silent -e "/^[[:blank:]]*partition-[[:alnum:]]\+:/ { \
                s#^[[:blank:]]*partition-[[:alnum:]]\+:[[:blank:]]*## \
                p
                } " < "$CONF" | sort | uniq | xargs`
else
    # Set default partitions list
    partitions="/var/spool/cyrus/mail /var/spool/cyrus/news"
fi

# First, fix up the entire confdir subtree
echo "Creating/updating cyrus control directories in ${confdir}..."
[ -d "$confdir" ] || mkdir -p "$confdir"
chmod 750 "$confdir"
for i in db proc socket log msg user quota lock; do
    [ -d "$confdir/$i" ] || mkdir -p "$confdir/$i"
    chmod 700 "$confdir/$i"
done
chmod 750 $confdir/socket
for i in user quota lock; do
    for j in $HASHDIRS ; do
    	[ -d "$confdir/$i/$j" ] || mkdir "$confdir/$i/$j"
    done
done
find -H "$confdir" \( -not -user cyrus -or -not -group mail \) -execdir chown cyrus:mail '{}' \;

# Now, create the spool partitions
for i in $partitions ; do
	echo "Creating/updating partition spool $i..."
	[ -d "$i" ] || mkdir -p "$i"
	chmod 750 "$i"
	[ $hashspool -eq 1 ] && {
	   for j in $HASHDIRS ; do
	        [ -d "$i/$j" ] || mkdir "$i/$j"
	   done
	}
	[ -d "$i/stage." ] || mkdir "$i/stage."
	find -H "$i" \( -not -user cyrus -or -not -group mail \) -execdir chown cyrus:mail '{}' \;
	# and kill any squatter indexes
	[ $killsquat -ne 0 ] && find -H "$i" -name 'cyrus.squat' -type f -exec rm -f "{}" \;
done

# And the sieve directory structure
[ $nosievedir -eq 0 ] && {
	[ -d "$sievedir" ] || mkdir "$sievedir"
	chmod 755 "$sievedir"
	for j in $HASHDIRS ; do
		[ -d "$sievedir/$j" ] || mkdir "$sievedir/$j"
		chmod 755 "$sievedir/$j"
	done
	find -H "$sievedir" \( -not -user cyrus -or -not -group mail \) -execdir chown cyrus:mail '{}' \;
}

[ "x${CYRUSOPTFILESYS}" != "x1" ] && exit 0
#
# Fix attributes for every partition
#
# ext2:  Don't use ext2 for Cyrus spools. But if you must, enable Sync writes
# ext3:  Journal data too, since that improves access time a LOT
#        (maybe in the future, there's a bug in 2.4.18 ext3 w/ +j)
#
echo "Trying to optimize Cyrus partitions, edit /etc/default/cyrus-imapd to disable..."
partsys="${confdir} ${partitions}"
filesys=`df -P -T ${partsys} | sed -e "1 d" -e "s/ \+/ /g" | cut -d " " -f 2 | xargs`
for i in ${filesys} ; do
	case ${i} in
	ext2)
  		echo "Setting attributes to +S for  ${partsys%% *}..."
		find -H "${partsys%% *}" -type d -exec chattr +S "{}" \;
		;;
	ext3)
  		echo "Setting attributes to -S -j for  ${partsys%% *}..."
		find -H "${partsys%% *}" -type d -exec chattr -S -j "{}" \;
		;;
	esac
	partsys="${partsys#* }"
done

exit 0