Codebase list cyrus-imapd / upstream/2.5.9
Imported Upstream version 2.5.9 Ondřej Surý 7 years ago
93 changed file(s) with 1877 addition(s) and 2062 deletion(s). Raw diff Collapse all Expand all
106106 DIST_SUBDIRS = .
107107 dist_sysconf_DATA =
108108 lib_LTLIBRARIES = lib/libcyrus_min.la lib/libcyrus.la
109 EXTRA_PROGRAMS = doc/text/htmlstrip
109 EXTRA_PROGRAMS = tools/htmlstrip
110110 check_PROGRAMS =
111111 service_PROGRAMS =
112112 user_PROGRAMS =
313313 cunit/cunit-to-junit.pl \
314314 cunit/key.pem \
315315 cunit/vg.supp \
316 doc/murder.png \
317 doc/netnews.png \
316318 doc \
317319 imap/dav_util.h \
318320 imap/http_err.et \
659661 exit $$retval
660662 endif
661663
662 doc_text_htmlstrip_SOURCE = doc/text/htmlstrip.c
664 tools_htmlstrip_SOURCE = tools/htmlstrip.c
663665
664666 includedir=@includedir@/cyrus
665667
15691571 @cmp -s xversion.h.tmp xversion.h || mv xversion.h.tmp xversion.h
15701572 @rm -f xversion.h.tmp
15711573
1572 dist-hook: doc/text/htmlstrip doc/man/cyradm.1.html doc/man/sieveshell.1.html
1574 .PHONY: doc
1575
1576 doc: tools/htmlstrip doc/man/cyradm.1.html doc/man/sieveshell.1.html
15731577 @$(MKDIR_P) doc/text doc/man
15741578 for man in $(top_builddir)/man/*.[1-9] $(top_srcdir)/man/*.[1-9]; \
15751579 do \
15811585 for file in $(top_srcdir)/doc/*.html; \
15821586 do \
15831587 echo "=== $$file ==="; \
1584 doc/text/htmlstrip $$file > doc/text/`basename $$file .html`; \
1588 tools/htmlstrip $$file > doc/text/`basename $$file .html`; \
15851589 done
1586 @rm doc/text/htmlstrip doc/text/htmlstrip.o doc/text/.dirstamp
15871590 @echo "== done =="
15881591
15891592 install-data-hook:
137137 host_triplet = @host@
138138 target_triplet = @target@
139139 @HAVE_LDAP_TRUE@am__append_1 = $(LDAP_CPPFLAGS)
140 EXTRA_PROGRAMS = doc/text/htmlstrip$(EXEEXT)
140 EXTRA_PROGRAMS = tools/htmlstrip$(EXEEXT)
141141 check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3)
142142 service_PROGRAMS = $(am__EXEEXT_4) $(am__EXEEXT_5) $(am__EXEEXT_6) \
143143 $(am__EXEEXT_7) $(am__EXEEXT_8) $(am__EXEEXT_9) \
848848 $(am__DEPENDENCIES_1)
849849 @CUNIT_TRUE@cunit_unit_DEPENDENCIES = $(am__append_42) \
850850 @CUNIT_TRUE@ $(am__DEPENDENCIES_5)
851 doc_text_htmlstrip_SOURCES = doc/text/htmlstrip.c
852 doc_text_htmlstrip_OBJECTS = doc/text/htmlstrip.$(OBJEXT)
853 doc_text_htmlstrip_LDADD = $(LDADD)
854851 am_imap_arbitron_OBJECTS = imap/arbitron.$(OBJEXT) \
855852 imap/cli_fatal.$(OBJEXT) imap/mutex_fake.$(OBJEXT)
856853 imap_arbitron_OBJECTS = $(am_imap_arbitron_OBJECTS)
11451142 timsieved_timsieved_OBJECTS = $(am_timsieved_timsieved_OBJECTS)
11461143 timsieved_timsieved_DEPENDENCIES = sieve/libcyrus_sieve.la \
11471144 $(am__DEPENDENCIES_6)
1145 tools_htmlstrip_SOURCES = tools/htmlstrip.c
1146 tools_htmlstrip_OBJECTS = tools/htmlstrip.$(OBJEXT)
1147 tools_htmlstrip_LDADD = $(LDADD)
11481148 SCRIPTS = $(dist_noinst_SCRIPTS)
11491149 AM_V_P = $(am__v_P_@AM_V@)
11501150 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
12101210 $(perl_libcyrus_la_SOURCES) $(perl_libcyrus_min_la_SOURCES) \
12111211 $(sieve_libcyrus_sieve_la_SOURCES) \
12121212 $(nodist_sieve_libcyrus_sieve_la_SOURCES) \
1213 $(cunit_unit_SOURCES) doc/text/htmlstrip.c \
1214 $(imap_arbitron_SOURCES) $(imap_chk_cyrus_SOURCES) \
1215 $(imap_ctl_cyrusdb_SOURCES) $(imap_ctl_deliver_SOURCES) \
1216 $(imap_ctl_mboxlist_SOURCES) $(imap_ctl_zoneinfo_SOURCES) \
1217 $(imap_cvt_cyrusdb_SOURCES) $(imap_cyr_dbtool_SOURCES) \
1218 $(imap_cyr_deny_SOURCES) $(imap_cyr_df_SOURCES) \
1219 $(imap_cyr_expire_SOURCES) $(imap_cyr_info_SOURCES) \
1220 $(imap_cyr_sequence_SOURCES) $(imap_cyr_synclog_SOURCES) \
1221 $(imap_cyr_userseen_SOURCES) $(imap_cyr_virusscan_SOURCES) \
1222 $(imap_cyrdump_SOURCES) $(imap_dav_reconstruct_SOURCES) \
1223 $(imap_deliver_SOURCES) $(imap_fetchnews_SOURCES) \
1224 $(imap_fud_SOURCES) $(imap_httpd_SOURCES) \
1225 $(nodist_imap_httpd_SOURCES) $(imap_idled_SOURCES) \
1226 $(imap_imapd_SOURCES) $(imap_ipurge_SOURCES) \
1227 $(imap_lmtpd_SOURCES) $(imap_mbexamine_SOURCES) \
1228 $(imap_mbpath_SOURCES) $(imap_mbtool_SOURCES) \
1229 $(imap_mupdate_SOURCES) $(imap_nntpd_SOURCES) \
1230 $(nodist_imap_nntpd_SOURCES) $(imap_pop3d_SOURCES) \
1231 $(imap_quota_SOURCES) $(imap_reconstruct_SOURCES) \
1232 $(imap_smmapd_SOURCES) $(imap_squatter_SOURCES) \
1233 $(imap_sync_client_SOURCES) $(imap_sync_reset_SOURCES) \
1234 $(imap_sync_server_SOURCES) $(imap_tls_prune_SOURCES) \
1235 $(imap_unexpunge_SOURCES) $(imtest_imtest_SOURCES) \
1236 $(master_master_SOURCES) $(netnews_remotepurge_SOURCES) \
1237 $(notifyd_notifyd_SOURCES) $(notifyd_notifytest_SOURCES) \
1238 $(ptclient_ptdump_SOURCES) $(ptclient_ptexpire_SOURCES) \
1239 $(ptclient_ptloader_SOURCES) sieve/sievec.c sieve/sieved.c \
1240 $(sieve_test_SOURCES) $(timsieved_timsieved_SOURCES)
1213 $(cunit_unit_SOURCES) $(imap_arbitron_SOURCES) \
1214 $(imap_chk_cyrus_SOURCES) $(imap_ctl_cyrusdb_SOURCES) \
1215 $(imap_ctl_deliver_SOURCES) $(imap_ctl_mboxlist_SOURCES) \
1216 $(imap_ctl_zoneinfo_SOURCES) $(imap_cvt_cyrusdb_SOURCES) \
1217 $(imap_cyr_dbtool_SOURCES) $(imap_cyr_deny_SOURCES) \
1218 $(imap_cyr_df_SOURCES) $(imap_cyr_expire_SOURCES) \
1219 $(imap_cyr_info_SOURCES) $(imap_cyr_sequence_SOURCES) \
1220 $(imap_cyr_synclog_SOURCES) $(imap_cyr_userseen_SOURCES) \
1221 $(imap_cyr_virusscan_SOURCES) $(imap_cyrdump_SOURCES) \
1222 $(imap_dav_reconstruct_SOURCES) $(imap_deliver_SOURCES) \
1223 $(imap_fetchnews_SOURCES) $(imap_fud_SOURCES) \
1224 $(imap_httpd_SOURCES) $(nodist_imap_httpd_SOURCES) \
1225 $(imap_idled_SOURCES) $(imap_imapd_SOURCES) \
1226 $(imap_ipurge_SOURCES) $(imap_lmtpd_SOURCES) \
1227 $(imap_mbexamine_SOURCES) $(imap_mbpath_SOURCES) \
1228 $(imap_mbtool_SOURCES) $(imap_mupdate_SOURCES) \
1229 $(imap_nntpd_SOURCES) $(nodist_imap_nntpd_SOURCES) \
1230 $(imap_pop3d_SOURCES) $(imap_quota_SOURCES) \
1231 $(imap_reconstruct_SOURCES) $(imap_smmapd_SOURCES) \
1232 $(imap_squatter_SOURCES) $(imap_sync_client_SOURCES) \
1233 $(imap_sync_reset_SOURCES) $(imap_sync_server_SOURCES) \
1234 $(imap_tls_prune_SOURCES) $(imap_unexpunge_SOURCES) \
1235 $(imtest_imtest_SOURCES) $(master_master_SOURCES) \
1236 $(netnews_remotepurge_SOURCES) $(notifyd_notifyd_SOURCES) \
1237 $(notifyd_notifytest_SOURCES) $(ptclient_ptdump_SOURCES) \
1238 $(ptclient_ptexpire_SOURCES) $(ptclient_ptloader_SOURCES) \
1239 sieve/sievec.c sieve/sieved.c $(sieve_test_SOURCES) \
1240 $(timsieved_timsieved_SOURCES) tools/htmlstrip.c
12411241 DIST_SOURCES = $(perl_sieve_lib_libisieve_a_SOURCES) \
12421242 $(com_err_et_libcyrus_com_err_la_SOURCES) \
12431243 $(am__imap_libcyrus_imap_la_SOURCES_DIST) \
12471247 $(am__perl_libcyrus_la_SOURCES_DIST) \
12481248 $(am__perl_libcyrus_min_la_SOURCES_DIST) \
12491249 $(sieve_libcyrus_sieve_la_SOURCES) \
1250 $(am__cunit_unit_SOURCES_DIST) doc/text/htmlstrip.c \
1251 $(imap_arbitron_SOURCES) $(imap_chk_cyrus_SOURCES) \
1252 $(imap_ctl_cyrusdb_SOURCES) $(imap_ctl_deliver_SOURCES) \
1253 $(imap_ctl_mboxlist_SOURCES) \
1250 $(am__cunit_unit_SOURCES_DIST) $(imap_arbitron_SOURCES) \
1251 $(imap_chk_cyrus_SOURCES) $(imap_ctl_cyrusdb_SOURCES) \
1252 $(imap_ctl_deliver_SOURCES) $(imap_ctl_mboxlist_SOURCES) \
12541253 $(am__imap_ctl_zoneinfo_SOURCES_DIST) \
12551254 $(imap_cvt_cyrusdb_SOURCES) $(imap_cyr_dbtool_SOURCES) \
12561255 $(imap_cyr_deny_SOURCES) $(imap_cyr_df_SOURCES) \
12771276 $(ptclient_ptexpire_SOURCES) \
12781277 $(am__ptclient_ptloader_SOURCES_DIST) sieve/sievec.c \
12791278 sieve/sieved.c $(sieve_test_SOURCES) \
1280 $(timsieved_timsieved_SOURCES)
1279 $(timsieved_timsieved_SOURCES) tools/htmlstrip.c
12811280 RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
12821281 ctags-recursive dvi-recursive html-recursive info-recursive \
12831282 install-data-recursive install-dvi-recursive \
16551654 contrib/notify_unix/simple_notify.pl contrib/squatrunner.pl \
16561655 contrib/mupdate-test.pl contrib/squatrunner.txt \
16571656 cunit/cacert.pem cunit/cert.pem cunit/cunit.pl \
1658 cunit/cunit-to-junit.pl cunit/key.pem cunit/vg.supp doc \
1659 imap/dav_util.h imap/http_err.et imap/imap_err.et \
1660 imap/mupdate_err.et imap/nntp_err.et imap/rfc822_header.st \
1661 imap/tz_err.et lib/charset/aliases.txt lib/charset/big5.t \
1657 cunit/cunit-to-junit.pl cunit/key.pem cunit/vg.supp \
1658 doc/murder.png doc/netnews.png doc imap/dav_util.h \
1659 imap/http_err.et imap/imap_err.et imap/mupdate_err.et \
1660 imap/nntp_err.et imap/rfc822_header.st imap/tz_err.et \
1661 lib/charset/aliases.txt lib/charset/big5.t \
16621662 lib/charset/gb2312.t lib/charset/iso-2022-jp.t \
16631663 lib/charset/iso-2022-kr.t lib/charset/iso-8859-10.t \
16641664 lib/charset/iso-8859-11.t lib/charset/iso-8859-13.t \
18791879
18801880 # To run under Valgrind, do: make VG=1 check
18811881 @CUNIT_TRUE@VALGRIND = valgrind --tool=memcheck --leak-check=full --suppressions=vg.supp
1882 doc_text_htmlstrip_SOURCE = doc/text/htmlstrip.c
1882 tools_htmlstrip_SOURCE = tools/htmlstrip.c
18831883 include_HEADERS = \
18841884 lib/acl.h \
18851885 lib/arrayu64.h \
30653065 cunit/unit$(EXEEXT): $(cunit_unit_OBJECTS) $(cunit_unit_DEPENDENCIES) $(EXTRA_cunit_unit_DEPENDENCIES) cunit/$(am__dirstamp)
30663066 @rm -f cunit/unit$(EXEEXT)
30673067 $(AM_V_CCLD)$(LINK) $(cunit_unit_OBJECTS) $(cunit_unit_LDADD) $(LIBS)
3068 doc/text/$(am__dirstamp):
3069 @$(MKDIR_P) doc/text
3070 @: > doc/text/$(am__dirstamp)
3071 doc/text/$(DEPDIR)/$(am__dirstamp):
3072 @$(MKDIR_P) doc/text/$(DEPDIR)
3073 @: > doc/text/$(DEPDIR)/$(am__dirstamp)
3074 doc/text/htmlstrip.$(OBJEXT): doc/text/$(am__dirstamp) \
3075 doc/text/$(DEPDIR)/$(am__dirstamp)
3076
3077 doc/text/htmlstrip$(EXEEXT): $(doc_text_htmlstrip_OBJECTS) $(doc_text_htmlstrip_DEPENDENCIES) $(EXTRA_doc_text_htmlstrip_DEPENDENCIES) doc/text/$(am__dirstamp)
3078 @rm -f doc/text/htmlstrip$(EXEEXT)
3079 $(AM_V_CCLD)$(LINK) $(doc_text_htmlstrip_OBJECTS) $(doc_text_htmlstrip_LDADD) $(LIBS)
30803068 imap/arbitron.$(OBJEXT): imap/$(am__dirstamp) \
30813069 imap/$(DEPDIR)/$(am__dirstamp)
30823070 imap/cli_fatal.$(OBJEXT): imap/$(am__dirstamp) \
35293517 timsieved/timsieved$(EXEEXT): $(timsieved_timsieved_OBJECTS) $(timsieved_timsieved_DEPENDENCIES) $(EXTRA_timsieved_timsieved_DEPENDENCIES) timsieved/$(am__dirstamp)
35303518 @rm -f timsieved/timsieved$(EXEEXT)
35313519 $(AM_V_CCLD)$(LINK) $(timsieved_timsieved_OBJECTS) $(timsieved_timsieved_LDADD) $(LIBS)
3520 tools/$(am__dirstamp):
3521 @$(MKDIR_P) tools
3522 @: > tools/$(am__dirstamp)
3523 tools/$(DEPDIR)/$(am__dirstamp):
3524 @$(MKDIR_P) tools/$(DEPDIR)
3525 @: > tools/$(DEPDIR)/$(am__dirstamp)
3526 tools/htmlstrip.$(OBJEXT): tools/$(am__dirstamp) \
3527 tools/$(DEPDIR)/$(am__dirstamp)
3528
3529 tools/htmlstrip$(EXEEXT): $(tools_htmlstrip_OBJECTS) $(tools_htmlstrip_DEPENDENCIES) $(EXTRA_tools_htmlstrip_DEPENDENCIES) tools/$(am__dirstamp)
3530 @rm -f tools/htmlstrip$(EXEEXT)
3531 $(AM_V_CCLD)$(LINK) $(tools_htmlstrip_OBJECTS) $(tools_htmlstrip_LDADD) $(LIBS)
35323532
35333533 mostlyclean-compile:
35343534 -rm -f *.$(OBJEXT)
35353535 -rm -f com_err/et/*.$(OBJEXT)
35363536 -rm -f com_err/et/*.lo
35373537 -rm -f cunit/*.$(OBJEXT)
3538 -rm -f doc/text/*.$(OBJEXT)
35393538 -rm -f imap/*.$(OBJEXT)
35403539 -rm -f imap/*.lo
35413540 -rm -f imtest/*.$(OBJEXT)
35493548 -rm -f sieve/*.$(OBJEXT)
35503549 -rm -f sieve/*.lo
35513550 -rm -f timsieved/*.$(OBJEXT)
3551 -rm -f tools/*.$(OBJEXT)
35523552
35533553 distclean-compile:
35543554 -rm -f *.tab.c
35603560 @AMDEP_TRUE@@am__include@ @am__quote@cunit/$(DEPDIR)/syslog.Po@am__quote@
35613561 @AMDEP_TRUE@@am__include@ @am__quote@cunit/$(DEPDIR)/timeout.Po@am__quote@
35623562 @AMDEP_TRUE@@am__include@ @am__quote@cunit/$(DEPDIR)/unit.Po@am__quote@
3563 @AMDEP_TRUE@@am__include@ @am__quote@doc/text/$(DEPDIR)/htmlstrip.Po@am__quote@
35643563 @AMDEP_TRUE@@am__include@ @am__quote@imap/$(DEPDIR)/arbitron.Po@am__quote@
35653564 @AMDEP_TRUE@@am__include@ @am__quote@imap/$(DEPDIR)/autocreate.Po@am__quote@
35663565 @AMDEP_TRUE@@am__include@ @am__quote@imap/$(DEPDIR)/caldav_db.Po@am__quote@
38873886 @AMDEP_TRUE@@am__include@ @am__quote@timsieved/$(DEPDIR)/parser.Po@am__quote@
38883887 @AMDEP_TRUE@@am__include@ @am__quote@timsieved/$(DEPDIR)/scripttest.Po@am__quote@
38893888 @AMDEP_TRUE@@am__include@ @am__quote@timsieved/$(DEPDIR)/timsieved.Po@am__quote@
3889 @AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/htmlstrip.Po@am__quote@
38903890
38913891 .c.o:
38923892 @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
49964996 -rm -rf .libs _libs
49974997 -rm -rf com_err/et/.libs com_err/et/_libs
49984998 -rm -rf cunit/.libs cunit/_libs
4999 -rm -rf doc/text/.libs doc/text/_libs
50004999 -rm -rf imap/.libs imap/_libs
50015000 -rm -rf imtest/.libs imtest/_libs
50025001 -rm -rf lib/.libs lib/_libs
50075006 -rm -rf ptclient/.libs ptclient/_libs
50085007 -rm -rf sieve/.libs sieve/_libs
50095008 -rm -rf timsieved/.libs timsieved/_libs
5009 -rm -rf tools/.libs tools/_libs
50105010
50115011 distclean-libtool:
50125012 -rm -f libtool config.lt
54785478 || exit 1; \
54795479 fi; \
54805480 done
5481 $(MAKE) $(AM_MAKEFLAGS) \
5482 top_distdir="$(top_distdir)" distdir="$(distdir)" \
5483 dist-hook
54845481 -test -n "$(am__skip_mode_fix)" \
54855482 || find "$(distdir)" -type d ! -perm -755 \
54865483 -exec chmod u+rwx,go+rx {} \; -o \
56605657 -rm -f com_err/et/$(am__dirstamp)
56615658 -rm -f cunit/$(DEPDIR)/$(am__dirstamp)
56625659 -rm -f cunit/$(am__dirstamp)
5663 -rm -f doc/text/$(DEPDIR)/$(am__dirstamp)
5664 -rm -f doc/text/$(am__dirstamp)
56655660 -rm -f imap/$(DEPDIR)/$(am__dirstamp)
56665661 -rm -f imap/$(am__dirstamp)
56675662 -rm -f imtest/$(DEPDIR)/$(am__dirstamp)
56835678 -rm -f sieve/$(am__dirstamp)
56845679 -rm -f timsieved/$(DEPDIR)/$(am__dirstamp)
56855680 -rm -f timsieved/$(am__dirstamp)
5681 -rm -f tools/$(DEPDIR)/$(am__dirstamp)
5682 -rm -f tools/$(am__dirstamp)
56865683 -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
56875684
56885685 maintainer-clean-generic:
57035700
57045701 distclean: distclean-recursive
57055702 -rm -f $(am__CONFIG_DISTCLEAN_FILES)
5706 -rm -rf com_err/et/$(DEPDIR) cunit/$(DEPDIR) doc/text/$(DEPDIR) imap/$(DEPDIR) imtest/$(DEPDIR) lib/$(DEPDIR) master/$(DEPDIR) netnews/$(DEPDIR) notifyd/$(DEPDIR) perl/sieve/lib/$(DEPDIR) ptclient/$(DEPDIR) sieve/$(DEPDIR) timsieved/$(DEPDIR)
5703 -rm -rf com_err/et/$(DEPDIR) cunit/$(DEPDIR) imap/$(DEPDIR) imtest/$(DEPDIR) lib/$(DEPDIR) master/$(DEPDIR) netnews/$(DEPDIR) notifyd/$(DEPDIR) perl/sieve/lib/$(DEPDIR) ptclient/$(DEPDIR) sieve/$(DEPDIR) timsieved/$(DEPDIR) tools/$(DEPDIR)
57075704 -rm -f Makefile
57085705 distclean-am: clean-am distclean-compile distclean-generic \
57095706 distclean-hdr distclean-libtool distclean-tags
57585755 maintainer-clean: maintainer-clean-recursive
57595756 -rm -f $(am__CONFIG_DISTCLEAN_FILES)
57605757 -rm -rf $(top_srcdir)/autom4te.cache
5761 -rm -rf com_err/et/$(DEPDIR) cunit/$(DEPDIR) doc/text/$(DEPDIR) imap/$(DEPDIR) imtest/$(DEPDIR) lib/$(DEPDIR) master/$(DEPDIR) netnews/$(DEPDIR) notifyd/$(DEPDIR) perl/sieve/lib/$(DEPDIR) ptclient/$(DEPDIR) sieve/$(DEPDIR) timsieved/$(DEPDIR)
5758 -rm -rf com_err/et/$(DEPDIR) cunit/$(DEPDIR) imap/$(DEPDIR) imtest/$(DEPDIR) lib/$(DEPDIR) master/$(DEPDIR) netnews/$(DEPDIR) notifyd/$(DEPDIR) perl/sieve/lib/$(DEPDIR) ptclient/$(DEPDIR) sieve/$(DEPDIR) timsieved/$(DEPDIR) tools/$(DEPDIR)
57625759 -rm -f Makefile
57635760 maintainer-clean-am: distclean-am maintainer-clean-generic
57645761
57945791 clean-libLTLIBRARIES clean-libtool clean-noinstLIBRARIES \
57955792 clean-noinstLTLIBRARIES clean-servicePROGRAMS \
57965793 clean-userPROGRAMS cscope cscopelist-am ctags ctags-am dist \
5797 dist-all dist-bzip2 dist-gzip dist-hook dist-lzip dist-shar \
5798 dist-tarZ dist-xz dist-zip distcheck distclean \
5799 distclean-compile distclean-generic distclean-hdr \
5800 distclean-libtool distclean-tags distcleancheck distdir \
5801 distuninstallcheck dvi dvi-am html html-am info info-am \
5802 install install-am install-binPROGRAMS install-data \
5803 install-data-am install-data-hook install-dist_sysconfDATA \
5804 install-dvi install-dvi-am install-exec install-exec-am \
5805 install-exec-hook install-html install-html-am \
5806 install-includeHEADERS install-info install-info-am \
5807 install-libLTLIBRARIES install-man install-man1 install-man3 \
5808 install-man5 install-man8 install-nobase_includeHEADERS \
5794 dist-all dist-bzip2 dist-gzip dist-lzip dist-shar dist-tarZ \
5795 dist-xz dist-zip distcheck distclean distclean-compile \
5796 distclean-generic distclean-hdr distclean-libtool \
5797 distclean-tags distcleancheck distdir distuninstallcheck dvi \
5798 dvi-am html html-am info info-am install install-am \
5799 install-binPROGRAMS install-data install-data-am \
5800 install-data-hook install-dist_sysconfDATA install-dvi \
5801 install-dvi-am install-exec install-exec-am install-exec-hook \
5802 install-html install-html-am install-includeHEADERS \
5803 install-info install-info-am install-libLTLIBRARIES \
5804 install-man install-man1 install-man3 install-man5 \
5805 install-man8 install-nobase_includeHEADERS \
58095806 install-nobase_nodist_includeHEADERS \
58105807 install-nodist_includeHEADERS install-pdf install-pdf-am \
58115808 install-pkgconfigDATA install-ps install-ps-am \
59905987 @cmp -s xversion.h.tmp xversion.h || mv xversion.h.tmp xversion.h
59915988 @rm -f xversion.h.tmp
59925989
5993 dist-hook: doc/text/htmlstrip doc/man/cyradm.1.html doc/man/sieveshell.1.html
5990 .PHONY: doc
5991
5992 doc: tools/htmlstrip doc/man/cyradm.1.html doc/man/sieveshell.1.html
59945993 @$(MKDIR_P) doc/text doc/man
59955994 for man in $(top_builddir)/man/*.[1-9] $(top_srcdir)/man/*.[1-9]; \
59965995 do \
60026001 for file in $(top_srcdir)/doc/*.html; \
60036002 do \
60046003 echo "=== $$file ==="; \
6005 doc/text/htmlstrip $$file > doc/text/`basename $$file .html`; \
6004 tools/htmlstrip $$file > doc/text/`basename $$file .html`; \
60066005 done
6007 @rm doc/text/htmlstrip doc/text/htmlstrip.o doc/text/.dirstamp
60086006 @echo "== done =="
60096007
60106008 install-data-hook:
174174 /* Define if your GSSAPI implementation supports SPNEGO */
175175 #undef HAVE_GSS_SPNEGO
176176
177 /* Do we have support for IANA params? */
178 #undef HAVE_IANA_PARAMS
179
177180 /* Build in ical support? */
178181 #undef HAVE_ICAL
179182
00 #! /bin/sh
11 # Guess values for system-dependent variables and create Makefiles.
2 # Generated by GNU Autoconf 2.69 for cyrus-imapd 2.5.8.
2 # Generated by GNU Autoconf 2.69 for cyrus-imapd 2.5.9.
33 #
44 # Report bugs to <http://bugzilla.cyrusimap.org>.
55 #
589589 # Identity of this package.
590590 PACKAGE_NAME='cyrus-imapd'
591591 PACKAGE_TARNAME='cyrus-imapd'
592 PACKAGE_VERSION='2.5.8'
593 PACKAGE_STRING='cyrus-imapd 2.5.8'
592 PACKAGE_VERSION='2.5.9'
593 PACKAGE_STRING='cyrus-imapd 2.5.9'
594594 PACKAGE_BUGREPORT='http://bugzilla.cyrusimap.org'
595595 PACKAGE_URL='http://www.cyrusimap.org'
596596
15371537 # Omit some internal or obsolete options to make the list less imposing.
15381538 # This message is too long to be a string in the A/UX 3.1 sh.
15391539 cat <<_ACEOF
1540 \`configure' configures cyrus-imapd 2.5.8 to adapt to many kinds of systems.
1540 \`configure' configures cyrus-imapd 2.5.9 to adapt to many kinds of systems.
15411541
15421542 Usage: $0 [OPTION]... [VAR=VALUE]...
15431543
16091609
16101610 if test -n "$ac_init_help"; then
16111611 case $ac_init_help in
1612 short | recursive ) echo "Configuration of cyrus-imapd 2.5.8:";;
1612 short | recursive ) echo "Configuration of cyrus-imapd 2.5.9:";;
16131613 esac
16141614 cat <<\_ACEOF
16151615
18271827 test -n "$ac_init_help" && exit $ac_status
18281828 if $ac_init_version; then
18291829 cat <<\_ACEOF
1830 cyrus-imapd configure 2.5.8
1830 cyrus-imapd configure 2.5.9
18311831 generated by GNU Autoconf 2.69
18321832
18331833 Copyright (C) 2012 Free Software Foundation, Inc.
24822482 This file contains any messages produced by compilers while
24832483 running configure, to aid debugging if configure makes a mistake.
24842484
2485 It was created by cyrus-imapd $as_me 2.5.8, which was
2485 It was created by cyrus-imapd $as_me 2.5.9, which was
24862486 generated by GNU Autoconf 2.69. Invocation command line was
24872487
24882488 $ $0 $@
35833583
35843584 # Define the identity of the package.
35853585 PACKAGE='cyrus-imapd'
3586 VERSION='2.5.8'
3586 VERSION='2.5.9'
35873587
35883588
35893589 cat >>confdefs.h <<_ACEOF
1849018490 HTTP_LIBS="${XML2_LIBS} ${ICAL_LIBS} ${SQLITE3_LIBS} ${JSON_LIBS}"
1849118491 HTTP_CPPFLAGS="${JSON_CFLAGS} ${SQLITE3_CFLAGS} ${ICAL_CFLAGS} ${XML2_CFLAGS}"
1849218492
18493 saved_LIBS=${LIBS}
18494 saved_CPPFLAGS="${CPPFLAGS}"
18495 LIBS="${LIBS} ${HTTP_LIBS}"
18496 CPPFLAGS="${CPPFLAGS} ${HTTP_CPPFLAGS}"
18497
1849318498
1849418499 $as_echo "#define HAVE_XML2 /**/" >>confdefs.h
1849518500
1855218557
1855318558 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
1855418559 /* end confdefs.h. */
18555 #include <ical.h>
18560 #include <libical/ical.h>
1855618561
1855718562 _ACEOF
1855818563 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
1857518580
1857618581 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
1857718582 /* end confdefs.h. */
18578 #include <ical.h>
18583 #include <libical/ical.h>
18584
18585 _ACEOF
18586 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
18587 $EGREP "ICAL_IANA_PARAMETER" >/dev/null 2>&1; then :
18588
18589 $as_echo "#define HAVE_IANA_PARAMS /**/" >>confdefs.h
18590
18591 else
18592 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Your version of libical can not support scheduling or managed attachments. Consider upgrading to libical >= 0.48" >&5
18593 $as_echo "$as_me: WARNING: Your version of libical can not support scheduling or managed attachments. Consider upgrading to libical >= 0.48" >&2;}
18594 fi
18595 rm -f conftest*
18596
18597
18598 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
18599 /* end confdefs.h. */
18600 #include <libical/ical.h>
1857918601
1858018602 _ACEOF
1858118603 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
1858918611
1859018612 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
1859118613 /* end confdefs.h. */
18592 #include <ical.h>
18614 #include <libical/ical.h>
1859318615
1859418616 _ACEOF
1859518617 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
1860318625
1860418626 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
1860518627 /* end confdefs.h. */
18606 #include <ical.h>
18628 #include <libical/ical.h>
1860718629
1860818630 _ACEOF
1860918631 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
1869018712 if test "$ENABLE_RSCALE" != no; then
1869118713
1869218714
18693 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for icalrecur_rscale_token_handling_is_supported in -lical" >&5
18694 $as_echo_n "checking for icalrecur_rscale_token_handling_is_supported in -lical... " >&6; }
18695 if ${ac_cv_lib_ical_icalrecur_rscale_token_handling_is_supported+:} false; then :
18715 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for icalrecurrencetype_rscale_is_supported in -lical" >&5
18716 $as_echo_n "checking for icalrecurrencetype_rscale_is_supported in -lical... " >&6; }
18717 if ${ac_cv_lib_ical_icalrecurrencetype_rscale_is_supported+:} false; then :
1869618718 $as_echo_n "(cached) " >&6
1869718719 else
1869818720 ac_check_lib_save_LIBS=$LIBS
1870618728 #ifdef __cplusplus
1870718729 extern "C"
1870818730 #endif
18709 char icalrecur_rscale_token_handling_is_supported ();
18731 char icalrecurrencetype_rscale_is_supported ();
1871018732 int
1871118733 main ()
1871218734 {
18713 return icalrecur_rscale_token_handling_is_supported ();
18735 return icalrecurrencetype_rscale_is_supported ();
1871418736 ;
1871518737 return 0;
1871618738 }
1871718739 _ACEOF
1871818740 if ac_fn_c_try_link "$LINENO"; then :
18719 ac_cv_lib_ical_icalrecur_rscale_token_handling_is_supported=yes
18720 else
18721 ac_cv_lib_ical_icalrecur_rscale_token_handling_is_supported=no
18741 ac_cv_lib_ical_icalrecurrencetype_rscale_is_supported=yes
18742 else
18743 ac_cv_lib_ical_icalrecurrencetype_rscale_is_supported=no
1872218744 fi
1872318745 rm -f core conftest.err conftest.$ac_objext \
1872418746 conftest$ac_exeext conftest.$ac_ext
1872518747 LIBS=$ac_check_lib_save_LIBS
1872618748 fi
18727 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ical_icalrecur_rscale_token_handling_is_supported" >&5
18728 $as_echo "$ac_cv_lib_ical_icalrecur_rscale_token_handling_is_supported" >&6; }
18729 if test "x$ac_cv_lib_ical_icalrecur_rscale_token_handling_is_supported" = xyes; then :
18749 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ical_icalrecurrencetype_rscale_is_supported" >&5
18750 $as_echo "$ac_cv_lib_ical_icalrecurrencetype_rscale_is_supported" >&6; }
18751 if test "x$ac_cv_lib_ical_icalrecurrencetype_rscale_is_supported" = xyes; then :
1873018752
1873118753 $as_echo "#define HAVE_RSCALE /**/" >>confdefs.h
1873218754
1873318755 fi
1873418756
1873518757 fi
18758
18759 LIBS="${saved_LIBS}"
18760 CPPFLAGS="${saved_CPPFLAGS}"
1873618761 fi
1873718762
1873818763
2171321738 # report actual input values of CONFIG_FILES etc. instead of their
2171421739 # values after options handling.
2171521740 ac_log="
21716 This file was extended by cyrus-imapd $as_me 2.5.8, which was
21741 This file was extended by cyrus-imapd $as_me 2.5.9, which was
2171721742 generated by GNU Autoconf 2.69. Invocation command line was
2171821743
2171921744 CONFIG_FILES = $CONFIG_FILES
2178021805 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
2178121806 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
2178221807 ac_cs_version="\\
21783 cyrus-imapd config.status 2.5.8
21808 cyrus-imapd config.status 2.5.9
2178421809 configured by $0, generated by GNU Autoconf 2.69,
2178521810 with options \\"\$ac_cs_config\\"
2178621811
4343 dnl
4444
4545
46 AC_INIT([cyrus-imapd], [2.5.8], [http://bugzilla.cyrusimap.org],,[http://www.cyrusimap.org])
46 AC_INIT([cyrus-imapd], [2.5.9], [http://bugzilla.cyrusimap.org],,[http://www.cyrusimap.org])
4747 AC_PREREQ([2.63])
4848 AC_CONFIG_SRCDIR([imap/imapd.c])
4949 AC_CONFIG_HEADERS(config.h)
12181218 HTTP_LIBS="${XML2_LIBS} ${ICAL_LIBS} ${SQLITE3_LIBS} ${JSON_LIBS}"
12191219 HTTP_CPPFLAGS="${JSON_CFLAGS} ${SQLITE3_CFLAGS} ${ICAL_CFLAGS} ${XML2_CFLAGS}"
12201220
1221 saved_LIBS=${LIBS}
1222 saved_CPPFLAGS="${CPPFLAGS}"
1223 LIBS="${LIBS} ${HTTP_LIBS}"
1224 CPPFLAGS="${CPPFLAGS} ${HTTP_CPPFLAGS}"
1225
12211226 AC_DEFINE(HAVE_XML2,[],[Build in libxml support?])
12221227 AC_DEFINE(HAVE_ICAL,[],[Build in ical support?])
12231228 AC_DEFINE(HAVE_SQLITE3,[],[Build in SQLite support?])
12291234 AC_DEFINE(HAVE_TZ_BY_REF,[],
12301235 [Build TZ by ref support into httpd?]))
12311236
1232 AC_EGREP_HEADER(ICAL_TZUNTIL_PROPERTY, ical.h,
1237 AC_EGREP_HEADER(ICAL_TZUNTIL_PROPERTY, [libical/ical.h],
12331238 AC_DEFINE(HAVE_TZDIST_PROPS,[],
12341239 [Do we have built-in support for TZdist props?]))
12351240
12401245 AC_DEFINE(WITH_DKIM,[],[Build DKIM support into iSchedule?])
12411246 fi
12421247
1243 AC_EGREP_HEADER(ICAL_SCHEDULESTATUS_PARAMETER, ical.h,
1248 AC_EGREP_HEADER(ICAL_IANA_PARAMETER, [libical/ical.h],
1249 AC_DEFINE(HAVE_IANA_PARAMS,[],
1250 [Do we have support for IANA params?]),
1251 AC_MSG_WARN([Your version of libical can not support scheduling or managed attachments. Consider upgrading to libical >= 0.48]))
1252
1253 AC_EGREP_HEADER(ICAL_SCHEDULESTATUS_PARAMETER, [libical/ical.h],
12441254 AC_DEFINE(HAVE_SCHEDULING_PARAMS,[],
12451255 [Do we have built-in support for scheduling params?]))
12461256
1247 AC_EGREP_HEADER(ICAL_VAVAILABILITY_COMPONENT, ical.h,
1257 AC_EGREP_HEADER(ICAL_VAVAILABILITY_COMPONENT, [libical/ical.h],
12481258 AC_DEFINE(HAVE_VAVAILABILITY,[],
12491259 [Build VAVAILABILITY support into httpd?]))
12501260
1251 AC_EGREP_HEADER(ICAL_VPOLL_COMPONENT, ical.h,
1261 AC_EGREP_HEADER(ICAL_VPOLL_COMPONENT, [libical/ical.h],
12521262 AC_DEFINE(HAVE_VPOLL,[],
12531263 [Build VPOLL support into httpd?]))
12541264
12571267 if test "$ENABLE_RSCALE" != no; then
12581268 AC_SUBST(ICU_CFLAGS)
12591269 AC_SUBST(ICU_LIBS)
1260 AC_CHECK_LIB(ical, icalrecur_rscale_token_handling_is_supported,
1270 AC_CHECK_LIB(ical, icalrecurrencetype_rscale_is_supported,
12611271 AC_DEFINE(HAVE_RSCALE,[], [Build RSCALE support into httpd?]))
12621272 fi
1273
1274 LIBS="${saved_LIBS}"
1275 CPPFLAGS="${saved_CPPFLAGS}"
12631276 fi
12641277 AC_SUBST(HTTP_CPPFLAGS)
12651278 AC_SUBST(HTTP_LIBS)
66 <title>Changes to the Cyrus IMAP Server</title>
77 </head>
88 <body>
9
10 <h1>Changes to the Cyrus IMAP Server since 2.5.8</h1>
11 <h2>Dependency changes</h2>
12 <ul>
13 <li>Libical 2.0.0 is now supported.</li>
14 <li>preliminary support for OpenSSL 1.1.0 (not yet released)</li>
15 </ul>
16 </div>
17 <h2>Other changes</h2>
18 <ul>
19 <li>ipurge(8) now supports a &#8220;-n&#8221; (dry run) option (thanks Valentin Vidic)</li>
20 </ul>
21 <h2>Bug fixes</h2>
22 <ul>
23 <li>Fixed: imapd now proxies LIST (special-use) to backend (thanks John Capo)</li>
24 <li>Fixed: sync_client handles its shutdown file more reliably (thanks John Capo)</li>
25 <li>Fixed: httpd no longer crashes with assertion failure on shutdown after
26 CalDAV has been used</li>
27 <li>Fixed bugzilla #3938: squat search now handles pre-2.5 cyrus.squat data</li>
28 <li>Fixed Issue #5: twoskip database I/O performance in unlocked foreach</li>
29 <li>various build system improvements</li>
30 </ul>
931
1032 <h1>Changes to the Cyrus IMAP Server since 2.5.7</h1>
1133 <h2>Murder changes</h2>
00 <!-- Creator : groff version 1.22.3 -->
1 <!-- CreationDate: Fri May 20 06:10:03 2016 -->
1 <!-- CreationDate: Fri Jul 22 02:16:01 2016 -->
22 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
33 "http://www.w3.org/TR/html4/loose.dtd">
44 <html>
3333 </h2>
3434
3535
36 <p style="margin-left:11%; margin-top: 1em">arbitron
37 &minus; arbitron mailboxes</p>
36 <p style="margin-left:11%; margin-top: 1em">arbitron -
37 arbitron mailboxes</p>
3838
3939 <h2>SYNOPSIS
4040 <a name="SYNOPSIS"></a>
4343
4444
4545 <p style="margin-left:11%; margin-top: 1em"><b>arbitron</b>
46 [ <b>&minus;C</b> <i>config-file</i> ] [ <b>&minus;o</b> ] [
47 <b>&minus;u</b> ] [ <b>&minus;l</b> ] [ <b>&minus;p</b>
48 <i>months</i> ] <br>
49 [ <b>&minus;d</b> <i>days</i> | <b>&minus;D</b>
46 [ <b>-C</b> <i>config-file</i> ] [ <b>-o</b> ] [ <b>-u</b> ]
47 [ <b>-l</b> ] [ <b>-p</b> <i>months</i> ] <br>
48 [ <b>-d</b> <i>days</i> | <b>-D</b>
5049 <i>mmddyyyy</i>[<b>:</b><i>mmddyyyy</i>] ]
5150 <i>mailbox</i>...</p>
5251
9392 </h2>
9493
9594
96
97 <p style="margin-left:11%; margin-top: 1em"><b>&minus;C</b>
95 <p style="margin-left:11%; margin-top: 1em"><b>-C</b>
9896 <i>config-file</i></p>
9997
10098 <p style="margin-left:22%;">Read configuration options from
107105 <td width="3%">
108106
109107
110 <p><b>&minus;o</b></p></td>
108 <p><b>-o</b></p></td>
111109 <td width="8%"></td>
112110 <td width="78%">
113111
118116 <td width="3%">
119117
120118
121 <p><b>&minus;u</b></p></td>
119 <p><b>-u</b></p></td>
122120 <td width="8%"></td>
123121 <td width="78%">
124122
129127 <td width="3%">
130128
131129
132 <p><b>&minus;l</b></p></td>
130 <p><b>-l</b></p></td>
133131 <td width="8%"></td>
134132 <td width="78%">
135133
138136 of mbox, userid, r/s, start time, end time).</p></td></tr>
139137 </table>
140138
141 <p style="margin-left:11%;"><b>&minus;d</b> <i>days</i></p>
139 <p style="margin-left:11%;"><b>-d</b> <i>days</i></p>
142140
143141 <p style="margin-left:22%;">Count as a reader an
144142 authentication identity which has SELECTed the mailbox
145143 within <i>days</i> days. Default is 30.</p>
146144
147 <p style="margin-left:11%;"><b>&minus;D</b>
145 <p style="margin-left:11%;"><b>-D</b>
148146 <i>mmddyyyy</i>[<b>:</b><i>mmddyyyy</i>]</p>
149147
150148 <p style="margin-left:22%;">Count as a reader an
155153 specified, then the current system time is used as the end
156154 time.</p>
157155
158 <p style="margin-left:11%;"><b>&minus;p</b>
159 <i>months</i></p>
156 <p style="margin-left:11%;"><b>-p</b> <i>months</i></p>
160157
161158 <p style="margin-left:22%;">Prune \Seen state for users who
162159 have not SELECTed the mailbox within <i>months</i> months.
00 <!-- Creator : groff version 1.22.3 -->
1 <!-- CreationDate: Fri May 20 06:10:03 2016 -->
1 <!-- CreationDate: Fri Jul 22 02:16:01 2016 -->
22 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
33 "http://www.w3.org/TR/html4/loose.dtd">
44 <html>
3434 </h2>
3535
3636
37 <p style="margin-left:11%; margin-top: 1em">chk_cyrus
38 &minus; perform a consistency check of the cyrus
39 mailstore</p>
37 <p style="margin-left:11%; margin-top: 1em">chk_cyrus -
38 perform a consistency check of the cyrus mailstore</p>
4039
4140 <h2>SYNOPSIS
4241 <a name="SYNOPSIS"></a>
4544
4645
4746 <p style="margin-left:11%; margin-top: 1em"><b>chk_cyrus</b>
48 [ <b>&minus;C</b> <i>config-file</i> ] [ <b>&minus;P</b>
49 <i>partition</i> ] [ <b>&minus;M</b> <i>mailbox</i> ]</p>
47 [ <b>-C</b> <i>config-file</i> ] [ <b>-P</b>
48 <i>partition</i> ] [ <b>-M</b> <i>mailbox</i> ]</p>
5049
5150 <h2>DESCRIPTION
5251 <a name="DESCRIPTION"></a>
7372 </h2>
7473
7574
76
77 <p style="margin-left:11%; margin-top: 1em"><b>&minus;C</b>
75 <p style="margin-left:11%; margin-top: 1em"><b>-C</b>
7876 <i>config-file</i></p>
7977
8078 <p style="margin-left:22%;">Read configuration options from
8179 <i>config-file</i>.</p>
8280
83 <p style="margin-left:11%;"><b>&minus;P</b>
84 <i>partition</i></p>
81 <p style="margin-left:11%;"><b>-P</b> <i>partition</i></p>
8582
8683 <p style="margin-left:22%;">Run the consistency check for
8784 only the given partition. May not be specified with -M.
88 <b>&minus;M</b> <i>mailbox</i> Run the consistency check for
89 only the given mailbox. May not be specified with -P.</p>
85 <b>-M</b> <i>mailbox</i> Run the consistency check for only
86 the given mailbox. May not be specified with -P.</p>
9087
9188 <h2>FILES
9289 <a name="FILES"></a>
00 <!-- Creator : groff version 1.22.3 -->
1 <!-- CreationDate: Fri May 20 06:10:04 2016 -->
1 <!-- CreationDate: Fri Jul 22 02:16:01 2016 -->
22 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
33 "http://www.w3.org/TR/html4/loose.dtd">
44 <html>
3434 </h2>
3535
3636
37 <p style="margin-left:11%; margin-top: 1em">ctl_cyrusdb
38 &minus; perform operations common to all Cyrus databases</p>
37 <p style="margin-left:11%; margin-top: 1em">ctl_cyrusdb -
38 perform operations common to all Cyrus databases</p>
3939
4040 <h2>SYNOPSIS
4141 <a name="SYNOPSIS"></a>
4444
4545
4646 <p style="margin-left:11%; margin-top: 1em"><b>ctl_cyrusdb</b>
47 [ <b>&minus;C</b> <i>config-file</i> ] <b>&minus;r</b> [
48 <b>&minus;x</b> ] <b><br>
49 ctl_cyrusdb</b> [ <b>&minus;C</b> <i>config-file</i> ]
50 <b>&minus;c</b></p>
47 [ <b>-C</b> <i>config-file</i> ] <b>-r</b> [ <b>-x</b> ]
48 <b><br>
49 ctl_cyrusdb</b> [ <b>-C</b> <i>config-file</i> ]
50 <b>-c</b></p>
5151
5252 <h2>DESCRIPTION
5353 <a name="DESCRIPTION"></a>
7171 </h2>
7272
7373
74
75 <p style="margin-left:11%; margin-top: 1em"><b>&minus;C</b>
74 <p style="margin-left:11%; margin-top: 1em"><b>-C</b>
7675 <i>config-file</i></p>
7776
7877 <p style="margin-left:22%;">Read configuration options from
8584 <td width="3%">
8685
8786
88 <p><b>&minus;r</b></p></td>
87 <p><b>-r</b></p></td>
8988 <td width="8%"></td>
9089 <td width="78%">
9190
108107 <td width="3%">
109108
110109
111 <p style="margin-top: 1em"><b>&minus;x</b></p></td>
110 <p style="margin-top: 1em"><b>-x</b></p></td>
112111 <td width="8%"></td>
113112 <td width="78%">
114113
120119 <td width="3%">
121120
122121
123 <p><b>&minus;c</b></p></td>
122 <p><b>-c</b></p></td>
124123 <td width="8%"></td>
125124 <td width="78%">
126125
00 <!-- Creator : groff version 1.22.3 -->
1 <!-- CreationDate: Fri May 20 06:10:04 2016 -->
1 <!-- CreationDate: Fri Jul 22 02:16:01 2016 -->
22 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
33 "http://www.w3.org/TR/html4/loose.dtd">
44 <html>
3434 </h2>
3535
3636
37 <p style="margin-left:11%; margin-top: 1em">ctl_deliver
38 &minus; perform operations on the duplicate delivery
39 database</p>
37 <p style="margin-left:11%; margin-top: 1em">ctl_deliver -
38 perform operations on the duplicate delivery database</p>
4039
4140 <h2>SYNOPSIS
4241 <a name="SYNOPSIS"></a>
4544
4645
4746 <p style="margin-left:11%; margin-top: 1em"><b>ctl_deliver</b>
48 [ <b>&minus;C</b> <i>config-file</i> ] <b>&minus;d</b> [
49 <b>&minus;f</b> <i>filename</i> ]</p>
47 [ <b>-C</b> <i>config-file</i> ] <b>-d</b> [ <b>-f</b>
48 <i>filename</i> ]</p>
5049
5150 <h2>DESCRIPTION
5251 <a name="DESCRIPTION"></a>
6968 </h2>
7069
7170
72
73 <p style="margin-left:11%; margin-top: 1em"><b>&minus;C</b>
71 <p style="margin-left:11%; margin-top: 1em"><b>-C</b>
7472 <i>config-file</i></p>
7573
7674 <p style="margin-left:22%;">Read configuration options from
8381 <td width="3%">
8482
8583
86 <p><b>&minus;d</b></p></td>
84 <p><b>-d</b></p></td>
8785 <td width="8%"></td>
8886 <td width="78%">
8987
9290 a portable flat-text format.</p></td></tr>
9391 </table>
9492
95 <p style="margin-left:11%;"><b>&minus;f</b>
96 <i>filename</i></p>
93 <p style="margin-left:11%;"><b>-f</b> <i>filename</i></p>
9794
9895 <p style="margin-left:22%;">Use the database specified by
9996 <i>filename</i> instead of the default
00 <!-- Creator : groff version 1.22.3 -->
1 <!-- CreationDate: Fri May 20 06:10:04 2016 -->
1 <!-- CreationDate: Fri Jul 22 02:16:01 2016 -->
22 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
33 "http://www.w3.org/TR/html4/loose.dtd">
44 <html>
3434 </h2>
3535
3636
37 <p style="margin-left:11%; margin-top: 1em">ctl_mboxlist
38 &minus; perform operations on the mailbox list database</p>
37 <p style="margin-left:11%; margin-top: 1em">ctl_mboxlist -
38 perform operations on the mailbox list database</p>
3939
4040 <h2>SYNOPSIS
4141 <a name="SYNOPSIS"></a>
4444
4545
4646 <p style="margin-left:11%; margin-top: 1em"><b>ctl_mboxlist</b>
47 [ <b>&minus;C</b> <i>config-file</i> ] <b>&minus;d</b> [
48 <b>&minus;x</b> ] [ <b>&minus;p</b> <i>partition</i> ] <br>
49 [ <b>&minus;f</b> <i>filename</i> ] <b><br>
50 ctl_mboxlist</b> [ <b>&minus;C</b> <i>config-file</i> ]
51 <b>&minus;u</b> [ <b>&minus;f</b> <i>filename</i> ] <b><br>
52 ctl_mboxlist</b> [ <b>&minus;C</b> <i>config-file</i> ]
53 <b>&minus;m</b> [ <b>&minus;a</b> ] [ <b>&minus;w</b> ] [
54 <b>&minus;i</b> ] <br>
55 [ <b>&minus;f</b> <i>filename</i> ] <b><br>
56 ctl_mboxlist</b> [ <b>&minus;C</b> <i>config-file</i> ]
57 <b>&minus;v</b> [ <b>&minus;f</b> <i>filename</i> ]</p>
47 [ <b>-C</b> <i>config-file</i> ] <b>-d</b> [ <b>-x</b> ] [
48 <b>-p</b> <i>partition</i> ] <br>
49 [ <b>-f</b> <i>filename</i> ] <b><br>
50 ctl_mboxlist</b> [ <b>-C</b> <i>config-file</i> ] <b>-u</b>
51 [ <b>-f</b> <i>filename</i> ] <b><br>
52 ctl_mboxlist</b> [ <b>-C</b> <i>config-file</i> ] <b>-m</b>
53 [ <b>-a</b> ] [ <b>-w</b> ] [ <b>-i</b> ] <br>
54 [ <b>-f</b> <i>filename</i> ] <b><br>
55 ctl_mboxlist</b> [ <b>-C</b> <i>config-file</i> ] <b>-v</b>
56 [ <b>-f</b> <i>filename</i> ]</p>
5857
5958 <h2>DESCRIPTION
6059 <a name="DESCRIPTION"></a>
8079
8180
8281
83 <p style="margin-left:11%; margin-top: 1em"><b>&minus;C&nbsp;</b><i>config-file</i></p>
82 <p style="margin-left:11%; margin-top: 1em"><b>-C&nbsp;</b><i>config-file</i></p>
8483
8584 <p style="margin-left:22%;">Read configuration options from
8685 <i>config-file</i>.</p>
9291 <td width="3%">
9392
9493
95 <p><b>&minus;d</b></p></td>
94 <p><b>-d</b></p></td>
9695 <td width="8%"></td>
9796 <td width="78%">
9897
107106 <td width="3%">
108107
109108
110 <p><b>&minus;x</b></p></td>
109 <p><b>-x</b></p></td>
111110 <td width="8%"></td>
112111 <td width="78%">
113112
117116 </table>
118117
119118
120 <p style="margin-left:11%;"><b>&minus;p&nbsp;</b><i>partition</i></p>
119 <p style="margin-left:11%;"><b>-p&nbsp;</b><i>partition</i></p>
121120
122121 <p style="margin-left:22%;">When performing a dump, dump
123122 only thise mailboxes that live on <i>partition</i></p>
129128 <td width="3%">
130129
131130
132 <p><b>&minus;u</b></p></td>
131 <p><b>-u</b></p></td>
133132 <td width="8%"></td>
134133 <td width="78%">
135134
136135
137136 <p>Load the contents of the database from standard input.
138 The input MUST be in the format output using the
139 <b>&minus;d</b> option. NOTE: Both the old and new formats
140 can be loaded, but the old format will break remote
141 mailboxes.</p> </td></tr>
142 <tr valign="top" align="left">
143 <td width="11%"></td>
144 <td width="3%">
145
146
147 <p><b>&minus;m</b></p></td>
137 The input MUST be in the format output using the <b>-d</b>
138 option. NOTE: Both the old and new formats can be loaded,
139 but the old format will break remote mailboxes.</p></td></tr>
140 <tr valign="top" align="left">
141 <td width="11%"></td>
142 <td width="3%">
143
144
145 <p><b>-m</b></p></td>
148146 <td width="8%"></td>
149147 <td width="78%">
150148
156154 <td width="3%">
157155
158156
159 <p><b>&minus;a</b></p></td>
157 <p><b>-a</b></p></td>
160158 <td width="8%"></td>
161159 <td width="78%">
162160
170168 <td width="3%">
171169
172170
173 <p><b>&minus;w</b></p></td>
171 <p><b>-w</b></p></td>
174172 <td width="8%"></td>
175173 <td width="78%">
176174
182180 <td width="3%">
183181
184182
185 <p><b>&minus;i</b></p></td>
183 <p><b>-i</b></p></td>
186184 <td width="8%"></td>
187185 <td width="78%">
188186
194192 <td width="3%">
195193
196194
197 <p><b>&minus;v</b></p></td>
195 <p><b>-v</b></p></td>
198196 <td width="8%"></td>
199197 <td width="78%">
200198
207205 that this function is very I/O intensive.</p></td></tr>
208206 </table>
209207
210 <p style="margin-left:11%;"><b>&minus;f</b>
211 <i>filename</i></p>
208 <p style="margin-left:11%;"><b>-f</b> <i>filename</i></p>
212209
213210 <p style="margin-left:22%;">Use the database specified by
214211 <i>filename</i> instead of the default
00 <!-- Creator : groff version 1.22.3 -->
1 <!-- CreationDate: Fri May 20 06:10:04 2016 -->
1 <!-- CreationDate: Fri Jul 22 02:16:01 2016 -->
22 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
33 "http://www.w3.org/TR/html4/loose.dtd">
44 <html>
3636 </h2>
3737
3838
39 <p style="margin-left:11%; margin-top: 1em">ctl_zoneinfo
40 &minus; perform operations on the zoneinfo database</p>
39 <p style="margin-left:11%; margin-top: 1em">ctl_zoneinfo -
40 perform operations on the zoneinfo database</p>
4141
4242 <h2>SYNOPSIS
4343 <a name="SYNOPSIS"></a>
4646
4747
4848 <p style="margin-left:11%; margin-top: 1em"><b>ctl_zoneinfo</b>
49 [ <b>&minus;C</b> <i>config-file</i> ] [ <b>&minus;v</b> ]
50 <b>&minus;r</b> <i>version-string</i></p>
49 [ <b>-C</b> <i>config-file</i> ] [ <b>-v</b> ] <b>-r</b>
50 <i>version-string</i></p>
5151
5252 <h2>DESCRIPTION
5353 <a name="DESCRIPTION"></a>
7070 </h2>
7171
7272
73
74 <p style="margin-left:11%; margin-top: 1em"><b>&minus;C</b>
73 <p style="margin-left:11%; margin-top: 1em"><b>-C</b>
7574 <i>config-file</i></p>
7675
7776 <p style="margin-left:22%;">Read configuration options from
8483 <td width="3%">
8584
8685
87 <p><b>&minus;v</b></p></td>
86 <p><b>-v</b></p></td>
8887 <td width="8%"></td>
8988 <td width="33%">
9089
9493 </td></tr>
9594 </table>
9695
97 <p style="margin-left:11%;"><b>&minus;r</b>
96 <p style="margin-left:11%;"><b>-r</b>
9897 <i>version-string</i></p>
9998
10099 <p style="margin-left:22%;">Rebuild the zoneinfo database
00 <!-- Creator : groff version 1.22.3 -->
1 <!-- CreationDate: Fri May 20 06:10:04 2016 -->
1 <!-- CreationDate: Fri Jul 22 02:16:01 2016 -->
22 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
33 "http://www.w3.org/TR/html4/loose.dtd">
44 <html>
3434 </h2>
3535
3636
37 <p style="margin-left:11%; margin-top: 1em">cvt_cyrusdb
38 &minus; convert a database file between cyrus database
39 formats</p>
37 <p style="margin-left:11%; margin-top: 1em">cvt_cyrusdb -
38 convert a database file between cyrus database formats</p>
4039
4140 <h2>SYNOPSIS
4241 <a name="SYNOPSIS"></a>
4544
4645
4746 <p style="margin-left:11%; margin-top: 1em"><b>cvt_cyrusdb</b>
48 [ <b>&minus;C</b> <i>config-file</i> ] &lt;old-file&gt;
47 [ <b>-C</b> <i>config-file</i> ] &lt;old-file&gt;
4948 &lt;old-fileformat&gt; &lt;new-file&gt;
5049 &lt;new-file-format&gt;</p>
5150
7675 </h2>
7776
7877
79
80 <p style="margin-left:11%; margin-top: 1em"><b>&minus;C</b>
78 <p style="margin-left:11%; margin-top: 1em"><b>-C</b>
8179 <i>config-file</i></p>
8280
8381 <p style="margin-left:22%;">Read configuration options from
00 <!-- Creator : groff version 1.22.3 -->
1 <!-- CreationDate: Fri May 20 06:10:04 2016 -->
1 <!-- CreationDate: Fri Jul 22 02:16:01 2016 -->
22 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
33 "http://www.w3.org/TR/html4/loose.dtd">
44 <html>
3434 </h2>
3535
3636
37 <p style="margin-left:11%; margin-top: 1em">cyr_dbtool
38 &minus; manage Cyrus databases</p>
37 <p style="margin-left:11%; margin-top: 1em">cyr_dbtool -
38 manage Cyrus databases</p>
3939
4040 <h2>SYNOPSIS
4141 <a name="SYNOPSIS"></a>
4444
4545
4646 <p style="margin-left:11%; margin-top: 1em"><b>cyr_dbtool</b>
47 [ <b>&minus;C</b> <i>config-file</i> ] [ <b>&minus;M</b> ] [
48 <b>&minus;n</b> ] [ <b>&minus;o</b> ] [ <b>&minus;T</b> ]
49 &lt;db file&gt; &lt;db backend&gt; &lt;action&gt; [
50 &lt;key&gt; ] [ &lt;value&gt; ]</p>
47 [ <b>-C</b> <i>config-file</i> ] [ <b>-M</b> ] [ <b>-n</b> ]
48 [ <b>-o</b> ] [ <b>-T</b> ] &lt;db file&gt; &lt;db
49 backend&gt; &lt;action&gt; [ &lt;key&gt; ] [ &lt;value&gt;
50 ]</p>
5151
5252 <h2>DESCRIPTION
5353 <a name="DESCRIPTION"></a>
108108 </h2>
109109
110110
111
112 <p style="margin-left:11%; margin-top: 1em"><b>&minus;C</b>
111 <p style="margin-left:11%; margin-top: 1em"><b>-C</b>
113112 <i>config-file</i></p>
114113
115114 <p style="margin-left:22%;">Read configuration options from
122121 <td width="3%">
123122
124123
125 <p><b>&minus;M</b></p></td>
124 <p><b>-M</b></p></td>
126125 <td width="8%"></td>
127126 <td width="78%">
128127
133132 <td width="3%">
134133
135134
136 <p><b>&minus;n</b></p></td>
135 <p><b>-n</b></p></td>
137136 <td width="8%"></td>
138137 <td width="78%">
139138
145144 <td width="3%">
146145
147146
148 <p><b>&minus;o</b></p></td>
147 <p><b>-o</b></p></td>
149148 <td width="8%"></td>
150149 <td width="78%">
151150
157156 <td width="3%">
158157
159158
160 <p><b>&minus;T</b></p></td>
159 <p><b>-T</b></p></td>
161160 <td width="8%"></td>
162161 <td width="78%">
163162
00 <!-- Creator : groff version 1.22.3 -->
1 <!-- CreationDate: Fri May 20 06:10:04 2016 -->
1 <!-- CreationDate: Fri Jul 22 02:16:02 2016 -->
22 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
33 "http://www.w3.org/TR/html4/loose.dtd">
44 <html>
3434 </h2>
3535
3636
37 <p style="margin-left:11%; margin-top: 1em">cyr_deny
38 &minus; deny users access to Cyrus services</p>
37 <p style="margin-left:11%; margin-top: 1em">cyr_deny - deny
38 users access to Cyrus services</p>
3939
4040 <h2>SYNOPSIS
4141 <a name="SYNOPSIS"></a>
4444
4545
4646 <p style="margin-left:11%; margin-top: 1em"><b>cyr_deny</b>
47 [ <b>&minus;C</b> <i>config-file</i> ] [ <b>&minus;s</b>
48 <i>services</i> ] [ <b>&minus;m</b> <i>message</i> ]
47 [ <b>-C</b> <i>config-file</i> ] [ <b>-s</b> <i>services</i>
48 ] [ <b>-m</b> <i>message</i> ] <i>user</i> <b><br>
49 cyr_deny</b> [ <b>-C</b> <i>config-file</i> ] <b>-a</b>
4950 <i>user</i> <b><br>
50 cyr_deny</b> [ <b>&minus;C</b> <i>config-file</i> ]
51 <b>-a</b> <i>user</i> <b><br>
52 cyr_deny</b> [ <b>&minus;C</b> <i>config-file</i> ]
53 <b>-l</b></p>
51 cyr_deny</b> [ <b>-C</b> <i>config-file</i> ] <b>-l</b></p>
5452
5553 <h2>DESCRIPTION
5654 <a name="DESCRIPTION"></a>
7169 </h2>
7270
7371
74
75 <p style="margin-left:11%; margin-top: 1em"><b>&minus;C</b>
72 <p style="margin-left:11%; margin-top: 1em"><b>-C</b>
7673 <i>config-file</i></p>
7774
7875 <p style="margin-left:22%;">Read configuration options from
8582 <td width="3%">
8683
8784
88 <p><b>&minus;a</b></p></td>
85 <p><b>-a</b></p></td>
8986 <td width="8%"></td>
9087 <td width="78%">
9188
9491 (remove any entry from the deny database).</p></td></tr>
9592 </table>
9693
97 <p style="margin-left:11%;"><b>&minus;s</b>
98 <i>services</i></p>
94 <p style="margin-left:11%;"><b>-s</b> <i>services</i></p>
9995
10096 <p style="margin-left:22%;">Deny access only to the given
10197 <i>services</i>, which is a comma-separated list of wildcard
109105 <td width="3%">
110106
111107
112 <p><b>&minus;l</b></p></td>
108 <p><b>-l</b></p></td>
113109 <td width="8%"></td>
114110 <td width="58%">
115111
119115 </td></tr>
120116 </table>
121117
122 <p style="margin-left:11%;"><b>&minus;m</b>
123 <i>message</i></p>
118 <p style="margin-left:11%;"><b>-m</b> <i>message</i></p>
124119
125120 <p style="margin-left:22%;">Provide a message which is sent
126121 to the user to explain why access is being denied. A default
00 <!-- Creator : groff version 1.22.3 -->
1 <!-- CreationDate: Fri May 20 06:10:04 2016 -->
1 <!-- CreationDate: Fri Jul 22 02:16:02 2016 -->
22 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
33 "http://www.w3.org/TR/html4/loose.dtd">
44 <html>
3333 </h2>
3434
3535
36 <p style="margin-left:11%; margin-top: 1em">cyr_df &minus;
37 report Cyrus spool partition disk space usage</p>
36 <p style="margin-left:11%; margin-top: 1em">cyr_df - report
37 Cyrus spool partition disk space usage</p>
3838
3939 <h2>SYNOPSIS
4040 <a name="SYNOPSIS"></a>
4242
4343
4444 <p style="margin-left:11%; margin-top: 1em"><b>cyr_df</b> [
45 <b>&minus;C</b> <i>config-file</i> ] [ <b>&minus;m</b> ]</p>
45 <b>-C</b> <i>config-file</i> ] [ <b>-m</b> ]</p>
4646
4747 <h2>DESCRIPTION
4848 <a name="DESCRIPTION"></a>
6060 </h2>
6161
6262
63
64 <p style="margin-left:11%; margin-top: 1em"><b>&minus;C</b>
63 <p style="margin-left:11%; margin-top: 1em"><b>-C</b>
6564 <i>config-file</i></p>
6665
6766 <p style="margin-left:22%;">Read configuration options from
7473 <td width="3%">
7574
7675
77 <p><b>&minus;m</b></p></td>
76 <p><b>-m</b></p></td>
7877 <td width="8%"></td>
7978 <td width="78%">
8079
00 <!-- Creator : groff version 1.22.3 -->
1 <!-- CreationDate: Fri May 20 06:10:04 2016 -->
1 <!-- CreationDate: Fri Jul 22 02:16:02 2016 -->
22 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
33 "http://www.w3.org/TR/html4/loose.dtd">
44 <html>
3434 </h2>
3535
3636
37 <p style="margin-left:11%; margin-top: 1em">cyr_expire
38 &minus; expire messages and duplicate delivery database
39 entries</p>
37 <p style="margin-left:11%; margin-top: 1em">cyr_expire -
38 expire messages and duplicate delivery database entries</p>
4039
4140 <h2>SYNOPSIS
4241 <a name="SYNOPSIS"></a>
4544
4645
4746 <p style="margin-left:11%; margin-top: 1em"><b>cyr_expire</b>
48 [ <b>&minus;C</b> <i>config-file</i> ] [ <b>&minus;D</b>
49 <i>delete-duration</i> ] [ <b>&minus;E</b>
50 <i>expire-duration</i> ] [ <b>&minus;X</b>
51 <i>expunge-duration</i> ] [ <b>&minus;p</b>
52 <i>mailbox-prefix</i> ] [ <b>&minus;u</b> <i>username</i> ]
53 [ <b>&minus;t</b> ] [ <b>&minus;v</b> ]</p>
47 [ <b>-C</b> <i>config-file</i> ] [ <b>-D</b>
48 <i>delete-duration</i> ] [ <b>-E</b> <i>expire-duration</i>
49 ] [ <b>-X</b> <i>expunge-duration</i> ] [ <b>-p</b>
50 <i>mailbox-prefix</i> ] [ <b>-u</b> <i>username</i> ] [
51 <b>-t</b> ] [ <b>-v</b> ]</p>
5452
5553 <h2>DESCRIPTION
5654 <a name="DESCRIPTION"></a>
158156 </h2>
159157
160158
161
162 <p style="margin-left:11%; margin-top: 1em"><b>&minus;C</b>
159 <p style="margin-left:11%; margin-top: 1em"><b>-C</b>
163160 <i>config-file</i></p>
164161
165162 <p style="margin-left:22%;">Read configuration options from
166163 <i>config-file</i>.</p>
167164
168 <p style="margin-left:11%;"><b>&minus;D</b>
165 <p style="margin-left:11%;"><b>-D</b>
169166 <i>delete-duration</i></p>
170167
171168 <p style="margin-left:22%;">Remove previously deleted
176173 Valid suffixes are <b>d</b> (days), <b>h</b> (hours),
177174 <b>m</b> (minutes) and <b>s</b> (seconds).</p>
178175
179 <p style="margin-left:11%;"><b>&minus;E</b>
176 <p style="margin-left:11%;"><b>-E</b>
180177 <i>expire-duration</i></p>
181178
182179 <p style="margin-left:22%;">Prune the duplicate database of
185182 <b>/vendor/cmu/cyrus-imapd/expire</b> mailbox annotation.
186183 Format is the same as delete-duration.</p>
187184
188 <p style="margin-left:11%;"><b>&minus;X</b>
185 <p style="margin-left:11%;"><b>-X</b>
189186 <i>expunge-duration</i></p>
190187
191188 <p style="margin-left:22%;">Expunge previously deleted
200197 <td width="3%">
201198
202199
203 <p><b>&minus;x</b></p></td>
200 <p><b>-x</b></p></td>
204201 <td width="8%"></td>
205202 <td width="78%">
206203
211208 duplicate database without overloading the machine.</p></td></tr>
212209 </table>
213210
214 <p style="margin-left:11%;"><b>&minus;p</b>
211 <p style="margin-left:11%;"><b>-p</b>
215212 <i>mailbox-prefix</i></p>
216213
217214 <p style="margin-left:22%;">Only find mailboxes starting
218215 with this prefix, e.g.
219216 &quot;user.justgotspammedlots&quot;.</p>
220217
221 <p style="margin-left:11%;"><b>&minus;u</b>
222 <i>userid</i></p>
218 <p style="margin-left:11%;"><b>-u</b> <i>userid</i></p>
223219
224220 <p style="margin-left:22%;">Only find mailboxes belonging
225221 to this user, e.g.
232228 <td width="3%">
233229
234230
235 <p><b>&minus;t</b></p></td>
231 <p><b>-t</b></p></td>
236232 <td width="8%"></td>
237233 <td width="78%">
238234
244240 <td width="3%">
245241
246242
247 <p><b>&minus;v</b></p></td>
243 <p><b>-v</b></p></td>
248244 <td width="8%"></td>
249245 <td width="78%">
250246
255251 <td width="3%">
256252
257253
258 <p><b>&minus;a</b></p></td>
254 <p><b>-a</b></p></td>
259255 <td width="8%"></td>
260256 <td width="78%">
261257
00 <!-- Creator : groff version 1.22.3 -->
1 <!-- CreationDate: Fri May 20 06:10:04 2016 -->
1 <!-- CreationDate: Fri Jul 22 02:16:02 2016 -->
22 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
33 "http://www.w3.org/TR/html4/loose.dtd">
44 <html>
3434 </h2>
3535
3636
37 <p style="margin-left:11%; margin-top: 1em">cyr_info
38 &minus; general cyrus inspection tool</p>
37 <p style="margin-left:11%; margin-top: 1em">cyr_info -
38 general cyrus inspection tool</p>
3939
4040 <h2>SYNOPSIS
4141 <a name="SYNOPSIS"></a>
4444
4545
4646 <p style="margin-left:11%; margin-top: 1em"><b>cyr_info</b>
47 [ <b>&minus;C</b> <i>alt imapd.conf</i> ] [ <b>&minus;M</b>
48 <i>alt cyrus.conf</i> ] command</p>
47 [ <b>-C</b> <i>alt imapd.conf</i> ] [ <b>-M</b> <i>alt
48 cyrus.conf</i> ] command</p>
4949
5050 <h2>DESCRIPTION
5151 <a name="DESCRIPTION"></a>
6565 </h2>
6666
6767
68
69 <p style="margin-left:11%; margin-top: 1em"><b>&minus;C</b>
68 <p style="margin-left:11%; margin-top: 1em"><b>-C</b>
7069 <i>file</i></p>
7170
7271 <p style="margin-left:22%;">Read configuration options from
7372 <i>file</i> (imapd.conf format).</p>
7473
75 <p style="margin-left:11%;"><b>&minus;M</b> <i>file</i></p>
74 <p style="margin-left:11%;"><b>-M</b> <i>file</i></p>
7675
7776 <p style="margin-left:22%;">Read service specifications
7877 from <i>file</i> (cyrus.conf format).</p>
7978
80 <p style="margin-left:11%;"><b>&minus;n</b> <i>name</i></p>
79 <p style="margin-left:11%;"><b>-n</b> <i>name</i></p>
8180
8281 <p style="margin-left:22%;">Read the configuration as if
8382 for the service named <i>name</i>.</p>
00 <!-- Creator : groff version 1.22.3 -->
1 <!-- CreationDate: Fri May 20 06:10:05 2016 -->
1 <!-- CreationDate: Fri Jul 22 02:16:02 2016 -->
22 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
33 "http://www.w3.org/TR/html4/loose.dtd">
44 <html>
3535 </h2>
3636
3737
38 <p style="margin-left:11%; margin-top: 1em">cyr_synclog
39 &minus; add entries to the replication log</p>
38 <p style="margin-left:11%; margin-top: 1em">cyr_synclog -
39 add entries to the replication log</p>
4040
4141 <h2>SYNOPSIS
4242 <a name="SYNOPSIS"></a>
4545
4646
4747 <p style="margin-left:11%; margin-top: 1em"><b>cyr_synclog</b>
48 [ <b>&minus;C</b> <i>config-file</i> ] [ <b>&minus;type</b>
49 ] &lt;value&gt;</p>
48 [ <b>-C</b> <i>config-file</i> ] [ <b>-type</b> ]
49 &lt;value&gt;</p>
5050
5151 <h2>DESCRIPTION
5252 <a name="DESCRIPTION"></a>
5858 is used to append a value to the log file. You can either
5959 specify the log type and value, or an entire log line.</p>
6060
61 <p style="margin-left:11%; margin-top: 1em">&minus;u
62 USER</p>
61 <p style="margin-left:11%; margin-top: 1em">-u USER</p>
6362
64 <p style="margin-left:11%; margin-top: 1em">&minus;U
65 UNUSER</p>
63 <p style="margin-left:11%; margin-top: 1em">-U UNUSER</p>
6664
67 <p style="margin-left:11%; margin-top: 1em">&minus;v
68 SIEVE</p>
65 <p style="margin-left:11%; margin-top: 1em">-v SIEVE</p>
6966
70 <p style="margin-left:11%; margin-top: 1em">&minus;m
71 MAILBOX</p>
67 <p style="margin-left:11%; margin-top: 1em">-m MAILBOX</p>
7268
73 <p style="margin-left:11%; margin-top: 1em">&minus;M
69 <p style="margin-left:11%; margin-top: 1em">-M
7470 UNMAILBOX</p>
7571
76 <p style="margin-left:11%; margin-top: 1em">&minus;a
77 APPEND</p>
72 <p style="margin-left:11%; margin-top: 1em">-a APPEND</p>
7873
79 <p style="margin-left:11%; margin-top: 1em">&minus;c
80 ACL</p>
74 <p style="margin-left:11%; margin-top: 1em">-c ACL</p>
8175
82 <p style="margin-left:11%; margin-top: 1em">&minus;q
83 QUOTA</p>
76 <p style="margin-left:11%; margin-top: 1em">-q QUOTA</p>
8477
85 <p style="margin-left:11%; margin-top: 1em">&minus;n
78 <p style="margin-left:11%; margin-top: 1em">-n
8679 ANNOTATION</p>
8780
88 <p style="margin-left:11%; margin-top: 1em">&minus;s
89 SEEN</p>
81 <p style="margin-left:11%; margin-top: 1em">-s SEEN</p>
9082
91 <p style="margin-left:11%; margin-top: 1em">&minus;b
83 <p style="margin-left:11%; margin-top: 1em">-b
9284 SUBSCRIPTION</p>
9385
9486 <p style="margin-left:11%; margin-top: 1em">Running without
108100 <p style="margin-left:11%; margin-top: 1em">Here are some
109101 example ways to use cyr_synclog:</p>
110102
111 <p style="margin-left:11%; margin-top: 1em">cyr_synclog
112 &minus;m user.brong</p>
103 <p style="margin-left:11%; margin-top: 1em">cyr_synclog -m
104 user.brong</p>
113105
114 <p style="margin-left:11%; margin-top: 1em">cyr_synclog
115 &minus;u brong</p>
106 <p style="margin-left:11%; margin-top: 1em">cyr_synclog -u
107 brong</p>
116108
117 <p style="margin-left:11%; margin-top: 1em">cyr_synclog
118 &minus;C /etc/imapd-special.conf &minus;s user.brong
119 brong</p>
109 <p style="margin-left:11%; margin-top: 1em">cyr_synclog -C
110 /etc/imapd-special.conf -s user.brong brong</p>
120111
121112 <p style="margin-left:11%; margin-top: 1em">cyr_synclog
122113 &quot;SEEN user.brong brong&quot;</p>
126117 </h2>
127118
128119
129
130 <p style="margin-left:11%; margin-top: 1em"><b>&minus;C</b>
120 <p style="margin-left:11%; margin-top: 1em"><b>-C</b>
131121 <i>config-file</i></p>
132122
133123 <p style="margin-left:22%;">Read configuration options from
00 <!-- Creator : groff version 1.22.3 -->
1 <!-- CreationDate: Fri May 20 06:10:05 2016 -->
1 <!-- CreationDate: Fri Jul 22 02:16:02 2016 -->
22 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
33 "http://www.w3.org/TR/html4/loose.dtd">
44 <html>
3434 </h2>
3535
3636
37 <p style="margin-left:11%; margin-top: 1em">cyrus.conf
38 &minus; Cyrus configuration file</p>
37 <p style="margin-left:11%; margin-top: 1em">cyrus.conf -
38 Cyrus configuration file</p>
3939
4040 <h2>DESCRIPTION
4141 <a name="DESCRIPTION"></a>
00 <!-- Creator : groff version 1.22.3 -->
1 <!-- CreationDate: Fri May 20 06:10:05 2016 -->
1 <!-- CreationDate: Fri Jul 22 02:16:02 2016 -->
22 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
33 "http://www.w3.org/TR/html4/loose.dtd">
44 <html>
3535 </h2>
3636
3737
38 <p style="margin-left:11%; margin-top: 1em">deliver &minus;
38 <p style="margin-left:11%; margin-top: 1em">deliver -
3939 deliver mail to an IMAP mailbox</p>
4040
4141 <h2>SYNOPSIS
4444
4545
4646 <p style="margin-left:11%; margin-top: 1em"><b>deliver</b>
47 [ <b>&minus;C</b> <i>config-file</i> ] [ <b>&minus;d</b> ] [
48 <b>&minus;r</b> <i>address</i> ] <br>
49 [ <b>&minus;f</b> <i>address</i> ] [ <b>&minus;m</b>
50 <i>mailbox</i> ] [ <b>&minus;a</b> <i>auth-id</i> ] <br>
51 [ <b>&minus;q</b> ] [ <i>userid</i> ]... <b><br>
52 deliver</b> [ <b>&minus;C</b> <i>config-file</i> ]
53 <b>&minus;l</b></p>
47 [ <b>-C</b> <i>config-file</i> ] [ <b>-d</b> ] [ <b>-r</b>
48 <i>address</i> ] <br>
49 [ <b>-f</b> <i>address</i> ] [ <b>-m</b> <i>mailbox</i> ] [
50 <b>-a</b> <i>auth-id</i> ] <br>
51 [ <b>-q</b> ] [ <i>userid</i> ]... <b><br>
52 deliver</b> [ <b>-C</b> <i>config-file</i> ] <b>-l</b></p>
5453
5554 <h2>DESCRIPTION
5655 <a name="DESCRIPTION"></a>
7271 </h2>
7372
7473
75
76 <p style="margin-left:11%; margin-top: 1em"><b>&minus;C</b>
74 <p style="margin-left:11%; margin-top: 1em"><b>-C</b>
7775 <i>config-file</i></p>
7876
7977 <p style="margin-left:22%;">Read configuration options from
8684 <td width="3%">
8785
8886
89 <p><b>&minus;d</b></p></td>
87 <p><b>-d</b></p></td>
9088 <td width="8%"></td>
9189 <td width="63%">
9290
9694 </td></tr>
9795 </table>
9896
99 <p style="margin-left:11%;"><b>&minus;r</b>
100 <i>address</i></p>
97 <p style="margin-left:11%;"><b>-r</b> <i>address</i></p>
10198
10299 <p style="margin-left:22%;">Insert a <b>Return-Path:</b>
103100 header containing <i>address</i></p>
104101
105 <p style="margin-left:11%;"><b>&minus;f</b>
106 <i>address</i></p>
102 <p style="margin-left:11%;"><b>-f</b> <i>address</i></p>
107103
108104 <p style="margin-left:22%;">Insert a <b>Return-Path:</b>
109105 header containing <i>address</i></p>
110106
111 <p style="margin-left:11%;"><b>&minus;m</b>
112 <i>mailbox</i></p>
107 <p style="margin-left:11%;"><b>-m</b> <i>mailbox</i></p>
113108
114109 <p style="margin-left:22%;">Deliver to <i>mailbox</i>. If
115110 any <i>userid</i>s are specified, attempts to deliver to
116111 user.<i>userid</i>.<i>mailbox</i> for each <i>userid</i>. If
117112 the ACL on any such mailbox does not grant the sender the
118 &quot;p&quot; right or if <b>&minus;m</b> is not specified,
119 then delivers to the INBOX for the <i>userid</i>, regardless
120 of the ACL on the INBOX.</p>
113 &quot;p&quot; right or if <b>-m</b> is not specified, then
114 delivers to the INBOX for the <i>userid</i>, regardless of
115 the ACL on the INBOX.</p>
121116
122117 <p style="margin-left:22%; margin-top: 1em">If no
123118 <i>userid</i>s are specified, attempts to deliver to
124119 <i>mailbox</i>. If the ACL on <i>mailbox</i> does not grant
125120 the sender the &quot;p&quot; right, the delivery fails.</p>
126121
127 <p style="margin-left:11%;"><b>&minus;a</b>
128 <i>auth-id</i></p>
122 <p style="margin-left:11%;"><b>-a</b> <i>auth-id</i></p>
129123
130124 <p style="margin-left:22%;">Specify the authorization id of
131125 the sender. Defaults to &quot;anonymous&quot;.</p>
137131 <td width="3%">
138132
139133
140 <p><b>&minus;q</b></p></td>
134 <p><b>-q</b></p></td>
141135 <td width="8%"></td>
142136 <td width="78%">
143137
149143 <td width="3%">
150144
151145
152 <p><b>&minus;l</b></p></td>
146 <p><b>-l</b></p></td>
153147 <td width="8%"></td>
154148 <td width="78%">
155149
00 <!-- Creator : groff version 1.22.3 -->
1 <!-- CreationDate: Fri May 20 06:10:05 2016 -->
1 <!-- CreationDate: Fri Jul 22 02:16:02 2016 -->
22 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
33 "http://www.w3.org/TR/html4/loose.dtd">
44 <html>
3333 </h2>
3434
3535
36 <p style="margin-left:11%; margin-top: 1em">fetchnews
37 &minus; retrieve new articles from peer and feed to
38 Cyrus</p>
36 <p style="margin-left:11%; margin-top: 1em">fetchnews -
37 retrieve new articles from peer and feed to Cyrus</p>
3938
4039 <h2>SYNOPSIS
4140 <a name="SYNOPSIS"></a>
4443
4544
4645 <p style="margin-left:11%; margin-top: 1em"><b>fetchnews</b>
47 [ <b>&minus;C</b> <i>config-file</i> ] [ <b>&minus;s</b>
46 [ <b>-C</b> <i>config-file</i> ] [ <b>-s</b>
4847 <i>servername[:port]</i> ] <br>
49 [ <b>&minus;n</b> ] [ <b>&minus;y</b> ] [ <b>&minus;w</b>
50 <i>wildmat</i> ] [ <b>&minus;f</b> <i>tstampfile</i> ] <br>
51 [ <b>&minus;a</b> <i>authname</i> [ <b>&minus;p</b>
52 <i>password</i> ] ] <i>peername</i></p>
48 [ <b>-n</b> ] [ <b>-y</b> ] [ <b>-w</b> <i>wildmat</i> ] [
49 <b>-f</b> <i>tstampfile</i> ] <br>
50 [ <b>-a</b> <i>authname</i> [ <b>-p</b> <i>password</i> ] ]
51 <i>peername</i></p>
5352
5453 <h2>DESCRIPTION
5554 <a name="DESCRIPTION"></a>
7574 </h2>
7675
7776
78
79 <p style="margin-left:11%; margin-top: 1em"><b>&minus;C</b>
77 <p style="margin-left:11%; margin-top: 1em"><b>-C</b>
8078 <i>config-file</i></p>
8179
8280 <p style="margin-left:22%;">Read configuration options from
8381 <i>config-file</i>.</p>
8482
85 <p style="margin-left:11%;"><b>&minus;s</b>
86 <i>servername</i></p>
83 <p style="margin-left:11%;"><b>-s</b> <i>servername</i></p>
8784
8885 <p style="margin-left:22%;">Hostname of the Cyrus server
8986 (with optional port) to which articles should be fed.
9693 <td width="3%">
9794
9895
99 <p><b>&minus;n</b></p></td>
96 <p><b>-n</b></p></td>
10097 <td width="8%"></td>
10198 <td width="78%">
10299
109106 <td width="3%">
110107
111108
112 <p><b>&minus;y</b></p></td>
109 <p><b>-y</b></p></td>
113110 <td width="8%"></td>
114111 <td width="78%">
115112
118115 but not y2k-compliant.</p></td></tr>
119116 </table>
120117
121 <p style="margin-left:11%;"><b>&minus;w</b>
122 <i>wildmat</i></p>
118 <p style="margin-left:11%;"><b>-w</b> <i>wildmat</i></p>
123119
124120 <p style="margin-left:22%;">Wildmat pattern specifying
125121 which newsgroups to search for new articles. Defaults to
126122 &quot;*&quot;.</p>
127123
128 <p style="margin-left:11%;"><b>&minus;f</b>
129 <i>tstampfile</i></p>
124 <p style="margin-left:11%;"><b>-f</b> <i>tstampfile</i></p>
130125
131126 <p style="margin-left:22%;">File in which to read/write the
132127 timestamp of when articles were last retrieved. Defaults to
133128 &quot;newsstamp&quot; located in <i>configdir</i> as
134129 specified by the configuration options.</p>
135130
136 <p style="margin-left:11%;"><b>&minus;a</b>
137 <i>authname</i></p>
131 <p style="margin-left:11%;"><b>-a</b> <i>authname</i></p>
138132
139133 <p style="margin-left:22%;">Userid to use for
140134 authentication.</p>
141135
142 <p style="margin-left:11%;"><b>&minus;p</b>
143 <i>password</i></p>
136 <p style="margin-left:11%;"><b>-p</b> <i>password</i></p>
144137
145138 <p style="margin-left:22%;">Password to use for
146139 authentication.</p>
00 <!-- Creator : groff version 1.22.3 -->
1 <!-- CreationDate: Fri May 20 06:10:05 2016 -->
1 <!-- CreationDate: Fri Jul 22 02:16:03 2016 -->
22 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
33 "http://www.w3.org/TR/html4/loose.dtd">
44 <html>
3434 </h2>
3535
3636
37 <p style="margin-left:11%; margin-top: 1em">FUD &minus;
38 provide information about user mailboxes</p>
37 <p style="margin-left:11%; margin-top: 1em">FUD - provide
38 information about user mailboxes</p>
3939
4040 <h2>SYNOPSIS
4141 <a name="SYNOPSIS"></a>
4343
4444
4545 <p style="margin-left:11%; margin-top: 1em"><b>fud</b> [
46 <b>&minus;C</b> <i>config-file</i> ] [ <b>&minus;U</b>
47 <i>uses</i> ] [ <b>&minus;T</b> <i>timeout</i> ] [
48 <b>&minus;D</b> ]</p>
46 <b>-C</b> <i>config-file</i> ] [ <b>-U</b> <i>uses</i> ] [
47 <b>-T</b> <i>timeout</i> ] [ <b>-D</b> ]</p>
4948
5049 <h2>DESCRIPTION
5150 <a name="DESCRIPTION"></a>
7574 </h2>
7675
7776
78
79 <p style="margin-left:11%; margin-top: 1em"><b>&minus;C</b>
77 <p style="margin-left:11%; margin-top: 1em"><b>-C</b>
8078 <i>config-file</i></p>
8179
8280 <p style="margin-left:22%;">Read configuration options from
8381 <i>config-file</i>.</p>
8482
85 <p style="margin-left:11%;"><b>&minus;U</b> <i>uses</i></p>
83 <p style="margin-left:11%;"><b>-U</b> <i>uses</i></p>
8684
8785 <p style="margin-left:22%;">The maximum number of times
8886 that the process should be used for new connections before
8987 shutting down. The default is 250.</p>
9088
91 <p style="margin-left:11%;"><b>&minus;T</b>
92 <i>timeout</i></p>
89 <p style="margin-left:11%;"><b>-T</b> <i>timeout</i></p>
9390
9491 <p style="margin-left:22%;">The number of seconds that the
9592 process will wait for a new connection before shutting down.
103100 <td width="3%">
104101
105102
106 <p><b>&minus;D</b></p></td>
103 <p><b>-D</b></p></td>
107104 <td width="8%"></td>
108105 <td width="75%">
109106
00 <!-- Creator : groff version 1.22.3 -->
1 <!-- CreationDate: Fri May 20 06:10:05 2016 -->
1 <!-- CreationDate: Fri Jul 22 02:16:03 2016 -->
22 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
33 "http://www.w3.org/TR/html4/loose.dtd">
44 <html>
3636 </h2>
3737
3838
39 <p style="margin-left:11%; margin-top: 1em">httpd &minus;
40 HTTP server process</p>
39 <p style="margin-left:11%; margin-top: 1em">httpd - HTTP
40 server process</p>
4141
4242 <h2>SYNOPSIS
4343 <a name="SYNOPSIS"></a>
4545
4646
4747 <p style="margin-left:11%; margin-top: 1em"><b>httpd</b> [
48 <b>&minus;C</b> <i>config-file</i> ] [ <b>&minus;U</b>
49 <i>uses</i> ] [ <b>&minus;T</b> <i>timeout</i> ] [
50 <b>&minus;D</b> ] <br>
51 [ <b>&minus;s</b> ] [ <b>&minus;p</b> <i>ssf</i> ]</p>
48 <b>-C</b> <i>config-file</i> ] [ <b>-U</b> <i>uses</i> ] [
49 <b>-T</b> <i>timeout</i> ] [ <b>-D</b> ] <br>
50 [ <b>-s</b> ] [ <b>-p</b> <i>ssf</i> ]</p>
5251
5352 <h2>DESCRIPTION
5453 <a name="DESCRIPTION"></a>
8079 </h2>
8180
8281
83
84 <p style="margin-left:11%; margin-top: 1em"><b>&minus;C</b>
82 <p style="margin-left:11%; margin-top: 1em"><b>-C</b>
8583 <i>config-file</i></p>
8684
8785 <p style="margin-left:22%;">Read configuration options from
8886 <i>config-file</i>.</p>
8987
90 <p style="margin-left:11%;"><b>&minus;U</b> <i>uses</i></p>
88 <p style="margin-left:11%;"><b>-U</b> <i>uses</i></p>
9189
9290 <p style="margin-left:22%;">The maximum number of times
9391 that the process should be used for new connections before
9492 shutting down. The default is 250.</p>
9593
96 <p style="margin-left:11%;"><b>&minus;T</b>
97 <i>timeout</i></p>
94 <p style="margin-left:11%;"><b>-T</b> <i>timeout</i></p>
9895
9996 <p style="margin-left:22%;">The number of seconds that the
10097 process will wait for a new connection before shutting down.
108105 <td width="9%">
109106
110107
111 <p><b>&minus;D</b></p></td>
108 <p><b>-D</b></p></td>
112109 <td width="2%"></td>
113110 <td width="78%">
114111
119116 <td width="9%">
120117
121118
122 <p><b>&minus;s</b></p></td>
119 <p><b>-s</b></p></td>
123120 <td width="2%"></td>
124121 <td width="78%">
125122
132129 <td width="9%">
133130
134131
135 <p><b>&minus;p</b> <i>ssf</i></p></td>
132 <p><b>-p</b> <i>ssf</i></p></td>
136133 <td width="2%"></td>
137134 <td width="78%">
138135
00 <!-- Creator : groff version 1.22.3 -->
1 <!-- CreationDate: Fri May 20 06:10:05 2016 -->
1 <!-- CreationDate: Fri Jul 22 02:16:03 2016 -->
22 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
33 "http://www.w3.org/TR/html4/loose.dtd">
44 <html>
3434 </h2>
3535
3636
37 <p style="margin-left:11%; margin-top: 1em">idled &minus;
38 provide near real-time updates for IMAP IDLE</p>
37 <p style="margin-left:11%; margin-top: 1em">idled - provide
38 near real-time updates for IMAP IDLE</p>
3939
4040 <h2>SYNOPSIS
4141 <a name="SYNOPSIS"></a>
4343
4444
4545 <p style="margin-left:11%; margin-top: 1em"><b>idled</b> [
46 <b>&minus;C</b> <i>config-file</i> ]</p>
46 <b>-C</b> <i>config-file</i> ]</p>
4747
4848 <h2>DESCRIPTION
4949 <a name="DESCRIPTION"></a>
6767 </h2>
6868
6969
70
71 <p style="margin-left:11%; margin-top: 1em"><b>&minus;C</b>
70 <p style="margin-left:11%; margin-top: 1em"><b>-C</b>
7271 <i>config-file</i></p>
7372
7473 <p style="margin-left:22%;">Read configuration options from
00 <!-- Creator : groff version 1.22.3 -->
1 <!-- CreationDate: Fri May 20 06:10:06 2016 -->
1 <!-- CreationDate: Fri Jul 22 02:16:03 2016 -->
22 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
33 "http://www.w3.org/TR/html4/loose.dtd">
44 <html>
3434 </h2>
3535
3636
37 <p style="margin-left:11%; margin-top: 1em">imapd &minus;
38 IMAP server process</p>
37 <p style="margin-left:11%; margin-top: 1em">imapd - IMAP
38 server process</p>
3939
4040 <h2>SYNOPSIS
4141 <a name="SYNOPSIS"></a>
4343
4444
4545 <p style="margin-left:11%; margin-top: 1em"><b>imapd</b> [
46 <b>&minus;C</b> <i>config-file</i> ] [ <b>&minus;U</b>
47 <i>uses</i> ] [ <b>&minus;T</b> <i>timeout</i> ] [
48 <b>&minus;D</b> ] <br>
49 [ <b>&minus;s</b> ] [ <b>&minus;N</b> ] [ <b>&minus;p</b>
50 <i>ssf</i> ]</p>
46 <b>-C</b> <i>config-file</i> ] [ <b>-U</b> <i>uses</i> ] [
47 <b>-T</b> <i>timeout</i> ] [ <b>-D</b> ] <br>
48 [ <b>-s</b> ] [ <b>-N</b> ] [ <b>-p</b> <i>ssf</i> ]</p>
5149
5250 <h2>DESCRIPTION
5351 <a name="DESCRIPTION"></a>
9896 </h2>
9997
10098
101
102 <p style="margin-left:11%; margin-top: 1em"><b>&minus;C</b>
99 <p style="margin-left:11%; margin-top: 1em"><b>-C</b>
103100 <i>config-file</i></p>
104101
105102 <p style="margin-left:22%;">Read configuration options from
106103 <i>config-file</i>.</p>
107104
108 <p style="margin-left:11%;"><b>&minus;U</b> <i>uses</i></p>
105 <p style="margin-left:11%;"><b>-U</b> <i>uses</i></p>
109106
110107 <p style="margin-left:22%;">The maximum number of times
111108 that the process should be used for new connections before
112109 shutting down. The default is 250.</p>
113110
114 <p style="margin-left:11%;"><b>&minus;T</b>
115 <i>timeout</i></p>
111 <p style="margin-left:11%;"><b>-T</b> <i>timeout</i></p>
116112
117113 <p style="margin-left:22%;">The number of seconds that the
118114 process will wait for a new connection before shutting down.
126122 <td width="9%">
127123
128124
129 <p><b>&minus;D</b></p></td>
125 <p><b>-D</b></p></td>
130126 <td width="2%"></td>
131127 <td width="78%">
132128
137133 <td width="9%">
138134
139135
140 <p><b>&minus;s</b></p></td>
136 <p><b>-s</b></p></td>
141137 <td width="2%"></td>
142138 <td width="78%">
143139
150146 <td width="9%">
151147
152148
153 <p><b>&minus;N</b></p></td>
149 <p><b>-N</b></p></td>
154150 <td width="2%"></td>
155151 <td width="78%">
156152
162158 <td width="9%">
163159
164160
165 <p><b>&minus;p</b> <i>ssf</i></p></td>
161 <p><b>-p</b> <i>ssf</i></p></td>
166162 <td width="2%"></td>
167163 <td width="78%">
168164
00 <!-- Creator : groff version 1.22.3 -->
1 <!-- CreationDate: Fri May 20 06:10:06 2016 -->
1 <!-- CreationDate: Fri Jul 22 02:16:04 2016 -->
22 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
33 "http://www.w3.org/TR/html4/loose.dtd">
44 <html>
3232 </h2>
3333
3434
35 <p style="margin-left:11%; margin-top: 1em">imapd.conf
36 &minus; IMAP configuration file</p>
35 <p style="margin-left:11%; margin-top: 1em">imapd.conf -
36 IMAP configuration file</p>
3737
3838 <h2>DESCRIPTION
3939 <a name="DESCRIPTION"></a>
20432043 <p style="margin-left:18%; margin-top: 1em">The external
20442044 program will be called with the following command line
20452045 options: <b><br>
2046 &minus;c</b> <i>class</i> <b><br>
2047 &minus;p</b> <i>priority</i> <b><br>
2048 &minus;u</b> <i>user</i> <b><br>
2049 &minus;m</b> <i>mailbox</i></p>
2046 -c</b> <i>class</i> <b><br>
2047 -p</b> <i>priority</i> <b><br>
2048 -u</b> <i>user</i> <b><br>
2049 -m</b> <i>mailbox</i></p>
20502050
20512051 <p style="margin-left:18%; margin-top: 1em">And the
20522052 notification message will be available on <i>stdin</i>.</p>
00 <!-- Creator : groff version 1.22.3 -->
1 <!-- CreationDate: Fri May 20 06:10:06 2016 -->
1 <!-- CreationDate: Fri Jul 22 02:16:04 2016 -->
22 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
33 "http://www.w3.org/TR/html4/loose.dtd">
44 <html>
3535 </h2>
3636
3737
38 <p style="margin-left:11%; margin-top: 1em">imclient
39 &minus; (library) authenticating callback interface to
40 IMAP/IMSP servers</p>
38 <p style="margin-left:11%; margin-top: 1em">imclient -
39 (library) authenticating callback interface to IMAP/IMSP
40 servers</p>
4141
4242 <h2>SYNOPSIS
4343 <a name="SYNOPSIS"></a>
00 <!-- Creator : groff version 1.22.3 -->
1 <!-- CreationDate: Fri May 20 06:10:06 2016 -->
1 <!-- CreationDate: Fri Jul 22 02:16:04 2016 -->
22 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
33 "http://www.w3.org/TR/html4/loose.dtd">
44 <html>
3333 </h2>
3434
3535
36 <p style="margin-left:11%; margin-top: 1em">imtest &minus;
36 <p style="margin-left:11%; margin-top: 1em">imtest -
3737 interactive IMAP test program</p>
3838
3939 <h2>SYNOPSIS
4242
4343
4444 <p style="margin-left:11%; margin-top: 1em"><b>imtest</b> [
45 <b>&minus;t</b> <i>keyfile</i> ] [ <b>&minus;p</b>
46 <i>port</i> ] [ <b>&minus;m</b> <i>mechanism</i> ] <br>
47 [ <b>&minus;a</b> <i>userid</i> ] [ <b>&minus;u</b>
48 <i>userid</i> ] [ <b>&minus;k</b> <i>num</i> ] [
49 <b>&minus;l</b> <i>num</i> ] <br>
50 [ <b>&minus;r</b> <i>realm</i> ] [ <b>&minus;f</b>
51 <i>file</i> ] [ <b>&minus;n</b> <i>num</i> ] [
52 <b>&minus;s</b> ] [ <b>&minus;q</b> ] <br>
53 [ <b>&minus;c</b> ] [ <b>&minus;i</b> ] [ <b>&minus;z</b> ]
54 [ <b>&minus;v</b> ] [ <b>&minus;I</b> <i>file</i> ] [
55 <b>&minus;x</b> <i>file</i> ] <br>
56 [ <b>&minus;X</b> <i>file</i> ] [ <b>&minus;o</b>
45 <b>-t</b> <i>keyfile</i> ] [ <b>-p</b> <i>port</i> ] [
46 <b>-m</b> <i>mechanism</i> ] <br>
47 [ <b>-a</b> <i>userid</i> ] [ <b>-u</b> <i>userid</i> ] [
48 <b>-k</b> <i>num</i> ] [ <b>-l</b> <i>num</i> ] <br>
49 [ <b>-r</b> <i>realm</i> ] [ <b>-f</b> <i>file</i> ] [
50 <b>-n</b> <i>num</i> ] [ <b>-s</b> ] [ <b>-q</b> ] <br>
51 [ <b>-c</b> ] [ <b>-i</b> ] [ <b>-z</b> ] [ <b>-v</b> ] [
52 <b>-I</b> <i>file</i> ] [ <b>-x</b> <i>file</i> ] <br>
53 [ <b>-X</b> <i>file</i> ] [ <b>-o</b>
5754 <i>option</i><b>=</b><i>value</i> ] <i>hostname</i></p>
5855
5956 <h2>DESCRIPTION
7673 </h2>
7774
7875
79
80 <p style="margin-left:11%; margin-top: 1em"><b>&minus;t</b>
76 <p style="margin-left:11%; margin-top: 1em"><b>-t</b>
8177 <i>keyfile</i></p>
8278
8379 <p style="margin-left:22%;">Enable TLS. <i>keyfile</i>
8581 <b>&quot;&quot;</b> to negotiate a TLS encryption layer but
8682 not use TLS authentication.</p>
8783
88 <p style="margin-left:11%;"><b>&minus;p</b> <i>port</i></p>
84 <p style="margin-left:11%;"><b>-p</b> <i>port</i></p>
8985
9086 <p style="margin-left:22%;">Port to connect to. If left off
9187 this defaults to <b>imap</b> as defined in
00 <!-- Creator : groff version 1.22.3 -->
1 <!-- CreationDate: Fri May 20 06:10:06 2016 -->
1 <!-- CreationDate: Fri Jul 22 02:16:04 2016 -->
22 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
33 "http://www.w3.org/TR/html4/loose.dtd">
44 <html>
3232 </h2>
3333
3434
35 <p style="margin-left:11%; margin-top: 1em">installsieve
36 &minus; user utility for managing sieve scripts</p>
35 <p style="margin-left:11%; margin-top: 1em">installsieve -
36 user utility for managing sieve scripts</p>
3737
3838 <h2>SYNOPSIS
3939 <a name="SYNOPSIS"></a>
5858 </h2>
5959
6060
61
62 <p style="margin-left:11%; margin-top: 1em"><b>&minus;v</b>
61 <p style="margin-left:11%; margin-top: 1em"><b>-v</b>
6362 <i>name</i></p>
6463
6564 <p style="margin-left:22%;">View script with the given
7372 <td width="3%">
7473
7574
76 <p><b>&minus;l</b></p></td>
75 <p><b>-l</b></p></td>
7776 <td width="8%"></td>
7877 <td width="78%">
7978
8382 it is the active script.</p></td></tr>
8483 </table>
8584
86 <p style="margin-left:11%;"><b>&minus;p</b> <i>port</i></p>
85 <p style="margin-left:11%;"><b>-p</b> <i>port</i></p>
8786
8887 <p style="margin-left:22%;">Port to connect to. If left off
8988 this defaults to &quot;sieve&quot; as defined in
9089 /etc/services.</p>
9190
92 <p style="margin-left:11%;"><b>&minus;i</b> <i>file</i></p>
91 <p style="margin-left:11%;"><b>-i</b> <i>file</i></p>
9392
9493 <p style="margin-left:22%;">Install a file onto the server.
9594 If a script with the same name already exists on the server
9897 extension .script it is chopped when put on the server since
9998 sieve names may not contain a &rsquo;.&rsquo;.</p>
10099
101 <p style="margin-left:11%;"><b>&minus;a</b> <i>name</i></p>
100 <p style="margin-left:11%;"><b>-a</b> <i>name</i></p>
102101
103102 <p style="margin-left:22%;">Set <i>name</i> as the active
104103 script. The list of available names can be obtained from the
105104 <b>-l</b> option.</p>
106105
107 <p style="margin-left:11%;"><b>&minus;d</b> <i>name</i></p>
106 <p style="margin-left:11%;"><b>-d</b> <i>name</i></p>
108107
109108 <p style="margin-left:22%;">Delete the sieve script on the
110109 server with <i>name</i>.</p>
111110
112 <p style="margin-left:11%;"><b>&minus;m</b>
113 <i>mechanism</i></p>
111 <p style="margin-left:11%;"><b>-m</b> <i>mechanism</i></p>
114112
115113 <p style="margin-left:22%;">Force installsieve to use
116114 <i>mechanism</i> for authentication. If not specified the
117115 strongest authentication mechanism is chosen.</p>
118116
119 <p style="margin-left:11%;"><b>&minus;g</b> <i>name</i></p>
117 <p style="margin-left:11%;"><b>-g</b> <i>name</i></p>
120118
121119 <p style="margin-left:22%;">Get the sieve script with
122120 <i>name</i> and save it to disk with a &quot;.script&quot;
123121 extension. If a file with that name already exists it is
124122 overwritten.</p>
125123
126 <p style="margin-left:11%;"><b>&minus;u</b> <i>user</i></p>
124 <p style="margin-left:11%;"><b>-u</b> <i>user</i></p>
127125
128126 <p style="margin-left:22%;">Userid/Authname to use for
129127 authentication; by default, the current user.</p>
00 <!-- Creator : groff version 1.22.3 -->
1 <!-- CreationDate: Fri May 20 06:10:07 2016 -->
1 <!-- CreationDate: Fri Jul 22 02:16:04 2016 -->
22 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
33 "http://www.w3.org/TR/html4/loose.dtd">
44 <html>
3333 </h2>
3434
3535
36 <p style="margin-left:11%; margin-top: 1em">ipurge &minus;
37 delete mail from IMAP mailbox or partition based on age or
38 size</p>
36 <p style="margin-left:11%; margin-top: 1em">ipurge - delete
37 mail from IMAP mailbox or partition based on age or size</p>
3938
4039 <h2>SYNOPSIS
4140 <a name="SYNOPSIS"></a>
4342
4443
4544 <p style="margin-left:11%; margin-top: 1em"><b>ipurge</b> [
46 <b>&minus;f</b> ] [ <b>&minus;C</b> <i>config-file</i> ] [
47 <b>&minus;x</b> ] [ <b>&minus;X</b> ] [ <b>&minus;i</b> ] [
48 <b>&minus;s</b> ] [ <b>&minus;o</b> ] <br>
49 [ <b>&minus;d</b> <i>days</i> | <b>&minus;b</b> <i>bytes</i>
50 | <b>&minus;k</b> <i>Kbytes</i> | <b>&minus;m</b>
51 <i>Mbytes</i> ] <br>
45 <b>-f</b> ] [ <b>-C</b> <i>config-file</i> ] [ <b>-x</b> ] [
46 <b>-X</b> ] [ <b>-i</b> ] [ <b>-s</b> ] [ <b>-o</b> ] [
47 <b>-n</b> ] <br>
48 [ <b>-d</b> <i>days</i> | <b>-b</b> <i>bytes</i> | <b>-k</b>
49 <i>Kbytes</i> | <b>-m</b> <i>Mbytes</i> ] <br>
5250 [ <i>mailbox-pattern</i>... ]</p>
5351
5452 <h2>DESCRIPTION
9189 <td width="3%">
9290
9391
94 <p style="margin-top: 1em"><b>&minus;f</b></p></td>
92 <p style="margin-top: 1em"><b>-f</b></p></td>
9593 <td width="8%"></td>
9694 <td width="61%">
9795
102100 </td></tr>
103101 </table>
104102
105 <p style="margin-left:11%;"><b>&minus;C</b>
103 <p style="margin-left:11%;"><b>-C</b>
106104 <i>config-file</i></p>
107105
108106 <p style="margin-left:22%;">Read configuration options from
109107 <i>config-file</i>.</p>
110108
111 <p style="margin-left:11%;"><b>&minus;d</b> <i>days</i></p>
109 <p style="margin-left:11%;"><b>-d</b> <i>days</i></p>
112110
113111 <p style="margin-left:22%;">Age of message in
114112 <i>days</i>.</p>
115113
116 <p style="margin-left:11%;"><b>&minus;b</b>
117 <i>bytes</i></p>
114 <p style="margin-left:11%;"><b>-b</b> <i>bytes</i></p>
118115
119116 <p style="margin-left:22%;">Size of message in
120117 <i>bytes</i>.</p>
121118
122 <p style="margin-left:11%;"><b>&minus;k</b>
123 <i>Kbytes</i></p>
119 <p style="margin-left:11%;"><b>-k</b> <i>Kbytes</i></p>
124120
125121 <p style="margin-left:22%;">Size of message in
126122 <i>Kbytes</i> (2^10 bytes).</p>
127123
128 <p style="margin-left:11%;"><b>&minus;m</b>
129 <i>Mbytes</i></p>
124 <p style="margin-left:11%;"><b>-m</b> <i>Mbytes</i></p>
130125
131126 <p style="margin-left:22%;">Size of message in
132127 <i>Mbytes</i> (2^20 bytes).</p>
138133 <td width="3%">
139134
140135
141 <p><b>&minus;x</b></p></td>
136 <p><b>-x</b></p></td>
142137 <td width="8%"></td>
143138 <td width="78%">
144139
150145 <td width="3%">
151146
152147
153 <p><b>&minus;X</b></p></td>
148 <p><b>-X</b></p></td>
154149 <td width="8%"></td>
155150 <td width="78%">
156151
162157 <td width="3%">
163158
164159
165 <p><b>&minus;i</b></p></td>
160 <p><b>-i</b></p></td>
166161 <td width="8%"></td>
167162 <td width="78%">
168163
174169 <td width="3%">
175170
176171
177 <p><b>&minus;s</b></p></td>
172 <p><b>-s</b></p></td>
178173 <td width="8%"></td>
179174 <td width="78%">
180175
185180 <td width="3%">
186181
187182
188 <p><b>&minus;o</b></p></td>
183 <p><b>-o</b></p></td>
189184 <td width="8%"></td>
190185 <td width="78%">
191186
192187
193188 <p>Only purge messages that have the \Deleted flag set.</p></td></tr>
189 <tr valign="top" align="left">
190 <td width="11%"></td>
191 <td width="3%">
192
193
194 <p><b>-n</b></p></td>
195 <td width="8%"></td>
196 <td width="78%">
197
198
199 <p>Only print messages that would be deleted (dry run).</p></td></tr>
194200 </table>
195201
196202 <h2>FILES
00 <!-- Creator : groff version 1.22.3 -->
1 <!-- CreationDate: Fri May 20 06:10:07 2016 -->
1 <!-- CreationDate: Fri Jul 22 02:16:04 2016 -->
22 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
33 "http://www.w3.org/TR/html4/loose.dtd">
44 <html>
3333
3434
3535 <p style="margin-left:11%; margin-top: 1em"><b>/etc/krb.equiv</b>
36 &minus; Kerberos equivalences</p>
36 - Kerberos equivalences</p>
3737
3838 <h2>DESCRIPTION
3939 <a name="DESCRIPTION"></a>
00 <!-- Creator : groff version 1.22.3 -->
1 <!-- CreationDate: Fri May 20 06:10:07 2016 -->
1 <!-- CreationDate: Fri Jul 22 02:16:04 2016 -->
22 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
33 "http://www.w3.org/TR/html4/loose.dtd">
44 <html>
3434 </h2>
3535
3636
37 <p style="margin-left:11%; margin-top: 1em">lmtpd &minus;
38 LMTP server process</p>
37 <p style="margin-left:11%; margin-top: 1em">lmtpd - LMTP
38 server process</p>
3939
4040 <h2>SYNOPSIS
4141 <a name="SYNOPSIS"></a>
4343
4444
4545 <p style="margin-left:11%; margin-top: 1em"><b>lmtpd</b> [
46 <b>&minus;C</b> <i>config-file</i> ] [ <b>&minus;U</b>
47 <i>uses</i> ] [ <b>&minus;T</b> <i>timeout</i> ] [
48 <b>&minus;D</b> ] <br>
49 [ <b>&minus;a</b> ]</p>
46 <b>-C</b> <i>config-file</i> ] [ <b>-U</b> <i>uses</i> ] [
47 <b>-T</b> <i>timeout</i> ] [ <b>-D</b> ] <br>
48 [ <b>-a</b> ]</p>
5049
5150 <h2>DESCRIPTION
5251 <a name="DESCRIPTION"></a>
7069 </h2>
7170
7271
73
74 <p style="margin-left:11%; margin-top: 1em"><b>&minus;C</b>
72 <p style="margin-left:11%; margin-top: 1em"><b>-C</b>
7573 <i>config-file</i></p>
7674
7775 <p style="margin-left:22%;">Read configuration options from
7876 <i>config-file</i>.</p>
7977
80 <p style="margin-left:11%;"><b>&minus;U</b> <i>uses</i></p>
78 <p style="margin-left:11%;"><b>-U</b> <i>uses</i></p>
8179
8280 <p style="margin-left:22%;">The maximum number of times
8381 that the process should be used for new connections before
8482 shutting down. The default is 250.</p>
8583
86 <p style="margin-left:11%;"><b>&minus;T</b>
87 <i>timeout</i></p>
84 <p style="margin-left:11%;"><b>-T</b> <i>timeout</i></p>
8885
8986 <p style="margin-left:22%;">The number of seconds that the
9087 process will wait for a new connection before shutting down.
9895 <td width="3%">
9996
10097
101 <p><b>&minus;D</b></p></td>
98 <p><b>-D</b></p></td>
10299 <td width="8%"></td>
103100 <td width="78%">
104101
109106 <td width="3%">
110107
111108
112 <p><b>&minus;a</b></p></td>
109 <p><b>-a</b></p></td>
113110 <td width="8%"></td>
114111 <td width="78%">
115112
00 <!-- Creator : groff version 1.22.3 -->
1 <!-- CreationDate: Fri May 20 06:10:07 2016 -->
1 <!-- CreationDate: Fri Jul 22 02:16:05 2016 -->
22 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
33 "http://www.w3.org/TR/html4/loose.dtd">
44 <html>
3333 </h2>
3434
3535
36 <p style="margin-left:11%; margin-top: 1em">lmtptest
37 &minus; interactive LMTP test program</p>
36 <p style="margin-left:11%; margin-top: 1em">lmtptest -
37 interactive LMTP test program</p>
3838
3939 <h2>SYNOPSIS
4040 <a name="SYNOPSIS"></a>
4343
4444
4545 <p style="margin-left:11%; margin-top: 1em"><b>lmtptest</b>
46 [ <b>&minus;t</b> <i>keyfile</i> ] [ <b>&minus;p</b>
47 <i>port</i> ] [ <b>&minus;m</b> <i>mechanism</i> ] <br>
48 [ <b>&minus;a</b> <i>userid</i> ] [ <b>&minus;u</b>
49 <i>userid</i> ] [ <b>&minus;k</b> <i>num</i> ] [
50 <b>&minus;l</b> <i>num</i> ] <br>
51 [ <b>&minus;r</b> <i>realm</i> ] [ <b>&minus;f</b>
52 <i>file</i> ] [ <b>&minus;n</b> <i>num</i> ] [
53 <b>&minus;c</b> ] <br>
54 [ <b>&minus;i</b> ] [ <b>&minus;o</b>
55 <i>option</i><b>=</b><i>value</i> ] [ <b>&minus;v</b> ]
56 <i>hostname</i></p>
46 [ <b>-t</b> <i>keyfile</i> ] [ <b>-p</b> <i>port</i> ] [
47 <b>-m</b> <i>mechanism</i> ] <br>
48 [ <b>-a</b> <i>userid</i> ] [ <b>-u</b> <i>userid</i> ] [
49 <b>-k</b> <i>num</i> ] [ <b>-l</b> <i>num</i> ] <br>
50 [ <b>-r</b> <i>realm</i> ] [ <b>-f</b> <i>file</i> ] [
51 <b>-n</b> <i>num</i> ] [ <b>-c</b> ] <br>
52 [ <b>-i</b> ] [ <b>-o</b> <i>option</i><b>=</b><i>value</i>
53 ] [ <b>-v</b> ] <i>hostname</i></p>
5754
5855 <h2>DESCRIPTION
5956 <a name="DESCRIPTION"></a>
7673 </h2>
7774
7875
79
80 <p style="margin-left:11%; margin-top: 1em"><b>&minus;t</b>
76 <p style="margin-left:11%; margin-top: 1em"><b>-t</b>
8177 <i>keyfile</i></p>
8278
8379 <p style="margin-left:22%;">Enable TLS. <i>keyfile</i>
8581 <b>&quot;&quot;</b> to negotiate a TLS encryption layer but
8682 not use TLS authentication.</p>
8783
88 <p style="margin-left:11%;"><b>&minus;p</b> <i>port</i></p>
84 <p style="margin-left:11%;"><b>-p</b> <i>port</i></p>
8985
9086 <p style="margin-left:22%;">Port to connect to. If left off
9187 this defaults to <b>lmtp</b> as defined in
00 <!-- Creator : groff version 1.22.3 -->
1 <!-- CreationDate: Fri May 20 06:10:07 2016 -->
1 <!-- CreationDate: Fri Jul 22 02:16:05 2016 -->
22 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
33 "http://www.w3.org/TR/html4/loose.dtd">
44 <html>
3636 </h2>
3737
3838
39 <p style="margin-left:11%; margin-top: 1em">master &minus;
40 master Cyrus process</p>
39 <p style="margin-left:11%; margin-top: 1em">master - master
40 Cyrus process</p>
4141
4242 <h2>SYNOPSIS
4343 <a name="SYNOPSIS"></a>
4545
4646
4747 <p style="margin-left:11%; margin-top: 1em"><b>master</b> [
48 <b>&minus;C</b> <i>alternate imapd.conf</i> ] [
49 <b>&minus;M</b> <i>alternate cyrus.conf</i> ] [
50 <b>&minus;l</b> <i>listen queue</i> ] [ <b>&minus;p</b>
51 <i>pidfile</i> ] [ <b>&minus;P</b> <i>snmp agentx ping
52 interval</i> ] [ <b>&minus;j</b> <i>janitor period</i> ] [
53 <b>&minus;d</b> ] [ <b>&minus;D</b> ] [ <b>&minus;x</b>
54 <i>snmp agentx socket</i> ]</p>
48 <b>-C</b> <i>alternate imapd.conf</i> ] [ <b>-M</b>
49 <i>alternate cyrus.conf</i> ] [ <b>-l</b> <i>listen
50 queue</i> ] [ <b>-p</b> <i>pidfile</i> ] [ <b>-P</b> <i>snmp
51 agentx ping interval</i> ] [ <b>-j</b> <i>janitor period</i>
52 ] [ <b>-d</b> ] [ <b>-D</b> ] [ <b>-x</b> <i>snmp agentx
53 socket</i> ]</p>
5554
5655 <h2>DESCRIPTION
5756 <a name="DESCRIPTION"></a>
7675 </h2>
7776
7877
79
80 <p style="margin-left:11%; margin-top: 1em"><b>&minus;C</b>
78 <p style="margin-left:11%; margin-top: 1em"><b>-C</b>
8179 <i>alternate imapd.conf</i></p>
8280
8381 <p style="margin-left:22%;">Specifies an alternate
8684 those specifically in the respective entries in
8785 cyrus.conf).</p>
8886
89 <p style="margin-left:11%;"><b>&minus;M</b> <i>alternate
87 <p style="margin-left:11%;"><b>-M</b> <i>alternate
9088 cyrus.conf</i></p>
9189
9290 <p style="margin-left:22%;">Specifies an alternate
9391 cyrus.conf for use by master.</p>
9492
95 <p style="margin-left:11%;"><b>&minus;l</b> <i>listen queue
93 <p style="margin-left:11%;"><b>-l</b> <i>listen queue
9694 backlog</i></p>
9795
9896 <p style="margin-left:22%;">Increase the listen queue
10199 increase this value. refer to <b>listen(2)</b> for
102100 details.</p>
103101
104 <p style="margin-left:11%;"><b>&minus;j</b> <i>janitor
102 <p style="margin-left:11%;"><b>-j</b> <i>janitor
105103 full-sweeps per second</i></p>
106104
107105 <p style="margin-left:22%;">Sets the amount of times per
111109 size when you compiled Cyrus from its default of 10000
112110 entries).</p>
113111
114 <p style="margin-left:11%;"><b>&minus;p</b>
115 <i>pidfile</i></p>
112 <p style="margin-left:11%;"><b>-p</b> <i>pidfile</i></p>
116113
117114 <p style="margin-left:22%;">Use <i>pidfile</i> as the
118115 pidfile. If not specified, defaults to
119116 /var/run/cyrus-master.pid</p>
120117
121 <p style="margin-left:11%;"><b>&minus;P</b> <i>snmp agentx
122 ping interval</i></p>
118 <p style="margin-left:11%;"><b>-P</b> <i>snmp agentx ping
119 interval</i></p>
123120
124121 <p style="margin-left:22%;">Sets the amount on time in
125122 seconds the subagent will try and reconnect to the master
133130 <td width="3%">
134131
135132
136 <p><b>&minus;d</b></p></td>
133 <p><b>-d</b></p></td>
137134 <td width="8%"></td>
138135 <td width="78%">
139136
145142 <td width="3%">
146143
147144
148 <p><b>&minus;D</b></p></td>
145 <p><b>-D</b></p></td>
149146 <td width="8%"></td>
150147 <td width="78%">
151148
155152 consider using -L instead.</p></td></tr>
156153 </table>
157154
158 <p style="margin-left:11%;"><b>&minus;L</b>
159 <i>logfile</i></p>
155 <p style="margin-left:11%;"><b>-L</b> <i>logfile</i></p>
160156
161157 <p style="margin-left:22%;">Redirect stdout and stderr to
162158 the given <i>logfile</i>.</p>
163159
164 <p style="margin-left:11%;"><b>&minus;x</b> <i>snmp agentx
160 <p style="margin-left:11%;"><b>-x</b> <i>snmp agentx
165161 socket</i></p>
166162
167163 <p style="margin-left:22%;">Address the master agent (most
00 <!-- Creator : groff version 1.22.3 -->
1 <!-- CreationDate: Fri May 20 06:10:07 2016 -->
1 <!-- CreationDate: Fri Jul 22 02:16:05 2016 -->
22 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
33 "http://www.w3.org/TR/html4/loose.dtd">
44 <html>
3333 </h2>
3434
3535
36 <p style="margin-left:11%; margin-top: 1em">mbexamine
37 &minus; examine a cyrus-format mailbox</p>
36 <p style="margin-left:11%; margin-top: 1em">mbexamine -
37 examine a cyrus-format mailbox</p>
3838
3939 <h2>SYNOPSIS
4040 <a name="SYNOPSIS"></a>
4343
4444
4545 <p style="margin-left:11%; margin-top: 1em"><b>mbexamine</b>
46 [ <b>&minus;C</b> <i>config-file</i> ] [ <b>&minus;u uid</b>
47 ] <i>mailbox</i>... <b><br>
48 mbexamine</b> [ <b>&minus;C</b> <i>config-file</i> ] [
49 <b>&minus;s seqnum</b> ] <i>mailbox</i>... <b><br>
50 mbexamine</b> [ <b>&minus;C</b> <i>config-file</i> ]
51 <b>&minus;q</b> <i>mailbox</i>...</p>
46 [ <b>-C</b> <i>config-file</i> ] [ <b>-u uid</b> ]
47 <i>mailbox</i>... <b><br>
48 mbexamine</b> [ <b>-C</b> <i>config-file</i> ] [ <b>-s
49 seqnum</b> ] <i>mailbox</i>... <b><br>
50 mbexamine</b> [ <b>-C</b> <i>config-file</i> ] <b>-q</b>
51 <i>mailbox</i>...</p>
5252
5353 <h2>DESCRIPTION
5454 <a name="DESCRIPTION"></a>
7171 </h2>
7272
7373
74
75 <p style="margin-left:11%; margin-top: 1em"><b>&minus;C</b>
74 <p style="margin-left:11%; margin-top: 1em"><b>-C</b>
7675 <i>config-file</i></p>
7776
7877 <p style="margin-left:22%;">Read configuration options from
8584 <td width="3%">
8685
8786
88 <p><b>&minus;s</b></p></td>
87 <p><b>-s</b></p></td>
8988 <td width="8%"></td>
9089 <td width="78%">
9190
9695 <td width="3%">
9796
9897
99 <p><b>&minus;u</b></p></td>
98 <p><b>-u</b></p></td>
10099 <td width="8%"></td>
101100 <td width="78%">
102101
107106 <td width="3%">
108107
109108
110 <p><b>&minus;q</b></p></td>
109 <p><b>-q</b></p></td>
111110 <td width="8%"></td>
112111 <td width="78%">
113112
00 <!-- Creator : groff version 1.22.3 -->
1 <!-- CreationDate: Fri May 20 06:10:07 2016 -->
1 <!-- CreationDate: Fri Jul 22 02:16:05 2016 -->
22 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
33 "http://www.w3.org/TR/html4/loose.dtd">
44 <html>
3333 </h2>
3434
3535
36 <p style="margin-left:11%; margin-top: 1em">mbpath &minus;
36 <p style="margin-left:11%; margin-top: 1em">mbpath -
3737 translate mailbox names to filesystem paths</p>
3838
3939 <h2>SYNOPSIS
4242
4343
4444 <p style="margin-left:11%; margin-top: 1em"><b>mbpath</b> [
45 <b>&minus;C</b> <i>config-file</i> ] [ <b>&minus;q</b> ] [
46 <b>&minus;s</b> ] [ <b>&minus;m</b> ] [
47 <i>mailbox-names</i>... ]</p>
45 <b>-C</b> <i>config-file</i> ] [ <b>-q</b> ] [ <b>-s</b> ] [
46 <b>-m</b> ] [ <i>mailbox-names</i>... ]</p>
4847
4948 <h2>DESCRIPTION
5049 <a name="DESCRIPTION"></a>
6665 </h2>
6766
6867
69
70 <p style="margin-left:11%; margin-top: 1em"><b>&minus;C</b>
68 <p style="margin-left:11%; margin-top: 1em"><b>-C</b>
7169 <i>config-file</i></p>
7270
7371 <p style="margin-left:22%;">Read configuration options from
7472 <i>config-file</i>.</p>
7573
76
77 <p style="margin-left:11%; margin-top: 1em"><i>&minus;q</i>
74 <p style="margin-left:11%; margin-top: 1em"><i>-q</i>
7875 suppress any error output.</p>
7976
77 <p style="margin-left:11%; margin-top: 1em"><i>-s</i> if
78 any error occurs, stop processing the list of mailboxes and
79 exit.</p>
8080
81 <p style="margin-left:11%; margin-top: 1em"><i>&minus;s</i>
82 if any error occurs, stop processing the list of mailboxes
83 and exit.</p>
84
85
86 <p style="margin-left:11%; margin-top: 1em"><i>&minus;m</i>
81 <p style="margin-left:11%; margin-top: 1em"><i>-m</i>
8782 output the path to the metadata files (if different from the
8883 message files).</p>
8984
00 <!-- Creator : groff version 1.22.3 -->
1 <!-- CreationDate: Fri May 20 06:10:08 2016 -->
1 <!-- CreationDate: Fri Jul 22 02:16:05 2016 -->
22 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
33 "http://www.w3.org/TR/html4/loose.dtd">
44 <html>
3333 </h2>
3434
3535
36 <p style="margin-left:11%; margin-top: 1em">mupdatetest
37 &minus; interactive MUPDATE test program</p>
36 <p style="margin-left:11%; margin-top: 1em">mupdatetest -
37 interactive MUPDATE test program</p>
3838
3939 <h2>SYNOPSIS
4040 <a name="SYNOPSIS"></a>
4343
4444
4545 <p style="margin-left:11%; margin-top: 1em"><b>mupdatetest</b>
46 [ <b>&minus;p</b> <i>port</i> ] [ <b>&minus;m</b>
47 <i>mechanism</i> ] <br>
48 [ <b>&minus;a</b> <i>userid</i> ] [ <b>&minus;u</b>
49 <i>userid</i> ] [ <b>&minus;k</b> <i>num</i> ] [
50 <b>&minus;l</b> <i>num</i> ] <br>
51 [ <b>&minus;r</b> <i>realm</i> ] [ <b>&minus;f</b>
52 <i>file</i> ] [ <b>&minus;n</b> <i>num</i> ] [
53 <b>&minus;q</b> ] <br>
54 [ <b>&minus;c</b> ] [ <b>&minus;i</b> ] [ <b>&minus;o</b>
55 <i>option</i><b>=</b><i>value</i> ] [ <b>&minus;v</b> ]
46 [ <b>-p</b> <i>port</i> ] [ <b>-m</b> <i>mechanism</i> ]
47 <br>
48 [ <b>-a</b> <i>userid</i> ] [ <b>-u</b> <i>userid</i> ] [
49 <b>-k</b> <i>num</i> ] [ <b>-l</b> <i>num</i> ] <br>
50 [ <b>-r</b> <i>realm</i> ] [ <b>-f</b> <i>file</i> ] [
51 <b>-n</b> <i>num</i> ] [ <b>-q</b> ] <br>
52 [ <b>-c</b> ] [ <b>-i</b> ] [ <b>-o</b>
53 <i>option</i><b>=</b><i>value</i> ] [ <b>-v</b> ]
5654 <i>hostname</i></p>
5755
5856 <h2>DESCRIPTION
7674 </h2>
7775
7876
79
80 <p style="margin-left:11%; margin-top: 1em"><b>&minus;p</b>
77 <p style="margin-left:11%; margin-top: 1em"><b>-p</b>
8178 <i>port</i></p>
8279
8380 <p style="margin-left:22%;">Port to connect to. If left off
00 <!-- Creator : groff version 1.22.3 -->
1 <!-- CreationDate: Fri May 20 06:10:08 2016 -->
1 <!-- CreationDate: Fri Jul 22 02:16:05 2016 -->
22 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
33 "http://www.w3.org/TR/html4/loose.dtd">
44 <html>
3434 </h2>
3535
3636
37 <p style="margin-left:11%; margin-top: 1em">nntpd &minus;
38 NNTP server process</p>
37 <p style="margin-left:11%; margin-top: 1em">nntpd - NNTP
38 server process</p>
3939
4040 <h2>SYNOPSIS
4141 <a name="SYNOPSIS"></a>
4343
4444
4545 <p style="margin-left:11%; margin-top: 1em"><b>nntpd</b> [
46 <b>&minus;C</b> <i>config-file</i> ] [ <b>&minus;U</b>
47 <i>uses</i> ] [ <b>&minus;T</b> <i>timeout</i> ] [
48 <b>&minus;D</b> ] <br>
49 [ <b>&minus;s</b> ] [ <b>&minus;r</b> ] [ <b>&minus;f</b> ]
50 [ <b>&minus;p</b> <i>ssf</i> ]</p>
46 <b>-C</b> <i>config-file</i> ] [ <b>-U</b> <i>uses</i> ] [
47 <b>-T</b> <i>timeout</i> ] [ <b>-D</b> ] <br>
48 [ <b>-s</b> ] [ <b>-r</b> ] [ <b>-f</b> ] [ <b>-p</b>
49 <i>ssf</i> ]</p>
5150
5251 <h2>DESCRIPTION
5352 <a name="DESCRIPTION"></a>
8988 </h2>
9089
9190
92
93 <p style="margin-left:11%; margin-top: 1em"><b>&minus;C</b>
91 <p style="margin-left:11%; margin-top: 1em"><b>-C</b>
9492 <i>config-file</i></p>
9593
9694 <p style="margin-left:22%;">Read configuration options from
9795 <i>config-file</i>.</p>
9896
99 <p style="margin-left:11%;"><b>&minus;U</b> <i>uses</i></p>
97 <p style="margin-left:11%;"><b>-U</b> <i>uses</i></p>
10098
10199 <p style="margin-left:22%;">The maximum number of times
102100 that the process should be used for new connections before
103101 shutting down. The default is 250.</p>
104102
105 <p style="margin-left:11%;"><b>&minus;T</b>
106 <i>timeout</i></p>
103 <p style="margin-left:11%;"><b>-T</b> <i>timeout</i></p>
107104
108105 <p style="margin-left:22%;">The number of seconds that the
109106 process will wait for a new connection before shutting down.
117114 <td width="9%">
118115
119116
120 <p><b>&minus;D</b></p></td>
117 <p><b>-D</b></p></td>
121118 <td width="2%"></td>
122119 <td width="78%">
123120
128125 <td width="9%">
129126
130127
131 <p><b>&minus;s</b></p></td>
128 <p><b>-s</b></p></td>
132129 <td width="2%"></td>
133130 <td width="78%">
134131
141138 <td width="9%">
142139
143140
144 <p><b>&minus;r</b></p></td>
141 <p><b>-r</b></p></td>
145142 <td width="2%"></td>
146143 <td width="78%">
147144
153150 <td width="9%">
154151
155152
156 <p><b>&minus;f</b></p></td>
153 <p><b>-f</b></p></td>
157154 <td width="2%"></td>
158155 <td width="78%">
159156
165162 <td width="9%">
166163
167164
168 <p><b>&minus;p</b> <i>ssf</i></p></td>
165 <p><b>-p</b> <i>ssf</i></p></td>
169166 <td width="2%"></td>
170167 <td width="78%">
171168
00 <!-- Creator : groff version 1.22.3 -->
1 <!-- CreationDate: Fri May 20 06:10:08 2016 -->
1 <!-- CreationDate: Fri Jul 22 02:16:05 2016 -->
22 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
33 "http://www.w3.org/TR/html4/loose.dtd">
44 <html>
3333 </h2>
3434
3535
36 <p style="margin-left:11%; margin-top: 1em">nntptest
37 &minus; interactive NNTP test program</p>
36 <p style="margin-left:11%; margin-top: 1em">nntptest -
37 interactive NNTP test program</p>
3838
3939 <h2>SYNOPSIS
4040 <a name="SYNOPSIS"></a>
4343
4444
4545 <p style="margin-left:11%; margin-top: 1em"><b>nntptest</b>
46 [ <b>&minus;t</b> <i>keyfile</i> ] [ <b>&minus;p</b>
47 <i>port</i> ] [ <b>&minus;m</b> <i>mechanism</i> ] <br>
48 [ <b>&minus;a</b> <i>userid</i> ] [ <b>&minus;u</b>
49 <i>userid</i> ] [ <b>&minus;k</b> <i>num</i> ] [
50 <b>&minus;l</b> <i>num</i> ] <br>
51 [ <b>&minus;r</b> <i>realm</i> ] [ <b>&minus;f</b>
52 <i>file</i> ] [ <b>&minus;n</b> <i>num</i> ] [
53 <b>&minus;s</b> ] [ <b>&minus;c</b> ] <br>
54 [ <b>&minus;i</b> ] [ <b>&minus;o</b>
55 <i>option</i><b>=</b><i>value</i> ] [ <b>&minus;v</b> ]
56 <i>hostname</i></p>
46 [ <b>-t</b> <i>keyfile</i> ] [ <b>-p</b> <i>port</i> ] [
47 <b>-m</b> <i>mechanism</i> ] <br>
48 [ <b>-a</b> <i>userid</i> ] [ <b>-u</b> <i>userid</i> ] [
49 <b>-k</b> <i>num</i> ] [ <b>-l</b> <i>num</i> ] <br>
50 [ <b>-r</b> <i>realm</i> ] [ <b>-f</b> <i>file</i> ] [
51 <b>-n</b> <i>num</i> ] [ <b>-s</b> ] [ <b>-c</b> ] <br>
52 [ <b>-i</b> ] [ <b>-o</b> <i>option</i><b>=</b><i>value</i>
53 ] [ <b>-v</b> ] <i>hostname</i></p>
5754
5855 <h2>DESCRIPTION
5956 <a name="DESCRIPTION"></a>
7673 </h2>
7774
7875
79
80 <p style="margin-left:11%; margin-top: 1em"><b>&minus;t</b>
76 <p style="margin-left:11%; margin-top: 1em"><b>-t</b>
8177 <i>keyfile</i></p>
8278
8379 <p style="margin-left:22%;">Enable TLS. <i>keyfile</i>
8581 <b>&quot;&quot;</b> to negotiate a TLS encryption layer but
8682 not use TLS authentication.</p>
8783
88 <p style="margin-left:11%;"><b>&minus;p</b> <i>port</i></p>
84 <p style="margin-left:11%;"><b>-p</b> <i>port</i></p>
8985
9086 <p style="margin-left:22%;">Port to connect to. If left off
9187 this defaults to <b>nntp</b> as defined in
00 <!-- Creator : groff version 1.22.3 -->
1 <!-- CreationDate: Fri May 20 06:10:08 2016 -->
1 <!-- CreationDate: Fri Jul 22 02:16:06 2016 -->
22 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
33 "http://www.w3.org/TR/html4/loose.dtd">
44 <html>
3535 </h2>
3636
3737
38 <p style="margin-left:11%; margin-top: 1em">notifyd &minus;
39 Cyrus notification server</p>
38 <p style="margin-left:11%; margin-top: 1em">notifyd - Cyrus
39 notification server</p>
4040
4141 <h2>SYNOPSIS
4242 <a name="SYNOPSIS"></a>
4444
4545
4646 <p style="margin-left:11%; margin-top: 1em"><b>notifyd</b>
47 [ <b>&minus;C</b> <i>config-file</i> ] [ <b>&minus;U</b>
48 <i>uses</i> ] [ <b>&minus;T</b> <i>timeout</i> ] <br>
49 [ <b>&minus;D</b> ]</p>
47 [ <b>-C</b> <i>config-file</i> ] [ <b>-U</b> <i>uses</i> ] [
48 <b>-T</b> <i>timeout</i> ] <br>
49 [ <b>-D</b> ]</p>
5050
5151 <h2>DESCRIPTION
5252 <a name="DESCRIPTION"></a>
7575 </h2>
7676
7777
78
79 <p style="margin-left:11%; margin-top: 1em"><b>&minus;C</b>
78 <p style="margin-left:11%; margin-top: 1em"><b>-C</b>
8079 <i>config-file</i></p>
8180
8281 <p style="margin-left:22%;">Read configuration options from
8382 <i>config-file</i>.</p>
8483
85 <p style="margin-left:11%;"><b>&minus;U</b> <i>uses</i></p>
84 <p style="margin-left:11%;"><b>-U</b> <i>uses</i></p>
8685
8786 <p style="margin-left:22%;">The maximum number of times
8887 that the process should be used for new connections before
8988 shutting down. The default is 250.</p>
9089
91 <p style="margin-left:11%;"><b>&minus;T</b>
92 <i>timeout</i></p>
90 <p style="margin-left:11%;"><b>-T</b> <i>timeout</i></p>
9391
9492 <p style="margin-left:22%;">The number of seconds that the
9593 process will wait for a new connection before shutting down.
103101 <td width="3%">
104102
105103
106 <p><b>&minus;D</b></p></td>
104 <p><b>-D</b></p></td>
107105 <td width="8%"></td>
108106 <td width="75%">
109107
00 <!-- Creator : groff version 1.22.3 -->
1 <!-- CreationDate: Fri May 20 06:10:08 2016 -->
1 <!-- CreationDate: Fri Jul 22 02:16:06 2016 -->
22 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
33 "http://www.w3.org/TR/html4/loose.dtd">
44 <html>
3434 </h2>
3535
3636
37 <p style="margin-left:11%; margin-top: 1em">pop3d &minus;
38 POP3 server process</p>
37 <p style="margin-left:11%; margin-top: 1em">pop3d - POP3
38 server process</p>
3939
4040 <h2>SYNOPSIS
4141 <a name="SYNOPSIS"></a>
4343
4444
4545 <p style="margin-left:11%; margin-top: 1em"><b>pop3d</b> [
46 <b>&minus;C</b> <i>config-file</i> ] [ <b>&minus;U</b>
47 <i>uses</i> ] [ <b>&minus;T</b> <i>timeout</i> ] [
48 <b>&minus;D</b> ] <br>
49 [ <b>&minus;s</b> ] [ <b>&minus;k</b> ] [ <b>&minus;p</b>
50 <i>ssf</i> ]</p>
46 <b>-C</b> <i>config-file</i> ] [ <b>-U</b> <i>uses</i> ] [
47 <b>-T</b> <i>timeout</i> ] [ <b>-D</b> ] <br>
48 [ <b>-s</b> ] [ <b>-k</b> ] [ <b>-p</b> <i>ssf</i> ]</p>
5149
5250 <h2>DESCRIPTION
5351 <a name="DESCRIPTION"></a>
7977 </h2>
8078
8179
82
83 <p style="margin-left:11%; margin-top: 1em"><b>&minus;C</b>
80 <p style="margin-left:11%; margin-top: 1em"><b>-C</b>
8481 <i>config-file</i></p>
8582
8683 <p style="margin-left:22%;">Read configuration options from
8784 <i>config-file</i>.</p>
8885
89 <p style="margin-left:11%;"><b>&minus;U</b> <i>uses</i></p>
86 <p style="margin-left:11%;"><b>-U</b> <i>uses</i></p>
9087
9188 <p style="margin-left:22%;">The maximum number of times
9289 that the process should be used for new connections before
9390 shutting down. The default is 250.</p>
9491
95 <p style="margin-left:11%;"><b>&minus;T</b>
96 <i>timeout</i></p>
92 <p style="margin-left:11%;"><b>-T</b> <i>timeout</i></p>
9793
9894 <p style="margin-left:22%;">The number of seconds that the
9995 process will wait for a new connection before shutting down.
107103 <td width="9%">
108104
109105
110 <p><b>&minus;D</b></p></td>
106 <p><b>-D</b></p></td>
111107 <td width="2%"></td>
112108 <td width="78%">
113109
118114 <td width="9%">
119115
120116
121 <p><b>&minus;s</b></p></td>
117 <p><b>-s</b></p></td>
122118 <td width="2%"></td>
123119 <td width="78%">
124120
131127 <td width="9%">
132128
133129
134 <p><b>&minus;k</b></p></td>
130 <p><b>-k</b></p></td>
135131 <td width="2%"></td>
136132 <td width="78%">
137133
143139 <td width="9%">
144140
145141
146 <p><b>&minus;p</b> <i>ssf</i></p></td>
142 <p><b>-p</b> <i>ssf</i></p></td>
147143 <td width="2%"></td>
148144 <td width="78%">
149145
00 <!-- Creator : groff version 1.22.3 -->
1 <!-- CreationDate: Fri May 20 06:10:08 2016 -->
1 <!-- CreationDate: Fri Jul 22 02:16:06 2016 -->
22 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
33 "http://www.w3.org/TR/html4/loose.dtd">
44 <html>
3333 </h2>
3434
3535
36 <p style="margin-left:11%; margin-top: 1em">pop3test
37 &minus; interactive POP3 test program</p>
36 <p style="margin-left:11%; margin-top: 1em">pop3test -
37 interactive POP3 test program</p>
3838
3939 <h2>SYNOPSIS
4040 <a name="SYNOPSIS"></a>
4343
4444
4545 <p style="margin-left:11%; margin-top: 1em"><b>pop3test</b>
46 [ <b>&minus;t</b> <i>keyfile</i> ] [ <b>&minus;p</b>
47 <i>port</i> ] [ <b>&minus;m</b> <i>mechanism</i> ] <br>
48 [ <b>&minus;a</b> <i>userid</i> ] [ <b>&minus;u</b>
49 <i>userid</i> ] [ <b>&minus;k</b> <i>num</i> ] [
50 <b>&minus;l</b> <i>num</i> ] <br>
51 [ <b>&minus;r</b> <i>realm</i> ] [ <b>&minus;f</b>
52 <i>file</i> ] [ <b>&minus;n</b> <i>num</i> ] [
53 <b>&minus;s</b> ] [ <b>&minus;c</b> ] <br>
54 [ <b>&minus;i</b> ] [ <b>&minus;o</b>
55 <i>option</i><b>=</b><i>value</i> ] [ <b>&minus;v</b> ]
56 <i>hostname</i></p>
46 [ <b>-t</b> <i>keyfile</i> ] [ <b>-p</b> <i>port</i> ] [
47 <b>-m</b> <i>mechanism</i> ] <br>
48 [ <b>-a</b> <i>userid</i> ] [ <b>-u</b> <i>userid</i> ] [
49 <b>-k</b> <i>num</i> ] [ <b>-l</b> <i>num</i> ] <br>
50 [ <b>-r</b> <i>realm</i> ] [ <b>-f</b> <i>file</i> ] [
51 <b>-n</b> <i>num</i> ] [ <b>-s</b> ] [ <b>-c</b> ] <br>
52 [ <b>-i</b> ] [ <b>-o</b> <i>option</i><b>=</b><i>value</i>
53 ] [ <b>-v</b> ] <i>hostname</i></p>
5754
5855 <h2>DESCRIPTION
5956 <a name="DESCRIPTION"></a>
7673 </h2>
7774
7875
79
80 <p style="margin-left:11%; margin-top: 1em"><b>&minus;t</b>
76 <p style="margin-left:11%; margin-top: 1em"><b>-t</b>
8177 <i>keyfile</i></p>
8278
8379 <p style="margin-left:22%;">Enable TLS. <i>keyfile</i>
8581 <b>&quot;&quot;</b> to negotiate a TLS encryption layer but
8682 not use TLS authentication.</p>
8783
88 <p style="margin-left:11%;"><b>&minus;p</b> <i>port</i></p>
84 <p style="margin-left:11%;"><b>-p</b> <i>port</i></p>
8985
9086 <p style="margin-left:22%;">Port to connect to. If left off
9187 this defaults to <b>pop3</b> as defined in
00 <!-- Creator : groff version 1.22.3 -->
1 <!-- CreationDate: Fri May 20 06:10:08 2016 -->
1 <!-- CreationDate: Fri Jul 22 02:16:06 2016 -->
22 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
33 "http://www.w3.org/TR/html4/loose.dtd">
44 <html>
3333 </h2>
3434
3535
36 <p style="margin-left:11%; margin-top: 1em">quota &minus;
37 report and optionally fix quota usage</p>
36 <p style="margin-left:11%; margin-top: 1em">quota - report
37 and optionally fix quota usage</p>
3838
3939 <h2>SYNOPSIS
4040 <a name="SYNOPSIS"></a>
4242
4343
4444 <p style="margin-left:11%; margin-top: 1em"><b>quota</b> [
45 <b>&minus;C</b> <i>config-file</i> ] [ <b>&minus;d</b>
46 <i>domain</i> ] [ <b>&minus;f</b> ] [
47 <i>mailbox-prefix</i>... ]</p>
45 <b>-C</b> <i>config-file</i> ] [ <b>-d</b> <i>domain</i> ] [
46 <b>-f</b> ] [ <i>mailbox-prefix</i>... ]</p>
4847
4948 <h2>DESCRIPTION
5049 <a name="DESCRIPTION"></a>
5352
5453 <p style="margin-left:11%; margin-top: 1em"><i>Quota</i>
5554 generates a report listing quota roots, giving their limits
56 and usage. If the <i>&minus;f</i> option is given,
57 <i>quota</i> first fixes any inconsistencies in the quota
58 subsystem, such as mailboxes with the wrong quota root or
59 quota roots with the wrong quota usage reported. If an
60 optional <i>domain</i> is given, the quota listing (and
61 inconsistency fixing) is performed in that domain rather
62 than the default domain. If any optional
63 <i>mailbox-prefix</i> arguments are given, the quota listing
64 (and inconsistency fixing) is limited to quota roots with
65 names that start with one of the given prefixes.</p>
55 and usage. If the <i>-f</i> option is given, <i>quota</i>
56 first fixes any inconsistencies in the quota subsystem, such
57 as mailboxes with the wrong quota root or quota roots with
58 the wrong quota usage reported. If an optional <i>domain</i>
59 is given, the quota listing (and inconsistency fixing) is
60 performed in that domain rather than the default domain. If
61 any optional <i>mailbox-prefix</i> arguments are given, the
62 quota listing (and inconsistency fixing) is limited to quota
63 roots with names that start with one of the given
64 prefixes.</p>
6665
6766 <p style="margin-left:11%; margin-top: 1em">Running
68 <i>quota</i> with both the <i>&minus;f</i> option and
67 <i>quota</i> with both the <i>-f</i> option and
6968 <i>mailbox-prefix</i> arguments is not recommended.</p>
7069
7170 <p style="margin-left:11%; margin-top: 1em"><i>Quota</i>
7877 </h2>
7978
8079
81
82 <p style="margin-left:11%; margin-top: 1em"><b>&minus;C</b>
80 <p style="margin-left:11%; margin-top: 1em"><b>-C</b>
8381 <i>config-file</i></p>
8482
8583 <p style="margin-left:22%;">Read configuration options from
8684 <i>config-file</i>.</p>
8785
88 <p style="margin-left:11%;"><b>&minus;d</b>
89 <i>domain</i></p>
86 <p style="margin-left:11%;"><b>-d</b> <i>domain</i></p>
9087
9188 <p style="margin-left:22%;">List/fix quotas in
9289 <i>domain</i>.</p>
9895 <td width="3%">
9996
10097
101 <p><b>&minus;f</b></p></td>
98 <p><b>-f</b></p></td>
10299 <td width="8%"></td>
103100 <td width="78%">
104101
110107 <td width="3%">
111108
112109
113 <p><b>&minus;q</b></p></td>
110 <p><b>-q</b></p></td>
114111 <td width="8%"></td>
115112 <td width="78%">
116113
00 <!-- Creator : groff version 1.22.3 -->
1 <!-- CreationDate: Fri May 20 06:10:08 2016 -->
1 <!-- CreationDate: Fri Jul 22 02:16:06 2016 -->
22 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
33 "http://www.w3.org/TR/html4/loose.dtd">
44 <html>
3434 </h2>
3535
3636
37 <p style="margin-left:11%; margin-top: 1em">reconstruct
38 &minus; reconstruct mailboxes</p>
37 <p style="margin-left:11%; margin-top: 1em">reconstruct -
38 reconstruct mailboxes</p>
3939
4040 <h2>SYNOPSIS
4141 <a name="SYNOPSIS"></a>
4444
4545
4646 <p style="margin-left:11%; margin-top: 1em"><b>reconstruct</b>
47 [ <b>&minus;C</b> <i>config-file</i> ] [ <b>&minus;p</b>
48 <i>partition</i> ] [ <b>&minus;x</b> ] [ <b>&minus;r</b> ] [
49 <b>&minus;f</b> ] <br>
50 [ <b>&minus;k</b> ] [ <b>&minus;s</b> ] [ <b>&minus;g</b> ]
51 [ <b>&minus;G</b> ] [ <b>&minus;R</b> ] [ <b>&minus;o</b> ]
52 [ <b>&minus;O</b> ] <i>mailbox</i>... <b><br>
53 reconstruct</b> [ <b>&minus;C</b> <i>config-file</i> ]
54 <b>&minus;m</b></p>
47 [ <b>-C</b> <i>config-file</i> ] [ <b>-p</b>
48 <i>partition</i> ] [ <b>-x</b> ] [ <b>-r</b> ] [ <b>-f</b> ]
49 <br>
50 [ <b>-k</b> ] [ <b>-s</b> ] [ <b>-g</b> ] [ <b>-G</b> ] [
51 <b>-R</b> ] [ <b>-o</b> ] [ <b>-O</b> ] <i>mailbox</i>...
52 <b><br>
53 reconstruct</b> [ <b>-C</b> <i>config-file</i> ]
54 <b>-m</b></p>
5555
5656 <h2>DESCRIPTION
5757 <a name="DESCRIPTION"></a>
6161
6262 <p style="margin-left:11%; margin-top: 1em"><b><i>Reconstruct</i></b>
6363 rebuilds one or more IMAP mailboxes. When invoked with the
64 <b>&minus;m</b> switch, it rebuilds the master mailboxes
65 file. It can be used to recover from almost any sort of data
64 <b>-m</b> switch, it rebuilds the master mailboxes file. It
65 can be used to recover from almost any sort of data
6666 corruption.</p>
6767
6868 <p style="margin-left:11%; margin-top: 1em">If
8585 <p style="margin-left:11%; margin-top: 1em"><i>Reconstruct</i>
8686 does not adjust the quota usage recorded in any quota root
8787 files. After running <i>reconstruct</i>, it is advisable to
88 run <i>quota</i>(8) with the <i>&minus;f</i> switch in order
89 to fix the quota root files.</p>
88 run <i>quota</i>(8) with the <i>-f</i> switch in order to
89 fix the quota root files.</p>
9090
9191 <h2>OPTIONS
9292 <a name="OPTIONS"></a>
9393 </h2>
9494
9595
96
97 <p style="margin-left:11%; margin-top: 1em"><b>&minus;C</b>
96 <p style="margin-left:11%; margin-top: 1em"><b>-C</b>
9897 <i>config-file</i></p>
9998
10099 <p style="margin-left:22%;">Read configuration options from
101100 <i>config-file</i>.</p>
102101
103 <p style="margin-left:11%;"><b>&minus;p</b>
104 <i>partition</i></p>
102 <p style="margin-left:11%;"><b>-p</b> <i>partition</i></p>
105103
106104 <p style="margin-left:22%;">Search for the listed
107105 (non-existant) mailboxes on the indicated partition. Create
115113 <td width="3%">
116114
117115
118 <p><b>&minus;x</b></p></td>
116 <p><b>-x</b></p></td>
119117 <td width="8%"></td>
120118 <td width="78%">
121119
130128 <td width="3%">
131129
132130
133 <p><b>&minus;r</b></p></td>
131 <p><b>-r</b></p></td>
134132 <td width="8%"></td>
135133 <td width="78%">
136134
142140 <td width="3%">
143141
144142
145 <p><b>&minus;f</b></p></td>
143 <p><b>-f</b></p></td>
146144 <td width="8%"></td>
147145 <td width="78%">
148146
155153 <td width="3%">
156154
157155
158 <p><b>&minus;s</b></p></td>
156 <p><b>-s</b></p></td>
159157 <td width="8%"></td>
160158 <td width="78%">
161159
169167 <td width="3%">
170168
171169
172 <p><b>&minus;q</b></p></td>
170 <p><b>-q</b></p></td>
173171 <td width="8%"></td>
174172 <td width="78%">
175173
180178 <td width="3%">
181179
182180
183 <p><b>&minus;n</b></p></td>
181 <p><b>-n</b></p></td>
184182 <td width="8%"></td>
185183 <td width="78%">
186184
193191 <td width="3%">
194192
195193
196 <p><b>&minus;G</b></p></td>
194 <p><b>-G</b></p></td>
197195 <td width="8%"></td>
198196 <td width="78%">
199197
207205 <td width="3%">
208206
209207
210 <p><b>&minus;R</b></p></td>
208 <p><b>-R</b></p></td>
211209 <td width="8%"></td>
212210 <td width="78%">
213211
222220 <td width="3%">
223221
224222
225 <p><b>&minus;U</b></p></td>
223 <p><b>-U</b></p></td>
226224 <td width="8%"></td>
227225 <td width="78%">
228226
259257 &rsquo;-o&rsquo;.</p> </td></tr>
260258 </table>
261259
262 <p style="margin-left:11%;"><b>&minus;V</b>
263 <i>version</i></p>
260 <p style="margin-left:11%;"><b>-V</b> <i>version</i></p>
264261
265262 <p style="margin-left:22%;">Change the cyrus.index minor
266263 version to a specific version. This can be useful for
287284 <td width="3%">
288285
289286
290 <p><b>&minus;m</b></p></td>
287 <p><b>-m</b></p></td>
291288 <td width="8%"></td>
292289 <td width="78%">
293290
00 <!-- Creator : groff version 1.22.3 -->
1 <!-- CreationDate: Fri May 20 06:10:09 2016 -->
1 <!-- CreationDate: Fri Jul 22 02:16:06 2016 -->
22 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
33 "http://www.w3.org/TR/html4/loose.dtd">
44 <html>
3232 </h2>
3333
3434
35 <p style="margin-left:11%; margin-top: 1em">rmnews &minus;
35 <p style="margin-left:11%; margin-top: 1em">rmnews -
3636 expunge and remove news articles</p>
3737
3838 <h2>SYNOPSIS
00 <!-- Creator : groff version 1.22.3 -->
1 <!-- CreationDate: Fri May 20 06:10:09 2016 -->
1 <!-- CreationDate: Fri Jul 22 02:16:06 2016 -->
22 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
33 "http://www.w3.org/TR/html4/loose.dtd">
44 <html>
3434 </h2>
3535
3636
37 <p style="margin-left:11%; margin-top: 1em">sieveshell
38 &minus; remotely manipulate sieve scripts</p>
37 <p style="margin-left:11%; margin-top: 1em">sieveshell -
38 remotely manipulate sieve scripts</p>
3939
4040 <h2>SYNOPSIS
4141 <a name="SYNOPSIS"></a>
4343
4444
4545 <p style="margin-left:11%; margin-top: 1em">sieveshell
46 [<b>&minus;&minus;user</b>=<i>user</i>]
47 [<b>&minus;&minus;authname</b>=<i>authname</i>]
48 [<b>&minus;&minus;realm</b>=<i>realm</i>]
49 [<b>&minus;&minus;exec</b>=<i>script</i>]
46 [<b>--user</b>=<i>user</i>]
47 [<b>--authname</b>=<i>authname</i>]
48 [<b>--realm</b>=<i>realm</i>] [<b>--exec</b>=<i>script</i>]
5049 <i>server</i>[<b>:</b><i>port</i>]</p>
5150
5251 <p style="margin-left:11%; margin-top: 1em">sieveshell
53 <b>&minus;&minus;help</b></p>
52 <b>--help</b></p>
5453
5554 <h2>DESCRIPTION
5655 <a name="DESCRIPTION"></a>
9291 </h2>
9392
9493
95
96 <p style="margin-left:11%; margin-top: 1em"><b>&minus;u</b>
97 <i>user</i>, <b>&minus;&minus;user</b>=<i>user</i></p>
94 <p style="margin-left:11%; margin-top: 1em"><b>-u</b>
95 <i>user</i>, <b>--user</b>=<i>user</i></p>
9896
9997 <p style="margin-left:17%;">The authorization name to
10098 request; by default, derived from the authentication
10199 credentials.</p>
102100
103 <p style="margin-left:11%;"><b>&minus;a</b>
104 <i>authname</i>,
105 <b>&minus;&minus;authname</b>=<i>authname</i></p>
101 <p style="margin-left:11%;"><b>-a</b> <i>authname</i>,
102 <b>--authname</b>=<i>authname</i></p>
106103
107104 <p style="margin-left:17%;">The user to use for
108105 authentication (defaults to current user).</p>
109106
110 <p style="margin-left:11%;"><b>&minus;r</b> <i>realm</i>,
111 <b>&minus;&minus;realm</b>=<i>realm</i></p>
107 <p style="margin-left:11%;"><b>-r</b> <i>realm</i>,
108 <b>--realm</b>=<i>realm</i></p>
112109
113110 <p style="margin-left:17%;">The realm to attempt
114111 authentication in.</p>
115112
116 <p style="margin-left:11%;"><b>&minus;e</b> <i>script</i>,
117 <b>&minus;&minus;exec</b>=<i>script</i></p>
113 <p style="margin-left:11%;"><b>-e</b> <i>script</i>,
114 <b>--exec</b>=<i>script</i></p>
118115
119116 <p style="margin-left:17%;">Instead of working
120117 interactively, run commands from <i>script</i>, and exit
128125 <p style="margin-left:11%; margin-top: 1em">[
129126 <small>MANAGESIEVE</small> ] Martin, T.; &quot;A Protocol
130127 for Remotely Managing Sieve Scripts&quot;,
131 draft&minus;ietf&minus;managesieve&minus;03.txt, Mirapoint,
132 Inc.; May 2001, work in progress.</p>
128 draft-ietf-managesieve-03.txt, Mirapoint, Inc.; May 2001,
129 work in progress.</p>
133130
134131 <h2>AUTHOR
135132 <a name="AUTHOR"></a>
138135
139136 <p style="margin-left:11%; margin-top: 1em">Tim Martin
140137 &lt;tmartin@mirapoint.com&gt;, and the rest of the Cyrus
141 team &lt;cyrus&minus;bugs@andrew.cmu.edu&gt;.</p>
138 team &lt;cyrus-bugs@andrew.cmu.edu&gt;.</p>
142139 <hr>
143140 </body>
144141 </html>
00 <!-- Creator : groff version 1.22.3 -->
1 <!-- CreationDate: Fri May 20 06:10:09 2016 -->
1 <!-- CreationDate: Fri Jul 22 02:16:07 2016 -->
22 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
33 "http://www.w3.org/TR/html4/loose.dtd">
44 <html>
3333 </h2>
3434
3535
36 <p style="margin-left:11%; margin-top: 1em">sivtest &minus;
36 <p style="margin-left:11%; margin-top: 1em">sivtest -
3737 interactive MANAGESIEVE test program</p>
3838
3939 <h2>SYNOPSIS
4242
4343
4444 <p style="margin-left:11%; margin-top: 1em"><b>sivtest</b>
45 [ <b>&minus;t</b> <i>keyfile</i> ] [ <b>&minus;p</b>
46 <i>port</i> ] [ <b>&minus;m</b> <i>mechanism</i> ] <br>
47 [ <b>&minus;a</b> <i>userid</i> ] [ <b>&minus;u</b>
48 <i>userid</i> ] [ <b>&minus;k</b> <i>num</i> ] [
49 <b>&minus;l</b> <i>num</i> ] <br>
50 [ <b>&minus;r</b> <i>realm</i> ] [ <b>&minus;f</b>
51 <i>file</i> ] [ <b>&minus;n</b> <i>num</i> ] [
52 <b>&minus;c</b> ] <br>
53 [ <b>&minus;i</b> ] [ <b>&minus;o</b>
54 <i>option</i><b>=</b><i>value</i> ] [ <b>&minus;v</b> ]
55 <i>hostname</i></p>
45 [ <b>-t</b> <i>keyfile</i> ] [ <b>-p</b> <i>port</i> ] [
46 <b>-m</b> <i>mechanism</i> ] <br>
47 [ <b>-a</b> <i>userid</i> ] [ <b>-u</b> <i>userid</i> ] [
48 <b>-k</b> <i>num</i> ] [ <b>-l</b> <i>num</i> ] <br>
49 [ <b>-r</b> <i>realm</i> ] [ <b>-f</b> <i>file</i> ] [
50 <b>-n</b> <i>num</i> ] [ <b>-c</b> ] <br>
51 [ <b>-i</b> ] [ <b>-o</b> <i>option</i><b>=</b><i>value</i>
52 ] [ <b>-v</b> ] <i>hostname</i></p>
5653
5754 <h2>DESCRIPTION
5855 <a name="DESCRIPTION"></a>
7471 </h2>
7572
7673
77
78 <p style="margin-left:11%; margin-top: 1em"><b>&minus;t</b>
74 <p style="margin-left:11%; margin-top: 1em"><b>-t</b>
7975 <i>keyfile</i></p>
8076
8177 <p style="margin-left:22%;">Enable TLS. <i>keyfile</i>
8379 <b>&quot;&quot;</b> to negotiate a TLS encryption layer but
8480 not use TLS authentication.</p>
8581
86 <p style="margin-left:11%;"><b>&minus;p</b> <i>port</i></p>
82 <p style="margin-left:11%;"><b>-p</b> <i>port</i></p>
8783
8884 <p style="margin-left:22%;">Port to connect to. If left off
8985 this defaults to <b>sieve</b> as defined in
00 <!-- Creator : groff version 1.22.3 -->
1 <!-- CreationDate: Fri May 20 06:10:09 2016 -->
1 <!-- CreationDate: Fri Jul 22 02:16:07 2016 -->
22 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
33 "http://www.w3.org/TR/html4/loose.dtd">
44 <html>
3333 </h2>
3434
3535
36 <p style="margin-left:11%; margin-top: 1em">SMMAPD &minus;
36 <p style="margin-left:11%; margin-top: 1em">SMMAPD -
3737 Sendmail socket map daemon</p>
3838
3939 <h2>SYNOPSIS
4242
4343
4444 <p style="margin-left:11%; margin-top: 1em"><b>smmapd</b> [
45 <b>&minus;C</b> <i>config-file</i> ] [ <b>&minus;U</b>
46 <i>uses</i> ] [ <b>&minus;T</b> <i>timeout</i> ] <br>
47 [ <b>&minus;D</b> ]</p>
45 <b>-C</b> <i>config-file</i> ] [ <b>-U</b> <i>uses</i> ] [
46 <b>-T</b> <i>timeout</i> ] <br>
47 [ <b>-D</b> ]</p>
4848
4949 <h2>DESCRIPTION
5050 <a name="DESCRIPTION"></a>
6969 </h2>
7070
7171
72
73 <p style="margin-left:11%; margin-top: 1em"><b>&minus;C</b>
72 <p style="margin-left:11%; margin-top: 1em"><b>-C</b>
7473 <i>config-file</i></p>
7574
7675 <p style="margin-left:22%;">Read configuration options from
7776 <i>config-file</i>.</p>
7877
79 <p style="margin-left:11%;"><b>&minus;U</b> <i>uses</i></p>
78 <p style="margin-left:11%;"><b>-U</b> <i>uses</i></p>
8079
8180 <p style="margin-left:22%;">The maximum number of times
8281 that the process should be used for new connections before
8382 shutting down. The default is 250.</p>
8483
85 <p style="margin-left:11%;"><b>&minus;T</b>
86 <i>timeout</i></p>
84 <p style="margin-left:11%;"><b>-T</b> <i>timeout</i></p>
8785
8886 <p style="margin-left:22%;">The number of seconds that the
8987 process will wait for a new connection before shutting down.
9795 <td width="3%">
9896
9997
100 <p><b>&minus;D</b></p></td>
98 <p><b>-D</b></p></td>
10199 <td width="8%"></td>
102100 <td width="75%">
103101
00 <!-- Creator : groff version 1.22.3 -->
1 <!-- CreationDate: Fri May 20 06:10:09 2016 -->
1 <!-- CreationDate: Fri Jul 22 02:16:07 2016 -->
22 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
33 "http://www.w3.org/TR/html4/loose.dtd">
44 <html>
3333 </h2>
3434
3535
36 <p style="margin-left:11%; margin-top: 1em">smtptest
37 &minus; interactive SMTP test program</p>
36 <p style="margin-left:11%; margin-top: 1em">smtptest -
37 interactive SMTP test program</p>
3838
3939 <h2>SYNOPSIS
4040 <a name="SYNOPSIS"></a>
4343
4444
4545 <p style="margin-left:11%; margin-top: 1em"><b>smtptest</b>
46 [ <b>&minus;t</b> <i>keyfile</i> ] [ <b>&minus;p</b>
47 <i>port</i> ] [ <b>&minus;m</b> <i>mechanism</i> ] <br>
48 [ <b>&minus;a</b> <i>userid</i> ] [ <b>&minus;u</b>
49 <i>userid</i> ] [ <b>&minus;k</b> <i>num</i> ] [
50 <b>&minus;l</b> <i>num</i> ] <br>
51 [ <b>&minus;r</b> <i>realm</i> ] [ <b>&minus;f</b>
52 <i>file</i> ] [ <b>&minus;n</b> <i>num</i> ] [
53 <b>&minus;s</b> ] [ <b>&minus;c</b> ] <br>
54 [ <b>&minus;i</b> ] [ <b>&minus;o</b>
55 <i>option</i><b>=</b><i>value</i> ] [ <b>&minus;v</b> ]
56 <i>hostname</i></p>
46 [ <b>-t</b> <i>keyfile</i> ] [ <b>-p</b> <i>port</i> ] [
47 <b>-m</b> <i>mechanism</i> ] <br>
48 [ <b>-a</b> <i>userid</i> ] [ <b>-u</b> <i>userid</i> ] [
49 <b>-k</b> <i>num</i> ] [ <b>-l</b> <i>num</i> ] <br>
50 [ <b>-r</b> <i>realm</i> ] [ <b>-f</b> <i>file</i> ] [
51 <b>-n</b> <i>num</i> ] [ <b>-s</b> ] [ <b>-c</b> ] <br>
52 [ <b>-i</b> ] [ <b>-o</b> <i>option</i><b>=</b><i>value</i>
53 ] [ <b>-v</b> ] <i>hostname</i></p>
5754
5855 <h2>DESCRIPTION
5956 <a name="DESCRIPTION"></a>
7673 </h2>
7774
7875
79
80 <p style="margin-left:11%; margin-top: 1em"><b>&minus;t</b>
76 <p style="margin-left:11%; margin-top: 1em"><b>-t</b>
8177 <i>keyfile</i></p>
8278
8379 <p style="margin-left:22%;">Enable TLS. <i>keyfile</i>
8581 <b>&quot;&quot;</b> to negotiate a TLS encryption layer but
8682 not use TLS authentication.</p>
8783
88 <p style="margin-left:11%;"><b>&minus;p</b> <i>port</i></p>
84 <p style="margin-left:11%;"><b>-p</b> <i>port</i></p>
8985
9086 <p style="margin-left:22%;">Port to connect to. If left off
9187 this defaults to <b>smtp</b> as defined in
00 <!-- Creator : groff version 1.22.3 -->
1 <!-- CreationDate: Fri May 20 06:10:09 2016 -->
1 <!-- CreationDate: Fri Jul 22 02:16:07 2016 -->
22 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
33 "http://www.w3.org/TR/html4/loose.dtd">
44 <html>
3333 </h2>
3434
3535
36 <p style="margin-left:11%; margin-top: 1em">squatter
37 &minus; create SQUAT indexes for mailboxes</p>
36 <p style="margin-left:11%; margin-top: 1em">squatter -
37 create SQUAT indexes for mailboxes</p>
3838
3939 <h2>SYNOPSIS
4040 <a name="SYNOPSIS"></a>
4343
4444
4545 <p style="margin-left:11%; margin-top: 1em"><b>squatter</b>
46 [ <b>&minus;C</b> <i>config-file</i> ] [ <b>&minus;r</b> ] [
47 <b>&minus;s</b> ] [ <b>&minus;i</b> ] [ <b>&minus;a</b> ] [
48 <b>&minus;v</b> ] <i>mailbox</i>...</p>
46 [ <b>-C</b> <i>config-file</i> ] [ <b>-r</b> ] [ <b>-s</b> ]
47 [ <b>-i</b> ] [ <b>-a</b> ] [ <b>-v</b> ]
48 <i>mailbox</i>...</p>
4949
5050 <h2>DESCRIPTION
5151 <a name="DESCRIPTION"></a>
8787 </h2>
8888
8989
90
91 <p style="margin-left:11%; margin-top: 1em"><b>&minus;C</b>
90 <p style="margin-left:11%; margin-top: 1em"><b>-C</b>
9291 <i>config-file</i></p>
9392
9493 <p style="margin-left:22%;">Read configuration options from
101100 <td width="3%">
102101
103102
104 <p><b>&minus;r</b></p></td>
103 <p><b>-r</b></p></td>
105104 <td width="8%"></td>
106105 <td width="78%">
107106
113112 <td width="3%">
114113
115114
116 <p><b>&minus;s</b></p></td>
115 <p><b>-s</b></p></td>
117116 <td width="8%"></td>
118117 <td width="78%">
119118
125124 <td width="3%">
126125
127126
128 <p><b>&minus;i</b></p></td>
127 <p><b>-i</b></p></td>
129128 <td width="8%"></td>
130129 <td width="78%">
131130
137136 <td width="3%">
138137
139138
140 <p><b>&minus;a</b></p></td>
139 <p><b>-a</b></p></td>
141140 <td width="8%"></td>
142141 <td width="78%">
143142
166165 <td width="3%">
167166
168167
169 <p style="margin-top: 1em"><b>&minus;v</b></p></td>
168 <p style="margin-top: 1em"><b>-v</b></p></td>
170169 <td width="8%"></td>
171170 <td width="78%">
172171
00 <!-- Creator : groff version 1.22.3 -->
1 <!-- CreationDate: Fri May 20 06:10:09 2016 -->
1 <!-- CreationDate: Fri Jul 22 02:16:07 2016 -->
22 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
33 "http://www.w3.org/TR/html4/loose.dtd">
44 <html>
3535 </h2>
3636
3737
38 <p style="margin-left:11%; margin-top: 1em">sync_client
39 &minus; client side of the synchronization (replication)
40 engine</p>
38 <p style="margin-left:11%; margin-top: 1em">sync_client -
39 client side of the synchronization (replication) engine</p>
4140
4241 <h2>SYNOPSIS
4342 <a name="SYNOPSIS"></a>
4645
4746
4847 <p style="margin-left:11%; margin-top: 1em"><b>sync_client</b>
49 [ <b>&minus;v</b> ] [ <b>&minus;l</b> ] [ <b>&minus;z</b> ]
50 [ <b>&minus;C</b> <i>config-file</i> ] [ <b>&minus;S</b>
51 <i>servername</i> ] <br>
52 [ <b>&minus;f</b> <i>input-file</i> ] [ <b>&minus;F</b>
53 <i>shutdown_file</i> ] [ <b>&minus;w</b>
54 <i>wait_interval</i> ] <br>
55 [ <b>&minus;t</b> <i>timeout</i> ] [ <b>&minus;d</b>
56 <i>delay</i> ] [ <b>&minus;r</b> ] [ <b>&minus;u</b> ] [
57 <b>&minus;m</b> ] [ <b>&minus;A</b> ] <br>
58 [ <b>&minus;s</b> ] <i>objects</i>...</p>
48 [ <b>-v</b> ] [ <b>-l</b> ] [ <b>-z</b> ] [ <b>-C</b>
49 <i>config-file</i> ] [ <b>-S</b> <i>servername</i> ] <br>
50 [ <b>-f</b> <i>input-file</i> ] [ <b>-F</b>
51 <i>shutdown_file</i> ] [ <b>-w</b> <i>wait_interval</i> ]
52 <br>
53 [ <b>-t</b> <i>timeout</i> ] [ <b>-d</b> <i>delay</i> ] [
54 <b>-r</b> ] [ <b>-u</b> ] [ <b>-m</b> ] [ <b>-A</b> ] <br>
55 [ <b>-s</b> ] <i>objects</i>...</p>
5956
6057 <h2>DESCRIPTION
6158 <a name="DESCRIPTION"></a>
8279 <td width="3%">
8380
8481
85 <p style="margin-top: 1em"><b>&minus;v</b></p></td>
82 <p style="margin-top: 1em"><b>-v</b></p></td>
8683 <td width="8%"></td>
8784 <td width="78%">
8885
9491 <td width="3%">
9592
9693
97 <p><b>&minus;l</b></p></td>
94 <p><b>-l</b></p></td>
9895 <td width="8%"></td>
9996 <td width="78%">
10097
105102 <td width="3%">
106103
107104
108 <p><b>&minus;o</b></p></td>
105 <p><b>-o</b></p></td>
109106 <td width="8%"></td>
110107 <td width="78%">
111108
117114 <td width="3%">
118115
119116
120 <p><b>&minus;z</b></p></td>
117 <p><b>-z</b></p></td>
121118 <td width="8%"></td>
122119 <td width="78%">
123120
128125 compression is not available.</p></td></tr>
129126 </table>
130127
131 <p style="margin-left:11%;"><b>&minus;C</b>
128 <p style="margin-left:11%;"><b>-C</b>
132129 <i>config-file</i></p>
133130
134131 <p style="margin-left:22%;">Read configuration options from
135132 <i>config-file</i>.</p>
136133
137 <p style="margin-left:11%;"><b>&minus;S</b>
138 <i>servername</i></p>
134 <p style="margin-left:11%;"><b>-S</b> <i>servername</i></p>
139135
140136 <p style="margin-left:22%;">Tells <b>sync_client</b> which
141137 server to communicate with. Overrides the <i>sync_host</i>
142138 configuration option.</p>
143139
144 <p style="margin-left:11%;"><b>&minus;f</b>
145 <i>input-file</i></p>
140 <p style="margin-left:11%;"><b>-f</b> <i>input-file</i></p>
146141
147142 <p style="margin-left:22%;">In mailbox or user replication
148143 mode: provides list of users or mailboxes to replicate. In
150145 (<b>sync_client</b> will exit after processing the log
151146 file).</p>
152147
153 <p style="margin-left:11%;"><b>&minus;F</b>
148 <p style="margin-left:11%;"><b>-F</b>
154149 <i>shutdown-file</i></p>
155150
156151 <p style="margin-left:22%;">Rolling replication checks for
160155 shutdown. Overrides <i>sync_shutdown_file</i> option in
161156 <i>imapd.conf</i></p>
162157
163 <p style="margin-left:11%;"><b>&minus;w</b>
164 <i>interval</i></p>
158 <p style="margin-left:11%;"><b>-w</b> <i>interval</i></p>
165159
166160 <p style="margin-left:22%;">Wait this long before starting.
167161 This option is typically used so that we can attach a
168162 debugger to one end of the replication system or the
169163 other.</p>
170164
171 <p style="margin-left:11%;"><b>&minus;t</b>
172 <i>timeout</i></p>
165 <p style="margin-left:11%;"><b>-t</b> <i>timeout</i></p>
173166
174167 <p style="margin-left:22%;">Timeout for single replication
175168 run in rolling replication. <b>sync_client</b> will
176169 negotiate a restart after this many seconds. Default: 600
177170 seconds</p>
178171
179 <p style="margin-left:11%;"><b>&minus;d</b>
180 <i>delay</i></p>
172 <p style="margin-left:11%;"><b>-d</b> <i>delay</i></p>
181173
182174 <p style="margin-left:22%;">Minimum delay between
183175 replication runs in rolling replication mode. Larger values
194186 <td width="3%">
195187
196188
197 <p><b>&minus;r</b></p></td>
189 <p><b>-r</b></p></td>
198190 <td width="8%"></td>
199191 <td width="78%">
200192
209201 <td width="3%">
210202
211203
212 <p><b>&minus;n</b></p></td>
204 <p><b>-n</b></p></td>
213205 <td width="8%"></td>
214206 <td width="78%">
215207
217209 <p>Use the named channel for rolling replication mode. If
218210 multiple channels are specified in <i>sync_log_channels</i>
219211 then use one of them. This option is probably best combined
220 with <b>&minus;S</b> to connect to a different server with
221 each channel.</p></td></tr>
222 <tr valign="top" align="left">
223 <td width="11%"></td>
224 <td width="3%">
225
226
227 <p><b>&minus;u</b></p></td>
212 with <b>-S</b> to connect to a different server with each
213 channel.</p> </td></tr>
214 <tr valign="top" align="left">
215 <td width="11%"></td>
216 <td width="3%">
217
218
219 <p><b>-u</b></p></td>
228220 <td width="8%"></td>
229221 <td width="78%">
230222
236228 <td width="3%">
237229
238230
239 <p><b>&minus;A</b></p></td>
231 <p><b>-A</b></p></td>
240232 <td width="8%"></td>
241233 <td width="78%">
242234
250242 <td width="3%">
251243
252244
253 <p><b>&minus;m</b></p></td>
245 <p><b>-m</b></p></td>
254246 <td width="8%"></td>
255247 <td width="78%">
256248
262254 <td width="3%">
263255
264256
265 <p><b>&minus;s</b></p></td>
257 <p><b>-s</b></p></td>
266258 <td width="8%"></td>
267259 <td width="78%">
268260
00 <!-- Creator : groff version 1.22.3 -->
1 <!-- CreationDate: Fri May 20 06:10:09 2016 -->
1 <!-- CreationDate: Fri Jul 22 02:16:07 2016 -->
22 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
33 "http://www.w3.org/TR/html4/loose.dtd">
44 <html>
3535 </h2>
3636
3737
38 <p style="margin-left:11%; margin-top: 1em">sync_reset
39 &minus; Account reset utility. DANGER.</p>
38 <p style="margin-left:11%; margin-top: 1em">sync_reset -
39 Account reset utility. DANGER.</p>
4040
4141 <h2>SYNOPSIS
4242 <a name="SYNOPSIS"></a>
4545
4646
4747 <p style="margin-left:11%; margin-top: 1em"><b>sync_reset</b>
48 [ <b>&minus;C</b> <i>config-file</i> ] [ <b>&minus;v</b> ] [
49 <b>&minus;f</b> ]</p>
48 [ <b>-C</b> <i>config-file</i> ] [ <b>-v</b> ] [ <b>-f</b>
49 ]</p>
5050
5151 <h2>DESCRIPTION
5252 <a name="DESCRIPTION"></a>
6464 </h2>
6565
6666
67
68 <p style="margin-left:11%; margin-top: 1em"><b>&minus;C</b>
67 <p style="margin-left:11%; margin-top: 1em"><b>-C</b>
6968 <i>config-file</i></p>
7069
7170 <p style="margin-left:22%;">Read configuration options from
7877 <td width="3%">
7978
8079
81 <p><b>&minus;v</b></p></td>
80 <p><b>-v</b></p></td>
8281 <td width="8%"></td>
8382 <td width="78%">
8483
8988 <td width="3%">
9089
9190
92 <p><b>&minus;f</b></p></td>
91 <p><b>-f</b></p></td>
9392 <td width="8%"></td>
9493 <td width="78%">
9594
00 <!-- Creator : groff version 1.22.3 -->
1 <!-- CreationDate: Fri May 20 06:10:09 2016 -->
1 <!-- CreationDate: Fri Jul 22 02:16:07 2016 -->
22 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
33 "http://www.w3.org/TR/html4/loose.dtd">
44 <html>
3535 </h2>
3636
3737
38 <p style="margin-left:11%; margin-top: 1em">sync_server
39 &minus; server side of the synchronization (replication)
40 engine</p>
38 <p style="margin-left:11%; margin-top: 1em">sync_server -
39 server side of the synchronization (replication) engine</p>
4140
4241 <h2>SYNOPSIS
4342 <a name="SYNOPSIS"></a>
4645
4746
4847 <p style="margin-left:11%; margin-top: 1em"><b>sync_server</b>
49 [ <b>&minus;C</b> <i>config-file</i> ] [ <b>&minus;p</b>
50 <i>ssf</i> ]</p>
48 [ <b>-C</b> <i>config-file</i> ] [ <b>-p</b> <i>ssf</i>
49 ]</p>
5150
5251 <h2>DESCRIPTION
5352 <a name="DESCRIPTION"></a>
6665 </h2>
6766
6867
69
70 <p style="margin-left:11%; margin-top: 1em"><b>&minus;C</b>
68 <p style="margin-left:11%; margin-top: 1em"><b>-C</b>
7169 <i>config-file</i></p>
7270
7371 <p style="margin-left:22%;">Read configuration options from
8078 <td width="9%">
8179
8280
83 <p><b>&minus;p</b> <i>ssf</i></p></td>
81 <p><b>-p</b> <i>ssf</i></p></td>
8482 <td width="2%"></td>
8583 <td width="78%">
8684
00 <!-- Creator : groff version 1.22.3 -->
1 <!-- CreationDate: Fri May 20 06:10:10 2016 -->
1 <!-- CreationDate: Fri Jul 22 02:16:08 2016 -->
22 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
33 "http://www.w3.org/TR/html4/loose.dtd">
44 <html>
3434 </h2>
3535
3636
37 <p style="margin-left:11%; margin-top: 1em">timsieved
38 &minus; CMU hack for getting sieve scripts onto the
39 server</p>
37 <p style="margin-left:11%; margin-top: 1em">timsieved - CMU
38 hack for getting sieve scripts onto the server</p>
4039
4140 <h2>SYNOPSIS
4241 <a name="SYNOPSIS"></a>
4544
4645
4746 <p style="margin-left:11%; margin-top: 1em"><b>timsieved</b>
48 [ <b>&minus;C</b> <i>config-file</i> ]</p>
47 [ <b>-C</b> <i>config-file</i> ]</p>
4948
5049 <h2>DESCRIPTION
5150 <a name="DESCRIPTION"></a>
7574 </h2>
7675
7776
78
79 <p style="margin-left:11%; margin-top: 1em"><b>&minus;C</b>
77 <p style="margin-left:11%; margin-top: 1em"><b>-C</b>
8078 <i>config-file</i></p>
8179
8280 <p style="margin-left:22%;">Read configuration options from
00 <!-- Creator : groff version 1.22.3 -->
1 <!-- CreationDate: Fri May 20 06:10:10 2016 -->
1 <!-- CreationDate: Fri Jul 22 02:16:08 2016 -->
22 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
33 "http://www.w3.org/TR/html4/loose.dtd">
44 <html>
3434 </h2>
3535
3636
37 <p style="margin-left:11%; margin-top: 1em">tls_prune
38 &minus; prune expired sessions from the TLS sessions
39 database</p>
37 <p style="margin-left:11%; margin-top: 1em">tls_prune -
38 prune expired sessions from the TLS sessions database</p>
4039
4140 <h2>SYNOPSIS
4241 <a name="SYNOPSIS"></a>
4544
4645
4746 <p style="margin-left:11%; margin-top: 1em"><b>tls_prune</b>
48 [ <b>&minus;C</b> <i>config-file</i> ]</p>
47 [ <b>-C</b> <i>config-file</i> ]</p>
4948
5049 <h2>DESCRIPTION
5150 <a name="DESCRIPTION"></a>
6968 </h2>
7069
7170
72
73 <p style="margin-left:11%; margin-top: 1em"><b>&minus;C</b>
71 <p style="margin-left:11%; margin-top: 1em"><b>-C</b>
7472 <i>config-file</i></p>
7573
7674 <p style="margin-left:22%;">Read configuration options from
00 <!-- Creator : groff version 1.22.3 -->
1 <!-- CreationDate: Fri May 20 06:10:10 2016 -->
1 <!-- CreationDate: Fri Jul 22 02:16:08 2016 -->
22 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
33 "http://www.w3.org/TR/html4/loose.dtd">
44 <html>
3434 </h2>
3535
3636
37 <p style="margin-left:11%; margin-top: 1em">unexpunge
38 &minus; restore expunged (but yet unremoved) messages</p>
37 <p style="margin-left:11%; margin-top: 1em">unexpunge -
38 restore expunged (but yet unremoved) messages</p>
3939
4040 <h2>SYNOPSIS
4141 <a name="SYNOPSIS"></a>
4444
4545
4646 <p style="margin-left:11%; margin-top: 1em"><b>unexpunge</b>
47 [ <b>&minus;C</b> <i>config-file</i> ] <b>&minus;l</b>
47 [ <b>-C</b> <i>config-file</i> ] <b>-l</b> <i>mailbox</i>
48 <b><br>
49 unexpunge</b> [ <b>-C</b> <i>config-file</i> ] <b>-t
50 time-interval</b> [ <b>-d</b> ] [ <b>-v</b> ] [ <b>-f</b>
51 <i>flagname</i> ] <i>mailbox</i> <b><br>
52 unexpunge</b> [ <b>-C</b> <i>config-file</i> ] <b>-a</b> [
53 <b>-d</b> ] [ <b>-v</b> ] [ <b>-f</b> <i>flagname</i> ]
4854 <i>mailbox</i> <b><br>
49 unexpunge</b> [ <b>&minus;C</b> <i>config-file</i> ]
50 <b>&minus;t time-interval</b> [ <b>&minus;d</b> ] [
51 <b>&minus;v</b> ] [ <b>&minus;f</b> <i>flagname</i> ]
52 <i>mailbox</i> <b><br>
53 unexpunge</b> [ <b>&minus;C</b> <i>config-file</i> ]
54 <b>&minus;a</b> [ <b>&minus;d</b> ] [ <b>&minus;v</b> ] [
55 <b>&minus;f</b> <i>flagname</i> ] <i>mailbox</i> <b><br>
56 unexpunge</b> [ <b>&minus;C</b> <i>config-file</i> ]
57 <b>&minus;u</b> [ <b>&minus;d</b> ] [ <b>&minus;v</b> ] [
58 <b>&minus;f</b> <i>flagname</i> ] <i>mailbox uid</i>...</p>
55 unexpunge</b> [ <b>-C</b> <i>config-file</i> ] <b>-u</b> [
56 <b>-d</b> ] [ <b>-v</b> ] [ <b>-f</b> <i>flagname</i> ]
57 <i>mailbox uid</i>...</p>
5958
6059 <h2>DESCRIPTION
6160 <a name="DESCRIPTION"></a>
8079 </h2>
8180
8281
83
84 <p style="margin-left:11%; margin-top: 1em"><b>&minus;C</b>
82 <p style="margin-left:11%; margin-top: 1em"><b>-C</b>
8583 <i>config-file</i></p>
8684
8785 <p style="margin-left:22%;">Read configuration options from
9492 <td width="3%">
9593
9694
97 <p><b>&minus;l</b></p></td>
95 <p><b>-l</b></p></td>
9896 <td width="8%"></td>
9997 <td width="78%">
10098
103101 which are available for restoration.</p></td></tr>
104102 </table>
105103
106 <p style="margin-left:11%;"><b>&minus;t</b>
104 <p style="margin-left:11%;"><b>-t</b>
107105 <i>time-interval</i></p>
108106
109107 <p style="margin-left:22%;">Unexpunge messages which were
117115 <td width="3%">
118116
119117
120 <p><b>&minus;a</b></p></td>
118 <p><b>-a</b></p></td>
121119 <td width="8%"></td>
122120 <td width="78%">
123121
129127 <td width="3%">
130128
131129
132 <p><b>&minus;u</b></p></td>
130 <p><b>-u</b></p></td>
133131 <td width="8%"></td>
134132 <td width="78%">
135133
141139 <td width="3%">
142140
143141
144 <p><b>&minus;d</b></p></td>
142 <p><b>-d</b></p></td>
145143 <td width="8%"></td>
146144 <td width="78%">
147145
150148 messages.</p> </td></tr>
151149 </table>
152150
153 <p style="margin-left:11%;"><b>&minus;f</b>
154 <i>flagname</i></p>
151 <p style="margin-left:11%;"><b>-f</b> <i>flagname</i></p>
155152
156153 <p style="margin-left:22%;">Set the user flag
157154 <i>flagname</i> on any restored messages. This can make it
165162 <td width="3%">
166163
167164
168 <p><b>&minus;v</b></p></td>
165 <p><b>-v</b></p></td>
169166 <td width="8%"></td>
170167 <td width="46%">
171168
Binary diff not shown
Binary diff not shown
+0
-0
doc/text/.deps/.dirstamp less more
(Empty file)
+0
-124
doc/text/.deps/htmlstrip.Po less more
0 doc/text/htmlstrip.o: doc/text/htmlstrip.c /usr/include/stdc-predef.h \
1 /usr/include/stdio.h /usr/include/features.h \
2 /usr/include/x86_64-linux-gnu/sys/cdefs.h \
3 /usr/include/x86_64-linux-gnu/bits/wordsize.h \
4 /usr/include/x86_64-linux-gnu/gnu/stubs.h \
5 /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
6 /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h \
7 /usr/include/x86_64-linux-gnu/bits/types.h \
8 /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \
9 /usr/include/_G_config.h /usr/include/wchar.h \
10 /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
11 /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
12 /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
13 /usr/include/x86_64-linux-gnu/bits/stdio.h /usr/include/string.h \
14 /usr/include/xlocale.h /usr/include/x86_64-linux-gnu/bits/string.h \
15 /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/endian.h \
16 /usr/include/x86_64-linux-gnu/bits/endian.h \
17 /usr/include/x86_64-linux-gnu/bits/byteswap.h \
18 /usr/include/x86_64-linux-gnu/bits/byteswap-16.h /usr/include/stdlib.h \
19 /usr/include/x86_64-linux-gnu/bits/waitflags.h \
20 /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
21 /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
22 /usr/include/x86_64-linux-gnu/sys/select.h \
23 /usr/include/x86_64-linux-gnu/bits/select.h \
24 /usr/include/x86_64-linux-gnu/bits/sigset.h \
25 /usr/include/x86_64-linux-gnu/bits/time.h \
26 /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
27 /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
28 /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
29 /usr/include/x86_64-linux-gnu/bits/stdlib-float.h /usr/include/unistd.h \
30 /usr/include/x86_64-linux-gnu/bits/posix_opt.h \
31 /usr/include/x86_64-linux-gnu/bits/environments.h \
32 /usr/include/x86_64-linux-gnu/bits/confname.h /usr/include/getopt.h \
33 /usr/include/ctype.h
34
35 /usr/include/stdc-predef.h:
36
37 /usr/include/stdio.h:
38
39 /usr/include/features.h:
40
41 /usr/include/x86_64-linux-gnu/sys/cdefs.h:
42
43 /usr/include/x86_64-linux-gnu/bits/wordsize.h:
44
45 /usr/include/x86_64-linux-gnu/gnu/stubs.h:
46
47 /usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
48
49 /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
50
51 /usr/include/x86_64-linux-gnu/bits/types.h:
52
53 /usr/include/x86_64-linux-gnu/bits/typesizes.h:
54
55 /usr/include/libio.h:
56
57 /usr/include/_G_config.h:
58
59 /usr/include/wchar.h:
60
61 /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
62
63 /usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
64
65 /usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
66
67 /usr/include/x86_64-linux-gnu/bits/stdio.h:
68
69 /usr/include/string.h:
70
71 /usr/include/xlocale.h:
72
73 /usr/include/x86_64-linux-gnu/bits/string.h:
74
75 /usr/include/x86_64-linux-gnu/bits/string2.h:
76
77 /usr/include/endian.h:
78
79 /usr/include/x86_64-linux-gnu/bits/endian.h:
80
81 /usr/include/x86_64-linux-gnu/bits/byteswap.h:
82
83 /usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
84
85 /usr/include/stdlib.h:
86
87 /usr/include/x86_64-linux-gnu/bits/waitflags.h:
88
89 /usr/include/x86_64-linux-gnu/bits/waitstatus.h:
90
91 /usr/include/x86_64-linux-gnu/sys/types.h:
92
93 /usr/include/time.h:
94
95 /usr/include/x86_64-linux-gnu/sys/select.h:
96
97 /usr/include/x86_64-linux-gnu/bits/select.h:
98
99 /usr/include/x86_64-linux-gnu/bits/sigset.h:
100
101 /usr/include/x86_64-linux-gnu/bits/time.h:
102
103 /usr/include/x86_64-linux-gnu/sys/sysmacros.h:
104
105 /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
106
107 /usr/include/alloca.h:
108
109 /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
110
111 /usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
112
113 /usr/include/unistd.h:
114
115 /usr/include/x86_64-linux-gnu/bits/posix_opt.h:
116
117 /usr/include/x86_64-linux-gnu/bits/environments.h:
118
119 /usr/include/x86_64-linux-gnu/bits/confname.h:
120
121 /usr/include/getopt.h:
122
123 /usr/include/ctype.h:
0 Changes to the Cyrus IMAP Server since 2.5.7
0 Changes to the Cyrus IMAP Server since 2.5.8
11
2 Murder changes
2 Dependency changes
33
4 * Allow replicated backends in a discrete Murder to both actively
5 participate in the Murder.
6 * When choosing between ANNOTATEMORE and METADATA, favour what the
7 client used.
4 * Libical 2.0.0 is now supported.
5 * preliminary support for OpenSSL 1.1.0 (not yet released)
86
9 Other changes
10
11 * cyr_dbtool now supports improved_mboxlist_sort (-M)
12
13 Bug fixes
14
15 * Fixed: master on pselect systems no longer chokes on repeated
16 interrupts (thanks Jens Erat and team)
+0
-435
doc/text/htmlstrip.c less more
0 /* htmlstrip.c -- HTML to text converter
1 *
2 * Copyright (c) 1994-2008 Carnegie Mellon University. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 *
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 *
11 * 2. Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in
13 * the documentation and/or other materials provided with the
14 * distribution.
15 *
16 * 3. The name "Carnegie Mellon University" must not be used to
17 * endorse or promote products derived from this software without
18 * prior written permission. For permission or any legal
19 * details, please contact
20 * Carnegie Mellon University
21 * Center for Technology Transfer and Enterprise Creation
22 * 4615 Forbes Avenue
23 * Suite 302
24 * Pittsburgh, PA 15213
25 * (412) 268-7393, fax: (412) 268-7395
26 * innovation@andrew.cmu.edu
27 *
28 * 4. Redistributions of any form whatsoever must retain the following
29 * acknowledgment:
30 * "This product includes software developed by Computing Services
31 * at Carnegie Mellon University (http://www.cmu.edu/computing/)."
32 *
33 * CARNEGIE MELLON UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO
34 * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
35 * AND FITNESS, IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY BE LIABLE
36 * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
37 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
38 * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
39 * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
40 */
41
42 #include <stdio.h>
43 #include <string.h>
44 #include <stdlib.h>
45 #include <unistd.h>
46 #include <ctype.h>
47
48 #define MODE_PRE 1 /* Preformatted */
49 #define MODE_IGNORETXT 2 /* Discard text */
50
51 #define FLAG_NOPUSH 1 /* Has no end marker, don't push on stack */
52 #define FLAG_BREAK 2 /* Breaks a line */
53 #define FLAG_PARAGRAPH 4 /* Breaks a paragraph */
54
55 struct mode {
56 char *name;
57 int indent;
58 int listnum;
59 int flags;
60 int mode;
61 int startline;
62 };
63
64 struct mode modestack[100] = {{"TOPLEVEL", 4, 0, 0, 0, 0}};
65 int curmode = 0;
66 int didparagraph = 1;
67
68 struct tag {
69 char *name;
70 int flags;
71 int mode;
72 int indent;
73 };
74
75 struct tag cmds[] = {
76 { "!--", FLAG_NOPUSH, 0, 0, },
77 { "!DOCTYPE", FLAG_NOPUSH, 0, 0, },
78 { "link", FLAG_NOPUSH, 0, 0, },
79 { "html", 0, 0, 0, },
80 { "head", 0, MODE_IGNORETXT, 0, },
81 { "title", 0, MODE_IGNORETXT, 0, },
82 { "body", 0, 0, 0, },
83 { "p", FLAG_PARAGRAPH|FLAG_NOPUSH, 0, 0, },
84 { "pre", FLAG_PARAGRAPH, MODE_PRE, 0, },
85 { "a", 0, 0, 0, },
86 /* KLUDGE: we set MODE_PRE on <h1> to fake centering it ourselves */
87 { "h1", FLAG_PARAGRAPH, MODE_PRE, -4, },
88 { "h2", FLAG_PARAGRAPH, 0, -4, },
89 { "h3", FLAG_PARAGRAPH, 0, -4, },
90 { "h4", FLAG_PARAGRAPH, 0, -4, },
91 { "h5", FLAG_PARAGRAPH, 0, -4, },
92 { "h6", FLAG_PARAGRAPH, 0, -4, },
93 { "em", 0, 0, 0, },
94 { "strong", 0, 0, 0, },
95 { "code", 0, 0, 0, },
96 { "samp", 0, 0, 0, },
97 { "kbd", 0, 0, 0, },
98 { "var", 0, 0, 0, },
99 { "dfn", 0, 0, 0, },
100 { "cite", 0, 0, 0, },
101 { "blockquote", FLAG_PARAGRAPH, 0, 4, },
102 { "b", 0, 0, 0, },
103 { "i", 0, 0, 0, },
104 { "u", 0, 0, 0, },
105 { "tt", 0, 0, 0, },
106 { "dl", FLAG_PARAGRAPH, 0, 8, },
107 { "dt", FLAG_BREAK|FLAG_NOPUSH, 0, -8, },
108 { "dd", FLAG_NOPUSH, 0, 0, },
109 { "ul", FLAG_PARAGRAPH, 0, 4, },
110 { "ol", FLAG_PARAGRAPH, 0, 4, },
111 { "li", FLAG_BREAK|FLAG_NOPUSH, 0, -4, },
112 { "br", FLAG_BREAK|FLAG_NOPUSH, 0, 0, },
113 { "hr", FLAG_BREAK|FLAG_NOPUSH, 0, 0, },
114 { "meta", FLAG_NOPUSH, 0, 0, },
115 { "table", 0, 0, 0, },
116 { "tr", FLAG_PARAGRAPH, 0, 0, },
117 { "td", 0, 0, 0, },
118 };
119
120 static void parse(FILE *infile);
121 static int lex(FILE *infile, int *cmdptr, int *endtagptr, int *linenoptr);
122
123 int main(int argc, char **argv)
124 {
125 FILE *infile;
126
127 if (argc != 2) {
128 fprintf(stderr, "usage: %s file\n", argv[0]);
129 exit(1);
130 }
131
132 infile = fopen(argv[1], "r");
133 if (!infile) {
134 perror(argv[1]);
135 exit(1);
136 }
137
138 parse(infile);
139 exit(0);
140 }
141
142 static void parse(FILE *infile)
143 {
144 char outputbuf[1024];
145 int outpos = 0;
146 int c;
147 int cmd;
148 int endtag;
149 int lineno = 1;
150 int i;
151 char *p;
152
153 while ((c = lex(infile, &cmd, &endtag, &lineno)) != EOF) {
154 if (!c) {
155 if (endtag) {
156 if (cmds[cmd].flags & FLAG_NOPUSH) {
157 /* ignore */
158 }
159 else if (strcmp(cmds[cmd].name, modestack[curmode].name)!=0) {
160 fprintf(stderr,
161 "<%s> line %d mismatched with </%s> on line %d\n",
162 modestack[curmode].name,
163 modestack[curmode].startline,
164 cmds[cmd].name, lineno);
165 exit(1);
166 }
167 else {
168 if ((modestack[curmode].flags & FLAG_PARAGRAPH) &&
169 !(modestack[curmode].mode & MODE_IGNORETXT)) {
170 if (outpos) {
171 outputbuf[outpos++] = '\n';
172 outputbuf[outpos++] = '\0';
173 fputs(outputbuf, stdout);
174 outpos = 0;
175 }
176 if (!didparagraph) {
177 putc('\n', stdout);
178 didparagraph = 1;
179 }
180 }
181 curmode--;
182 }
183 }
184 else {
185 if (!(modestack[curmode].mode & MODE_IGNORETXT)) {
186 if (cmds[cmd].flags & (FLAG_PARAGRAPH|FLAG_BREAK)) {
187 if (outpos) {
188 outputbuf[outpos++] = '\n';
189 outputbuf[outpos++] = '\0';
190 fputs(outputbuf, stdout);
191 outpos = 0;
192 }
193 }
194 if ((cmds[cmd].flags & FLAG_PARAGRAPH)
195 && !didparagraph) {
196 putc('\n', stdout);
197 didparagraph = 1;
198 }
199 }
200 if (cmds[cmd].flags & FLAG_NOPUSH) {
201
202 if (!strcmp(cmds[cmd].name, "dt")) {
203 while (outpos < modestack[curmode].indent - 8) {
204 outputbuf[outpos++] = ' ';
205 }
206 }
207
208 if (!strcmp(cmds[cmd].name, "dd")) {
209 if (outpos-1 >= modestack[curmode].indent) {
210 /* Break line */
211 outputbuf[outpos++] = '\n';
212 outputbuf[outpos++] = '\0';
213 fputs(outputbuf, stdout);
214 outpos = 0;
215 }
216 /* Indent line */
217 while (outpos < modestack[curmode].indent) {
218 outputbuf[outpos++] = ' ';
219 }
220 }
221
222 if (!strcmp(cmds[cmd].name, "li")) {
223 if (modestack[curmode].listnum == 0) {
224 fprintf(stderr, "<li> inside a <%s> on line %d\n",
225 modestack[curmode].name, lineno);
226 exit(1);
227 }
228 while (outpos < modestack[curmode].indent - 4) {
229 outputbuf[outpos++] = ' ';
230 }
231
232 if (modestack[curmode].listnum < 0) {
233 outputbuf[outpos++] = ' ';
234 outputbuf[outpos++] = ' ';
235 outputbuf[outpos++] = '*';
236 outputbuf[outpos++] = ' ';
237 }
238 else {
239 if (modestack[curmode].listnum >=100) {
240 fprintf(stderr,
241 "too many <li> items on line %d\n",
242 lineno);
243 exit(1);
244 }
245 outputbuf[outpos++] =
246 modestack[curmode].listnum > 9 ?
247 modestack[curmode].listnum/10 + '0' : ' ';
248 outputbuf[outpos++] =
249 modestack[curmode].listnum%10 + '0';
250 outputbuf[outpos++] = '.';
251 outputbuf[outpos++] = ' ';
252 modestack[curmode].listnum++;
253 }
254 }
255 if (!strcmp(cmds[cmd].name, "hr")) {
256 /* XXX hack */
257 modestack[curmode].mode |= MODE_IGNORETXT;
258 }
259 }
260 else {
261 curmode++;
262 if (curmode >= 100) {
263 fprintf(stderr, "too many nested tags on line %d\n",
264 lineno);
265 exit(1);
266 }
267 modestack[curmode].name = cmd[cmds].name;
268 modestack[curmode].indent =
269 modestack[curmode-1].indent + cmd[cmds].indent;
270 modestack[curmode].listnum = 0;
271 modestack[curmode].flags = cmd[cmds].flags;
272 modestack[curmode].mode =
273 modestack[curmode-1].mode | cmd[cmds].mode;
274 modestack[curmode].startline = lineno;
275
276 if (!strcmp(cmds[cmd].name, "ul")) {
277 modestack[curmode].listnum = -1;
278 }
279 if (!strcmp(cmds[cmd].name, "ol")) {
280 modestack[curmode].listnum = 1;
281 }
282
283 }
284 }
285 }
286 else if (modestack[curmode].mode & MODE_IGNORETXT) {
287 /* do nothing */
288 }
289 else if (isspace(c) && !(modestack[curmode].mode & MODE_PRE)) {
290 /* Only emit space if previous char not a space */
291 if (outpos && !isspace(outputbuf[outpos-1])) {
292 outputbuf[outpos++] = ' ';
293 }
294 }
295 else if (c == '\n') {
296 /* Newline inside MODE_PRE. Emit current line */
297 if (outpos || !didparagraph) {
298 outputbuf[outpos++] = '\n';
299 outputbuf[outpos++] = '\0';
300 fputs(outputbuf, stdout);
301 outpos = 0;
302 didparagraph = 0;
303 }
304 }
305 else {
306 didparagraph = 0;
307 if (!outpos) {
308 /* Indent line */
309 for (i = 0; i < modestack[curmode].indent; i++) {
310 outputbuf[outpos++] = ' ';
311 }
312 }
313 outputbuf[outpos++] = c;
314
315 /* Check for line wrapping */
316 if (outpos > 75 && !(modestack[curmode].mode & MODE_PRE)) {
317 outputbuf[outpos] = '\0';
318 p = strrchr(outputbuf, ' ');
319 if (p && p-outputbuf > modestack[curmode].indent) {
320 *p++ = '\0';
321 fputs(outputbuf, stdout);
322 putc('\n', stdout);
323 outpos = 0;
324 if (*p) {
325 for (i = 0; i < modestack[curmode].indent; i++) {
326 outputbuf[outpos++] = ' ';
327 }
328 while (*p) {
329 outputbuf[outpos++] = *p++;
330 }
331 }
332 }
333 }
334 }
335 }
336
337 /* Write out last line of output */;
338 if (outpos) {
339 outputbuf[outpos++] = '\n';
340 outputbuf[outpos++] = '\0';
341 fputs(outputbuf, stdout);
342 }
343 }
344
345 static int lex(FILE *infile, int *cmdptr, int *endtagptr, int *linenoptr)
346 {
347 int c;
348 static char buf[1024];
349 unsigned int i = 0;
350 int lineno = *linenoptr;
351 char *p;
352
353 c = getc(infile);
354 if (c == '&') {
355 while ((c = getc(infile)) != EOF && c != ';') {
356 buf[i++] = c;
357 if (c == '\n' || i > 1000) {
358 fprintf(stderr, "unterminated entity on line %d\n", lineno);
359 exit(1);
360 }
361 }
362 if (c == EOF) {
363 fprintf(stderr, "unexpected EOF on line %d\n", lineno);
364 exit(1);
365 }
366 buf[i] = '\0';
367 if (!strcasecmp(buf, "amp")) return '&';
368 if (!strcasecmp(buf, "lt")) return '<';
369 if (!strcasecmp(buf, "gt")) return '>';
370 if (!strcasecmp(buf, "quot")) return '"';
371 if (!strcasecmp(buf, "nbsp")) return ' ';
372 fprintf(stderr, "unrecognized entity '%s' on line %d\n", buf, lineno);
373 exit(1);
374 }
375
376 if (!c) {
377 fprintf(stderr, "NUL character on line %d\n", lineno);
378 exit(1);
379 }
380
381 if (c == '\n') (*linenoptr)++;
382 if (c != '<') return c;
383
384 while (i<=1000 && (c = getc(infile)) != EOF && c != '>') {
385 if (c == '\n') (*linenoptr)++;
386 if (isspace(c)) c = ' ';
387 buf[i++] = c;
388
389 if (c == '\"') {
390 while (i<=1000 && (c = getc(infile)) != EOF && c != '\"') {
391 if (c == '\n') (*linenoptr)++;
392 buf[i++] = c;
393 }
394 if (c == EOF || i > 1000) {
395 fprintf(stderr,
396 "unterminated string in tag starting on line %d\n",
397 lineno);
398 exit(1);
399 }
400 buf[i++] = c;
401 }
402 }
403
404 buf[i] = '\0';
405
406 if (c == EOF || i > 1000) {
407 fprintf(stderr, "unterminated tag starting on line %d\n",
408 lineno);
409 exit(1);
410 }
411
412 if ((p = strchr(buf, ' '))) *p = '\0';
413
414 p = buf;
415 if (*p == '/') {
416 *endtagptr = 1;
417 p++;
418 }
419 else {
420 *endtagptr = 0;
421 }
422
423 for (i = 0; i<(sizeof(cmds)/sizeof(*cmds)); i++) {
424 if (!strcasecmp(p, cmds[i].name)) {
425 *cmdptr = i;
426 return 0;
427 }
428 }
429
430 fprintf(stderr, "unknown tag <%s> starting on line %d\n", buf,
431 lineno);
432 exit(1);
433 }
434
7676
7777 struct caldav_db {
7878 sqlite3 *db; /* DB handle */
79 char sched_inbox[MAX_MAILBOX_BUFFER];/* DB owner's scheduling Inbox */
79 char *sched_inbox; /* DB owner's scheduling Inbox */
8080 sqlite3_stmt *stmt[NUM_STMT]; /* prepared statements */
8181 struct buf mailbox; /* buffers for copies of column text */
8282 struct buf resource;
181181 buf_free(&fname);
182182
183183 /* Construct mbox name corresponding to userid's scheduling Inbox */
184 strncpy(caldavdb->sched_inbox, caldav_mboxname(userid, SCHED_INBOX), sizeof(caldavdb->sched_inbox));
184 caldavdb->sched_inbox = caldav_mboxname(userid, SCHED_INBOX);
185185
186186 return caldavdb;
187187 }
213213
214214 if (!caldavdb) return 0;
215215
216 free(caldavdb->sched_inbox);
216217 buf_free(&caldavdb->mailbox);
217218 buf_free(&caldavdb->resource);
218219 buf_free(&caldavdb->lock_token);
908909 }
909910
910911
911 EXPORTED const char *caldav_mboxname(const char *userid, const char *name)
912 EXPORTED char *caldav_mboxname(const char *userid, const char *name)
912913 {
913914 struct buf boxbuf = BUF_INITIALIZER;
914 const char *res = NULL;
915 char *res = NULL;
915916
916917 buf_setcstr(&boxbuf, config_getstring(IMAPOPT_CALENDARPREFIX));
917918
164164 /* create caldav_data from icalcomponent */
165165 void caldav_make_entry(icalcomponent *ical, struct caldav_data *cdata);
166166
167 const char *caldav_mboxname(const char *userid, const char *name);
167 char *caldav_mboxname(const char *userid, const char *name);
168168
169169 #endif /* CALDAV_DB_H */
103103
104104
105105 #ifdef HAVE_RSCALE
106 #include <unicode/ucal.h>
106107 #include <unicode/uversion.h>
107108
108109 static int rscale_cmp(const void *a, const void *b)
110111 /* Convert to uppercase since that's what we prefer to output */
111112 return strcmp(ucase(*((char **) a)), ucase(*((char **) b)));
112113 }
113
114 static icalarray *rscale_calendars = NULL;
115114 #endif /* HAVE_RSCALE */
116115
117116
118 #ifndef HAVE_SCHEDULING_PARAMS
117 #ifdef HAVE_SCHEDULING_PARAMS
118
119 /* Wrappers to fetch scheduling parameters by kind */
120
121 #define icalproperty_get_scheduleagent_parameter(prop) \
122 icalproperty_get_first_parameter(prop, ICAL_SCHEDULEAGENT_PARAMETER)
123
124 #define icalproperty_get_scheduleforcesend_parameter(prop) \
125 icalproperty_get_first_parameter(prop, ICAL_SCHEDULEFORCESEND_PARAMETER)
126
127 #define icalproperty_get_schedulestatus_parameter(prop) \
128 icalproperty_get_first_parameter(prop, ICAL_SCHEDULESTATUS_PARAMETER)
129
130 #elif defined(HAVE_IANA_PARAMS)
119131
120132 /* Functions to replace those not available in libical < v1.0 */
121133
178190 #define icalproperty_get_schedulestatus_parameter(prop) \
179191 icalproperty_get_iana_parameter_by_name(prop, "SCHEDULE-STATUS")
180192
181 #else
182
183 /* Wrappers to fetch scheduling parameters by kind */
184
185 #define icalproperty_get_scheduleagent_parameter(prop) \
186 icalproperty_get_first_parameter(prop, ICAL_SCHEDULEAGENT_PARAMETER)
187
188 #define icalproperty_get_scheduleforcesend_parameter(prop) \
189 icalproperty_get_first_parameter(prop, ICAL_SCHEDULEFORCESEND_PARAMETER)
190
191 #define icalproperty_get_schedulestatus_parameter(prop) \
192 icalproperty_get_first_parameter(prop, ICAL_SCHEDULESTATUS_PARAMETER)
193 #else /* !HAVE_IANA_PARAMS */
194
195 /* Functions to replace those not available in libical < v0.48 */
196
197 #define icalparameter_get_scheduleagent(param) ICAL_SCHEDULEAGENT_NONE
198
199 #define icalparameter_get_scheduleforcesend(param) ICAL_SCHEDULEFORCESEND_NONE
200
201 #define icalparameter_new_schedulestatus(stat) NULL; \
202 (void) stat /* silence compiler */
203
204 #define icalproperty_get_scheduleagent_parameter(prop) NULL
205
206 #define icalproperty_get_scheduleforcesend_parameter(prop) NULL
207
208 #define icalproperty_get_schedulestatus_parameter(prop) NULL
193209
194210 #endif /* HAVE_SCHEDULING_PARAMS */
195211
659675
660676 caldav_init();
661677
678 #ifdef HAVE_IANA_PARAMS
662679 config_allowsched = config_getenum(IMAPOPT_CALDAV_ALLOWSCHEDULING);
663680 if (config_allowsched) {
664681 namespace_calendar.allow |= ALLOW_CAL_SCHED;
668685 ical_set_unknown_token_handling_setting(ICAL_ASSUME_IANA_TOKEN);
669686 #endif
670687 }
688 #endif /* HAVE_IANA_PARAMS */
671689
672690 #ifdef HAVE_TZ_BY_REF
673691 if (namespace_timezone.enabled) {
809827 buf_free(&ical_prodid_buf);
810828 freestrlist(cua_domains);
811829
830 my_caldav_reset();
812831 caldav_done();
813832 }
814833
26372656 #ifdef HAVE_RSCALE
26382657 /* Make sure we support the provided RSCALE in an RRULE */
26392658 prop = icalcomponent_get_first_property(comp, ICAL_RRULE_PROPERTY);
2640 if (prop) {
2659 if (prop && rscale_calendars) {
26412660 struct icalrecurrencetype rt = icalproperty_get_rrule(prop);
26422661
2643 if (*rt.rscale) {
2644 UEnumeration *en;
2645 UErrorCode stat = U_ZERO_ERROR;
2646 const char *rscale;
2662 if (rt.rscale) {
2663 /* Perform binary search on sorted icalarray */
2664 unsigned found = 0, start = 0, end = rscale_calendars->num_elements;
26472665
26482666 ucase(rt.rscale);
26492667 while (!found && start < end) {
26552673 else if (r < 0) end = mid;
26562674 else start = mid + 1;
26572675 }
2658 uenum_close(en);
2659
2660 if (!rscale) {
2676
2677 if (!found) {
26612678 txn->error.precond = CALDAV_SUPP_RSCALE;
26622679 ret = HTTP_FORBIDDEN;
26632680 goto done;
43384355
43394356 if (fctx->req_tgt->resource) return HTTP_NOT_FOUND;
43404357
4341 #ifdef HAVE_RSCALE
4342 if (icalrecur_rscale_token_handling_is_supported()) {
4358 if (rscale_calendars) {
43434359 xmlNodePtr top;
4344 UEnumeration *en;
4345 UErrorCode status = U_ZERO_ERROR;
4346 const char *rscale;
4360 int i, n;
43474361
43484362 top = xml_add_prop(HTTP_OK, fctx->ns[NS_DAV], &propstat[PROPSTAT_OK],
43494363 name, ns, NULL, 0);
43504364
4351 en = ucal_getKeywordValuesForLocale("calendar", NULL, FALSE, &status);
4352 while ((rscale = uenum_next(en, NULL, &status))) {
4365 for (i = 0, n = rscale_calendars->num_elements; i < n; i++) {
4366 const char **rscale = icalarray_element_at(rscale_calendars, i);
4367
43534368 xmlNewChild(top, fctx->ns[NS_CALDAV],
4354 BAD_CAST "supported-rscale", BAD_CAST rscale);
4355 }
4356 uenum_close(en);
4369 BAD_CAST "supported-rscale", BAD_CAST *rscale);
4370 }
43574371
43584372 return 0;
43594373 }
4360 #endif
43614374
43624375 return HTTP_NOT_FOUND;
43634376 }
282282 &namespace_principal,
283283 &namespace_calendar,
284284 &namespace_addressbook,
285 #ifdef HAVE_IANA_PARAMS
285286 &namespace_ischedule,
286287 &namespace_domainkey,
288 #endif /* HAVE_IANA_PARAMS */
287289 #endif /* WITH_DAV */
288290 &namespace_rss,
289291 &namespace_dblookup,
1188111881 prot_printf(backend_inbox->out, "%cchildren", c);
1188211882 c = ' ';
1188311883 }
11884 if (listargs->ret & LIST_RET_SPECIALUSE) {
11885 prot_printf(backend_inbox->out, "%cspecial-use", c);
11886 c = ' ';
11887 }
1188411888 (void)prot_putc(')', backend_inbox->out);
1188511889 }
1188611890
9191 /* current namespace */
9292 static struct namespace purge_namespace;
9393
94 static int dryrun = 0;
9495 static int verbose = 1;
9596 static int forceall = 0;
9697
99100 struct index_record *record,
100101 void *rock);
101102 static int usage(const char *name);
103 static void print_record(struct mailbox *mailbox,
104 struct index_record *record);
102105 static void print_stats(mbox_stats_t *stats);
103106
104107 int main (int argc, char *argv[]) {
111114 fatal("must run as the Cyrus user", EC_USAGE);
112115 }
113116
114 while ((option = getopt(argc, argv, "C:hxd:b:k:m:fsXio")) != EOF) {
117 while ((option = getopt(argc, argv, "C:hxd:b:k:m:fsXion")) != EOF) {
115118 switch (option) {
116119 case 'C': /* alt config file */
117120 alt_config = optarg;
139142 usage(argv[0]);
140143 }
141144 size = atoi(optarg) * 1048576; /* 1024 * 1024 */
145 } break;
146 case 'n' : {
147 dryrun = 1;
142148 } break;
143149 case 'x' : {
144150 exact = 1;
220226
221227 static int usage(const char *name)
222228 {
223 printf("usage: %s [-f] [-s] [-C <alt_config>] [-x] [-X] [-i] [-o] {-d days | -b bytes|-k Kbytes|-m Mbytes}\n\t[mboxpattern1 ... [mboxpatternN]]\n", name);
229 printf("usage: %s [-f] [-s] [-C <alt_config>] [-x] [-X] [-i] [-o] [-n] {-d days | -b bytes|-k Kbytes|-m Mbytes}\n\t[mboxpattern1 ... [mboxpatternN]]\n", name);
224230 printf("\tthere are no defaults and at least one of -d, -b, -k, -m\n\tmust be specified\n");
225231 printf("\tif no mboxpattern is given %s works on all mailboxes\n", name);
226232 printf("\t -x specifies an exact match for days or size\n");
229235 printf("\t -X use delivery time instead of date header for date matches.\n");
230236 printf("\t -i invert match logic: -x means not equal, date is for newer, size is for smaller.\n");
231237 printf("\t -o only purge messages that are deleted.\n");
238 printf("\t -n only print messages that would be deleted (dry run).\n");
232239 exit(0);
233240 }
234241
281288
282289 /* thumbs up routine, checks date & size and returns yes or no for deletion */
283290 /* 0 = no, 1 = yes */
284 static unsigned purge_check(struct mailbox *mailbox __attribute__((unused)),
285 struct index_record *record,
286 void *deciderock)
291 static unsigned purge_check(struct mailbox *mailbox,
292 struct index_record *record,
293 void *deciderock)
287294 {
288295 time_t my_time;
289296 time_t senttime;
307314 if (((my_time - (time_t) senttime)/86400) == (days/86400)) {
308315 if (invertmatch) return 0;
309316 deleteit(record->size, stats);
310 return 1;
317 return dryrun ? print_record(mailbox, record), 0 : 1;
311318 } else {
312319 if (!invertmatch) return 0;
313320 deleteit(record->size, stats);
314 return 1;
321 return dryrun ? print_record(mailbox, record), 0 : 1;
315322 }
316323 }
317324 if (size >= 0) {
319326 if (record->size == (unsigned)size) {
320327 if (invertmatch) return 0;
321328 deleteit(record->size, stats);
322 return 1;
329 return dryrun ? print_record(mailbox, record), 0 : 1;
323330 } else {
324331 if (!invertmatch) return 0;
325332 deleteit(record->size, stats);
326 return 1;
333 return dryrun ? print_record(mailbox, record), 0 : 1;
327334 }
328335 }
329336 return 0;
332339 /* printf("comparing %ld :: %ld\n", my_time, the_record->sentdate); */
333340 if (!invertmatch && ((my_time - (time_t) senttime) > days)) {
334341 deleteit(record->size, stats);
335 return 1;
342 return dryrun ? print_record(mailbox, record), 0 : 1;
336343 }
337344 if (invertmatch && ((my_time - (time_t) senttime) < days)) {
338345 deleteit(record->size, stats);
339 return 1;
346 return dryrun ? print_record(mailbox, record), 0 : 1;
340347 }
341348 }
342349 if (size >= 0) {
343350 /* check size */
344351 if (!invertmatch && ((int) record->size > size)) {
345352 deleteit(record->size, stats);
346 return 1;
353 return dryrun ? print_record(mailbox, record), 0 : 1;
347354 }
348355 if (invertmatch && ((int) record->size < size)) {
349356 deleteit(record->size, stats);
350 return 1;
357 return dryrun ? print_record(mailbox, record), 0 : 1;
351358 }
352359 }
353360 return 0;
354361 }
355362 }
356363
364 static void print_record(struct mailbox *mailbox,
365 struct index_record *record)
366 {
367 printf("UID: %u\n", record->uid);
368 printf("\tSize: %u\n", record->size);
369 printf("\tSent: %s", ctime(&record->sentdate));
370 printf("\tRecv: %s", ctime(&record->internaldate));
371
372 if (mailbox_cacherecord(mailbox, record)) {
373 printf("\tERROR: cache record missing or corrupt, "
374 "not printing cache details\n\n");
375 return;
376 }
377
378 printf("\tFrom: %.*s\n", cacheitem_size(record, CACHE_FROM),
379 cacheitem_base(record, CACHE_FROM));
380 printf("\tTo : %.*s\n", cacheitem_size(record, CACHE_TO),
381 cacheitem_base(record, CACHE_TO));
382 printf("\tCc : %.*s\n", cacheitem_size(record, CACHE_CC),
383 cacheitem_base(record, CACHE_CC));
384 printf("\tBcc : %.*s\n", cacheitem_size(record, CACHE_BCC),
385 cacheitem_base(record, CACHE_BCC));
386 printf("\tSubj: %.*s\n\n", cacheitem_size(record, CACHE_SUBJECT),
387 cacheitem_base(record, CACHE_SUBJECT));
388 }
389
357390 static void print_stats(mbox_stats_t *stats)
358391 {
359 printf("total messages \t\t %d\n",stats->total);
360 printf("total bytes \t\t %d\n",stats->total_bytes);
392 printf("Total messages \t\t %d\n",stats->total);
393 printf("Total bytes \t\t %d\n",stats->total_bytes);
361394 printf("Deleted messages \t\t %d\n",stats->deleted);
362395 printf("Deleted bytes \t\t %d\n",stats->deleted_bytes);
363396 printf("Remaining messages\t\t %d\n",stats->total - stats->deleted);
248248 kind_string = icalparameter_get_xname(param);
249249 break;
250250
251 #ifdef HAVE_IANA_PARAMS
251252 case ICAL_IANA_PARAMETER:
252253 kind_string = icalparameter_get_iana_name(param);
253254 break;
255 #endif
254256
255257 default:
256258 kind_string = icalparameter_kind_to_string(kind);
444446 }
445447
446448
447 struct icalrecur_parser {
448 const char* rule;
449 char* copy;
450 char* this_clause;
451 char* next_clause;
452
453 struct icalrecurrencetype rt;
454 };
455
456 extern icalrecurrencetype_frequency icalrecur_string_to_freq(const char* str);
457 extern void icalrecur_add_byrules(struct icalrecur_parser *parser, short *array,
458 int size, char* vals);
459 extern void icalrecur_add_bydayrules(struct icalrecur_parser *parser,
460 const char* vals);
461
462 static const char *_json_x_value(json_t *jvalue)
463 {
464 static char buf[21];
465
466 if (json_is_integer(jvalue)) {
467 snprintf(buf, sizeof(buf), "%" JSON_INTEGER_FORMAT,
468 json_integer_value(jvalue));
469 return buf;
470 }
471 else return json_string_value(jvalue);
472 }
473
474 static const char *json_x_value(json_t *jvalue)
475 {
476 static struct buf buf = BUF_INITIALIZER;
477
478 if (json_is_array(jvalue)) {
479 size_t i, n = json_array_size(jvalue);
480 const char *sep = "";
481
482 buf_reset(&buf);
483 for (i = 0; i < n; i++) {
484 buf_printf(&buf, "%s%s",
485 sep, _json_x_value(json_array_get(jvalue, i)));
486 sep = ",";
487 }
488 return buf_cstring(&buf);
489 }
490 else return _json_x_value(jvalue);
449 static void buf_appendjson(struct buf *buf, json_t *jvalue)
450 {
451 switch (json_typeof(jvalue)) {
452 case JSON_ARRAY: {
453 size_t i, n = json_array_size(jvalue);
454 const char *sep = "";
455
456 for (i = 0; i < n; i++, sep = ",") {
457 buf_appendcstr(buf, sep);
458 buf_appendjson(buf, json_array_get(jvalue, i));
459 }
460 break;
461 }
462
463 case JSON_STRING:
464 buf_appendcstr(buf, json_string_value(jvalue));
465 break;
466
467 case JSON_INTEGER:
468 buf_printf(buf, "%" JSON_INTEGER_FORMAT, json_integer_value(jvalue));
469 break;
470
471 case JSON_REAL:
472 buf_printf(buf, "%f", json_real_value(jvalue));
473 break;
474
475 case JSON_TRUE:
476 case JSON_FALSE:
477 buf_printf(buf, "%d", json_boolean_value(jvalue));
478 break;
479
480 default:
481 /* Shouldn't get here - ignore object */
482 break;
483 }
491484 }
492485
493486
547540 break;
548541
549542 case ICAL_RECUR_VALUE:
550 if (json_is_object(jvalue)) {
551 struct icalrecurrencetype *rt = NULL;
552 const char *key;
553 json_t *val;
554
555 json_object_foreach(jvalue, key, val) {
556 rt = icalrecur_add_rule(&rt, key, val,
557 (int (*)(void *)) &json_integer_value,
558 (const char * (*)(void *)) &json_x_value);
559 if (!rt) break;
560 }
561
562 if (rt && rt->freq != ICAL_NO_RECURRENCE)
563 value = icalvalue_new_recur(*rt);
564 }
565 else
566 syslog(LOG_WARNING, "jCal object object expected");
567 break;
543 if (json_is_object(jvalue)) {
544 struct buf rrule = BUF_INITIALIZER;
545 struct icalrecurrencetype rt;
546 const char *key, *sep = "";
547 json_t *val;
548
549 /* create an iCal RRULE string from jCal 'recur' object */
550 json_object_foreach(jvalue, key, val) {
551 char *mykey = xstrdup(key);
552 buf_printf(&rrule, "%s%s=", sep, ucase(mykey));
553 buf_appendjson(&rrule, val);
554 sep = ";";
555 free(mykey);
556 }
557
558 /* parse our iCal RRULE string */
559 rt = icalrecurrencetype_from_string(buf_cstring(&rrule));
560 buf_free(&rrule);
561
562 if (rt.freq != ICAL_NO_RECURRENCE) value = icalvalue_new_recur(rt);
563 }
564 else
565 syslog(LOG_WARNING, "jCal object object expected");
566 break;
568567
569568 case ICAL_REQUESTSTATUS_VALUE:
570569 /* MUST be an array of 2-3 strings */
8484
8585 switch (evt) {
8686
87 case TOTAL_CONNECTIONS: return "Count of the total number of connections since the beginning of time";
8788 case mtaReceivedMessages: return "Messages we've received";
89 case SIEVE_VACATION_TOTAL: return "vacation messages considered";
90 case SIEVE_VACATION_REPLIED: return "vacation messages sent";
91 case SIEVE_NOTIFY: return "sieve notifications sent";
92 case SIEVE_MESSAGES_PROCESSED: return "Number of messages processed by Sieve scripts";
93 case SIEVE_FILEINTO: return "sieve fileintos";
94 case SIEVE_KEEP: return "sieve messages kept";
95 case mtaReceivedRecipients: return "Recipients accepted";
96 case SIEVE_REDIRECT: return "sieve redirects";
97 case mtaTransmittedMessages: return "Messages stored to disk";
98 case SIEVE_DISCARD: return "sieve discards";
8899 case ACTIVE_CONNECTIONS: return "Count of the active number of connections";
89 case TOTAL_CONNECTIONS: return "Count of the total number of connections since the beginning of time";
90 case SIEVE_FILEINTO: return "sieve fileintos";
91 case SIEVE_DISCARD: return "sieve discards";
92 case SIEVE_VACATION_REPLIED: return "vacation messages sent";
93 case mtaReceivedRecipients: return "Recipients accepted";
100 case mtaReceivedVolume: return "Kbytes received";
101 case SIEVE_REJECT: return "sieve rejects";
102 case mtaSuccessfulConvertedMessages: return "Messages converted because of 8bit foo";
103 case mtaTransmittedVolume: return "Kbytes stored to disk";
94104 case AUTHENTICATION_YES: return "Successful authentication of given mechanism";
95 case mtaReceivedVolume: return "Kbytes received";
96 case SIEVE_MESSAGES_PROCESSED: return "Number of messages processed by Sieve scripts";
97 case AUTHENTICATION_NO: return "Failed authentication of given mechanism";
98 case mtaSuccessfulConvertedMessages: return "Messages converted because of 8bit foo";
99 case SIEVE_NOTIFY: return "sieve notifications sent";
100 case SIEVE_VACATION_TOTAL: return "vacation messages considered";
101105 case SERVER_UPTIME: return "Amount of time server has been running";
102106 case SERVER_NAME_VERSION: return "Name and version string for server";
103 case SIEVE_KEEP: return "sieve messages kept";
104 case SIEVE_REDIRECT: return "sieve redirects";
105 case SIEVE_REJECT: return "sieve rejects";
106 case mtaTransmittedVolume: return "Kbytes stored to disk";
107 case mtaTransmittedMessages: return "Messages stored to disk";
107 case AUTHENTICATION_NO: return "Failed authentication of given mechanism";
108108
109109 }
110110
122122
123123 switch (evt) {
124124
125 case TOTAL_CONNECTIONS: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.2.1.1"); return buf;
125126 case mtaReceivedMessages: snprintf(buf,buflen,"1.3.6.1.2.1.28.1.%d.1",varvalue(VARIABLE_MTA)); return buf;
127 case SIEVE_VACATION_TOTAL: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.3.4.8"); return buf;
128 case SIEVE_VACATION_REPLIED: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.3.4.7"); return buf;
129 case SIEVE_NOTIFY: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.3.4.6"); return buf;
130 case SIEVE_MESSAGES_PROCESSED: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.3.4.0"); return buf;
131 case SIEVE_FILEINTO: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.3.4.4"); return buf;
132 case SIEVE_KEEP: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.3.4.5"); return buf;
133 case mtaReceivedRecipients: snprintf(buf,buflen,"1.3.6.1.2.1.28.1.%d.7",varvalue(VARIABLE_MTA)); return buf;
134 case SIEVE_REDIRECT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.3.4.1"); return buf;
135 case mtaTransmittedMessages: snprintf(buf,buflen,"1.3.6.1.2.1.28.1.%d.3",varvalue(VARIABLE_MTA)); return buf;
136 case SIEVE_DISCARD: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.3.4.2"); return buf;
126137 case ACTIVE_CONNECTIONS: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.2.1.2"); return buf;
127 case TOTAL_CONNECTIONS: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.2.1.1"); return buf;
128 case SIEVE_FILEINTO: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.3.4.4"); return buf;
129 case SIEVE_DISCARD: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.3.4.2"); return buf;
130 case SIEVE_VACATION_REPLIED: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.3.4.7"); return buf;
131 case mtaReceivedRecipients: snprintf(buf,buflen,"1.3.6.1.2.1.28.1.%d.7",varvalue(VARIABLE_MTA)); return buf;
138 case mtaReceivedVolume: snprintf(buf,buflen,"1.3.6.1.2.1.28.1.%d.4",varvalue(VARIABLE_MTA)); return buf;
139 case SIEVE_REJECT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.3.4.3"); return buf;
140 case mtaSuccessfulConvertedMessages: snprintf(buf,buflen,"1.3.6.1.2.1.28.1.%d.10",varvalue(VARIABLE_MTA)); return buf;
141 case mtaTransmittedVolume: snprintf(buf,buflen,"1.3.6.1.2.1.28.1.%d.6",varvalue(VARIABLE_MTA)); return buf;
132142 case AUTHENTICATION_YES: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.2.2.%d.0",varvalue(VARIABLE_AUTH)); return buf;
133 case mtaReceivedVolume: snprintf(buf,buflen,"1.3.6.1.2.1.28.1.%d.4",varvalue(VARIABLE_MTA)); return buf;
134 case SIEVE_MESSAGES_PROCESSED: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.3.4.0"); return buf;
135 case AUTHENTICATION_NO: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.2.2.%d.1",varvalue(VARIABLE_AUTH)); return buf;
136 case mtaSuccessfulConvertedMessages: snprintf(buf,buflen,"1.3.6.1.2.1.28.1.%d.10",varvalue(VARIABLE_MTA)); return buf;
137 case SIEVE_NOTIFY: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.3.4.6"); return buf;
138 case SIEVE_VACATION_TOTAL: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.3.4.8"); return buf;
139143 case SERVER_UPTIME: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.2.3.1"); return buf;
140144 case SERVER_NAME_VERSION: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.2.3.0"); return buf;
141 case SIEVE_KEEP: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.3.4.5"); return buf;
142 case SIEVE_REDIRECT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.3.4.1"); return buf;
143 case SIEVE_REJECT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.3.4.3"); return buf;
144 case mtaTransmittedVolume: snprintf(buf,buflen,"1.3.6.1.2.1.28.1.%d.6",varvalue(VARIABLE_MTA)); return buf;
145 case mtaTransmittedMessages: snprintf(buf,buflen,"1.3.6.1.2.1.28.1.%d.3",varvalue(VARIABLE_MTA)); return buf;
145 case AUTHENTICATION_NO: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.2.2.%d.1",varvalue(VARIABLE_AUTH)); return buf;
146146
147147 }
148148
2020
2121
2222
23 #define SNMPDEFINE_cmusieve "1.3.6.1.4.1.3.2.2.3.3"
24 #define SNMPDEFINE_mgmt "1.3.6.1.2"
25 #define SNMPDEFINE_mtamib "1.3.6.1.2.1.28"
26 #define SNMPDEFINE_cmulmtp "1.3.6.1.4.1.3.2.2.3.2"
27 #define SNMPDEFINE_cmutree "1.3.6.1.4.1.3.2.2.3"
2328 #define SNMPDEFINE_mib2 "1.3.6.1.2.1"
24 #define SNMPDEFINE_cmutree "1.3.6.1.4.1.3.2.2.3"
25 #define SNMPDEFINE_mtamib "1.3.6.1.2.1.28"
26 #define SNMPDEFINE_mgmt "1.3.6.1.2"
27 #define SNMPDEFINE_cmusieve "1.3.6.1.4.1.3.2.2.3.3"
28 #define SNMPDEFINE_cmulmtp "1.3.6.1.4.1.3.2.2.3.2"
2929
3030
3131
6767
6868 typedef enum {
6969
70 TOTAL_CONNECTIONS,
7071 mtaReceivedMessages,
72 SIEVE_VACATION_TOTAL,
73 SIEVE_VACATION_REPLIED,
74 SIEVE_NOTIFY,
75 SIEVE_MESSAGES_PROCESSED,
76 SIEVE_FILEINTO,
77 SIEVE_KEEP,
78 mtaReceivedRecipients,
79 SIEVE_REDIRECT,
80 mtaTransmittedMessages,
81 SIEVE_DISCARD,
7182 ACTIVE_CONNECTIONS,
72 TOTAL_CONNECTIONS,
73 SIEVE_FILEINTO,
74 SIEVE_DISCARD,
75 SIEVE_VACATION_REPLIED,
76 mtaReceivedRecipients,
83 mtaReceivedVolume,
84 SIEVE_REJECT,
85 mtaSuccessfulConvertedMessages,
86 mtaTransmittedVolume,
7787 AUTHENTICATION_YES,
78 mtaReceivedVolume,
79 SIEVE_MESSAGES_PROCESSED,
80 AUTHENTICATION_NO,
81 mtaSuccessfulConvertedMessages,
82 SIEVE_NOTIFY,
83 SIEVE_VACATION_TOTAL,
8488 SERVER_UPTIME,
8589 SERVER_NAME_VERSION,
86 SIEVE_KEEP,
87 SIEVE_REDIRECT,
88 SIEVE_REJECT,
89 mtaTransmittedVolume,
90 mtaTransmittedMessages
90 AUTHENTICATION_NO
9191 } lmtpstats_t;
9292
9393
554554 database_init();
555555
556556 #ifdef HAVE_SSL
557 #if OPENSSL_VERSION_NUMBER < 0x10100000L
557558 CRYPTO_thread_setup();
559 #endif
558560 #endif
559561
560562 if (!masterp) {
603605 void service_abort(int error)
604606 {
605607 #ifdef HAVE_SSL
608 #if OPENSSL_VERSION_NUMBER < 0x10100000L
606609 CRYPTO_thread_cleanup();
610 #endif
607611 #endif
608612 shut_down(error);
609613 }
8484
8585 switch (evt) {
8686
87 case FETCH_COUNT: return "Number of fetch";
87 case SERVER_UPTIME: return "Amount of time server has been running";
88 case SUBSCRIBE_COUNT: return "Number of subscribe";
89 case SEARCH_COUNT: return "Number of search";
90 case EXPUNGE_COUNT: return "Number of expunge";
91 case LSUB_COUNT: return "Number of lsub";
92 case IDLE_COUNT: return "Number of idle";
93 case LOGIN_COUNT: return "Number of login";
94 case SETANNOTATION_COUNT: return "Number of setannotation";
8895 case CLOSE_COUNT: return "Number of close";
89 case CAPABILITY_COUNT: return "Number of capability";
96 case SELECT_COUNT: return "Number of select";
97 case SCAN_COUNT: return "Number of list";
98 case GETANNOTATION_COUNT: return "Number of getannotation";
99 case AUTHENTICATION_NO: return "Failed authentication of given mechanism";
100 case NAMESPACE_COUNT: return "Number of namespace";
101 case GETUIDS_COUNT: return "Number of getuids";
102 case NOOP_COUNT: return "Number of noop";
103 case SETACL_COUNT: return "Number of setacl";
90104 case UNSUBSCRIBE_COUNT: return "Number of unsubscribe";
91 case MYRIGHTS_COUNT: return "Number of myrights";
92 case CHECK_COUNT: return "Number of check";
93 case TOTAL_CONNECTIONS: return "Count of the total number of connections since the beginning of time";
94 case STARTTLS_COUNT: return "Number of starttls";
95 case COMPRESS_COUNT: return "Number of compress";
96 case APPEND_COUNT: return "Number of append";
97 case LOGIN_COUNT: return "Number of login";
98 case LOGOUT_COUNT: return "Number of logout";
105 case UNSELECT_COUNT: return "Number of unselect";
106 case EXAMINE_COUNT: return "Number of examine";
107 case STATUS_COUNT: return "Number of status";
108 case SORT_COUNT: return "Number of sort";
109 case GETACL_COUNT: return "Number of getacl";
99110 case LISTRIGHTS_COUNT: return "Number of listrights";
100 case SETANNOTATION_COUNT: return "Number of setannotation";
101 case AUTHENTICATE_COUNT: return "Number of authenticate";
102 case EXPUNGE_COUNT: return "Number of expunge";
103 case NOOP_COUNT: return "Number of noop";
111 case SERVER_NAME_VERSION: return "Name and version string for server";
112 case PARTIAL_COUNT: return "Number of partial";
113 case FIND_COUNT: return "Number of find";
104114 case GETQUOTA_COUNT: return "Number of getquota";
105115 case BBOARD_COUNT: return "Number of bboard";
106 case SETACL_COUNT: return "Number of setacl";
107 case FIND_COUNT: return "Number of find";
116 case THREAD_COUNT: return "Number of thread";
117 case GETQUOTAROOT_COUNT: return "Number of getquotaroot";
118 case ACTIVE_CONNECTIONS: return "Count of the active number of connections";
119 case CAPABILITY_COUNT: return "Number of capability";
108120 case LIST_COUNT: return "Number of list";
121 case FETCH_COUNT: return "Number of fetch";
122 case AUTHENTICATE_COUNT: return "Number of authenticate";
123 case AUTHENTICATION_YES: return "Successful authentication of given mechanism";
124 case APPEND_COUNT: return "Number of append";
125 case LOGOUT_COUNT: return "Number of logout";
126 case STARTTLS_COUNT: return "Number of starttls";
127 case SETQUOTA_COUNT: return "Number of setquota";
128 case DELETEACL_COUNT: return "Number of deleteacl";
129 case COMPRESS_COUNT: return "Number of compress";
130 case TOTAL_CONNECTIONS: return "Count of the total number of connections since the beginning of time";
131 case ID_COUNT: return "Number of id";
132 case DELETE_COUNT: return "Number of delete";
133 case CHECK_COUNT: return "Number of check";
134 case MYRIGHTS_COUNT: return "Number of myrights";
135 case CREATE_COUNT: return "Number of create";
136 case COPY_COUNT: return "Number of copy";
109137 case STORE_COUNT: return "Number of store";
110 case UNSELECT_COUNT: return "Number of unselect";
111 case SORT_COUNT: return "Number of sort";
112 case AUTHENTICATION_YES: return "Successful authentication of given mechanism";
113 case SELECT_COUNT: return "Number of select";
114 case EXAMINE_COUNT: return "Number of examine";
115 case NAMESPACE_COUNT: return "Number of namespace";
116 case SEARCH_COUNT: return "Number of search";
117 case LSUB_COUNT: return "Number of lsub";
118 case SCAN_COUNT: return "Number of list";
119 case SERVER_UPTIME: return "Amount of time server has been running";
120 case DELETE_COUNT: return "Number of delete";
121 case DELETEACL_COUNT: return "Number of deleteacl";
122 case THREAD_COUNT: return "Number of thread";
123 case ID_COUNT: return "Number of id";
124 case CREATE_COUNT: return "Number of create";
125 case AUTHENTICATION_NO: return "Failed authentication of given mechanism";
126 case COPY_COUNT: return "Number of copy";
127 case GETACL_COUNT: return "Number of getacl";
128 case PARTIAL_COUNT: return "Number of partial";
129138 case RENAME_COUNT: return "Number of rename";
130 case GETUIDS_COUNT: return "Number of getuids";
131 case ACTIVE_CONNECTIONS: return "Count of the active number of connections";
132 case SETQUOTA_COUNT: return "Number of setquota";
133 case STATUS_COUNT: return "Number of status";
134 case SERVER_NAME_VERSION: return "Name and version string for server";
135 case IDLE_COUNT: return "Number of idle";
136 case SUBSCRIBE_COUNT: return "Number of subscribe";
137 case GETQUOTAROOT_COUNT: return "Number of getquotaroot";
138 case GETANNOTATION_COUNT: return "Number of getannotation";
139139
140140 }
141141
153153
154154 switch (evt) {
155155
156 case FETCH_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.13"); return buf;
156 case SERVER_UPTIME: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.3.1"); return buf;
157 case SUBSCRIBE_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.37"); return buf;
158 case SEARCH_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.36"); return buf;
159 case EXPUNGE_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.11"); return buf;
160 case LSUB_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.25"); return buf;
161 case IDLE_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.21"); return buf;
162 case LOGIN_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.22"); return buf;
163 case SETANNOTATION_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.39"); return buf;
157164 case CLOSE_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.7"); return buf;
158 case CAPABILITY_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.3"); return buf;
165 case SELECT_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.35"); return buf;
166 case SCAN_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.32"); return buf;
167 case GETANNOTATION_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.16"); return buf;
168 case AUTHENTICATION_NO: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.2.%d.1",varvalue(VARIABLE_AUTH)); return buf;
169 case NAMESPACE_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.29"); return buf;
170 case GETUIDS_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.19"); return buf;
171 case NOOP_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.28"); return buf;
172 case SETACL_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.38"); return buf;
159173 case UNSUBSCRIBE_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.44"); return buf;
160 case MYRIGHTS_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.27"); return buf;
161 case CHECK_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.4"); return buf;
162 case TOTAL_CONNECTIONS: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.1.1"); return buf;
163 case STARTTLS_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.33"); return buf;
164 case COMPRESS_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.8"); return buf;
165 case APPEND_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.1"); return buf;
166 case LOGIN_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.22"); return buf;
167 case LOGOUT_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.23"); return buf;
174 case UNSELECT_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.45"); return buf;
175 case EXAMINE_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.12"); return buf;
176 case STATUS_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.41"); return buf;
177 case SORT_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.42"); return buf;
178 case GETACL_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.15"); return buf;
168179 case LISTRIGHTS_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.26"); return buf;
169 case SETANNOTATION_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.39"); return buf;
170 case AUTHENTICATE_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.0"); return buf;
171 case EXPUNGE_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.11"); return buf;
172 case NOOP_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.28"); return buf;
180 case SERVER_NAME_VERSION: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.3.0"); return buf;
181 case PARTIAL_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.30"); return buf;
182 case FIND_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.14"); return buf;
173183 case GETQUOTA_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.17"); return buf;
174184 case BBOARD_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.2"); return buf;
175 case SETACL_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.38"); return buf;
176 case FIND_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.14"); return buf;
185 case THREAD_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.43"); return buf;
186 case GETQUOTAROOT_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.18"); return buf;
187 case ACTIVE_CONNECTIONS: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.1.2"); return buf;
188 case CAPABILITY_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.3"); return buf;
177189 case LIST_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.24"); return buf;
190 case FETCH_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.13"); return buf;
191 case AUTHENTICATE_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.0"); return buf;
192 case AUTHENTICATION_YES: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.2.%d.0",varvalue(VARIABLE_AUTH)); return buf;
193 case APPEND_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.1"); return buf;
194 case LOGOUT_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.23"); return buf;
195 case STARTTLS_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.33"); return buf;
196 case SETQUOTA_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.40"); return buf;
197 case DELETEACL_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.10"); return buf;
198 case COMPRESS_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.8"); return buf;
199 case TOTAL_CONNECTIONS: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.1.1"); return buf;
200 case ID_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.20"); return buf;
201 case DELETE_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.9"); return buf;
202 case CHECK_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.4"); return buf;
203 case MYRIGHTS_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.27"); return buf;
204 case CREATE_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.6"); return buf;
205 case COPY_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.5"); return buf;
178206 case STORE_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.34"); return buf;
179 case UNSELECT_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.45"); return buf;
180 case SORT_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.42"); return buf;
181 case AUTHENTICATION_YES: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.2.%d.0",varvalue(VARIABLE_AUTH)); return buf;
182 case SELECT_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.35"); return buf;
183 case EXAMINE_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.12"); return buf;
184 case NAMESPACE_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.29"); return buf;
185 case SEARCH_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.36"); return buf;
186 case LSUB_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.25"); return buf;
187 case SCAN_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.32"); return buf;
188 case SERVER_UPTIME: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.3.1"); return buf;
189 case DELETE_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.9"); return buf;
190 case DELETEACL_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.10"); return buf;
191 case THREAD_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.43"); return buf;
192 case ID_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.20"); return buf;
193 case CREATE_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.6"); return buf;
194 case AUTHENTICATION_NO: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.2.%d.1",varvalue(VARIABLE_AUTH)); return buf;
195 case COPY_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.5"); return buf;
196 case GETACL_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.15"); return buf;
197 case PARTIAL_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.30"); return buf;
198207 case RENAME_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.31"); return buf;
199 case GETUIDS_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.19"); return buf;
200 case ACTIVE_CONNECTIONS: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.1.2"); return buf;
201 case SETQUOTA_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.40"); return buf;
202 case STATUS_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.41"); return buf;
203 case SERVER_NAME_VERSION: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.3.0"); return buf;
204 case IDLE_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.21"); return buf;
205 case SUBSCRIBE_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.37"); return buf;
206 case GETQUOTAROOT_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.18"); return buf;
207 case GETANNOTATION_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.16"); return buf;
208208
209209 }
210210
2020
2121
2222
23 #define SNMPDEFINE_cmuimap "1.3.6.1.4.1.3.2.2.3.1"
2324 #define SNMPDEFINE_cmutree "1.3.6.1.4.1.3.2.2.3"
24 #define SNMPDEFINE_cmuimap "1.3.6.1.4.1.3.2.2.3.1"
2525
2626
2727
6363
6464 typedef enum {
6565
66 FETCH_COUNT,
66 SERVER_UPTIME,
67 SUBSCRIBE_COUNT,
68 SEARCH_COUNT,
69 EXPUNGE_COUNT,
70 LSUB_COUNT,
71 IDLE_COUNT,
72 LOGIN_COUNT,
73 SETANNOTATION_COUNT,
6774 CLOSE_COUNT,
68 CAPABILITY_COUNT,
75 SELECT_COUNT,
76 SCAN_COUNT,
77 GETANNOTATION_COUNT,
78 AUTHENTICATION_NO,
79 NAMESPACE_COUNT,
80 GETUIDS_COUNT,
81 NOOP_COUNT,
82 SETACL_COUNT,
6983 UNSUBSCRIBE_COUNT,
70 MYRIGHTS_COUNT,
71 CHECK_COUNT,
72 TOTAL_CONNECTIONS,
73 STARTTLS_COUNT,
74 COMPRESS_COUNT,
75 APPEND_COUNT,
76 LOGIN_COUNT,
77 LOGOUT_COUNT,
84 UNSELECT_COUNT,
85 EXAMINE_COUNT,
86 STATUS_COUNT,
87 SORT_COUNT,
88 GETACL_COUNT,
7889 LISTRIGHTS_COUNT,
79 SETANNOTATION_COUNT,
80 AUTHENTICATE_COUNT,
81 EXPUNGE_COUNT,
82 NOOP_COUNT,
90 SERVER_NAME_VERSION,
91 PARTIAL_COUNT,
92 FIND_COUNT,
8393 GETQUOTA_COUNT,
8494 BBOARD_COUNT,
85 SETACL_COUNT,
86 FIND_COUNT,
95 THREAD_COUNT,
96 GETQUOTAROOT_COUNT,
97 ACTIVE_CONNECTIONS,
98 CAPABILITY_COUNT,
8799 LIST_COUNT,
100 FETCH_COUNT,
101 AUTHENTICATE_COUNT,
102 AUTHENTICATION_YES,
103 APPEND_COUNT,
104 LOGOUT_COUNT,
105 STARTTLS_COUNT,
106 SETQUOTA_COUNT,
107 DELETEACL_COUNT,
108 COMPRESS_COUNT,
109 TOTAL_CONNECTIONS,
110 ID_COUNT,
111 DELETE_COUNT,
112 CHECK_COUNT,
113 MYRIGHTS_COUNT,
114 CREATE_COUNT,
115 COPY_COUNT,
88116 STORE_COUNT,
89 UNSELECT_COUNT,
90 SORT_COUNT,
91 AUTHENTICATION_YES,
92 SELECT_COUNT,
93 EXAMINE_COUNT,
94 NAMESPACE_COUNT,
95 SEARCH_COUNT,
96 LSUB_COUNT,
97 SCAN_COUNT,
98 SERVER_UPTIME,
99 DELETE_COUNT,
100 DELETEACL_COUNT,
101 THREAD_COUNT,
102 ID_COUNT,
103 CREATE_COUNT,
104 AUTHENTICATION_NO,
105 COPY_COUNT,
106 GETACL_COUNT,
107 PARTIAL_COUNT,
108 RENAME_COUNT,
109 GETUIDS_COUNT,
110 ACTIVE_CONNECTIONS,
111 SETQUOTA_COUNT,
112 STATUS_COUNT,
113 SERVER_NAME_VERSION,
114 IDLE_COUNT,
115 SUBSCRIBE_COUNT,
116 GETQUOTAROOT_COUNT,
117 GETANNOTATION_COUNT
117 RENAME_COUNT
118118 } pushstats_t;
119119
120120
165165 }
166166 for (i = 0; i < len; i++) {
167167 output[i] &= tmp[i];
168 }
169
170 if (/* version == */1) {
171 char *lcs = xstrdup(s);
172 lcase(lcs);
173 memset(tmp, 0, len);
174 if (squat_search_execute(index, s, strlen(s), fill_with_hits, &r)
175 != SQUAT_OK) {
176 free(lcs);
177 if (squat_get_last_error() == SQUAT_ERR_SEARCH_STRING_TOO_SHORT)
178 return 1; /* The rest of the search is still viable */
179 syslog(LOG_DEBUG, "SQUAT string list search failed on string %s "
180 "with part types %s", s, part_types);
181 return 0;
182 }
183 for (i = 0; i < len; i++) {
184 output[i] &= tmp[i];
185 }
186 free(lcs);
168187 }
169188
170189 strs = strs->next;
26202620 /* Check for shutdown file */
26212621 if (sync_shutdown_file && !stat(sync_shutdown_file, &sbuf)) {
26222622 unlink(sync_shutdown_file);
2623 /* Have to exit with r == 0 or do_daemon() will call us again.
2624 * The value of r is unknown from calls to sync_log_reader_begin() below.
2625 */
2626 r = 0;
26232627 break;
26242628 }
26252629
205205 }
206206 }
207207
208 #if OPENSSL_VERSION_NUMBER < 0x10100000L
208209 /* taken from OpenSSL apps/s_cb.c
209210 not thread safe! */
210211 static RSA *tmp_rsa_cb(SSL * s __attribute__((unused)),
218219 }
219220 return (rsa_tmp);
220221 }
222 #endif
223
224 #if OPENSSL_VERSION_NUMBER < 0x10100000L
225 /* replacements for new 1.1 API accessors */
226 /* XXX probably put these somewhere central */
227 static int DH_set0_pqg(DH *dh, BIGNUM *p, BIGNUM *q, BIGNUM *g)
228 {
229 if (p == NULL || g == NULL) return 0;
230 dh->p = p;
231 dh->q = q; /* optional */
232 dh->g = g;
233 return 1;
234 }
235 #endif
221236
222237 #if (OPENSSL_VERSION_NUMBER >= 0x0090800fL)
223238 /* Logic copied from OpenSSL apps/s_server.c: give the TLS context
224239 * DH params to work with DHE-* cipher suites. Hardcoded fallback
225240 * in case no DH params in server_key or server_cert.
241 * Modified quite a bit for openssl 1.1.0 compatibility.
242 * XXX we might be able to just replace this with DH_get_1024_160?
243 * XXX the apps/s_server.c example doesn't use this anymore at all.
226244 */
227245 static DH *get_dh1024(void)
228246 {
229247 /* Second Oakley group 1024-bits MODP group from RFC2409 */
230 DH *dh=NULL;
231
232 if ((dh=DH_new()) == NULL) return(NULL);
233 dh->p=get_rfc2409_prime_1024(NULL);
234 dh->g=NULL;
235 BN_dec2bn(&(dh->g), "2");
236 if ((dh->p == NULL) || (dh->g == NULL)) return(NULL);
237
238 return(dh);
239
240 }
248 DH *dh;
249 BIGNUM *p = NULL, *g = NULL;
250
251 dh = DH_new();
252 if (!dh) return NULL;
253
254 p = get_rfc2409_prime_1024(NULL);
255 BN_dec2bn(&g, "2");
256
257 if (DH_set0_pqg(dh, p, NULL, g))
258 return dh;
259
260 if (g) BN_free(g);
261 if (p) BN_free(p);
262 DH_free(dh);
263
264 return NULL;
265 }
266
241267 static DH *load_dh_param(const char *keyfile, const char *certfile)
242268 {
243269 DH *ret=NULL;
291317 verify_error = X509_V_ERR_CERT_CHAIN_TOO_LONG;
292318 }
293319 }
294 switch (ctx->error) {
320 switch (err) {
295321 case X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT:
296 X509_NAME_oneline(X509_get_issuer_name(ctx->current_cert), buf, sizeof(buf));
322 X509_NAME_oneline(X509_get_issuer_name(err_cert), buf, sizeof(buf));
297323 syslog(LOG_NOTICE, "issuer= %s", buf);
298324 break;
299325 case X509_V_ERR_CERT_NOT_YET_VALID:
462488 time_t expire;
463489 int ret = -1;
464490 unsigned char *asn;
491 const unsigned char *session_id = NULL;
492 unsigned int session_id_length = 0;
465493
466494 assert(sess);
467495
487515
488516 if (len) {
489517 /* store the session in our database */
518
519 session_id = SSL_SESSION_get_id(sess, &session_id_length);
490520 do {
491 ret = cyrusdb_store(sessdb, (const char *) sess->session_id,
492 sess->session_id_length,
521 ret = cyrusdb_store(sessdb, (const char *) session_id,
522 session_id_length,
493523 (const char *) data, len + sizeof(time_t), NULL);
494524 } while (ret == CYRUSDB_AGAIN);
495525 }
500530 if (var_imapd_tls_loglevel > 0) {
501531 unsigned int i;
502532 char idstr[SSL_MAX_SSL_SESSION_ID_LENGTH*2 + 1];
503 for (i = 0; i < sess->session_id_length; i++) {
504 sprintf(idstr+i*2, "%02X", sess->session_id[i]);
533 for (i = 0; i < session_id_length; i++) {
534 sprintf(idstr+i*2, "%02X", session_id[i]);
505535 }
506536 syslog(LOG_DEBUG, "new TLS session: id=%s, expire=%s, status=%s",
507537 idstr, ctime(&expire), ret ? "failed" : "ok");
513543 /*
514544 * Function for removing a session from our database.
515545 */
516 static void remove_session(unsigned char *id, int idlen)
546 static void remove_session(const unsigned char *id, int idlen)
517547 {
518548 int ret;
519549
544574 static void remove_session_cb(SSL_CTX *ctx __attribute__((unused)),
545575 SSL_SESSION *sess)
546576 {
577 const unsigned char *session_id = NULL;
578 unsigned int session_id_length = 0;
579
547580 assert(sess);
548581
549 remove_session(sess->session_id, sess->session_id_length);
582 session_id = SSL_SESSION_get_id(sess, &session_id_length);
583
584 remove_session(session_id, session_id_length);
550585 }
551586
552587 /*
555590 * called, also when session caching was disabled. We lookup the
556591 * session in our database in case it was stored by another process.
557592 */
593 #if OPENSSL_VERSION_NUMBER >= 0x10100000L
594 static SSL_SESSION *get_session_cb(SSL *ssl __attribute__((unused)),
595 const unsigned char *id, int idlen, int *copy)
596 #else
558597 static SSL_SESSION *get_session_cb(SSL *ssl __attribute__((unused)),
559598 unsigned char *id, int idlen, int *copy)
599 #endif
560600 {
561601 int ret;
562602 const char *data = NULL;
835875 return (-1);
836876 }
837877
878 #if OPENSSL_VERSION_NUMBER < 0x10100000L
838879 SSL_CTX_set_tmp_rsa_callback(s_ctx, tmp_rsa_cb);
880 #endif
839881
840882 #if (OPENSSL_VERSION_NUMBER >= 0x0090800fL)
841883 /* Load DH params for DHE-* key exchanges */
14381480 }
14391481 }
14401482
1483 #if OPENSSL_VERSION_NUMBER < 0x10100000L
14411484 SSL_CTX_set_tmp_rsa_callback(c_ctx, tmp_rsa_cb);
1485 #endif
14421486
14431487 verify_depth = verifydepth;
14441488 SSL_CTX_set_verify(c_ctx, verify_flags, verify_callback);
1212 #include "tls_th-lock.h"
1313
1414 #ifdef HAVE_SSL
15
16 /*
17 * This entire interface is obsoleted by OpenSSL 1.1.0.
18 * Keep it around for a while for backward compatibility though.
19 */
20 #if OPENSSL_VERSION_NUMBER < 0x10100000L
1521
1622 static pthread_mutex_t *lock_cs;
1723 static long *lock_count;
6874 return(ret);
6975 }
7076
77 #endif /* OPENSSL_VERSION_NUMBER */
78
7179 #endif /* HAVE_SSL */
88
99 #ifdef HAVE_SSL
1010
11 /*
12 * This entire interface is obsoleted by OpenSSL 1.1.0.
13 * Keep it around for a while for backward compatibility though.
14 */
15 #if OPENSSL_VERSION_NUMBER < 0x10100000L
16
1117 void CRYPTO_thread_setup(void);
1218 void CRYPTO_thread_cleanup(void);
1319 /*
1723 void pthreads_locking_callback(int mode,int type,char *file,int line);
1824 unsigned long pthreads_thread_id(void );
1925
26 #endif /* OPENSSL_VERSION_NUMBER */
27
2028 #endif /* HAVE_SSL */
2129 #endif /* INCLUDED_TLS_TH_LOCK_H */
5555 #include "xcal.h"
5656
5757
58 extern icalvalue_kind icalproperty_kind_to_value_kind(icalproperty_kind kind);
59 extern const char* icalrecur_freq_to_string(icalrecurrencetype_frequency kind);
60 extern const char* icalrecur_weekday_to_string(icalrecurrencetype_weekday kind);
61 #ifdef HAVE_RSCALE
62 extern const char* icalrecur_skip_to_string(icalrecurrencetype_skip kind);
63 #endif
64
65
6658 /*
6759 * Determine the type (kind) of an iCalendar property value.
6860 */
159151 }
160152
161153
162 static const struct {
163 const char *str;
164 int limit;
165 size_t offset;
166 } recurmap[] =
167 {
168 { "bysecond", ICAL_BY_SECOND_SIZE,
169 offsetof(struct icalrecurrencetype, by_second) },
170 { "byminute", ICAL_BY_MINUTE_SIZE,
171 offsetof(struct icalrecurrencetype, by_minute) },
172 { "byhour", ICAL_BY_HOUR_SIZE,
173 offsetof(struct icalrecurrencetype, by_hour) },
174 { "byday", ICAL_BY_DAY_SIZE,
175 offsetof(struct icalrecurrencetype, by_day) },
176 { "bymonthday", ICAL_BY_MONTHDAY_SIZE,
177 offsetof(struct icalrecurrencetype, by_month_day) },
178 { "byyearday", ICAL_BY_YEARDAY_SIZE,
179 offsetof(struct icalrecurrencetype, by_year_day) },
180 { "byweekno", ICAL_BY_WEEKNO_SIZE,
181 offsetof(struct icalrecurrencetype, by_week_no) },
182 { "bymonth", ICAL_BY_MONTH_SIZE,
183 offsetof(struct icalrecurrencetype, by_month) },
184 { "bysetpos", ICAL_BY_SETPOS_SIZE,
185 offsetof(struct icalrecurrencetype, by_set_pos) },
186 { 0, 0, 0 },
187 };
188
189
190154 /*
191155 * Add iCalendar recur-rule-parts to a structured element.
192156 */
195159 void (*add_str)(void *, const char *,
196160 const char *))
197161 {
198 int i, j;
199
200 if (recur->freq == ICAL_NO_RECURRENCE) return;
201
202 add_str(obj, "freq", icalrecur_freq_to_string(recur->freq));
203
204 #ifdef HAVE_RSCALE
205 if (*recur->rscale) {
206 add_str(obj, "rscale", recur->rscale);
207
208 if (recur->skip != ICAL_SKIP_BACKWARD)
209 add_str(obj, "skip", icalrecur_skip_to_string(recur->skip));
210 }
211 #endif
212
213 /* until and count are mutually exclusive */
214 if (recur->until.year) {
215 add_str(obj, "until", icaltime_as_iso_string(recur->until));
216 }
217 else if (recur->count) add_int(obj, "count", recur->count);
218
219 if (recur->interval != 1) add_int(obj, "interval", recur->interval);
220
221 /* Monday is the default, so no need to include it */
222 if (recur->week_start != ICAL_MONDAY_WEEKDAY &&
223 recur->week_start != ICAL_NO_WEEKDAY) {
224 const char *daystr;
225
226 daystr = icalrecur_weekday_to_string(
227 icalrecurrencetype_day_day_of_week(recur->week_start));
228 add_str(obj, "wkst", daystr);
229 }
230
231 /* The BY* parameters can each take a list of values.
232 *
233 * Each of the lists is terminated with the value
234 * ICAL_RECURRENCE_ARRAY_MAX unless the the list is full.
235 */
236 for (j = 0; recurmap[j].str; j++) {
237 short *array = (short *)((size_t) recur + recurmap[j].offset);
238 int limit = recurmap[j].limit - 1;
239
240 for (i = 0; i < limit && array[i] != ICAL_RECURRENCE_ARRAY_MAX; i++) {
241 char temp[20];
242
243 if (j == 3) { /* BYDAY */
244 const char *daystr;
245 int pos;
246
247 daystr = icalrecur_weekday_to_string(
248 icalrecurrencetype_day_day_of_week(array[i]));
249 pos = icalrecurrencetype_day_position(array[i]);
250
251 if (pos != 0) {
252 snprintf(temp, sizeof(temp), "%d%s", pos, daystr);
253 daystr = temp;
254 }
255
256 add_str(obj, recurmap[j].str, daystr);
257 }
258 #ifdef HAVE_RSCALE
259 else if (j == 7 && ICAL_RSCALE_IS_LEAP_MONTH(array[i])) {
260 snprintf(temp, sizeof(temp), "%dL", ICAL_RSCALE_MONTH_NUM(array[i]));
261 add_str(obj, recurmap[j].str, temp);
262 }
263 #endif
264 else add_int(obj, recurmap[j].str, array[i]);
265 }
266 }
162 char *rrule, *rpart;
163 tok_t rparts;
164
165 /* generate an iCal RRULE string */
166 rrule = icalrecurrencetype_as_string_r(recur);
167
168 /* split string into rparts & values */
169 tok_initm(&rparts, rrule, "=;", TOK_TRIMLEFT|TOK_TRIMRIGHT);
170 while ((rpart = tok_next(&rparts))) {
171 if (!strcmp(rpart, "UNTIL")) {
172 /* need to translate date format to ISO */
173 struct icaltimetype until = icaltime_from_string(tok_next(&rparts));
174
175 add_str(obj, "until", icaltime_as_iso_string(until));
176 }
177 else {
178 /* assume the rpart has multiple values - split them */
179 tok_t vlist;
180 char *val, *p;
181
182 tok_init(&vlist, tok_next(&rparts), ",",
183 TOK_TRIMLEFT|TOK_TRIMRIGHT);
184 while ((val = tok_next(&vlist))) {
185 if (add_int) {
186 /* try converting value to integer */
187 int n = strtol(val, &p, 10);
188
189 if (n && !*p) {
190 add_int(obj, lcase(rpart), n);
191 continue;
192 }
193 }
194
195 add_str(obj, lcase(rpart), val);
196 }
197 tok_fini(&vlist);
198 }
199 }
200 tok_fini(&rparts);
201
202 free(rrule);
267203 }
268204
269205
293229 /*
294230 * Add an iCalendar recur-rule-part to a XML recur element.
295231 */
296 static void icalrecur_add_int_as_xml_element(void *xrecur, const char *rpart,
297 int i)
298 {
299 char ibuf[20];
300
301 snprintf(ibuf, sizeof(ibuf), "%d", i);
302 xmlNewTextChild((xmlNodePtr) xrecur, NULL, BAD_CAST rpart, BAD_CAST ibuf);
303 }
304
305232 static void icalrecur_add_string_as_xml_element(void *xrecur, const char *rpart,
306233 const char *s)
307234 {
326253 kind_string = icalparameter_get_xname(param);
327254 break;
328255
256 #ifdef HAVE_IANA_PARAMS
329257 case ICAL_IANA_PARAMETER:
330258 kind_string = icalparameter_get_iana_name(param);
331259 break;
260 #endif
332261
333262 default:
334263 kind_string = icalparameter_kind_to_string(kind);
437366 case ICAL_RECUR_VALUE: {
438367 struct icalrecurrencetype recur = icalvalue_get_recur(value);
439368
440 icalrecurrencetype_add_as_xxx(&recur, xtype,
441 &icalrecur_add_int_as_xml_element,
442 &icalrecur_add_string_as_xml_element);
443 return;
369 icalrecurrencetype_add_as_xxx(&recur, xtype, NULL,
370 &icalrecur_add_string_as_xml_element);
371 return;
444372 }
445373
446374 case ICAL_REQUESTSTATUS_VALUE: {
661589 }
662590
663591
664 /* Add an iCalendar recurrence rule part to icalrecurrencetype.
665 *
666 * XXX The following structure is opaque libical, but for some stupid
667 * reason the icalrecur_add_by*rules() functions require it even though
668 * all they use is the rt field. MUST keep this in sync with icalrecur.c
669 */
670 struct icalrecur_parser {
671 const char* rule;
672 char* copy;
673 char* this_clause;
674 char* next_clause;
675
676 struct icalrecurrencetype rt;
677 };
678
679 extern icalrecurrencetype_frequency icalrecur_string_to_freq(const char* str);
680 #ifdef HAVE_RSCALE
681 extern icalrecurrencetype_skip icalrecur_string_to_skip(const char* str);
682 #endif
683 extern void icalrecur_add_byrules(struct icalrecur_parser *parser, short *array,
684 int size, char* vals);
685 extern void icalrecur_add_bydayrules(struct icalrecur_parser *parser,
686 const char* vals);
687
688 struct icalrecurrencetype *icalrecur_add_rule(struct icalrecurrencetype **rt,
689 const char *rpart, void *data,
690 int (*get_int)(void *),
691 const char* (*get_str)(void *))
692 {
693 static struct icalrecur_parser parser;
694
695 if (!*rt) {
696 /* Initialize */
697 *rt = &parser.rt;
698 icalrecurrencetype_clear(*rt);
699 }
700
701 if (!strcmp(rpart, "freq")) {
702 (*rt)->freq = icalrecur_string_to_freq(get_str(data));
703 }
704 #ifdef HAVE_RSCALE
705 else if (!strcmp(rpart, "rscale")) {
706 (*rt)->rscale = icalmemory_tmp_copy(get_str(data));
707 }
708 else if (!strcmp(rpart, "skip")) {
709 (*rt)->skip = icalrecur_string_to_skip(get_str(data));
710 }
711 #endif
712 else if (!strcmp(rpart, "count")) {
713 (*rt)->count = get_int(data);
714 }
715 else if (!strcmp(rpart, "until")) {
716 (*rt)->until = icaltime_from_string(get_str(data));
717 }
718 else if (!strcmp(rpart, "interval")) {
719 (*rt)->interval = get_int(data);
720 if ((*rt)->interval < 1) (*rt)->interval = 1; /* MUST be >= 1 */
721 }
722 else if (!strcmp(rpart, "wkst")) {
723 (*rt)->week_start = icalrecur_string_to_weekday(get_str(data));
724 }
725 else if (!strcmp(rpart, "byday")) {
726 icalrecur_add_bydayrules(&parser, get_str(data));
727 }
728 else {
729 int i;
730
731 for (i = 0; recurmap[i].str && strcmp(rpart, recurmap[i].str); i++);
732
733 if (recurmap[i].str) {
734 short *array =
735 (short *)((size_t) *rt + recurmap[i].offset);
736 int limit = recurmap[i].limit;
737
738 icalrecur_add_byrules(&parser, array, limit,
739 icalmemory_tmp_copy(get_str(data)));
740 }
741 else {
742 syslog(LOG_WARNING, "Unknown recurrence rule-part: %s", rpart);
743 icalrecurrencetype_clear(*rt);
744 *rt = NULL;
745 }
746 }
747
748 #ifdef HAVE_RSCALE
749 /* When "RSCALE" is not present the default is "YES".
750 When "RSCALE" is present the default is "BACKWARD". */
751 if (!(*rt)->rscale) (*rt)->skip = ICAL_SKIP_YES;
752 else if ((*rt)->skip == ICAL_SKIP_NO) (*rt)->skip = ICAL_SKIP_BACKWARD;
753 #endif
754
755 return *rt;
756 }
757
758
759 int xmlElementContent_to_int(void *content)
760 {
761 return atoi((const char *) content);
762 }
763
764 const char *xmlElementContent_to_str(void *content)
765 {
766 return (const char *) content;
592 static void append_byrule(char *byrule, struct buf *vals, struct buf *rrule)
593 {
594 /* append BY* rule to RRULE buffer */
595 buf_printf(rrule, ";%s=%s", ucase(byrule), buf_cstring(vals));
596
597 /* free the vals buffer */
598 buf_free(vals);
599 free(vals);
767600 }
768601
769602
867700 }
868701
869702 case ICAL_RECUR_VALUE: {
870 struct icalrecurrencetype *rt = NULL;
871
872 for (node = xmlFirstElementChild(xtype); node;
873 node = xmlNextElementSibling(node)) {
874
875 content = xmlNodeGetContent(node);
876 rt = icalrecur_add_rule(&rt, (const char *) node->name, content,
877 &xmlElementContent_to_int,
878 &xmlElementContent_to_str);
879 xmlFree(content);
880 content = NULL;
881 if (!rt) break;
882 }
883
884 if (rt && rt->freq != ICAL_NO_RECURRENCE)
885 value = icalvalue_new_recur(*rt);
703 struct buf rrule = BUF_INITIALIZER;
704 struct hash_table byrules;
705 struct icalrecurrencetype rt;
706 char *sep = "";
707
708 construct_hash_table(&byrules, 10, 1);
709
710 /* create an iCal RRULE string from xCal <recur> sub-elements */
711 for (node = xmlFirstElementChild(xtype); node;
712 node = xmlNextElementSibling(node)) {
713
714 content = xmlNodeGetContent(node);
715 if (!xmlStrncmp(node->name, BAD_CAST "by", 2)) {
716 /* BY* rules can have a list of values -
717 assemble them using a hash table */
718 struct buf *vals =
719 hash_lookup((const char *) node->name, &byrules);
720
721 if (vals) {
722 /* append this value to existing list */
723 buf_printf(vals, ",%s", (char *) content);
724 }
725 else {
726 /* create new list with this valiue */
727 vals = xzmalloc(sizeof(struct buf));
728 buf_setcstr(vals, (char *) content);
729 hash_insert((char *) node->name, vals, &byrules);
730 }
731 }
732 else {
733 /* single value rpart */
734 buf_printf(&rrule, "%s%s=%s", sep,
735 ucase((char *) node->name), (char *) content);
736 sep = ";";
737 }
738
739 xmlFree(content);
740 content = NULL;
741 }
742
743 /* append the BY* rules to RRULE buffer */
744 hash_enumerate(&byrules,
745 (void (*)(const char*, void*, void*)) &append_byrule,
746 &rrule);
747 free_hash_table(&byrules, NULL);
748
749 /* parse our iCal RRULE string */
750 rt = icalrecurrencetype_from_string(buf_cstring(&rrule));
751 buf_free(&rrule);
752
753 if (rt.freq != ICAL_NO_RECURRENCE) value = icalvalue_new_recur(rt);
886754
887755 break;
888756 }
373373 verify_error = X509_V_ERR_CERT_CHAIN_TOO_LONG;
374374 }
375375 }
376 switch (ctx->error) {
376 switch (err) {
377377 case X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT:
378 X509_NAME_oneline(X509_get_issuer_name(ctx->current_cert), buf, 256);
378 X509_NAME_oneline(X509_get_issuer_name(err_cert), buf, 256);
379379 printf("issuer= %s\n", buf);
380380 break;
381381 case X509_V_ERR_CERT_NOT_YET_VALID:
395395 }
396396
397397
398 #if OPENSSL_VERSION_NUMBER < 0x10100000L
398399 /* taken from OpenSSL apps/s_cb.c */
399
400400 static RSA *tmp_rsa_cb(SSL * s __attribute__((unused)),
401401 int export __attribute__((unused)), int keylength)
402402 {
407407 }
408408 return (rsa_tmp);
409409 }
410 #endif
410411
411412 /* taken from OpenSSL apps/s_cb.c
412413 * tim - this seems to just be giving logging messages
535536 printf("TLS engine: cannot load cert/key data, may be a cert/key mismatch?\n");
536537 return IMTEST_FAIL;
537538 }
539 #if OPENSSL_VERSION_NUMBER < 0x10100000L
538540 SSL_CTX_set_tmp_rsa_callback(tls_ctx, tmp_rsa_cb);
541 #endif
539542
540543 verify_depth = verifydepth;
541544 SSL_CTX_set_verify(tls_ctx, verify_flags, verify_callback);
112112 char *thisid, *nextid;
113113 int oldaccess = 0;
114114 char *rights;
115
116 if (!identifier)
117 return -1;
115118
116119 /* Convert 'identifier' into canonical form */
117120 canonid = auth_canonifyid(*identifier == '-' ? identifier+1 : identifier, 0);
5454
5555 extern const char *lock_method_desc;
5656
57 extern int lock_reopen (int fd, const char *filename,
58 struct stat *sbuf, const char **failaction);
57 extern int lock_reopen_ex(int fd, const char *filename,
58 struct stat *sbuf, const char **failaction,
59 int *changed);
60 #define lock_reopen(fd, filename, sbuf, failaction) \
61 lock_reopen_ex(fd, filename, sbuf, failaction, NULL)
5962
6063 extern int lock_blocking (int fd, const char *filename);
6164 extern int lock_shared (int fd, const char *filename);
15511551 verify_error = X509_V_ERR_CERT_CHAIN_TOO_LONG;
15521552 }
15531553 }
1554 switch (ctx->error) {
1554 switch (err) {
15551555 case X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT:
1556 X509_NAME_oneline(X509_get_issuer_name(ctx->current_cert),
1556 X509_NAME_oneline(X509_get_issuer_name(err_cert),
15571557 buf, sizeof(buf));
15581558 printf("issuer= %s\n", buf);
15591559 break;
15741574 }
15751575
15761576
1577 #if OPENSSL_VERSION_NUMBER < 0x10100000L
15771578 /* taken from OpenSSL apps/s_cb.c */
15781579 static RSA *tmp_rsa_cb(SSL *s __attribute__((unused)),
15791580 int export __attribute__((unused)),
15861587 }
15871588 return (rsa_tmp);
15881589 }
1590 #endif
15891591
15901592 /*
15911593 * Seed the random number generator.
16741676 printf("[ TLS engine: cannot load cert/key data, may be a cert/key mismatch]\n");
16751677 return -1;
16761678 }
1679
1680 #if OPENSSL_VERSION_NUMBER < 0x10100000L
16771681 SSL_CTX_set_tmp_rsa_callback(imclient->tls_ctx, tmp_rsa_cb);
1682 #endif
16781683
16791684 verify_depth = verifydepth;
16801685 SSL_CTX_set_verify(imclient->tls_ctx, verify_flags, verify_callback);
6464 * string naming the action that failed.
6565 *
6666 */
67 EXPORTED int lock_reopen(int fd, const char *filename,
68 struct stat *sbuf, const char **failaction)
67 EXPORTED int lock_reopen_ex(int fd, const char *filename,
68 struct stat *sbuf, const char **failaction,
69 int *changed)
6970 {
7071 int r;
7172 struct flock fl;
99100 }
100101
101102 if (sbuf->st_ino == sbuffile.st_ino) return 0;
103
104 if (changed) *changed = 1;
102105
103106 newfd = open(filename, O_RDWR);
104107 if (newfd == -1) {
6666 * string naming the action that failed.
6767 *
6868 */
69 EXPORTED int lock_reopen(int fd, const char *filename,
70 struct stat *sbuf, const char **failaction)
69 EXPORTED int lock_reopen_ex(int fd, const char *filename,
70 struct stat *sbuf, const char **failaction,
71 int *changed)
7172 {
7273 int r;
7374 struct stat sbuffile, sbufspare;
9293 }
9394
9495 if (sbuf->st_ino == sbuffile.st_ino) return 0;
96
97 if (changed) *changed = 1;
9598
9699 newfd = open(filename, O_RDWR);
97100 if (newfd == -1) {
8989 size_t map_size;
9090
9191 /* the file itself */
92 ino_t map_ino;
9392 int fd;
9493
9594 /* tracking */
225224 return -EIO;
226225 }
227226 if (sbuf.st_ino == sbuffile.st_ino) break;
227 buf_free(&mf->map_buf);
228228
229229 newfd = open(mf->fname, O_RDWR, 0644);
230230 if (newfd == -1) {
239239
240240 mf->lock_status = MF_READLOCKED;
241241
242 /* XXX - can we guarantee the fd isn't reused? */
243 if (mf->map_ino != sbuf.st_ino) {
244 buf_free(&mf->map_buf);
245 }
246
247242 _ensure_mapped(mf, sbuf.st_size, /*update*/0);
248243
249244 return 0;
254249 int r;
255250 struct stat sbuf;
256251 const char *lockfailaction;
252 int changed = 0;
257253
258254 assert(mf->lock_status == MF_UNLOCKED);
259255 assert(mf->fd != -1);
260256 assert(mf->is_rw);
261257 assert(!mf->dirty);
262258
263 r = lock_reopen(mf->fd, mf->fname, &sbuf, &lockfailaction);
259 r = lock_reopen_ex(mf->fd, mf->fname, &sbuf, &lockfailaction, &changed);
264260 if (r < 0) {
265261 syslog(LOG_ERR, "IOERROR: %s %s: %m", lockfailaction, mf->fname);
266262 return r;
267263 }
268264 mf->lock_status = MF_WRITELOCKED;
269265
270 /* XXX - can we guarantee the fd isn't reused? */
271 if (mf->map_ino != sbuf.st_ino) {
272 buf_free(&mf->map_buf);
273 }
266 if (changed) buf_free(&mf->map_buf);
274267
275268 _ensure_mapped(mf, sbuf.st_size, /*update*/0);
276269
2222
2323 #include "config.h"
2424
25 #ifndef _AIX
26 typedef unsigned int uint;
27 #endif
28
2925 #if defined(__cplusplus) && __cplusplus
3026 extern "C" {
3127 #endif
3329 EXPORTED char *stristr(const char *String, const char *Pattern)
3430 {
3531 char *pptr, *sptr, *start;
36 uint slen, plen;
32 size_t slen, plen;
3733
3834 for (start = (char *)String,
3935 pptr = (char *)Pattern,
6363 ]
6464 [
6565 .B \-o
66 ]
67 [
68 .B \-n
6669 ]
6770 .br
6871 [
132135 .TP
133136 .B \-o
134137 Only purge messages that have the \\Deleted flag set.
138 .TP
139 .B \-n
140 Only print messages that would be deleted (dry run).
135141 .SH FILES
136142 .TP
137143 .B /etc/imapd.conf
132132 .\" ========================================================================
133133 .\"
134134 .IX Title "SIEVESHELL 1"
135 .TH SIEVESHELL 1 "2016-05-20" "perl v5.22.2" "User Contributed Perl Documentation"
135 .TH SIEVESHELL 1 "2016-07-22" "perl v5.22.2" "User Contributed Perl Documentation"
136136 .\" For nroff, turn off justification. Always turn off hyphenation; it makes
137137 .\" way too many mistakes in technical documents.
138138 .if n .ad l
0 /* htmlstrip.c -- HTML to text converter
1 *
2 * Copyright (c) 1994-2008 Carnegie Mellon University. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 *
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 *
11 * 2. Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in
13 * the documentation and/or other materials provided with the
14 * distribution.
15 *
16 * 3. The name "Carnegie Mellon University" must not be used to
17 * endorse or promote products derived from this software without
18 * prior written permission. For permission or any legal
19 * details, please contact
20 * Carnegie Mellon University
21 * Center for Technology Transfer and Enterprise Creation
22 * 4615 Forbes Avenue
23 * Suite 302
24 * Pittsburgh, PA 15213
25 * (412) 268-7393, fax: (412) 268-7395
26 * innovation@andrew.cmu.edu
27 *
28 * 4. Redistributions of any form whatsoever must retain the following
29 * acknowledgment:
30 * "This product includes software developed by Computing Services
31 * at Carnegie Mellon University (http://www.cmu.edu/computing/)."
32 *
33 * CARNEGIE MELLON UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO
34 * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
35 * AND FITNESS, IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY BE LIABLE
36 * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
37 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
38 * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
39 * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
40 */
41
42 #include <stdio.h>
43 #include <string.h>
44 #include <stdlib.h>
45 #include <unistd.h>
46 #include <ctype.h>
47
48 #define MODE_PRE 1 /* Preformatted */
49 #define MODE_IGNORETXT 2 /* Discard text */
50
51 #define FLAG_NOPUSH 1 /* Has no end marker, don't push on stack */
52 #define FLAG_BREAK 2 /* Breaks a line */
53 #define FLAG_PARAGRAPH 4 /* Breaks a paragraph */
54
55 struct mode {
56 char *name;
57 int indent;
58 int listnum;
59 int flags;
60 int mode;
61 int startline;
62 };
63
64 struct mode modestack[100] = {{"TOPLEVEL", 4, 0, 0, 0, 0}};
65 int curmode = 0;
66 int didparagraph = 1;
67
68 struct tag {
69 char *name;
70 int flags;
71 int mode;
72 int indent;
73 };
74
75 struct tag cmds[] = {
76 { "!--", FLAG_NOPUSH, 0, 0, },
77 { "!DOCTYPE", FLAG_NOPUSH, 0, 0, },
78 { "link", FLAG_NOPUSH, 0, 0, },
79 { "html", 0, 0, 0, },
80 { "head", 0, MODE_IGNORETXT, 0, },
81 { "title", 0, MODE_IGNORETXT, 0, },
82 { "body", 0, 0, 0, },
83 { "p", FLAG_PARAGRAPH|FLAG_NOPUSH, 0, 0, },
84 { "pre", FLAG_PARAGRAPH, MODE_PRE, 0, },
85 { "a", 0, 0, 0, },
86 /* KLUDGE: we set MODE_PRE on <h1> to fake centering it ourselves */
87 { "h1", FLAG_PARAGRAPH, MODE_PRE, -4, },
88 { "h2", FLAG_PARAGRAPH, 0, -4, },
89 { "h3", FLAG_PARAGRAPH, 0, -4, },
90 { "h4", FLAG_PARAGRAPH, 0, -4, },
91 { "h5", FLAG_PARAGRAPH, 0, -4, },
92 { "h6", FLAG_PARAGRAPH, 0, -4, },
93 { "em", 0, 0, 0, },
94 { "strong", 0, 0, 0, },
95 { "code", 0, 0, 0, },
96 { "samp", 0, 0, 0, },
97 { "kbd", 0, 0, 0, },
98 { "var", 0, 0, 0, },
99 { "dfn", 0, 0, 0, },
100 { "cite", 0, 0, 0, },
101 { "blockquote", FLAG_PARAGRAPH, 0, 4, },
102 { "b", 0, 0, 0, },
103 { "i", 0, 0, 0, },
104 { "u", 0, 0, 0, },
105 { "tt", 0, 0, 0, },
106 { "dl", FLAG_PARAGRAPH, 0, 8, },
107 { "dt", FLAG_BREAK|FLAG_NOPUSH, 0, -8, },
108 { "dd", FLAG_NOPUSH, 0, 0, },
109 { "ul", FLAG_PARAGRAPH, 0, 4, },
110 { "ol", FLAG_PARAGRAPH, 0, 4, },
111 { "li", FLAG_BREAK|FLAG_NOPUSH, 0, -4, },
112 { "br", FLAG_BREAK|FLAG_NOPUSH, 0, 0, },
113 { "hr", FLAG_BREAK|FLAG_NOPUSH, 0, 0, },
114 { "meta", FLAG_NOPUSH, 0, 0, },
115 { "table", 0, 0, 0, },
116 { "tr", FLAG_PARAGRAPH, 0, 0, },
117 { "td", 0, 0, 0, },
118 };
119
120 static void parse(FILE *infile);
121 static int lex(FILE *infile, int *cmdptr, int *endtagptr, int *linenoptr);
122
123 int main(int argc, char **argv)
124 {
125 FILE *infile;
126
127 if (argc != 2) {
128 fprintf(stderr, "usage: %s file\n", argv[0]);
129 exit(1);
130 }
131
132 infile = fopen(argv[1], "r");
133 if (!infile) {
134 perror(argv[1]);
135 exit(1);
136 }
137
138 parse(infile);
139 exit(0);
140 }
141
142 static void parse(FILE *infile)
143 {
144 char outputbuf[1024];
145 int outpos = 0;
146 int c;
147 int cmd;
148 int endtag;
149 int lineno = 1;
150 int i;
151 char *p;
152
153 while ((c = lex(infile, &cmd, &endtag, &lineno)) != EOF) {
154 if (!c) {
155 if (endtag) {
156 if (cmds[cmd].flags & FLAG_NOPUSH) {
157 /* ignore */
158 }
159 else if (strcmp(cmds[cmd].name, modestack[curmode].name)!=0) {
160 fprintf(stderr,
161 "<%s> line %d mismatched with </%s> on line %d\n",
162 modestack[curmode].name,
163 modestack[curmode].startline,
164 cmds[cmd].name, lineno);
165 exit(1);
166 }
167 else {
168 if ((modestack[curmode].flags & FLAG_PARAGRAPH) &&
169 !(modestack[curmode].mode & MODE_IGNORETXT)) {
170 if (outpos) {
171 outputbuf[outpos++] = '\n';
172 outputbuf[outpos++] = '\0';
173 fputs(outputbuf, stdout);
174 outpos = 0;
175 }
176 if (!didparagraph) {
177 putc('\n', stdout);
178 didparagraph = 1;
179 }
180 }
181 curmode--;
182 }
183 }
184 else {
185 if (!(modestack[curmode].mode & MODE_IGNORETXT)) {
186 if (cmds[cmd].flags & (FLAG_PARAGRAPH|FLAG_BREAK)) {
187 if (outpos) {
188 outputbuf[outpos++] = '\n';
189 outputbuf[outpos++] = '\0';
190 fputs(outputbuf, stdout);
191 outpos = 0;
192 }
193 }
194 if ((cmds[cmd].flags & FLAG_PARAGRAPH)
195 && !didparagraph) {
196 putc('\n', stdout);
197 didparagraph = 1;
198 }
199 }
200 if (cmds[cmd].flags & FLAG_NOPUSH) {
201
202 if (!strcmp(cmds[cmd].name, "dt")) {
203 while (outpos < modestack[curmode].indent - 8) {
204 outputbuf[outpos++] = ' ';
205 }
206 }
207
208 if (!strcmp(cmds[cmd].name, "dd")) {
209 if (outpos-1 >= modestack[curmode].indent) {
210 /* Break line */
211 outputbuf[outpos++] = '\n';
212 outputbuf[outpos++] = '\0';
213 fputs(outputbuf, stdout);
214 outpos = 0;
215 }
216 /* Indent line */
217 while (outpos < modestack[curmode].indent) {
218 outputbuf[outpos++] = ' ';
219 }
220 }
221
222 if (!strcmp(cmds[cmd].name, "li")) {
223 if (modestack[curmode].listnum == 0) {
224 fprintf(stderr, "<li> inside a <%s> on line %d\n",
225 modestack[curmode].name, lineno);
226 exit(1);
227 }
228 while (outpos < modestack[curmode].indent - 4) {
229 outputbuf[outpos++] = ' ';
230 }
231
232 if (modestack[curmode].listnum < 0) {
233 outputbuf[outpos++] = ' ';
234 outputbuf[outpos++] = ' ';
235 outputbuf[outpos++] = '*';
236 outputbuf[outpos++] = ' ';
237 }
238 else {
239 if (modestack[curmode].listnum >=100) {
240 fprintf(stderr,
241 "too many <li> items on line %d\n",
242 lineno);
243 exit(1);
244 }
245 outputbuf[outpos++] =
246 modestack[curmode].listnum > 9 ?
247 modestack[curmode].listnum/10 + '0' : ' ';
248 outputbuf[outpos++] =
249 modestack[curmode].listnum%10 + '0';
250 outputbuf[outpos++] = '.';
251 outputbuf[outpos++] = ' ';
252 modestack[curmode].listnum++;
253 }
254 }
255 if (!strcmp(cmds[cmd].name, "hr")) {
256 /* XXX hack */
257 modestack[curmode].mode |= MODE_IGNORETXT;
258 }
259 }
260 else {
261 curmode++;
262 if (curmode >= 100) {
263 fprintf(stderr, "too many nested tags on line %d\n",
264 lineno);
265 exit(1);
266 }
267 modestack[curmode].name = cmd[cmds].name;
268 modestack[curmode].indent =
269 modestack[curmode-1].indent + cmd[cmds].indent;
270 modestack[curmode].listnum = 0;
271 modestack[curmode].flags = cmd[cmds].flags;
272 modestack[curmode].mode =
273 modestack[curmode-1].mode | cmd[cmds].mode;
274 modestack[curmode].startline = lineno;
275
276 if (!strcmp(cmds[cmd].name, "ul")) {
277 modestack[curmode].listnum = -1;
278 }
279 if (!strcmp(cmds[cmd].name, "ol")) {
280 modestack[curmode].listnum = 1;
281 }
282
283 }
284 }
285 }
286 else if (modestack[curmode].mode & MODE_IGNORETXT) {
287 /* do nothing */
288 }
289 else if (isspace(c) && !(modestack[curmode].mode & MODE_PRE)) {
290 /* Only emit space if previous char not a space */
291 if (outpos && !isspace(outputbuf[outpos-1])) {
292 outputbuf[outpos++] = ' ';
293 }
294 }
295 else if (c == '\n') {
296 /* Newline inside MODE_PRE. Emit current line */
297 if (outpos || !didparagraph) {
298 outputbuf[outpos++] = '\n';
299 outputbuf[outpos++] = '\0';
300 fputs(outputbuf, stdout);
301 outpos = 0;
302 didparagraph = 0;
303 }
304 }
305 else {
306 didparagraph = 0;
307 if (!outpos) {
308 /* Indent line */
309 for (i = 0; i < modestack[curmode].indent; i++) {
310 outputbuf[outpos++] = ' ';
311 }
312 }
313 outputbuf[outpos++] = c;
314
315 /* Check for line wrapping */
316 if (outpos > 75 && !(modestack[curmode].mode & MODE_PRE)) {
317 outputbuf[outpos] = '\0';
318 p = strrchr(outputbuf, ' ');
319 if (p && p-outputbuf > modestack[curmode].indent) {
320 *p++ = '\0';
321 fputs(outputbuf, stdout);
322 putc('\n', stdout);
323 outpos = 0;
324 if (*p) {
325 for (i = 0; i < modestack[curmode].indent; i++) {
326 outputbuf[outpos++] = ' ';
327 }
328 while (*p) {
329 outputbuf[outpos++] = *p++;
330 }
331 }
332 }
333 }
334 }
335 }
336
337 /* Write out last line of output */;
338 if (outpos) {
339 outputbuf[outpos++] = '\n';
340 outputbuf[outpos++] = '\0';
341 fputs(outputbuf, stdout);
342 }
343 }
344
345 static int lex(FILE *infile, int *cmdptr, int *endtagptr, int *linenoptr)
346 {
347 int c;
348 static char buf[1024];
349 unsigned int i = 0;
350 int lineno = *linenoptr;
351 char *p;
352
353 c = getc(infile);
354 if (c == '&') {
355 while ((c = getc(infile)) != EOF && c != ';') {
356 buf[i++] = c;
357 if (c == '\n' || i > 1000) {
358 fprintf(stderr, "unterminated entity on line %d\n", lineno);
359 exit(1);
360 }
361 }
362 if (c == EOF) {
363 fprintf(stderr, "unexpected EOF on line %d\n", lineno);
364 exit(1);
365 }
366 buf[i] = '\0';
367 if (!strcasecmp(buf, "amp")) return '&';
368 if (!strcasecmp(buf, "lt")) return '<';
369 if (!strcasecmp(buf, "gt")) return '>';
370 if (!strcasecmp(buf, "quot")) return '"';
371 if (!strcasecmp(buf, "nbsp")) return ' ';
372 fprintf(stderr, "unrecognized entity '%s' on line %d\n", buf, lineno);
373 exit(1);
374 }
375
376 if (!c) {
377 fprintf(stderr, "NUL character on line %d\n", lineno);
378 exit(1);
379 }
380
381 if (c == '\n') (*linenoptr)++;
382 if (c != '<') return c;
383
384 while (i<=1000 && (c = getc(infile)) != EOF && c != '>') {
385 if (c == '\n') (*linenoptr)++;
386 if (isspace(c)) c = ' ';
387 buf[i++] = c;
388
389 if (c == '\"') {
390 while (i<=1000 && (c = getc(infile)) != EOF && c != '\"') {
391 if (c == '\n') (*linenoptr)++;
392 buf[i++] = c;
393 }
394 if (c == EOF || i > 1000) {
395 fprintf(stderr,
396 "unterminated string in tag starting on line %d\n",
397 lineno);
398 exit(1);
399 }
400 buf[i++] = c;
401 }
402 }
403
404 buf[i] = '\0';
405
406 if (c == EOF || i > 1000) {
407 fprintf(stderr, "unterminated tag starting on line %d\n",
408 lineno);
409 exit(1);
410 }
411
412 if ((p = strchr(buf, ' '))) *p = '\0';
413
414 p = buf;
415 if (*p == '/') {
416 *endtagptr = 1;
417 p++;
418 }
419 else {
420 *endtagptr = 0;
421 }
422
423 for (i = 0; i<(sizeof(cmds)/sizeof(*cmds)); i++) {
424 if (!strcasecmp(p, cmds[i].name)) {
425 *cmdptr = i;
426 return 0;
427 }
428 }
429
430 fprintf(stderr, "unknown tag <%s> starting on line %d\n", buf,
431 lineno);
432 exit(1);
433 }
434
00 /* Development version */
1 #define _CYRUS_VERSION "2.5.8"
2 #define CYRUS_GITVERSION "c65fca5e 2016-05-20"
1 #define _CYRUS_VERSION "2.5.9"
2 #define CYRUS_GITVERSION "55d344f8 2016-07-22"