dovecot/dovecot.spec

changeset 237
76b4896bea63
parent 204
5aa32536e189
child 239
d2e66a0e1aa8
equal deleted inserted replaced
6:6274093980b6 7:0e8a0d408179
1 ## 1 ##
2 ## dovecot.spec -- OpenPKG RPM Package Specification 2 ## dovecot.spec -- OpenPKG RPM Package Specification
3 ## Copyright (c) 2000-2008 OpenPKG Foundation e.V. <http://openpkg.net/> 3 ## Copyright (c) 2000-2009 OpenPKG Foundation e.V. <http://openpkg.net/>
4 ## 4 ##
5 ## Permission to use, copy, modify, and distribute this software for 5 ## Permission to use, copy, modify, and distribute this software for
6 ## any purpose with or without fee is hereby granted, provided that 6 ## any purpose with or without fee is hereby granted, provided that
7 ## the above copyright notice and this permission notice appear in all 7 ## the above copyright notice and this permission notice appear in all
8 ## copies. 8 ## copies.
20 ## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 20 ## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
21 ## SUCH DAMAGE. 21 ## SUCH DAMAGE.
22 ## 22 ##
23 23
24 # package version 24 # package version
25 %define V_major 1.1 25 %define V_major 1.2
26 %define V_minor 15 26 %define V_minor 6
27 %define V_minor_sieve 6 27 %define V_sieve_base 1.2
28 %define V_managesieve 0.10.6 28 %define V_sieve 0.1.13
29 %define V_managesieve_base 1.2.6
30 %define V_managesieve 0.11.9
31 %define V_managesieved_base 1.2
32 %define V_managesieved 0.11.9
29 33
30 # package information 34 # package information
31 Name: dovecot 35 Name: dovecot
32 Summary: IMAP4 & POP3 Server 36 Summary: IMAP4 & POP3 Server
33 URL: http://www.dovecot.org/ 37 URL: http://www.dovecot.org/
36 Distribution: OpenPKG Community 40 Distribution: OpenPKG Community
37 Class: EVAL 41 Class: EVAL
38 Group: Mail 42 Group: Mail
39 License: MIT+LGPL 43 License: MIT+LGPL
40 Version: %{V_major}.%{V_minor} 44 Version: %{V_major}.%{V_minor}
41 Release: 20090521 45 Release: 20091101
42 46
43 # package options 47 # package options
44 %option with_fsl yes 48 %option with_fsl yes
45 %option with_pam yes 49 %option with_pam yes
50 %option with_sieve yes
51 %option with_managesieve yes
46 %option with_ldap no 52 %option with_ldap no
47 %option with_mysql no 53 %option with_mysql no
48 %option with_pgsql no 54 %option with_pgsql no
49 %option with_sqlite no 55 %option with_sqlite no
50 %option with_pop3d no
51 %option with_managesieve no
52 %option with_sieve yes
53 56
54 # list of sources 57 # list of sources
55 Source0: http://www.dovecot.org/releases/%{V_major}/dovecot-%{V_major}.%{V_minor}.tar.gz 58 Source0: http://www.dovecot.org/releases/%{V_major}/dovecot-%{V_major}.%{V_minor}.tar.gz
56 Source1: http://www.dovecot.org/releases/sieve/dovecot-sieve-%{V_major}.%{V_minor_sieve}.tar.gz 59 Source1: http://www.rename-it.nl/dovecot/%{V_major}/dovecot-%{V_sieve_base}-sieve-%{V_sieve}.tar.gz
57 Source2: http://www.rename-it.nl/dovecot/%{V_major}/dovecot-%{V_major}-managesieve-%{V_managesieve}.tar.gz 60 Source2: http://www.rename-it.nl/dovecot/%{V_major}/dovecot-%{V_managesieved_base}-managesieve-%{V_managesieved}.tar.gz
58 Source3: fsl.dovecot 61 Source3: fsl.dovecot
59 Source4: rc.dovecot 62 Source4: rc.dovecot
63 Source5: dovecot.conf
60 Patch0: dovecot.patch 64 Patch0: dovecot.patch
61 Patch1: http://www.rename-it.nl/dovecot/%{V_major}/dovecot-%{V_major}.%{V_minor}-managesieve-%{V_managesieve}.diff.gz 65 Patch1: http://www.rename-it.nl/dovecot/%{V_major}/dovecot-%{V_managesieve_base}-managesieve-%{V_managesieve}.diff.gz
62 66
63 # build information 67 # build information
64 Prefix: %{l_prefix} 68 Prefix: %{l_prefix}
65 BuildRoot: %{l_buildroot} 69 BuildRoot: %{l_buildroot}
66 BuildPreReq: OpenPKG, openpkg >= 20060823 70 BuildPreReq: OpenPKG, openpkg >= 20060823
67 PreReq: OpenPKG, openpkg >= 20060823, MTA 71 PreReq: OpenPKG, openpkg >= 20060823, MTA, x509
68 BuildPreReq: libiconv, openssl 72 BuildPreReq: libiconv, openssl
69 PreReq: libiconv, openssl 73 PreReq: libiconv, openssl
70 %if "%{with_fsl}" == "yes" 74 %if "%{with_fsl}" == "yes"
71 BuildPreReq: fsl 75 BuildPreReq: fsl
72 PreReq: fsl 76 PreReq: fsl
74 %if "%{with_ldap}" == "yes" 78 %if "%{with_ldap}" == "yes"
75 BuildPreReq: openldap 79 BuildPreReq: openldap
76 PreReq: openldap 80 PreReq: openldap
77 %endif 81 %endif
78 %if "%{with_managesieve}" == "yes" 82 %if "%{with_managesieve}" == "yes"
79 BuildPreReq: autoconf, automake, pkgconfig, libtool
80 BuildPreReq: gettext 83 BuildPreReq: gettext
81 PreReq: gettext 84 PreReq: gettext
82 %endif 85 %endif
83 %if "%{with_pam}" == "yes" 86 %if "%{with_pam}" == "yes"
84 BuildPreReq: PAM 87 BuildPreReq: PAM
107 110
108 %track 111 %track
109 prog dovecot = { 112 prog dovecot = {
110 version = %{V_major}.%{V_minor} 113 version = %{V_major}.%{V_minor}
111 url = http://www.dovecot.org/download.html 114 url = http://www.dovecot.org/download.html
112 regex = dovecot-(1\.1(\.\d+)+)\.tar\.gz 115 regex = dovecot-(__VER__)\.tar\.gz
113 } 116 }
114 prog dovecot:sieve = { 117 prog dovecot:sieve = {
115 version = %{V_major}.%{V_minor_sieve} 118 version = %{V_sieve}
116 url = http://www.dovecot.org/download.html 119 url = http://www.rename-it.nl/dovecot/%{V_major}/
117 regex = dovecot-sieve-(%{V_major}(\.\d+)+)\.tar\.gz 120 regex = dovecot-%{V_sieve_base}-sieve-(__VER__)\.tar\.gz
121 }
122 prog dovecot:managesieved = {
123 version = %{V_managesieved}
124 url = http://www.rename-it.nl/dovecot/%{V_major}/
125 regex = dovecot-%{V_managesieved_base}-managesieve-(__VER__)\.tar\.gz
118 } 126 }
119 prog dovecot:managesieve = { 127 prog dovecot:managesieve = {
120 version = %{V_managesieve} 128 version = %{V_managesieve}
121 url = http://www.rename-it.nl/dovecot/%{V_major}/ 129 url = http://www.rename-it.nl/dovecot/%{V_major}/
122 regex = dovecot-%{V_major}-managesieve-(__VER__)\.tar\.gz 130 regex = dovecot-%{V_managesieve_base}-managesieve-(__VER__)\.diff\.gz
123 } 131 }
124 132
125 %prep 133 %prep
126 %setup -q 134 %setup -q
127 %if "%{with_sieve}" == "yes" 135 %if "%{with_sieve}" == "yes"
128 %setup -q -T -D -a 1 136 %setup -q -T -D -a 1
129 %endif 137 %endif
130 %if "%{with_managesieve}" == "yes" 138 %if "%{with_managesieve}" == "yes"
131 %setup -q -T -D -a 2 139 %setup -q -T -D -a 2
132 %{l_gzip} -dc <%{PATCH1} | %{l_patch} -p1 -b 140 %{l_gzip} -dc <%{PATCH1} | %{l_patch} -p1 -b
133 %{l_shtool} subst \
134 -e 's;/usr/\(libexec/dovecot/managesieve\);%{l_prefix}/\1;g' \
135 dovecot-example.conf
136 %endif 141 %endif
137 %{l_sed} <%{PATCH0} %{l_value -s -a} | %{l_patch} -p0 -b 142 %{l_sed} <%{PATCH0} %{l_value -s -a} | %{l_patch} -p0 -b
138 143
139 %build 144 %build
140 %if "%{with_managesieve}" == "yes"
141 autoreconf -i --force || true
142 %endif
143 cppflags="%{l_cppflags}" 145 cppflags="%{l_cppflags}"
144 ldflags="%{l_ldflags} %{l_fsl_ldflags}" 146 ldflags="%{l_ldflags} %{l_fsl_ldflags}"
145 libs="%{l_fsl_libs}" 147 libs="%{l_fsl_libs}"
146 sql_drivers="" 148 sql_drivers=""
147 %if "%{with_ldap}" == "yes" 149 %if "%{with_ldap}" == "yes"
164 CC="%{l_cc}" \ 166 CC="%{l_cc}" \
165 CFLAGS="%{l_cflags -O}" \ 167 CFLAGS="%{l_cflags -O}" \
166 CPPFLAGS="$cppflags" \ 168 CPPFLAGS="$cppflags" \
167 LDFLAGS="$ldflags" \ 169 LDFLAGS="$ldflags" \
168 LIBS="$libs" \ 170 LIBS="$libs" \
169 GREP="grep" \
170 ./configure \ 171 ./configure \
171 --prefix=%{l_prefix} \ 172 --prefix=%{l_prefix} \
173 --mandir=%{l_prefix}/man \
172 --sysconfdir=%{l_prefix}/etc/dovecot \ 174 --sysconfdir=%{l_prefix}/etc/dovecot \
173 --with-ssldir=%{l_prefix}/etc/dovecot/ssl \ 175 --with-ssldir=%{l_prefix}/etc/dovecot/ssl \
174 --datadir=%{l_prefix}/share/dovecot \ 176 --datadir=%{l_prefix}/share/dovecot \
175 --docdir=%{l_prefix}/share/dovecot/doc \ 177 --docdir=%{l_prefix}/share/dovecot/doc \
176 --with-rundir=%{l_prefix}/var/dovecot/run \ 178 --with-rundir=%{l_prefix}/var/dovecot/run \
177 --with-statedir=%{l_prefix}/var/dovecot/dat \
178 --with-libiconv-prefix=%{l_prefix} \ 179 --with-libiconv-prefix=%{l_prefix} \
179 --with-ssl=openssl \ 180 --with-ssl=openssl \
180 --with-deliver \
181 --with-docs \ 181 --with-docs \
182 %if "%{with_ldap}" == "yes" 182 %if "%{with_ldap}" == "yes"
183 --with-ldap \ 183 --with-ldap \
184 %else 184 %else
185 --without-ldap \ 185 --without-ldap \
212 %if "%{with_pam}" == "yes" 212 %if "%{with_pam}" == "yes"
213 --with-pam \ 213 --with-pam \
214 %else 214 %else
215 --without-pam \ 215 --without-pam \
216 %endif 216 %endif
217 %if "%{with_pop3d}" == "yes"
218 --with-pop3d \
219 %else
220 --without-pop3d \
221 %endif
222 --without-gc \ 217 --without-gc \
223 --without-gssapi \ 218 --without-gssapi \
224 --without-lucene \ 219 --without-lucene \
225 --without-vpopmail 220 --without-vpopmail \
221 --enable-shared \
222 --disable-static
226 %{l_make} %{l_mflags -O} 223 %{l_make} %{l_mflags -O}
227 224
228 %if "%{with_sieve}" == "yes" 225 %if "%{with_sieve}" == "yes"
229 # build optional Dovecot LDA sieve plugin 226 # build optional Dovecot LDA sieve plugin
230 ( cd dovecot-sieve-%{V_major}.%{V_minor_sieve} 227 ( cd dovecot-%{V_sieve_base}-sieve-%{V_sieve}
231 CC="%{l_cc}" \ 228 CC="%{l_cc}" \
232 CFLAGS="%{l_cflags -O}" \ 229 CFLAGS="%{l_cflags -O}" \
233 CPPFLAGS="%{l_cppflags}" \ 230 CPPFLAGS="%{l_cppflags}" \
234 LDFLAGS="%{l_ldflags}" \ 231 LDFLAGS="%{l_ldflags}" \
235 GREP="grep" \
236 ./configure \ 232 ./configure \
237 --prefix=%{l_prefix} \ 233 --prefix=%{l_prefix} \
238 --with-dovecot=.. 234 --mandir=%{l_prefix}/man \
235 --with-dovecot=`pwd`/..
239 %{l_make} %{l_mflags -O} 236 %{l_make} %{l_mflags -O}
240 ) || exit $? 237 ) || exit $?
241 %endif 238 %endif
242
243 %if "%{with_managesieve}" == "yes" 239 %if "%{with_managesieve}" == "yes"
244 # build optional Dovecot managesieve package 240 # build optional Dovecot LDA managesieve daemon
245 ( cd dovecot-%{V_major}-managesieve-%{V_managesieve} 241 ( cd dovecot-%{V_managesieved_base}-managesieve-%{V_managesieved}
246 CC="%{l_cc}" \ 242 CC="%{l_cc}" \
247 CFLAGS="%{l_cflags -O}" \ 243 CFLAGS="%{l_cflags -O}" \
248 CPPFLAGS="%{l_cppflags}" \ 244 CPPFLAGS="%{l_cppflags}" \
249 LDFLAGS="%{l_ldflags}" \ 245 LDFLAGS="%{l_ldflags}" \
250 GREP="grep" \
251 ./configure \ 246 ./configure \
252 --prefix=%{l_prefix} \ 247 --prefix=%{l_prefix} \
253 --with-dovecot=.. \ 248 --mandir=%{l_prefix}/man \
254 --with-dovecot-sieve=../dovecot-sieve-%{V_major}.%{V_minor_sieve} 249 --with-dovecot-sieve=`pwd`/../dovecot-%{V_sieve_base}-sieve-%{V_sieve} \
250 --with-dovecot=`pwd`/..
255 %{l_make} %{l_mflags -O} 251 %{l_make} %{l_mflags -O}
256 ) || exit $? 252 ) || exit $?
257 %endif 253 %endif
258 254
259 %install 255 %install
260 rm -rf $RPM_BUILD_ROOT 256 rm -rf $RPM_BUILD_ROOT
261 %{l_make} %{l_mflags} install DESTDIR=$RPM_BUILD_ROOT 257 %{l_make} %{l_mflags} install AM_MAKEFLAGS="DESTDIR=$RPM_BUILD_ROOT"
262 258
263 %if "%{with_sieve}" == "yes" 259 %if "%{with_sieve}" == "yes"
264 # install optional Dovecot LDA sieve plugin 260 # install optional Dovecot LDA sieve plugin
265 ( cd dovecot-sieve-%{V_major}.%{V_minor_sieve} 261 ( cd dovecot-%{V_sieve_base}-sieve-%{V_sieve}
266 %{l_make} %{l_mflags} install DESTDIR=$RPM_BUILD_ROOT 262 %{l_make} %{l_mflags} install AM_MAKEFLAGS="DESTDIR=$RPM_BUILD_ROOT"
267 ) || exit $? 263 ) || exit $?
268 %endif 264 %endif
269
270 %if "%{with_managesieve}" == "yes" 265 %if "%{with_managesieve}" == "yes"
271 # install optional Dovecot managesieve package 266 # install optional Dovecot LDA managesieve daemon
272 ( cd dovecot-%{V_major}-managesieve-%{V_managesieve} 267 ( cd dovecot-%{V_managesieved_base}-managesieve-%{V_managesieved}
273 %{l_make} %{l_mflags} install DESTDIR=$RPM_BUILD_ROOT 268 %{l_make} %{l_mflags} install AM_MAKEFLAGS="DESTDIR=$RPM_BUILD_ROOT"
274 ) || exit $? 269 ) || exit $?
275 %endif 270 %endif
276
277 # adjust file names of configuration files
278 ( cd $RPM_BUILD_ROOT%{l_prefix}/etc/dovecot
279 for i in dovecot dovecot-db dovecot-ldap dovecot-sql; do
280 mv ${i}{-example,}.conf
281 done
282 ) || exit $?
283 271
284 # create additional dirctories 272 # create additional dirctories
285 %{l_shtool} mkdir -f -p -m 755 \ 273 %{l_shtool} mkdir -f -p -m 755 \
286 $RPM_BUILD_ROOT%{l_prefix}/etc/dovecot/ssl \ 274 $RPM_BUILD_ROOT%{l_prefix}/etc/dovecot/ssl \
287 $RPM_BUILD_ROOT%{l_prefix}/var/dovecot/dat \
288 $RPM_BUILD_ROOT%{l_prefix}/var/dovecot/log \ 275 $RPM_BUILD_ROOT%{l_prefix}/var/dovecot/log \
289 $RPM_BUILD_ROOT%{l_prefix}/var/dovecot/run/login 276 $RPM_BUILD_ROOT%{l_prefix}/var/dovecot/run/login
290 277
291 # install runcommand script 278 # install run-command script
292 %{l_shtool} mkdir -f -p -m 755 \ 279 %{l_shtool} mkdir -f -p -m 755 \
293 $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d 280 $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d
294 %if "%{with_pop3d}" == "yes"
295 cmd='/<\/\{0,1\}with_pop3d>/d'
296 %else
297 cmd='/<with_pop3d>/,/<\/with_pop3d>/d'
298 %endif
299 %{l_shtool} install -c -m 755 %{l_value -s -a} \ 281 %{l_shtool} install -c -m 755 %{l_value -s -a} \
300 -e "$cmd" \
301 %{SOURCE rc.dovecot} \ 282 %{SOURCE rc.dovecot} \
302 $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d/ 283 $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d/
303 284
304 # install OSSP fsl configuration
305 %{l_shtool} mkdir -f -p -m 755 $RPM_BUILD_ROOT%{l_prefix}/etc/fsl
306 %{l_shtool} install -c -m 644 %{l_value -s -a} \
307 %{SOURCE fsl.dovecot} \
308 $RPM_BUILD_ROOT%{l_prefix}/etc/fsl/
309
310 # strip installation 285 # strip installation
286 rm -f $RPM_BUILD_ROOT%{l_prefix}/etc/dovecot/dovecot*example.conf
311 rm -f $RPM_BUILD_ROOT%{l_prefix}/lib/dovecot/{,*}/*.la \ 287 rm -f $RPM_BUILD_ROOT%{l_prefix}/lib/dovecot/{,*}/*.la \
312 >/dev/null 2>&1 || true
313 rmdir $RPM_BUILD_ROOT%{l_prefix}/include/dovecot \
314 $RPM_BUILD_ROOT%{l_prefix}/include \
315 >/dev/null 2>&1 || true 288 >/dev/null 2>&1 || true
316 strip \ 289 strip \
317 $RPM_BUILD_ROOT%{l_prefix}/sbin/* \ 290 $RPM_BUILD_ROOT%{l_prefix}/sbin/* \
318 $RPM_BUILD_ROOT%{l_prefix}/libexec/dovecot/* \ 291 $RPM_BUILD_ROOT%{l_prefix}/libexec/dovecot/* \
319 >/dev/null 2>&1 || true 292 >/dev/null 2>&1 || true
320 293
294 # install default server configuration
295 %{l_shtool} mkdir -f -p -m 755 \
296 $RPM_BUILD_ROOT%{l_prefix}/etc/dovecot
297 %{l_shtool} install -c -m 644 %{l_value -s -a} \
298 %{SOURCE dovecot.conf} \
299 $RPM_BUILD_ROOT%{l_prefix}/etc/dovecot/
300
301 # install OSSP fsl configuration
302 %{l_shtool} mkdir -f -p -m 755 \
303 $RPM_BUILD_ROOT%{l_prefix}/etc/fsl
304 %{l_shtool} install -c -m 644 %{l_value -s -a} \
305 %{SOURCE fsl.dovecot} \
306 $RPM_BUILD_ROOT%{l_prefix}/etc/fsl/
307
321 # generate file list 308 # generate file list
322 %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT %{l_files_std} \ 309 %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT %{l_files_std} \
323 '%not %dir %{l_prefix}/etc/fsl' \ 310 '%not %dir %{l_prefix}/etc/fsl' \
324 '%config %{l_prefix}/etc/fsl/fsl.dovecot' \ 311 '%config %{l_prefix}/etc/fsl/fsl.dovecot' \
325 '%config %attr(0600,%{l_musr},%{l_mgrp}) %{l_prefix}/etc/dovecot/*' \ 312 '%config %attr(0600,%{l_musr},%{l_mgrp}) %{l_prefix}/etc/dovecot/*' \
326 '%config %attr(0640,%{l_musr},%{l_rgrp}) %{l_prefix}/etc/dovecot/dovecot.conf' \ 313 '%config %attr(0644,%{l_musr},%{l_rgrp}) %{l_prefix}/etc/dovecot/dovecot.conf' \
327 '%dir %attr(0700,%{l_susr},%{l_mgrp}) %{l_prefix}/etc/dovecot/ssl' \ 314 '%dir %attr(0700,%{l_susr},%{l_mgrp}) %{l_prefix}/etc/dovecot/ssl' \
328 '%dir %attr(0755,%{l_musr},%{l_mgrp}) %{l_prefix}/var/dovecot' \ 315 '%dir %attr(0755,%{l_susr},%{l_mgrp}) %{l_prefix}/var/dovecot' \
329 '%dir %attr(0770,%{l_musr},%{l_rgrp}) %{l_prefix}/var/dovecot/dat' \ 316 '%dir %attr(0770,%{l_susr},%{l_rgrp}) %{l_prefix}/var/dovecot/log' \
330 '%dir %attr(0770,%{l_musr},%{l_rgrp}) %{l_prefix}/var/dovecot/log' \ 317 '%dir %attr(0755,%{l_susr},%{l_mgrp}) %{l_prefix}/var/dovecot/run' \
331 '%dir %attr(0750,%{l_musr},%{l_rgrp}) %{l_prefix}/var/dovecot/run' \ 318 '%dir %attr(0750,%{l_susr},%{l_mgrp}) %{l_prefix}/var/dovecot/run/login' \
332 '%dir %attr(0750,%{l_musr},%{l_ngrp}) %{l_prefix}/var/dovecot/run/login' \
333 '%doc %{l_prefix}/share/dovecot/doc' \ 319 '%doc %{l_prefix}/share/dovecot/doc' \
334 '%doc %{l_prefix}/share/dovecot/doc/wiki' 320 '%doc %{l_prefix}/share/dovecot/doc/wiki'
335 321
336 %files -f files 322 %files -f files
337 323
348 %preun 334 %preun
349 # before erase, stop service and remove log files 335 # before erase, stop service and remove log files
350 [ $1 -eq 0 ] || exit 0 336 [ $1 -eq 0 ] || exit 0
351 %{l_rc} dovecot stop 2>/dev/null 337 %{l_rc} dovecot stop 2>/dev/null
352 rm -f $RPM_INSTALL_PREFIX/var/dovecot/* >/dev/null 2>&1 || true 338 rm -f $RPM_INSTALL_PREFIX/var/dovecot/* >/dev/null 2>&1 || true
353 rm -f $RPM_INSTALL_PREFIX/var/dovecot/dat/* >/dev/null 2>&1 || true
354 rm -f $RPM_INSTALL_PREFIX/var/dovecot/log/* >/dev/null 2>&1 || true 339 rm -f $RPM_INSTALL_PREFIX/var/dovecot/log/* >/dev/null 2>&1 || true
355 rm -f $RPM_INSTALL_PREFIX/var/dovecot/run/* >/dev/null 2>&1 || true 340 rm -f $RPM_INSTALL_PREFIX/var/dovecot/run/* >/dev/null 2>&1 || true
356 rm -f $RPM_INSTALL_PREFIX/var/dovecot/run/login/* >/dev/null 2>&1 || true 341 rm -f $RPM_INSTALL_PREFIX/var/dovecot/run/login/* >/dev/null 2>&1 || true
357 exit 0 342 exit 0
358 343

mercurial