Imported Upstream version 2.5.9
Ondřej Surý
7 years ago
106 | 106 | DIST_SUBDIRS = . |
107 | 107 | dist_sysconf_DATA = |
108 | 108 | lib_LTLIBRARIES = lib/libcyrus_min.la lib/libcyrus.la |
109 | EXTRA_PROGRAMS = doc/text/htmlstrip | |
109 | EXTRA_PROGRAMS = tools/htmlstrip | |
110 | 110 | check_PROGRAMS = |
111 | 111 | service_PROGRAMS = |
112 | 112 | user_PROGRAMS = |
313 | 313 | cunit/cunit-to-junit.pl \ |
314 | 314 | cunit/key.pem \ |
315 | 315 | cunit/vg.supp \ |
316 | doc/murder.png \ | |
317 | doc/netnews.png \ | |
316 | 318 | doc \ |
317 | 319 | imap/dav_util.h \ |
318 | 320 | imap/http_err.et \ |
659 | 661 | exit $$retval |
660 | 662 | endif |
661 | 663 | |
662 | doc_text_htmlstrip_SOURCE = doc/text/htmlstrip.c | |
664 | tools_htmlstrip_SOURCE = tools/htmlstrip.c | |
663 | 665 | |
664 | 666 | includedir=@includedir@/cyrus |
665 | 667 | |
1569 | 1571 | @cmp -s xversion.h.tmp xversion.h || mv xversion.h.tmp xversion.h |
1570 | 1572 | @rm -f xversion.h.tmp |
1571 | 1573 | |
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 | |
1573 | 1577 | @$(MKDIR_P) doc/text doc/man |
1574 | 1578 | for man in $(top_builddir)/man/*.[1-9] $(top_srcdir)/man/*.[1-9]; \ |
1575 | 1579 | do \ |
1581 | 1585 | for file in $(top_srcdir)/doc/*.html; \ |
1582 | 1586 | do \ |
1583 | 1587 | echo "=== $$file ==="; \ |
1584 | doc/text/htmlstrip $$file > doc/text/`basename $$file .html`; \ | |
1588 | tools/htmlstrip $$file > doc/text/`basename $$file .html`; \ | |
1585 | 1589 | done |
1586 | @rm doc/text/htmlstrip doc/text/htmlstrip.o doc/text/.dirstamp | |
1587 | 1590 | @echo "== done ==" |
1588 | 1591 | |
1589 | 1592 | install-data-hook: |
137 | 137 | host_triplet = @host@ |
138 | 138 | target_triplet = @target@ |
139 | 139 | @HAVE_LDAP_TRUE@am__append_1 = $(LDAP_CPPFLAGS) |
140 | EXTRA_PROGRAMS = doc/text/htmlstrip$(EXEEXT) | |
140 | EXTRA_PROGRAMS = tools/htmlstrip$(EXEEXT) | |
141 | 141 | check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) |
142 | 142 | service_PROGRAMS = $(am__EXEEXT_4) $(am__EXEEXT_5) $(am__EXEEXT_6) \ |
143 | 143 | $(am__EXEEXT_7) $(am__EXEEXT_8) $(am__EXEEXT_9) \ |
848 | 848 | $(am__DEPENDENCIES_1) |
849 | 849 | @CUNIT_TRUE@cunit_unit_DEPENDENCIES = $(am__append_42) \ |
850 | 850 | @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) | |
854 | 851 | am_imap_arbitron_OBJECTS = imap/arbitron.$(OBJEXT) \ |
855 | 852 | imap/cli_fatal.$(OBJEXT) imap/mutex_fake.$(OBJEXT) |
856 | 853 | imap_arbitron_OBJECTS = $(am_imap_arbitron_OBJECTS) |
1145 | 1142 | timsieved_timsieved_OBJECTS = $(am_timsieved_timsieved_OBJECTS) |
1146 | 1143 | timsieved_timsieved_DEPENDENCIES = sieve/libcyrus_sieve.la \ |
1147 | 1144 | $(am__DEPENDENCIES_6) |
1145 | tools_htmlstrip_SOURCES = tools/htmlstrip.c | |
1146 | tools_htmlstrip_OBJECTS = tools/htmlstrip.$(OBJEXT) | |
1147 | tools_htmlstrip_LDADD = $(LDADD) | |
1148 | 1148 | SCRIPTS = $(dist_noinst_SCRIPTS) |
1149 | 1149 | AM_V_P = $(am__v_P_@AM_V@) |
1150 | 1150 | am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) |
1210 | 1210 | $(perl_libcyrus_la_SOURCES) $(perl_libcyrus_min_la_SOURCES) \ |
1211 | 1211 | $(sieve_libcyrus_sieve_la_SOURCES) \ |
1212 | 1212 | $(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 | |
1241 | 1241 | DIST_SOURCES = $(perl_sieve_lib_libisieve_a_SOURCES) \ |
1242 | 1242 | $(com_err_et_libcyrus_com_err_la_SOURCES) \ |
1243 | 1243 | $(am__imap_libcyrus_imap_la_SOURCES_DIST) \ |
1247 | 1247 | $(am__perl_libcyrus_la_SOURCES_DIST) \ |
1248 | 1248 | $(am__perl_libcyrus_min_la_SOURCES_DIST) \ |
1249 | 1249 | $(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) \ | |
1254 | 1253 | $(am__imap_ctl_zoneinfo_SOURCES_DIST) \ |
1255 | 1254 | $(imap_cvt_cyrusdb_SOURCES) $(imap_cyr_dbtool_SOURCES) \ |
1256 | 1255 | $(imap_cyr_deny_SOURCES) $(imap_cyr_df_SOURCES) \ |
1277 | 1276 | $(ptclient_ptexpire_SOURCES) \ |
1278 | 1277 | $(am__ptclient_ptloader_SOURCES_DIST) sieve/sievec.c \ |
1279 | 1278 | sieve/sieved.c $(sieve_test_SOURCES) \ |
1280 | $(timsieved_timsieved_SOURCES) | |
1279 | $(timsieved_timsieved_SOURCES) tools/htmlstrip.c | |
1281 | 1280 | RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ |
1282 | 1281 | ctags-recursive dvi-recursive html-recursive info-recursive \ |
1283 | 1282 | install-data-recursive install-dvi-recursive \ |
1655 | 1654 | contrib/notify_unix/simple_notify.pl contrib/squatrunner.pl \ |
1656 | 1655 | contrib/mupdate-test.pl contrib/squatrunner.txt \ |
1657 | 1656 | 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 \ | |
1662 | 1662 | lib/charset/gb2312.t lib/charset/iso-2022-jp.t \ |
1663 | 1663 | lib/charset/iso-2022-kr.t lib/charset/iso-8859-10.t \ |
1664 | 1664 | lib/charset/iso-8859-11.t lib/charset/iso-8859-13.t \ |
1879 | 1879 | |
1880 | 1880 | # To run under Valgrind, do: make VG=1 check |
1881 | 1881 | @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 | |
1883 | 1883 | include_HEADERS = \ |
1884 | 1884 | lib/acl.h \ |
1885 | 1885 | lib/arrayu64.h \ |
3065 | 3065 | cunit/unit$(EXEEXT): $(cunit_unit_OBJECTS) $(cunit_unit_DEPENDENCIES) $(EXTRA_cunit_unit_DEPENDENCIES) cunit/$(am__dirstamp) |
3066 | 3066 | @rm -f cunit/unit$(EXEEXT) |
3067 | 3067 | $(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) | |
3080 | 3068 | imap/arbitron.$(OBJEXT): imap/$(am__dirstamp) \ |
3081 | 3069 | imap/$(DEPDIR)/$(am__dirstamp) |
3082 | 3070 | imap/cli_fatal.$(OBJEXT): imap/$(am__dirstamp) \ |
3529 | 3517 | timsieved/timsieved$(EXEEXT): $(timsieved_timsieved_OBJECTS) $(timsieved_timsieved_DEPENDENCIES) $(EXTRA_timsieved_timsieved_DEPENDENCIES) timsieved/$(am__dirstamp) |
3530 | 3518 | @rm -f timsieved/timsieved$(EXEEXT) |
3531 | 3519 | $(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) | |
3532 | 3532 | |
3533 | 3533 | mostlyclean-compile: |
3534 | 3534 | -rm -f *.$(OBJEXT) |
3535 | 3535 | -rm -f com_err/et/*.$(OBJEXT) |
3536 | 3536 | -rm -f com_err/et/*.lo |
3537 | 3537 | -rm -f cunit/*.$(OBJEXT) |
3538 | -rm -f doc/text/*.$(OBJEXT) | |
3539 | 3538 | -rm -f imap/*.$(OBJEXT) |
3540 | 3539 | -rm -f imap/*.lo |
3541 | 3540 | -rm -f imtest/*.$(OBJEXT) |
3549 | 3548 | -rm -f sieve/*.$(OBJEXT) |
3550 | 3549 | -rm -f sieve/*.lo |
3551 | 3550 | -rm -f timsieved/*.$(OBJEXT) |
3551 | -rm -f tools/*.$(OBJEXT) | |
3552 | 3552 | |
3553 | 3553 | distclean-compile: |
3554 | 3554 | -rm -f *.tab.c |
3560 | 3560 | @AMDEP_TRUE@@am__include@ @am__quote@cunit/$(DEPDIR)/syslog.Po@am__quote@ |
3561 | 3561 | @AMDEP_TRUE@@am__include@ @am__quote@cunit/$(DEPDIR)/timeout.Po@am__quote@ |
3562 | 3562 | @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@ | |
3564 | 3563 | @AMDEP_TRUE@@am__include@ @am__quote@imap/$(DEPDIR)/arbitron.Po@am__quote@ |
3565 | 3564 | @AMDEP_TRUE@@am__include@ @am__quote@imap/$(DEPDIR)/autocreate.Po@am__quote@ |
3566 | 3565 | @AMDEP_TRUE@@am__include@ @am__quote@imap/$(DEPDIR)/caldav_db.Po@am__quote@ |
3887 | 3886 | @AMDEP_TRUE@@am__include@ @am__quote@timsieved/$(DEPDIR)/parser.Po@am__quote@ |
3888 | 3887 | @AMDEP_TRUE@@am__include@ @am__quote@timsieved/$(DEPDIR)/scripttest.Po@am__quote@ |
3889 | 3888 | @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@ | |
3890 | 3890 | |
3891 | 3891 | .c.o: |
3892 | 3892 | @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ |
4996 | 4996 | -rm -rf .libs _libs |
4997 | 4997 | -rm -rf com_err/et/.libs com_err/et/_libs |
4998 | 4998 | -rm -rf cunit/.libs cunit/_libs |
4999 | -rm -rf doc/text/.libs doc/text/_libs | |
5000 | 4999 | -rm -rf imap/.libs imap/_libs |
5001 | 5000 | -rm -rf imtest/.libs imtest/_libs |
5002 | 5001 | -rm -rf lib/.libs lib/_libs |
5007 | 5006 | -rm -rf ptclient/.libs ptclient/_libs |
5008 | 5007 | -rm -rf sieve/.libs sieve/_libs |
5009 | 5008 | -rm -rf timsieved/.libs timsieved/_libs |
5009 | -rm -rf tools/.libs tools/_libs | |
5010 | 5010 | |
5011 | 5011 | distclean-libtool: |
5012 | 5012 | -rm -f libtool config.lt |
5478 | 5478 | || exit 1; \ |
5479 | 5479 | fi; \ |
5480 | 5480 | done |
5481 | $(MAKE) $(AM_MAKEFLAGS) \ | |
5482 | top_distdir="$(top_distdir)" distdir="$(distdir)" \ | |
5483 | dist-hook | |
5484 | 5481 | -test -n "$(am__skip_mode_fix)" \ |
5485 | 5482 | || find "$(distdir)" -type d ! -perm -755 \ |
5486 | 5483 | -exec chmod u+rwx,go+rx {} \; -o \ |
5660 | 5657 | -rm -f com_err/et/$(am__dirstamp) |
5661 | 5658 | -rm -f cunit/$(DEPDIR)/$(am__dirstamp) |
5662 | 5659 | -rm -f cunit/$(am__dirstamp) |
5663 | -rm -f doc/text/$(DEPDIR)/$(am__dirstamp) | |
5664 | -rm -f doc/text/$(am__dirstamp) | |
5665 | 5660 | -rm -f imap/$(DEPDIR)/$(am__dirstamp) |
5666 | 5661 | -rm -f imap/$(am__dirstamp) |
5667 | 5662 | -rm -f imtest/$(DEPDIR)/$(am__dirstamp) |
5683 | 5678 | -rm -f sieve/$(am__dirstamp) |
5684 | 5679 | -rm -f timsieved/$(DEPDIR)/$(am__dirstamp) |
5685 | 5680 | -rm -f timsieved/$(am__dirstamp) |
5681 | -rm -f tools/$(DEPDIR)/$(am__dirstamp) | |
5682 | -rm -f tools/$(am__dirstamp) | |
5686 | 5683 | -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) |
5687 | 5684 | |
5688 | 5685 | maintainer-clean-generic: |
5703 | 5700 | |
5704 | 5701 | distclean: distclean-recursive |
5705 | 5702 | -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) | |
5707 | 5704 | -rm -f Makefile |
5708 | 5705 | distclean-am: clean-am distclean-compile distclean-generic \ |
5709 | 5706 | distclean-hdr distclean-libtool distclean-tags |
5758 | 5755 | maintainer-clean: maintainer-clean-recursive |
5759 | 5756 | -rm -f $(am__CONFIG_DISTCLEAN_FILES) |
5760 | 5757 | -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) | |
5762 | 5759 | -rm -f Makefile |
5763 | 5760 | maintainer-clean-am: distclean-am maintainer-clean-generic |
5764 | 5761 | |
5794 | 5791 | clean-libLTLIBRARIES clean-libtool clean-noinstLIBRARIES \ |
5795 | 5792 | clean-noinstLTLIBRARIES clean-servicePROGRAMS \ |
5796 | 5793 | 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 \ | |
5809 | 5806 | install-nobase_nodist_includeHEADERS \ |
5810 | 5807 | install-nodist_includeHEADERS install-pdf install-pdf-am \ |
5811 | 5808 | install-pkgconfigDATA install-ps install-ps-am \ |
5990 | 5987 | @cmp -s xversion.h.tmp xversion.h || mv xversion.h.tmp xversion.h |
5991 | 5988 | @rm -f xversion.h.tmp |
5992 | 5989 | |
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 | |
5994 | 5993 | @$(MKDIR_P) doc/text doc/man |
5995 | 5994 | for man in $(top_builddir)/man/*.[1-9] $(top_srcdir)/man/*.[1-9]; \ |
5996 | 5995 | do \ |
6002 | 6001 | for file in $(top_srcdir)/doc/*.html; \ |
6003 | 6002 | do \ |
6004 | 6003 | echo "=== $$file ==="; \ |
6005 | doc/text/htmlstrip $$file > doc/text/`basename $$file .html`; \ | |
6004 | tools/htmlstrip $$file > doc/text/`basename $$file .html`; \ | |
6006 | 6005 | done |
6007 | @rm doc/text/htmlstrip doc/text/htmlstrip.o doc/text/.dirstamp | |
6008 | 6006 | @echo "== done ==" |
6009 | 6007 | |
6010 | 6008 | install-data-hook: |
174 | 174 | /* Define if your GSSAPI implementation supports SPNEGO */ |
175 | 175 | #undef HAVE_GSS_SPNEGO |
176 | 176 | |
177 | /* Do we have support for IANA params? */ | |
178 | #undef HAVE_IANA_PARAMS | |
179 | ||
177 | 180 | /* Build in ical support? */ |
178 | 181 | #undef HAVE_ICAL |
179 | 182 |
0 | 0 | #! /bin/sh |
1 | 1 | # 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. | |
3 | 3 | # |
4 | 4 | # Report bugs to <http://bugzilla.cyrusimap.org>. |
5 | 5 | # |
589 | 589 | # Identity of this package. |
590 | 590 | PACKAGE_NAME='cyrus-imapd' |
591 | 591 | 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' | |
594 | 594 | PACKAGE_BUGREPORT='http://bugzilla.cyrusimap.org' |
595 | 595 | PACKAGE_URL='http://www.cyrusimap.org' |
596 | 596 | |
1537 | 1537 | # Omit some internal or obsolete options to make the list less imposing. |
1538 | 1538 | # This message is too long to be a string in the A/UX 3.1 sh. |
1539 | 1539 | 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. | |
1541 | 1541 | |
1542 | 1542 | Usage: $0 [OPTION]... [VAR=VALUE]... |
1543 | 1543 | |
1609 | 1609 | |
1610 | 1610 | if test -n "$ac_init_help"; then |
1611 | 1611 | 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:";; | |
1613 | 1613 | esac |
1614 | 1614 | cat <<\_ACEOF |
1615 | 1615 | |
1827 | 1827 | test -n "$ac_init_help" && exit $ac_status |
1828 | 1828 | if $ac_init_version; then |
1829 | 1829 | cat <<\_ACEOF |
1830 | cyrus-imapd configure 2.5.8 | |
1830 | cyrus-imapd configure 2.5.9 | |
1831 | 1831 | generated by GNU Autoconf 2.69 |
1832 | 1832 | |
1833 | 1833 | Copyright (C) 2012 Free Software Foundation, Inc. |
2482 | 2482 | This file contains any messages produced by compilers while |
2483 | 2483 | running configure, to aid debugging if configure makes a mistake. |
2484 | 2484 | |
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 | |
2486 | 2486 | generated by GNU Autoconf 2.69. Invocation command line was |
2487 | 2487 | |
2488 | 2488 | $ $0 $@ |
3583 | 3583 | |
3584 | 3584 | # Define the identity of the package. |
3585 | 3585 | PACKAGE='cyrus-imapd' |
3586 | VERSION='2.5.8' | |
3586 | VERSION='2.5.9' | |
3587 | 3587 | |
3588 | 3588 | |
3589 | 3589 | cat >>confdefs.h <<_ACEOF |
18490 | 18490 | HTTP_LIBS="${XML2_LIBS} ${ICAL_LIBS} ${SQLITE3_LIBS} ${JSON_LIBS}" |
18491 | 18491 | HTTP_CPPFLAGS="${JSON_CFLAGS} ${SQLITE3_CFLAGS} ${ICAL_CFLAGS} ${XML2_CFLAGS}" |
18492 | 18492 | |
18493 | saved_LIBS=${LIBS} | |
18494 | saved_CPPFLAGS="${CPPFLAGS}" | |
18495 | LIBS="${LIBS} ${HTTP_LIBS}" | |
18496 | CPPFLAGS="${CPPFLAGS} ${HTTP_CPPFLAGS}" | |
18497 | ||
18493 | 18498 | |
18494 | 18499 | $as_echo "#define HAVE_XML2 /**/" >>confdefs.h |
18495 | 18500 | |
18552 | 18557 | |
18553 | 18558 | cat confdefs.h - <<_ACEOF >conftest.$ac_ext |
18554 | 18559 | /* end confdefs.h. */ |
18555 | #include <ical.h> | |
18560 | #include <libical/ical.h> | |
18556 | 18561 | |
18557 | 18562 | _ACEOF |
18558 | 18563 | if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | |
18575 | 18580 | |
18576 | 18581 | cat confdefs.h - <<_ACEOF >conftest.$ac_ext |
18577 | 18582 | /* 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> | |
18579 | 18601 | |
18580 | 18602 | _ACEOF |
18581 | 18603 | if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | |
18589 | 18611 | |
18590 | 18612 | cat confdefs.h - <<_ACEOF >conftest.$ac_ext |
18591 | 18613 | /* end confdefs.h. */ |
18592 | #include <ical.h> | |
18614 | #include <libical/ical.h> | |
18593 | 18615 | |
18594 | 18616 | _ACEOF |
18595 | 18617 | if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | |
18603 | 18625 | |
18604 | 18626 | cat confdefs.h - <<_ACEOF >conftest.$ac_ext |
18605 | 18627 | /* end confdefs.h. */ |
18606 | #include <ical.h> | |
18628 | #include <libical/ical.h> | |
18607 | 18629 | |
18608 | 18630 | _ACEOF |
18609 | 18631 | if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | |
18690 | 18712 | if test "$ENABLE_RSCALE" != no; then |
18691 | 18713 | |
18692 | 18714 | |
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 : | |
18696 | 18718 | $as_echo_n "(cached) " >&6 |
18697 | 18719 | else |
18698 | 18720 | ac_check_lib_save_LIBS=$LIBS |
18706 | 18728 | #ifdef __cplusplus |
18707 | 18729 | extern "C" |
18708 | 18730 | #endif |
18709 | char icalrecur_rscale_token_handling_is_supported (); | |
18731 | char icalrecurrencetype_rscale_is_supported (); | |
18710 | 18732 | int |
18711 | 18733 | main () |
18712 | 18734 | { |
18713 | return icalrecur_rscale_token_handling_is_supported (); | |
18735 | return icalrecurrencetype_rscale_is_supported (); | |
18714 | 18736 | ; |
18715 | 18737 | return 0; |
18716 | 18738 | } |
18717 | 18739 | _ACEOF |
18718 | 18740 | 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 | |
18722 | 18744 | fi |
18723 | 18745 | rm -f core conftest.err conftest.$ac_objext \ |
18724 | 18746 | conftest$ac_exeext conftest.$ac_ext |
18725 | 18747 | LIBS=$ac_check_lib_save_LIBS |
18726 | 18748 | 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 : | |
18730 | 18752 | |
18731 | 18753 | $as_echo "#define HAVE_RSCALE /**/" >>confdefs.h |
18732 | 18754 | |
18733 | 18755 | fi |
18734 | 18756 | |
18735 | 18757 | fi |
18758 | ||
18759 | LIBS="${saved_LIBS}" | |
18760 | CPPFLAGS="${saved_CPPFLAGS}" | |
18736 | 18761 | fi |
18737 | 18762 | |
18738 | 18763 | |
21713 | 21738 | # report actual input values of CONFIG_FILES etc. instead of their |
21714 | 21739 | # values after options handling. |
21715 | 21740 | 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 | |
21717 | 21742 | generated by GNU Autoconf 2.69. Invocation command line was |
21718 | 21743 | |
21719 | 21744 | CONFIG_FILES = $CONFIG_FILES |
21780 | 21805 | cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 |
21781 | 21806 | ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" |
21782 | 21807 | ac_cs_version="\\ |
21783 | cyrus-imapd config.status 2.5.8 | |
21808 | cyrus-imapd config.status 2.5.9 | |
21784 | 21809 | configured by $0, generated by GNU Autoconf 2.69, |
21785 | 21810 | with options \\"\$ac_cs_config\\" |
21786 | 21811 |
43 | 43 | dnl |
44 | 44 | |
45 | 45 | |
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]) | |
47 | 47 | AC_PREREQ([2.63]) |
48 | 48 | AC_CONFIG_SRCDIR([imap/imapd.c]) |
49 | 49 | AC_CONFIG_HEADERS(config.h) |
1218 | 1218 | HTTP_LIBS="${XML2_LIBS} ${ICAL_LIBS} ${SQLITE3_LIBS} ${JSON_LIBS}" |
1219 | 1219 | HTTP_CPPFLAGS="${JSON_CFLAGS} ${SQLITE3_CFLAGS} ${ICAL_CFLAGS} ${XML2_CFLAGS}" |
1220 | 1220 | |
1221 | saved_LIBS=${LIBS} | |
1222 | saved_CPPFLAGS="${CPPFLAGS}" | |
1223 | LIBS="${LIBS} ${HTTP_LIBS}" | |
1224 | CPPFLAGS="${CPPFLAGS} ${HTTP_CPPFLAGS}" | |
1225 | ||
1221 | 1226 | AC_DEFINE(HAVE_XML2,[],[Build in libxml support?]) |
1222 | 1227 | AC_DEFINE(HAVE_ICAL,[],[Build in ical support?]) |
1223 | 1228 | AC_DEFINE(HAVE_SQLITE3,[],[Build in SQLite support?]) |
1229 | 1234 | AC_DEFINE(HAVE_TZ_BY_REF,[], |
1230 | 1235 | [Build TZ by ref support into httpd?])) |
1231 | 1236 | |
1232 | AC_EGREP_HEADER(ICAL_TZUNTIL_PROPERTY, ical.h, | |
1237 | AC_EGREP_HEADER(ICAL_TZUNTIL_PROPERTY, [libical/ical.h], | |
1233 | 1238 | AC_DEFINE(HAVE_TZDIST_PROPS,[], |
1234 | 1239 | [Do we have built-in support for TZdist props?])) |
1235 | 1240 | |
1240 | 1245 | AC_DEFINE(WITH_DKIM,[],[Build DKIM support into iSchedule?]) |
1241 | 1246 | fi |
1242 | 1247 | |
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], | |
1244 | 1254 | AC_DEFINE(HAVE_SCHEDULING_PARAMS,[], |
1245 | 1255 | [Do we have built-in support for scheduling params?])) |
1246 | 1256 | |
1247 | AC_EGREP_HEADER(ICAL_VAVAILABILITY_COMPONENT, ical.h, | |
1257 | AC_EGREP_HEADER(ICAL_VAVAILABILITY_COMPONENT, [libical/ical.h], | |
1248 | 1258 | AC_DEFINE(HAVE_VAVAILABILITY,[], |
1249 | 1259 | [Build VAVAILABILITY support into httpd?])) |
1250 | 1260 | |
1251 | AC_EGREP_HEADER(ICAL_VPOLL_COMPONENT, ical.h, | |
1261 | AC_EGREP_HEADER(ICAL_VPOLL_COMPONENT, [libical/ical.h], | |
1252 | 1262 | AC_DEFINE(HAVE_VPOLL,[], |
1253 | 1263 | [Build VPOLL support into httpd?])) |
1254 | 1264 | |
1257 | 1267 | if test "$ENABLE_RSCALE" != no; then |
1258 | 1268 | AC_SUBST(ICU_CFLAGS) |
1259 | 1269 | AC_SUBST(ICU_LIBS) |
1260 | AC_CHECK_LIB(ical, icalrecur_rscale_token_handling_is_supported, | |
1270 | AC_CHECK_LIB(ical, icalrecurrencetype_rscale_is_supported, | |
1261 | 1271 | AC_DEFINE(HAVE_RSCALE,[], [Build RSCALE support into httpd?])) |
1262 | 1272 | fi |
1273 | ||
1274 | LIBS="${saved_LIBS}" | |
1275 | CPPFLAGS="${saved_CPPFLAGS}" | |
1263 | 1276 | fi |
1264 | 1277 | AC_SUBST(HTTP_CPPFLAGS) |
1265 | 1278 | AC_SUBST(HTTP_LIBS) |
6 | 6 | <title>Changes to the Cyrus IMAP Server</title> |
7 | 7 | </head> |
8 | 8 | <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 “-n” (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> | |
9 | 31 | |
10 | 32 | <h1>Changes to the Cyrus IMAP Server since 2.5.7</h1> |
11 | 33 | <h2>Murder changes</h2> |
0 | 0 | <!-- Creator : groff version 1.22.3 --> |
1 | <!-- CreationDate: Fri May 20 06:10:03 2016 --> | |
1 | <!-- CreationDate: Fri Jul 22 02:16:01 2016 --> | |
2 | 2 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
3 | 3 | "http://www.w3.org/TR/html4/loose.dtd"> |
4 | 4 | <html> |
33 | 33 | </h2> |
34 | 34 | |
35 | 35 | |
36 | <p style="margin-left:11%; margin-top: 1em">arbitron | |
37 | − arbitron mailboxes</p> | |
36 | <p style="margin-left:11%; margin-top: 1em">arbitron - | |
37 | arbitron mailboxes</p> | |
38 | 38 | |
39 | 39 | <h2>SYNOPSIS |
40 | 40 | <a name="SYNOPSIS"></a> |
43 | 43 | |
44 | 44 | |
45 | 45 | <p style="margin-left:11%; margin-top: 1em"><b>arbitron</b> |
46 | [ <b>−C</b> <i>config-file</i> ] [ <b>−o</b> ] [ | |
47 | <b>−u</b> ] [ <b>−l</b> ] [ <b>−p</b> | |
48 | <i>months</i> ] <br> | |
49 | [ <b>−d</b> <i>days</i> | <b>−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> | |
50 | 49 | <i>mmddyyyy</i>[<b>:</b><i>mmddyyyy</i>] ] |
51 | 50 | <i>mailbox</i>...</p> |
52 | 51 | |
93 | 92 | </h2> |
94 | 93 | |
95 | 94 | |
96 | ||
97 | <p style="margin-left:11%; margin-top: 1em"><b>−C</b> | |
95 | <p style="margin-left:11%; margin-top: 1em"><b>-C</b> | |
98 | 96 | <i>config-file</i></p> |
99 | 97 | |
100 | 98 | <p style="margin-left:22%;">Read configuration options from |
107 | 105 | <td width="3%"> |
108 | 106 | |
109 | 107 | |
110 | <p><b>−o</b></p></td> | |
108 | <p><b>-o</b></p></td> | |
111 | 109 | <td width="8%"></td> |
112 | 110 | <td width="78%"> |
113 | 111 | |
118 | 116 | <td width="3%"> |
119 | 117 | |
120 | 118 | |
121 | <p><b>−u</b></p></td> | |
119 | <p><b>-u</b></p></td> | |
122 | 120 | <td width="8%"></td> |
123 | 121 | <td width="78%"> |
124 | 122 | |
129 | 127 | <td width="3%"> |
130 | 128 | |
131 | 129 | |
132 | <p><b>−l</b></p></td> | |
130 | <p><b>-l</b></p></td> | |
133 | 131 | <td width="8%"></td> |
134 | 132 | <td width="78%"> |
135 | 133 | |
138 | 136 | of mbox, userid, r/s, start time, end time).</p></td></tr> |
139 | 137 | </table> |
140 | 138 | |
141 | <p style="margin-left:11%;"><b>−d</b> <i>days</i></p> | |
139 | <p style="margin-left:11%;"><b>-d</b> <i>days</i></p> | |
142 | 140 | |
143 | 141 | <p style="margin-left:22%;">Count as a reader an |
144 | 142 | authentication identity which has SELECTed the mailbox |
145 | 143 | within <i>days</i> days. Default is 30.</p> |
146 | 144 | |
147 | <p style="margin-left:11%;"><b>−D</b> | |
145 | <p style="margin-left:11%;"><b>-D</b> | |
148 | 146 | <i>mmddyyyy</i>[<b>:</b><i>mmddyyyy</i>]</p> |
149 | 147 | |
150 | 148 | <p style="margin-left:22%;">Count as a reader an |
155 | 153 | specified, then the current system time is used as the end |
156 | 154 | time.</p> |
157 | 155 | |
158 | <p style="margin-left:11%;"><b>−p</b> | |
159 | <i>months</i></p> | |
156 | <p style="margin-left:11%;"><b>-p</b> <i>months</i></p> | |
160 | 157 | |
161 | 158 | <p style="margin-left:22%;">Prune \Seen state for users who |
162 | 159 | have not SELECTed the mailbox within <i>months</i> months. |
0 | 0 | <!-- Creator : groff version 1.22.3 --> |
1 | <!-- CreationDate: Fri May 20 06:10:03 2016 --> | |
1 | <!-- CreationDate: Fri Jul 22 02:16:01 2016 --> | |
2 | 2 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
3 | 3 | "http://www.w3.org/TR/html4/loose.dtd"> |
4 | 4 | <html> |
34 | 34 | </h2> |
35 | 35 | |
36 | 36 | |
37 | <p style="margin-left:11%; margin-top: 1em">chk_cyrus | |
38 | − 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> | |
40 | 39 | |
41 | 40 | <h2>SYNOPSIS |
42 | 41 | <a name="SYNOPSIS"></a> |
45 | 44 | |
46 | 45 | |
47 | 46 | <p style="margin-left:11%; margin-top: 1em"><b>chk_cyrus</b> |
48 | [ <b>−C</b> <i>config-file</i> ] [ <b>−P</b> | |
49 | <i>partition</i> ] [ <b>−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> | |
50 | 49 | |
51 | 50 | <h2>DESCRIPTION |
52 | 51 | <a name="DESCRIPTION"></a> |
73 | 72 | </h2> |
74 | 73 | |
75 | 74 | |
76 | ||
77 | <p style="margin-left:11%; margin-top: 1em"><b>−C</b> | |
75 | <p style="margin-left:11%; margin-top: 1em"><b>-C</b> | |
78 | 76 | <i>config-file</i></p> |
79 | 77 | |
80 | 78 | <p style="margin-left:22%;">Read configuration options from |
81 | 79 | <i>config-file</i>.</p> |
82 | 80 | |
83 | <p style="margin-left:11%;"><b>−P</b> | |
84 | <i>partition</i></p> | |
81 | <p style="margin-left:11%;"><b>-P</b> <i>partition</i></p> | |
85 | 82 | |
86 | 83 | <p style="margin-left:22%;">Run the consistency check for |
87 | 84 | only the given partition. May not be specified with -M. |
88 | <b>−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> | |
90 | 87 | |
91 | 88 | <h2>FILES |
92 | 89 | <a name="FILES"></a> |
0 | 0 | <!-- Creator : groff version 1.22.3 --> |
1 | <!-- CreationDate: Fri May 20 06:10:04 2016 --> | |
1 | <!-- CreationDate: Fri Jul 22 02:16:01 2016 --> | |
2 | 2 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
3 | 3 | "http://www.w3.org/TR/html4/loose.dtd"> |
4 | 4 | <html> |
34 | 34 | </h2> |
35 | 35 | |
36 | 36 | |
37 | <p style="margin-left:11%; margin-top: 1em">ctl_cyrusdb | |
38 | − 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> | |
39 | 39 | |
40 | 40 | <h2>SYNOPSIS |
41 | 41 | <a name="SYNOPSIS"></a> |
44 | 44 | |
45 | 45 | |
46 | 46 | <p style="margin-left:11%; margin-top: 1em"><b>ctl_cyrusdb</b> |
47 | [ <b>−C</b> <i>config-file</i> ] <b>−r</b> [ | |
48 | <b>−x</b> ] <b><br> | |
49 | ctl_cyrusdb</b> [ <b>−C</b> <i>config-file</i> ] | |
50 | <b>−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> | |
51 | 51 | |
52 | 52 | <h2>DESCRIPTION |
53 | 53 | <a name="DESCRIPTION"></a> |
71 | 71 | </h2> |
72 | 72 | |
73 | 73 | |
74 | ||
75 | <p style="margin-left:11%; margin-top: 1em"><b>−C</b> | |
74 | <p style="margin-left:11%; margin-top: 1em"><b>-C</b> | |
76 | 75 | <i>config-file</i></p> |
77 | 76 | |
78 | 77 | <p style="margin-left:22%;">Read configuration options from |
85 | 84 | <td width="3%"> |
86 | 85 | |
87 | 86 | |
88 | <p><b>−r</b></p></td> | |
87 | <p><b>-r</b></p></td> | |
89 | 88 | <td width="8%"></td> |
90 | 89 | <td width="78%"> |
91 | 90 | |
108 | 107 | <td width="3%"> |
109 | 108 | |
110 | 109 | |
111 | <p style="margin-top: 1em"><b>−x</b></p></td> | |
110 | <p style="margin-top: 1em"><b>-x</b></p></td> | |
112 | 111 | <td width="8%"></td> |
113 | 112 | <td width="78%"> |
114 | 113 | |
120 | 119 | <td width="3%"> |
121 | 120 | |
122 | 121 | |
123 | <p><b>−c</b></p></td> | |
122 | <p><b>-c</b></p></td> | |
124 | 123 | <td width="8%"></td> |
125 | 124 | <td width="78%"> |
126 | 125 |
0 | 0 | <!-- Creator : groff version 1.22.3 --> |
1 | <!-- CreationDate: Fri May 20 06:10:04 2016 --> | |
1 | <!-- CreationDate: Fri Jul 22 02:16:01 2016 --> | |
2 | 2 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
3 | 3 | "http://www.w3.org/TR/html4/loose.dtd"> |
4 | 4 | <html> |
34 | 34 | </h2> |
35 | 35 | |
36 | 36 | |
37 | <p style="margin-left:11%; margin-top: 1em">ctl_deliver | |
38 | − 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> | |
40 | 39 | |
41 | 40 | <h2>SYNOPSIS |
42 | 41 | <a name="SYNOPSIS"></a> |
45 | 44 | |
46 | 45 | |
47 | 46 | <p style="margin-left:11%; margin-top: 1em"><b>ctl_deliver</b> |
48 | [ <b>−C</b> <i>config-file</i> ] <b>−d</b> [ | |
49 | <b>−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> | |
50 | 49 | |
51 | 50 | <h2>DESCRIPTION |
52 | 51 | <a name="DESCRIPTION"></a> |
69 | 68 | </h2> |
70 | 69 | |
71 | 70 | |
72 | ||
73 | <p style="margin-left:11%; margin-top: 1em"><b>−C</b> | |
71 | <p style="margin-left:11%; margin-top: 1em"><b>-C</b> | |
74 | 72 | <i>config-file</i></p> |
75 | 73 | |
76 | 74 | <p style="margin-left:22%;">Read configuration options from |
83 | 81 | <td width="3%"> |
84 | 82 | |
85 | 83 | |
86 | <p><b>−d</b></p></td> | |
84 | <p><b>-d</b></p></td> | |
87 | 85 | <td width="8%"></td> |
88 | 86 | <td width="78%"> |
89 | 87 | |
92 | 90 | a portable flat-text format.</p></td></tr> |
93 | 91 | </table> |
94 | 92 | |
95 | <p style="margin-left:11%;"><b>−f</b> | |
96 | <i>filename</i></p> | |
93 | <p style="margin-left:11%;"><b>-f</b> <i>filename</i></p> | |
97 | 94 | |
98 | 95 | <p style="margin-left:22%;">Use the database specified by |
99 | 96 | <i>filename</i> instead of the default |
0 | 0 | <!-- Creator : groff version 1.22.3 --> |
1 | <!-- CreationDate: Fri May 20 06:10:04 2016 --> | |
1 | <!-- CreationDate: Fri Jul 22 02:16:01 2016 --> | |
2 | 2 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
3 | 3 | "http://www.w3.org/TR/html4/loose.dtd"> |
4 | 4 | <html> |
34 | 34 | </h2> |
35 | 35 | |
36 | 36 | |
37 | <p style="margin-left:11%; margin-top: 1em">ctl_mboxlist | |
38 | − 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> | |
39 | 39 | |
40 | 40 | <h2>SYNOPSIS |
41 | 41 | <a name="SYNOPSIS"></a> |
44 | 44 | |
45 | 45 | |
46 | 46 | <p style="margin-left:11%; margin-top: 1em"><b>ctl_mboxlist</b> |
47 | [ <b>−C</b> <i>config-file</i> ] <b>−d</b> [ | |
48 | <b>−x</b> ] [ <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> ] | |
51 | <b>−u</b> [ <b>−f</b> <i>filename</i> ] <b><br> | |
52 | ctl_mboxlist</b> [ <b>−C</b> <i>config-file</i> ] | |
53 | <b>−m</b> [ <b>−a</b> ] [ <b>−w</b> ] [ | |
54 | <b>−i</b> ] <br> | |
55 | [ <b>−f</b> <i>filename</i> ] <b><br> | |
56 | ctl_mboxlist</b> [ <b>−C</b> <i>config-file</i> ] | |
57 | <b>−v</b> [ <b>−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> | |
58 | 57 | |
59 | 58 | <h2>DESCRIPTION |
60 | 59 | <a name="DESCRIPTION"></a> |
80 | 79 | |
81 | 80 | |
82 | 81 | |
83 | <p style="margin-left:11%; margin-top: 1em"><b>−C </b><i>config-file</i></p> | |
82 | <p style="margin-left:11%; margin-top: 1em"><b>-C </b><i>config-file</i></p> | |
84 | 83 | |
85 | 84 | <p style="margin-left:22%;">Read configuration options from |
86 | 85 | <i>config-file</i>.</p> |
92 | 91 | <td width="3%"> |
93 | 92 | |
94 | 93 | |
95 | <p><b>−d</b></p></td> | |
94 | <p><b>-d</b></p></td> | |
96 | 95 | <td width="8%"></td> |
97 | 96 | <td width="78%"> |
98 | 97 | |
107 | 106 | <td width="3%"> |
108 | 107 | |
109 | 108 | |
110 | <p><b>−x</b></p></td> | |
109 | <p><b>-x</b></p></td> | |
111 | 110 | <td width="8%"></td> |
112 | 111 | <td width="78%"> |
113 | 112 | |
117 | 116 | </table> |
118 | 117 | |
119 | 118 | |
120 | <p style="margin-left:11%;"><b>−p </b><i>partition</i></p> | |
119 | <p style="margin-left:11%;"><b>-p </b><i>partition</i></p> | |
121 | 120 | |
122 | 121 | <p style="margin-left:22%;">When performing a dump, dump |
123 | 122 | only thise mailboxes that live on <i>partition</i></p> |
129 | 128 | <td width="3%"> |
130 | 129 | |
131 | 130 | |
132 | <p><b>−u</b></p></td> | |
131 | <p><b>-u</b></p></td> | |
133 | 132 | <td width="8%"></td> |
134 | 133 | <td width="78%"> |
135 | 134 | |
136 | 135 | |
137 | 136 | <p>Load the contents of the database from standard input. |
138 | The input MUST be in the format output using the | |
139 | <b>−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>−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> | |
148 | 146 | <td width="8%"></td> |
149 | 147 | <td width="78%"> |
150 | 148 | |
156 | 154 | <td width="3%"> |
157 | 155 | |
158 | 156 | |
159 | <p><b>−a</b></p></td> | |
157 | <p><b>-a</b></p></td> | |
160 | 158 | <td width="8%"></td> |
161 | 159 | <td width="78%"> |
162 | 160 | |
170 | 168 | <td width="3%"> |
171 | 169 | |
172 | 170 | |
173 | <p><b>−w</b></p></td> | |
171 | <p><b>-w</b></p></td> | |
174 | 172 | <td width="8%"></td> |
175 | 173 | <td width="78%"> |
176 | 174 | |
182 | 180 | <td width="3%"> |
183 | 181 | |
184 | 182 | |
185 | <p><b>−i</b></p></td> | |
183 | <p><b>-i</b></p></td> | |
186 | 184 | <td width="8%"></td> |
187 | 185 | <td width="78%"> |
188 | 186 | |
194 | 192 | <td width="3%"> |
195 | 193 | |
196 | 194 | |
197 | <p><b>−v</b></p></td> | |
195 | <p><b>-v</b></p></td> | |
198 | 196 | <td width="8%"></td> |
199 | 197 | <td width="78%"> |
200 | 198 | |
207 | 205 | that this function is very I/O intensive.</p></td></tr> |
208 | 206 | </table> |
209 | 207 | |
210 | <p style="margin-left:11%;"><b>−f</b> | |
211 | <i>filename</i></p> | |
208 | <p style="margin-left:11%;"><b>-f</b> <i>filename</i></p> | |
212 | 209 | |
213 | 210 | <p style="margin-left:22%;">Use the database specified by |
214 | 211 | <i>filename</i> instead of the default |
0 | 0 | <!-- Creator : groff version 1.22.3 --> |
1 | <!-- CreationDate: Fri May 20 06:10:04 2016 --> | |
1 | <!-- CreationDate: Fri Jul 22 02:16:01 2016 --> | |
2 | 2 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
3 | 3 | "http://www.w3.org/TR/html4/loose.dtd"> |
4 | 4 | <html> |
36 | 36 | </h2> |
37 | 37 | |
38 | 38 | |
39 | <p style="margin-left:11%; margin-top: 1em">ctl_zoneinfo | |
40 | − 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> | |
41 | 41 | |
42 | 42 | <h2>SYNOPSIS |
43 | 43 | <a name="SYNOPSIS"></a> |
46 | 46 | |
47 | 47 | |
48 | 48 | <p style="margin-left:11%; margin-top: 1em"><b>ctl_zoneinfo</b> |
49 | [ <b>−C</b> <i>config-file</i> ] [ <b>−v</b> ] | |
50 | <b>−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> | |
51 | 51 | |
52 | 52 | <h2>DESCRIPTION |
53 | 53 | <a name="DESCRIPTION"></a> |
70 | 70 | </h2> |
71 | 71 | |
72 | 72 | |
73 | ||
74 | <p style="margin-left:11%; margin-top: 1em"><b>−C</b> | |
73 | <p style="margin-left:11%; margin-top: 1em"><b>-C</b> | |
75 | 74 | <i>config-file</i></p> |
76 | 75 | |
77 | 76 | <p style="margin-left:22%;">Read configuration options from |
84 | 83 | <td width="3%"> |
85 | 84 | |
86 | 85 | |
87 | <p><b>−v</b></p></td> | |
86 | <p><b>-v</b></p></td> | |
88 | 87 | <td width="8%"></td> |
89 | 88 | <td width="33%"> |
90 | 89 | |
94 | 93 | </td></tr> |
95 | 94 | </table> |
96 | 95 | |
97 | <p style="margin-left:11%;"><b>−r</b> | |
96 | <p style="margin-left:11%;"><b>-r</b> | |
98 | 97 | <i>version-string</i></p> |
99 | 98 | |
100 | 99 | <p style="margin-left:22%;">Rebuild the zoneinfo database |
0 | 0 | <!-- Creator : groff version 1.22.3 --> |
1 | <!-- CreationDate: Fri May 20 06:10:04 2016 --> | |
1 | <!-- CreationDate: Fri Jul 22 02:16:01 2016 --> | |
2 | 2 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
3 | 3 | "http://www.w3.org/TR/html4/loose.dtd"> |
4 | 4 | <html> |
34 | 34 | </h2> |
35 | 35 | |
36 | 36 | |
37 | <p style="margin-left:11%; margin-top: 1em">cvt_cyrusdb | |
38 | − 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> | |
40 | 39 | |
41 | 40 | <h2>SYNOPSIS |
42 | 41 | <a name="SYNOPSIS"></a> |
45 | 44 | |
46 | 45 | |
47 | 46 | <p style="margin-left:11%; margin-top: 1em"><b>cvt_cyrusdb</b> |
48 | [ <b>−C</b> <i>config-file</i> ] <old-file> | |
47 | [ <b>-C</b> <i>config-file</i> ] <old-file> | |
49 | 48 | <old-fileformat> <new-file> |
50 | 49 | <new-file-format></p> |
51 | 50 | |
76 | 75 | </h2> |
77 | 76 | |
78 | 77 | |
79 | ||
80 | <p style="margin-left:11%; margin-top: 1em"><b>−C</b> | |
78 | <p style="margin-left:11%; margin-top: 1em"><b>-C</b> | |
81 | 79 | <i>config-file</i></p> |
82 | 80 | |
83 | 81 | <p style="margin-left:22%;">Read configuration options from |
0 | 0 | <!-- Creator : groff version 1.22.3 --> |
1 | <!-- CreationDate: Fri May 20 06:10:04 2016 --> | |
1 | <!-- CreationDate: Fri Jul 22 02:16:01 2016 --> | |
2 | 2 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
3 | 3 | "http://www.w3.org/TR/html4/loose.dtd"> |
4 | 4 | <html> |
34 | 34 | </h2> |
35 | 35 | |
36 | 36 | |
37 | <p style="margin-left:11%; margin-top: 1em">cyr_dbtool | |
38 | − manage Cyrus databases</p> | |
37 | <p style="margin-left:11%; margin-top: 1em">cyr_dbtool - | |
38 | manage Cyrus databases</p> | |
39 | 39 | |
40 | 40 | <h2>SYNOPSIS |
41 | 41 | <a name="SYNOPSIS"></a> |
44 | 44 | |
45 | 45 | |
46 | 46 | <p style="margin-left:11%; margin-top: 1em"><b>cyr_dbtool</b> |
47 | [ <b>−C</b> <i>config-file</i> ] [ <b>−M</b> ] [ | |
48 | <b>−n</b> ] [ <b>−o</b> ] [ <b>−T</b> ] | |
49 | <db file> <db backend> <action> [ | |
50 | <key> ] [ <value> ]</p> | |
47 | [ <b>-C</b> <i>config-file</i> ] [ <b>-M</b> ] [ <b>-n</b> ] | |
48 | [ <b>-o</b> ] [ <b>-T</b> ] <db file> <db | |
49 | backend> <action> [ <key> ] [ <value> | |
50 | ]</p> | |
51 | 51 | |
52 | 52 | <h2>DESCRIPTION |
53 | 53 | <a name="DESCRIPTION"></a> |
108 | 108 | </h2> |
109 | 109 | |
110 | 110 | |
111 | ||
112 | <p style="margin-left:11%; margin-top: 1em"><b>−C</b> | |
111 | <p style="margin-left:11%; margin-top: 1em"><b>-C</b> | |
113 | 112 | <i>config-file</i></p> |
114 | 113 | |
115 | 114 | <p style="margin-left:22%;">Read configuration options from |
122 | 121 | <td width="3%"> |
123 | 122 | |
124 | 123 | |
125 | <p><b>−M</b></p></td> | |
124 | <p><b>-M</b></p></td> | |
126 | 125 | <td width="8%"></td> |
127 | 126 | <td width="78%"> |
128 | 127 | |
133 | 132 | <td width="3%"> |
134 | 133 | |
135 | 134 | |
136 | <p><b>−n</b></p></td> | |
135 | <p><b>-n</b></p></td> | |
137 | 136 | <td width="8%"></td> |
138 | 137 | <td width="78%"> |
139 | 138 | |
145 | 144 | <td width="3%"> |
146 | 145 | |
147 | 146 | |
148 | <p><b>−o</b></p></td> | |
147 | <p><b>-o</b></p></td> | |
149 | 148 | <td width="8%"></td> |
150 | 149 | <td width="78%"> |
151 | 150 | |
157 | 156 | <td width="3%"> |
158 | 157 | |
159 | 158 | |
160 | <p><b>−T</b></p></td> | |
159 | <p><b>-T</b></p></td> | |
161 | 160 | <td width="8%"></td> |
162 | 161 | <td width="78%"> |
163 | 162 |
0 | 0 | <!-- Creator : groff version 1.22.3 --> |
1 | <!-- CreationDate: Fri May 20 06:10:04 2016 --> | |
1 | <!-- CreationDate: Fri Jul 22 02:16:02 2016 --> | |
2 | 2 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
3 | 3 | "http://www.w3.org/TR/html4/loose.dtd"> |
4 | 4 | <html> |
34 | 34 | </h2> |
35 | 35 | |
36 | 36 | |
37 | <p style="margin-left:11%; margin-top: 1em">cyr_deny | |
38 | − 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> | |
39 | 39 | |
40 | 40 | <h2>SYNOPSIS |
41 | 41 | <a name="SYNOPSIS"></a> |
44 | 44 | |
45 | 45 | |
46 | 46 | <p style="margin-left:11%; margin-top: 1em"><b>cyr_deny</b> |
47 | [ <b>−C</b> <i>config-file</i> ] [ <b>−s</b> | |
48 | <i>services</i> ] [ <b>−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> | |
49 | 50 | <i>user</i> <b><br> |
50 | cyr_deny</b> [ <b>−C</b> <i>config-file</i> ] | |
51 | <b>-a</b> <i>user</i> <b><br> | |
52 | cyr_deny</b> [ <b>−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> | |
54 | 52 | |
55 | 53 | <h2>DESCRIPTION |
56 | 54 | <a name="DESCRIPTION"></a> |
71 | 69 | </h2> |
72 | 70 | |
73 | 71 | |
74 | ||
75 | <p style="margin-left:11%; margin-top: 1em"><b>−C</b> | |
72 | <p style="margin-left:11%; margin-top: 1em"><b>-C</b> | |
76 | 73 | <i>config-file</i></p> |
77 | 74 | |
78 | 75 | <p style="margin-left:22%;">Read configuration options from |
85 | 82 | <td width="3%"> |
86 | 83 | |
87 | 84 | |
88 | <p><b>−a</b></p></td> | |
85 | <p><b>-a</b></p></td> | |
89 | 86 | <td width="8%"></td> |
90 | 87 | <td width="78%"> |
91 | 88 | |
94 | 91 | (remove any entry from the deny database).</p></td></tr> |
95 | 92 | </table> |
96 | 93 | |
97 | <p style="margin-left:11%;"><b>−s</b> | |
98 | <i>services</i></p> | |
94 | <p style="margin-left:11%;"><b>-s</b> <i>services</i></p> | |
99 | 95 | |
100 | 96 | <p style="margin-left:22%;">Deny access only to the given |
101 | 97 | <i>services</i>, which is a comma-separated list of wildcard |
109 | 105 | <td width="3%"> |
110 | 106 | |
111 | 107 | |
112 | <p><b>−l</b></p></td> | |
108 | <p><b>-l</b></p></td> | |
113 | 109 | <td width="8%"></td> |
114 | 110 | <td width="58%"> |
115 | 111 | |
119 | 115 | </td></tr> |
120 | 116 | </table> |
121 | 117 | |
122 | <p style="margin-left:11%;"><b>−m</b> | |
123 | <i>message</i></p> | |
118 | <p style="margin-left:11%;"><b>-m</b> <i>message</i></p> | |
124 | 119 | |
125 | 120 | <p style="margin-left:22%;">Provide a message which is sent |
126 | 121 | to the user to explain why access is being denied. A default |
0 | 0 | <!-- Creator : groff version 1.22.3 --> |
1 | <!-- CreationDate: Fri May 20 06:10:04 2016 --> | |
1 | <!-- CreationDate: Fri Jul 22 02:16:02 2016 --> | |
2 | 2 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
3 | 3 | "http://www.w3.org/TR/html4/loose.dtd"> |
4 | 4 | <html> |
33 | 33 | </h2> |
34 | 34 | |
35 | 35 | |
36 | <p style="margin-left:11%; margin-top: 1em">cyr_df − | |
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> | |
38 | 38 | |
39 | 39 | <h2>SYNOPSIS |
40 | 40 | <a name="SYNOPSIS"></a> |
42 | 42 | |
43 | 43 | |
44 | 44 | <p style="margin-left:11%; margin-top: 1em"><b>cyr_df</b> [ |
45 | <b>−C</b> <i>config-file</i> ] [ <b>−m</b> ]</p> | |
45 | <b>-C</b> <i>config-file</i> ] [ <b>-m</b> ]</p> | |
46 | 46 | |
47 | 47 | <h2>DESCRIPTION |
48 | 48 | <a name="DESCRIPTION"></a> |
60 | 60 | </h2> |
61 | 61 | |
62 | 62 | |
63 | ||
64 | <p style="margin-left:11%; margin-top: 1em"><b>−C</b> | |
63 | <p style="margin-left:11%; margin-top: 1em"><b>-C</b> | |
65 | 64 | <i>config-file</i></p> |
66 | 65 | |
67 | 66 | <p style="margin-left:22%;">Read configuration options from |
74 | 73 | <td width="3%"> |
75 | 74 | |
76 | 75 | |
77 | <p><b>−m</b></p></td> | |
76 | <p><b>-m</b></p></td> | |
78 | 77 | <td width="8%"></td> |
79 | 78 | <td width="78%"> |
80 | 79 |
0 | 0 | <!-- Creator : groff version 1.22.3 --> |
1 | <!-- CreationDate: Fri May 20 06:10:04 2016 --> | |
1 | <!-- CreationDate: Fri Jul 22 02:16:02 2016 --> | |
2 | 2 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
3 | 3 | "http://www.w3.org/TR/html4/loose.dtd"> |
4 | 4 | <html> |
34 | 34 | </h2> |
35 | 35 | |
36 | 36 | |
37 | <p style="margin-left:11%; margin-top: 1em">cyr_expire | |
38 | − 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> | |
40 | 39 | |
41 | 40 | <h2>SYNOPSIS |
42 | 41 | <a name="SYNOPSIS"></a> |
45 | 44 | |
46 | 45 | |
47 | 46 | <p style="margin-left:11%; margin-top: 1em"><b>cyr_expire</b> |
48 | [ <b>−C</b> <i>config-file</i> ] [ <b>−D</b> | |
49 | <i>delete-duration</i> ] [ <b>−E</b> | |
50 | <i>expire-duration</i> ] [ <b>−X</b> | |
51 | <i>expunge-duration</i> ] [ <b>−p</b> | |
52 | <i>mailbox-prefix</i> ] [ <b>−u</b> <i>username</i> ] | |
53 | [ <b>−t</b> ] [ <b>−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> | |
54 | 52 | |
55 | 53 | <h2>DESCRIPTION |
56 | 54 | <a name="DESCRIPTION"></a> |
158 | 156 | </h2> |
159 | 157 | |
160 | 158 | |
161 | ||
162 | <p style="margin-left:11%; margin-top: 1em"><b>−C</b> | |
159 | <p style="margin-left:11%; margin-top: 1em"><b>-C</b> | |
163 | 160 | <i>config-file</i></p> |
164 | 161 | |
165 | 162 | <p style="margin-left:22%;">Read configuration options from |
166 | 163 | <i>config-file</i>.</p> |
167 | 164 | |
168 | <p style="margin-left:11%;"><b>−D</b> | |
165 | <p style="margin-left:11%;"><b>-D</b> | |
169 | 166 | <i>delete-duration</i></p> |
170 | 167 | |
171 | 168 | <p style="margin-left:22%;">Remove previously deleted |
176 | 173 | Valid suffixes are <b>d</b> (days), <b>h</b> (hours), |
177 | 174 | <b>m</b> (minutes) and <b>s</b> (seconds).</p> |
178 | 175 | |
179 | <p style="margin-left:11%;"><b>−E</b> | |
176 | <p style="margin-left:11%;"><b>-E</b> | |
180 | 177 | <i>expire-duration</i></p> |
181 | 178 | |
182 | 179 | <p style="margin-left:22%;">Prune the duplicate database of |
185 | 182 | <b>/vendor/cmu/cyrus-imapd/expire</b> mailbox annotation. |
186 | 183 | Format is the same as delete-duration.</p> |
187 | 184 | |
188 | <p style="margin-left:11%;"><b>−X</b> | |
185 | <p style="margin-left:11%;"><b>-X</b> | |
189 | 186 | <i>expunge-duration</i></p> |
190 | 187 | |
191 | 188 | <p style="margin-left:22%;">Expunge previously deleted |
200 | 197 | <td width="3%"> |
201 | 198 | |
202 | 199 | |
203 | <p><b>−x</b></p></td> | |
200 | <p><b>-x</b></p></td> | |
204 | 201 | <td width="8%"></td> |
205 | 202 | <td width="78%"> |
206 | 203 | |
211 | 208 | duplicate database without overloading the machine.</p></td></tr> |
212 | 209 | </table> |
213 | 210 | |
214 | <p style="margin-left:11%;"><b>−p</b> | |
211 | <p style="margin-left:11%;"><b>-p</b> | |
215 | 212 | <i>mailbox-prefix</i></p> |
216 | 213 | |
217 | 214 | <p style="margin-left:22%;">Only find mailboxes starting |
218 | 215 | with this prefix, e.g. |
219 | 216 | "user.justgotspammedlots".</p> |
220 | 217 | |
221 | <p style="margin-left:11%;"><b>−u</b> | |
222 | <i>userid</i></p> | |
218 | <p style="margin-left:11%;"><b>-u</b> <i>userid</i></p> | |
223 | 219 | |
224 | 220 | <p style="margin-left:22%;">Only find mailboxes belonging |
225 | 221 | to this user, e.g. |
232 | 228 | <td width="3%"> |
233 | 229 | |
234 | 230 | |
235 | <p><b>−t</b></p></td> | |
231 | <p><b>-t</b></p></td> | |
236 | 232 | <td width="8%"></td> |
237 | 233 | <td width="78%"> |
238 | 234 | |
244 | 240 | <td width="3%"> |
245 | 241 | |
246 | 242 | |
247 | <p><b>−v</b></p></td> | |
243 | <p><b>-v</b></p></td> | |
248 | 244 | <td width="8%"></td> |
249 | 245 | <td width="78%"> |
250 | 246 | |
255 | 251 | <td width="3%"> |
256 | 252 | |
257 | 253 | |
258 | <p><b>−a</b></p></td> | |
254 | <p><b>-a</b></p></td> | |
259 | 255 | <td width="8%"></td> |
260 | 256 | <td width="78%"> |
261 | 257 |
0 | 0 | <!-- Creator : groff version 1.22.3 --> |
1 | <!-- CreationDate: Fri May 20 06:10:04 2016 --> | |
1 | <!-- CreationDate: Fri Jul 22 02:16:02 2016 --> | |
2 | 2 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
3 | 3 | "http://www.w3.org/TR/html4/loose.dtd"> |
4 | 4 | <html> |
34 | 34 | </h2> |
35 | 35 | |
36 | 36 | |
37 | <p style="margin-left:11%; margin-top: 1em">cyr_info | |
38 | − general cyrus inspection tool</p> | |
37 | <p style="margin-left:11%; margin-top: 1em">cyr_info - | |
38 | general cyrus inspection tool</p> | |
39 | 39 | |
40 | 40 | <h2>SYNOPSIS |
41 | 41 | <a name="SYNOPSIS"></a> |
44 | 44 | |
45 | 45 | |
46 | 46 | <p style="margin-left:11%; margin-top: 1em"><b>cyr_info</b> |
47 | [ <b>−C</b> <i>alt imapd.conf</i> ] [ <b>−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> | |
49 | 49 | |
50 | 50 | <h2>DESCRIPTION |
51 | 51 | <a name="DESCRIPTION"></a> |
65 | 65 | </h2> |
66 | 66 | |
67 | 67 | |
68 | ||
69 | <p style="margin-left:11%; margin-top: 1em"><b>−C</b> | |
68 | <p style="margin-left:11%; margin-top: 1em"><b>-C</b> | |
70 | 69 | <i>file</i></p> |
71 | 70 | |
72 | 71 | <p style="margin-left:22%;">Read configuration options from |
73 | 72 | <i>file</i> (imapd.conf format).</p> |
74 | 73 | |
75 | <p style="margin-left:11%;"><b>−M</b> <i>file</i></p> | |
74 | <p style="margin-left:11%;"><b>-M</b> <i>file</i></p> | |
76 | 75 | |
77 | 76 | <p style="margin-left:22%;">Read service specifications |
78 | 77 | from <i>file</i> (cyrus.conf format).</p> |
79 | 78 | |
80 | <p style="margin-left:11%;"><b>−n</b> <i>name</i></p> | |
79 | <p style="margin-left:11%;"><b>-n</b> <i>name</i></p> | |
81 | 80 | |
82 | 81 | <p style="margin-left:22%;">Read the configuration as if |
83 | 82 | for the service named <i>name</i>.</p> |
0 | 0 | <!-- Creator : groff version 1.22.3 --> |
1 | <!-- CreationDate: Fri May 20 06:10:05 2016 --> | |
1 | <!-- CreationDate: Fri Jul 22 02:16:02 2016 --> | |
2 | 2 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
3 | 3 | "http://www.w3.org/TR/html4/loose.dtd"> |
4 | 4 | <html> |
35 | 35 | </h2> |
36 | 36 | |
37 | 37 | |
38 | <p style="margin-left:11%; margin-top: 1em">cyr_synclog | |
39 | − 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> | |
40 | 40 | |
41 | 41 | <h2>SYNOPSIS |
42 | 42 | <a name="SYNOPSIS"></a> |
45 | 45 | |
46 | 46 | |
47 | 47 | <p style="margin-left:11%; margin-top: 1em"><b>cyr_synclog</b> |
48 | [ <b>−C</b> <i>config-file</i> ] [ <b>−type</b> | |
49 | ] <value></p> | |
48 | [ <b>-C</b> <i>config-file</i> ] [ <b>-type</b> ] | |
49 | <value></p> | |
50 | 50 | |
51 | 51 | <h2>DESCRIPTION |
52 | 52 | <a name="DESCRIPTION"></a> |
58 | 58 | is used to append a value to the log file. You can either |
59 | 59 | specify the log type and value, or an entire log line.</p> |
60 | 60 | |
61 | <p style="margin-left:11%; margin-top: 1em">−u | |
62 | USER</p> | |
61 | <p style="margin-left:11%; margin-top: 1em">-u USER</p> | |
63 | 62 | |
64 | <p style="margin-left:11%; margin-top: 1em">−U | |
65 | UNUSER</p> | |
63 | <p style="margin-left:11%; margin-top: 1em">-U UNUSER</p> | |
66 | 64 | |
67 | <p style="margin-left:11%; margin-top: 1em">−v | |
68 | SIEVE</p> | |
65 | <p style="margin-left:11%; margin-top: 1em">-v SIEVE</p> | |
69 | 66 | |
70 | <p style="margin-left:11%; margin-top: 1em">−m | |
71 | MAILBOX</p> | |
67 | <p style="margin-left:11%; margin-top: 1em">-m MAILBOX</p> | |
72 | 68 | |
73 | <p style="margin-left:11%; margin-top: 1em">−M | |
69 | <p style="margin-left:11%; margin-top: 1em">-M | |
74 | 70 | UNMAILBOX</p> |
75 | 71 | |
76 | <p style="margin-left:11%; margin-top: 1em">−a | |
77 | APPEND</p> | |
72 | <p style="margin-left:11%; margin-top: 1em">-a APPEND</p> | |
78 | 73 | |
79 | <p style="margin-left:11%; margin-top: 1em">−c | |
80 | ACL</p> | |
74 | <p style="margin-left:11%; margin-top: 1em">-c ACL</p> | |
81 | 75 | |
82 | <p style="margin-left:11%; margin-top: 1em">−q | |
83 | QUOTA</p> | |
76 | <p style="margin-left:11%; margin-top: 1em">-q QUOTA</p> | |
84 | 77 | |
85 | <p style="margin-left:11%; margin-top: 1em">−n | |
78 | <p style="margin-left:11%; margin-top: 1em">-n | |
86 | 79 | ANNOTATION</p> |
87 | 80 | |
88 | <p style="margin-left:11%; margin-top: 1em">−s | |
89 | SEEN</p> | |
81 | <p style="margin-left:11%; margin-top: 1em">-s SEEN</p> | |
90 | 82 | |
91 | <p style="margin-left:11%; margin-top: 1em">−b | |
83 | <p style="margin-left:11%; margin-top: 1em">-b | |
92 | 84 | SUBSCRIPTION</p> |
93 | 85 | |
94 | 86 | <p style="margin-left:11%; margin-top: 1em">Running without |
108 | 100 | <p style="margin-left:11%; margin-top: 1em">Here are some |
109 | 101 | example ways to use cyr_synclog:</p> |
110 | 102 | |
111 | <p style="margin-left:11%; margin-top: 1em">cyr_synclog | |
112 | −m user.brong</p> | |
103 | <p style="margin-left:11%; margin-top: 1em">cyr_synclog -m | |
104 | user.brong</p> | |
113 | 105 | |
114 | <p style="margin-left:11%; margin-top: 1em">cyr_synclog | |
115 | −u brong</p> | |
106 | <p style="margin-left:11%; margin-top: 1em">cyr_synclog -u | |
107 | brong</p> | |
116 | 108 | |
117 | <p style="margin-left:11%; margin-top: 1em">cyr_synclog | |
118 | −C /etc/imapd-special.conf −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> | |
120 | 111 | |
121 | 112 | <p style="margin-left:11%; margin-top: 1em">cyr_synclog |
122 | 113 | "SEEN user.brong brong"</p> |
126 | 117 | </h2> |
127 | 118 | |
128 | 119 | |
129 | ||
130 | <p style="margin-left:11%; margin-top: 1em"><b>−C</b> | |
120 | <p style="margin-left:11%; margin-top: 1em"><b>-C</b> | |
131 | 121 | <i>config-file</i></p> |
132 | 122 | |
133 | 123 | <p style="margin-left:22%;">Read configuration options from |
0 | 0 | <!-- Creator : groff version 1.22.3 --> |
1 | <!-- CreationDate: Fri May 20 06:10:05 2016 --> | |
1 | <!-- CreationDate: Fri Jul 22 02:16:02 2016 --> | |
2 | 2 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
3 | 3 | "http://www.w3.org/TR/html4/loose.dtd"> |
4 | 4 | <html> |
34 | 34 | </h2> |
35 | 35 | |
36 | 36 | |
37 | <p style="margin-left:11%; margin-top: 1em">cyrus.conf | |
38 | − Cyrus configuration file</p> | |
37 | <p style="margin-left:11%; margin-top: 1em">cyrus.conf - | |
38 | Cyrus configuration file</p> | |
39 | 39 | |
40 | 40 | <h2>DESCRIPTION |
41 | 41 | <a name="DESCRIPTION"></a> |
0 | 0 | <!-- Creator : groff version 1.22.3 --> |
1 | <!-- CreationDate: Fri May 20 06:10:05 2016 --> | |
1 | <!-- CreationDate: Fri Jul 22 02:16:02 2016 --> | |
2 | 2 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
3 | 3 | "http://www.w3.org/TR/html4/loose.dtd"> |
4 | 4 | <html> |
35 | 35 | </h2> |
36 | 36 | |
37 | 37 | |
38 | <p style="margin-left:11%; margin-top: 1em">deliver − | |
38 | <p style="margin-left:11%; margin-top: 1em">deliver - | |
39 | 39 | deliver mail to an IMAP mailbox</p> |
40 | 40 | |
41 | 41 | <h2>SYNOPSIS |
44 | 44 | |
45 | 45 | |
46 | 46 | <p style="margin-left:11%; margin-top: 1em"><b>deliver</b> |
47 | [ <b>−C</b> <i>config-file</i> ] [ <b>−d</b> ] [ | |
48 | <b>−r</b> <i>address</i> ] <br> | |
49 | [ <b>−f</b> <i>address</i> ] [ <b>−m</b> | |
50 | <i>mailbox</i> ] [ <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> ] | |
53 | <b>−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> | |
54 | 53 | |
55 | 54 | <h2>DESCRIPTION |
56 | 55 | <a name="DESCRIPTION"></a> |
72 | 71 | </h2> |
73 | 72 | |
74 | 73 | |
75 | ||
76 | <p style="margin-left:11%; margin-top: 1em"><b>−C</b> | |
74 | <p style="margin-left:11%; margin-top: 1em"><b>-C</b> | |
77 | 75 | <i>config-file</i></p> |
78 | 76 | |
79 | 77 | <p style="margin-left:22%;">Read configuration options from |
86 | 84 | <td width="3%"> |
87 | 85 | |
88 | 86 | |
89 | <p><b>−d</b></p></td> | |
87 | <p><b>-d</b></p></td> | |
90 | 88 | <td width="8%"></td> |
91 | 89 | <td width="63%"> |
92 | 90 | |
96 | 94 | </td></tr> |
97 | 95 | </table> |
98 | 96 | |
99 | <p style="margin-left:11%;"><b>−r</b> | |
100 | <i>address</i></p> | |
97 | <p style="margin-left:11%;"><b>-r</b> <i>address</i></p> | |
101 | 98 | |
102 | 99 | <p style="margin-left:22%;">Insert a <b>Return-Path:</b> |
103 | 100 | header containing <i>address</i></p> |
104 | 101 | |
105 | <p style="margin-left:11%;"><b>−f</b> | |
106 | <i>address</i></p> | |
102 | <p style="margin-left:11%;"><b>-f</b> <i>address</i></p> | |
107 | 103 | |
108 | 104 | <p style="margin-left:22%;">Insert a <b>Return-Path:</b> |
109 | 105 | header containing <i>address</i></p> |
110 | 106 | |
111 | <p style="margin-left:11%;"><b>−m</b> | |
112 | <i>mailbox</i></p> | |
107 | <p style="margin-left:11%;"><b>-m</b> <i>mailbox</i></p> | |
113 | 108 | |
114 | 109 | <p style="margin-left:22%;">Deliver to <i>mailbox</i>. If |
115 | 110 | any <i>userid</i>s are specified, attempts to deliver to |
116 | 111 | user.<i>userid</i>.<i>mailbox</i> for each <i>userid</i>. If |
117 | 112 | the ACL on any such mailbox does not grant the sender the |
118 | "p" right or if <b>−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 | "p" 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> | |
121 | 116 | |
122 | 117 | <p style="margin-left:22%; margin-top: 1em">If no |
123 | 118 | <i>userid</i>s are specified, attempts to deliver to |
124 | 119 | <i>mailbox</i>. If the ACL on <i>mailbox</i> does not grant |
125 | 120 | the sender the "p" right, the delivery fails.</p> |
126 | 121 | |
127 | <p style="margin-left:11%;"><b>−a</b> | |
128 | <i>auth-id</i></p> | |
122 | <p style="margin-left:11%;"><b>-a</b> <i>auth-id</i></p> | |
129 | 123 | |
130 | 124 | <p style="margin-left:22%;">Specify the authorization id of |
131 | 125 | the sender. Defaults to "anonymous".</p> |
137 | 131 | <td width="3%"> |
138 | 132 | |
139 | 133 | |
140 | <p><b>−q</b></p></td> | |
134 | <p><b>-q</b></p></td> | |
141 | 135 | <td width="8%"></td> |
142 | 136 | <td width="78%"> |
143 | 137 | |
149 | 143 | <td width="3%"> |
150 | 144 | |
151 | 145 | |
152 | <p><b>−l</b></p></td> | |
146 | <p><b>-l</b></p></td> | |
153 | 147 | <td width="8%"></td> |
154 | 148 | <td width="78%"> |
155 | 149 |
0 | 0 | <!-- Creator : groff version 1.22.3 --> |
1 | <!-- CreationDate: Fri May 20 06:10:05 2016 --> | |
1 | <!-- CreationDate: Fri Jul 22 02:16:02 2016 --> | |
2 | 2 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
3 | 3 | "http://www.w3.org/TR/html4/loose.dtd"> |
4 | 4 | <html> |
33 | 33 | </h2> |
34 | 34 | |
35 | 35 | |
36 | <p style="margin-left:11%; margin-top: 1em">fetchnews | |
37 | − 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> | |
39 | 38 | |
40 | 39 | <h2>SYNOPSIS |
41 | 40 | <a name="SYNOPSIS"></a> |
44 | 43 | |
45 | 44 | |
46 | 45 | <p style="margin-left:11%; margin-top: 1em"><b>fetchnews</b> |
47 | [ <b>−C</b> <i>config-file</i> ] [ <b>−s</b> | |
46 | [ <b>-C</b> <i>config-file</i> ] [ <b>-s</b> | |
48 | 47 | <i>servername[:port]</i> ] <br> |
49 | [ <b>−n</b> ] [ <b>−y</b> ] [ <b>−w</b> | |
50 | <i>wildmat</i> ] [ <b>−f</b> <i>tstampfile</i> ] <br> | |
51 | [ <b>−a</b> <i>authname</i> [ <b>−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> | |
53 | 52 | |
54 | 53 | <h2>DESCRIPTION |
55 | 54 | <a name="DESCRIPTION"></a> |
75 | 74 | </h2> |
76 | 75 | |
77 | 76 | |
78 | ||
79 | <p style="margin-left:11%; margin-top: 1em"><b>−C</b> | |
77 | <p style="margin-left:11%; margin-top: 1em"><b>-C</b> | |
80 | 78 | <i>config-file</i></p> |
81 | 79 | |
82 | 80 | <p style="margin-left:22%;">Read configuration options from |
83 | 81 | <i>config-file</i>.</p> |
84 | 82 | |
85 | <p style="margin-left:11%;"><b>−s</b> | |
86 | <i>servername</i></p> | |
83 | <p style="margin-left:11%;"><b>-s</b> <i>servername</i></p> | |
87 | 84 | |
88 | 85 | <p style="margin-left:22%;">Hostname of the Cyrus server |
89 | 86 | (with optional port) to which articles should be fed. |
96 | 93 | <td width="3%"> |
97 | 94 | |
98 | 95 | |
99 | <p><b>−n</b></p></td> | |
96 | <p><b>-n</b></p></td> | |
100 | 97 | <td width="8%"></td> |
101 | 98 | <td width="78%"> |
102 | 99 | |
109 | 106 | <td width="3%"> |
110 | 107 | |
111 | 108 | |
112 | <p><b>−y</b></p></td> | |
109 | <p><b>-y</b></p></td> | |
113 | 110 | <td width="8%"></td> |
114 | 111 | <td width="78%"> |
115 | 112 | |
118 | 115 | but not y2k-compliant.</p></td></tr> |
119 | 116 | </table> |
120 | 117 | |
121 | <p style="margin-left:11%;"><b>−w</b> | |
122 | <i>wildmat</i></p> | |
118 | <p style="margin-left:11%;"><b>-w</b> <i>wildmat</i></p> | |
123 | 119 | |
124 | 120 | <p style="margin-left:22%;">Wildmat pattern specifying |
125 | 121 | which newsgroups to search for new articles. Defaults to |
126 | 122 | "*".</p> |
127 | 123 | |
128 | <p style="margin-left:11%;"><b>−f</b> | |
129 | <i>tstampfile</i></p> | |
124 | <p style="margin-left:11%;"><b>-f</b> <i>tstampfile</i></p> | |
130 | 125 | |
131 | 126 | <p style="margin-left:22%;">File in which to read/write the |
132 | 127 | timestamp of when articles were last retrieved. Defaults to |
133 | 128 | "newsstamp" located in <i>configdir</i> as |
134 | 129 | specified by the configuration options.</p> |
135 | 130 | |
136 | <p style="margin-left:11%;"><b>−a</b> | |
137 | <i>authname</i></p> | |
131 | <p style="margin-left:11%;"><b>-a</b> <i>authname</i></p> | |
138 | 132 | |
139 | 133 | <p style="margin-left:22%;">Userid to use for |
140 | 134 | authentication.</p> |
141 | 135 | |
142 | <p style="margin-left:11%;"><b>−p</b> | |
143 | <i>password</i></p> | |
136 | <p style="margin-left:11%;"><b>-p</b> <i>password</i></p> | |
144 | 137 | |
145 | 138 | <p style="margin-left:22%;">Password to use for |
146 | 139 | authentication.</p> |
0 | 0 | <!-- Creator : groff version 1.22.3 --> |
1 | <!-- CreationDate: Fri May 20 06:10:05 2016 --> | |
1 | <!-- CreationDate: Fri Jul 22 02:16:03 2016 --> | |
2 | 2 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
3 | 3 | "http://www.w3.org/TR/html4/loose.dtd"> |
4 | 4 | <html> |
34 | 34 | </h2> |
35 | 35 | |
36 | 36 | |
37 | <p style="margin-left:11%; margin-top: 1em">FUD − | |
38 | provide information about user mailboxes</p> | |
37 | <p style="margin-left:11%; margin-top: 1em">FUD - provide | |
38 | information about user mailboxes</p> | |
39 | 39 | |
40 | 40 | <h2>SYNOPSIS |
41 | 41 | <a name="SYNOPSIS"></a> |
43 | 43 | |
44 | 44 | |
45 | 45 | <p style="margin-left:11%; margin-top: 1em"><b>fud</b> [ |
46 | <b>−C</b> <i>config-file</i> ] [ <b>−U</b> | |
47 | <i>uses</i> ] [ <b>−T</b> <i>timeout</i> ] [ | |
48 | <b>−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> | |
49 | 48 | |
50 | 49 | <h2>DESCRIPTION |
51 | 50 | <a name="DESCRIPTION"></a> |
75 | 74 | </h2> |
76 | 75 | |
77 | 76 | |
78 | ||
79 | <p style="margin-left:11%; margin-top: 1em"><b>−C</b> | |
77 | <p style="margin-left:11%; margin-top: 1em"><b>-C</b> | |
80 | 78 | <i>config-file</i></p> |
81 | 79 | |
82 | 80 | <p style="margin-left:22%;">Read configuration options from |
83 | 81 | <i>config-file</i>.</p> |
84 | 82 | |
85 | <p style="margin-left:11%;"><b>−U</b> <i>uses</i></p> | |
83 | <p style="margin-left:11%;"><b>-U</b> <i>uses</i></p> | |
86 | 84 | |
87 | 85 | <p style="margin-left:22%;">The maximum number of times |
88 | 86 | that the process should be used for new connections before |
89 | 87 | shutting down. The default is 250.</p> |
90 | 88 | |
91 | <p style="margin-left:11%;"><b>−T</b> | |
92 | <i>timeout</i></p> | |
89 | <p style="margin-left:11%;"><b>-T</b> <i>timeout</i></p> | |
93 | 90 | |
94 | 91 | <p style="margin-left:22%;">The number of seconds that the |
95 | 92 | process will wait for a new connection before shutting down. |
103 | 100 | <td width="3%"> |
104 | 101 | |
105 | 102 | |
106 | <p><b>−D</b></p></td> | |
103 | <p><b>-D</b></p></td> | |
107 | 104 | <td width="8%"></td> |
108 | 105 | <td width="75%"> |
109 | 106 |
0 | 0 | <!-- Creator : groff version 1.22.3 --> |
1 | <!-- CreationDate: Fri May 20 06:10:05 2016 --> | |
1 | <!-- CreationDate: Fri Jul 22 02:16:03 2016 --> | |
2 | 2 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
3 | 3 | "http://www.w3.org/TR/html4/loose.dtd"> |
4 | 4 | <html> |
36 | 36 | </h2> |
37 | 37 | |
38 | 38 | |
39 | <p style="margin-left:11%; margin-top: 1em">httpd − | |
40 | HTTP server process</p> | |
39 | <p style="margin-left:11%; margin-top: 1em">httpd - HTTP | |
40 | server process</p> | |
41 | 41 | |
42 | 42 | <h2>SYNOPSIS |
43 | 43 | <a name="SYNOPSIS"></a> |
45 | 45 | |
46 | 46 | |
47 | 47 | <p style="margin-left:11%; margin-top: 1em"><b>httpd</b> [ |
48 | <b>−C</b> <i>config-file</i> ] [ <b>−U</b> | |
49 | <i>uses</i> ] [ <b>−T</b> <i>timeout</i> ] [ | |
50 | <b>−D</b> ] <br> | |
51 | [ <b>−s</b> ] [ <b>−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> | |
52 | 51 | |
53 | 52 | <h2>DESCRIPTION |
54 | 53 | <a name="DESCRIPTION"></a> |
80 | 79 | </h2> |
81 | 80 | |
82 | 81 | |
83 | ||
84 | <p style="margin-left:11%; margin-top: 1em"><b>−C</b> | |
82 | <p style="margin-left:11%; margin-top: 1em"><b>-C</b> | |
85 | 83 | <i>config-file</i></p> |
86 | 84 | |
87 | 85 | <p style="margin-left:22%;">Read configuration options from |
88 | 86 | <i>config-file</i>.</p> |
89 | 87 | |
90 | <p style="margin-left:11%;"><b>−U</b> <i>uses</i></p> | |
88 | <p style="margin-left:11%;"><b>-U</b> <i>uses</i></p> | |
91 | 89 | |
92 | 90 | <p style="margin-left:22%;">The maximum number of times |
93 | 91 | that the process should be used for new connections before |
94 | 92 | shutting down. The default is 250.</p> |
95 | 93 | |
96 | <p style="margin-left:11%;"><b>−T</b> | |
97 | <i>timeout</i></p> | |
94 | <p style="margin-left:11%;"><b>-T</b> <i>timeout</i></p> | |
98 | 95 | |
99 | 96 | <p style="margin-left:22%;">The number of seconds that the |
100 | 97 | process will wait for a new connection before shutting down. |
108 | 105 | <td width="9%"> |
109 | 106 | |
110 | 107 | |
111 | <p><b>−D</b></p></td> | |
108 | <p><b>-D</b></p></td> | |
112 | 109 | <td width="2%"></td> |
113 | 110 | <td width="78%"> |
114 | 111 | |
119 | 116 | <td width="9%"> |
120 | 117 | |
121 | 118 | |
122 | <p><b>−s</b></p></td> | |
119 | <p><b>-s</b></p></td> | |
123 | 120 | <td width="2%"></td> |
124 | 121 | <td width="78%"> |
125 | 122 | |
132 | 129 | <td width="9%"> |
133 | 130 | |
134 | 131 | |
135 | <p><b>−p</b> <i>ssf</i></p></td> | |
132 | <p><b>-p</b> <i>ssf</i></p></td> | |
136 | 133 | <td width="2%"></td> |
137 | 134 | <td width="78%"> |
138 | 135 |
0 | 0 | <!-- Creator : groff version 1.22.3 --> |
1 | <!-- CreationDate: Fri May 20 06:10:05 2016 --> | |
1 | <!-- CreationDate: Fri Jul 22 02:16:03 2016 --> | |
2 | 2 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
3 | 3 | "http://www.w3.org/TR/html4/loose.dtd"> |
4 | 4 | <html> |
34 | 34 | </h2> |
35 | 35 | |
36 | 36 | |
37 | <p style="margin-left:11%; margin-top: 1em">idled − | |
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> | |
39 | 39 | |
40 | 40 | <h2>SYNOPSIS |
41 | 41 | <a name="SYNOPSIS"></a> |
43 | 43 | |
44 | 44 | |
45 | 45 | <p style="margin-left:11%; margin-top: 1em"><b>idled</b> [ |
46 | <b>−C</b> <i>config-file</i> ]</p> | |
46 | <b>-C</b> <i>config-file</i> ]</p> | |
47 | 47 | |
48 | 48 | <h2>DESCRIPTION |
49 | 49 | <a name="DESCRIPTION"></a> |
67 | 67 | </h2> |
68 | 68 | |
69 | 69 | |
70 | ||
71 | <p style="margin-left:11%; margin-top: 1em"><b>−C</b> | |
70 | <p style="margin-left:11%; margin-top: 1em"><b>-C</b> | |
72 | 71 | <i>config-file</i></p> |
73 | 72 | |
74 | 73 | <p style="margin-left:22%;">Read configuration options from |
0 | 0 | <!-- Creator : groff version 1.22.3 --> |
1 | <!-- CreationDate: Fri May 20 06:10:06 2016 --> | |
1 | <!-- CreationDate: Fri Jul 22 02:16:03 2016 --> | |
2 | 2 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
3 | 3 | "http://www.w3.org/TR/html4/loose.dtd"> |
4 | 4 | <html> |
34 | 34 | </h2> |
35 | 35 | |
36 | 36 | |
37 | <p style="margin-left:11%; margin-top: 1em">imapd − | |
38 | IMAP server process</p> | |
37 | <p style="margin-left:11%; margin-top: 1em">imapd - IMAP | |
38 | server process</p> | |
39 | 39 | |
40 | 40 | <h2>SYNOPSIS |
41 | 41 | <a name="SYNOPSIS"></a> |
43 | 43 | |
44 | 44 | |
45 | 45 | <p style="margin-left:11%; margin-top: 1em"><b>imapd</b> [ |
46 | <b>−C</b> <i>config-file</i> ] [ <b>−U</b> | |
47 | <i>uses</i> ] [ <b>−T</b> <i>timeout</i> ] [ | |
48 | <b>−D</b> ] <br> | |
49 | [ <b>−s</b> ] [ <b>−N</b> ] [ <b>−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> | |
51 | 49 | |
52 | 50 | <h2>DESCRIPTION |
53 | 51 | <a name="DESCRIPTION"></a> |
98 | 96 | </h2> |
99 | 97 | |
100 | 98 | |
101 | ||
102 | <p style="margin-left:11%; margin-top: 1em"><b>−C</b> | |
99 | <p style="margin-left:11%; margin-top: 1em"><b>-C</b> | |
103 | 100 | <i>config-file</i></p> |
104 | 101 | |
105 | 102 | <p style="margin-left:22%;">Read configuration options from |
106 | 103 | <i>config-file</i>.</p> |
107 | 104 | |
108 | <p style="margin-left:11%;"><b>−U</b> <i>uses</i></p> | |
105 | <p style="margin-left:11%;"><b>-U</b> <i>uses</i></p> | |
109 | 106 | |
110 | 107 | <p style="margin-left:22%;">The maximum number of times |
111 | 108 | that the process should be used for new connections before |
112 | 109 | shutting down. The default is 250.</p> |
113 | 110 | |
114 | <p style="margin-left:11%;"><b>−T</b> | |
115 | <i>timeout</i></p> | |
111 | <p style="margin-left:11%;"><b>-T</b> <i>timeout</i></p> | |
116 | 112 | |
117 | 113 | <p style="margin-left:22%;">The number of seconds that the |
118 | 114 | process will wait for a new connection before shutting down. |
126 | 122 | <td width="9%"> |
127 | 123 | |
128 | 124 | |
129 | <p><b>−D</b></p></td> | |
125 | <p><b>-D</b></p></td> | |
130 | 126 | <td width="2%"></td> |
131 | 127 | <td width="78%"> |
132 | 128 | |
137 | 133 | <td width="9%"> |
138 | 134 | |
139 | 135 | |
140 | <p><b>−s</b></p></td> | |
136 | <p><b>-s</b></p></td> | |
141 | 137 | <td width="2%"></td> |
142 | 138 | <td width="78%"> |
143 | 139 | |
150 | 146 | <td width="9%"> |
151 | 147 | |
152 | 148 | |
153 | <p><b>−N</b></p></td> | |
149 | <p><b>-N</b></p></td> | |
154 | 150 | <td width="2%"></td> |
155 | 151 | <td width="78%"> |
156 | 152 | |
162 | 158 | <td width="9%"> |
163 | 159 | |
164 | 160 | |
165 | <p><b>−p</b> <i>ssf</i></p></td> | |
161 | <p><b>-p</b> <i>ssf</i></p></td> | |
166 | 162 | <td width="2%"></td> |
167 | 163 | <td width="78%"> |
168 | 164 |
0 | 0 | <!-- Creator : groff version 1.22.3 --> |
1 | <!-- CreationDate: Fri May 20 06:10:06 2016 --> | |
1 | <!-- CreationDate: Fri Jul 22 02:16:04 2016 --> | |
2 | 2 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
3 | 3 | "http://www.w3.org/TR/html4/loose.dtd"> |
4 | 4 | <html> |
32 | 32 | </h2> |
33 | 33 | |
34 | 34 | |
35 | <p style="margin-left:11%; margin-top: 1em">imapd.conf | |
36 | − IMAP configuration file</p> | |
35 | <p style="margin-left:11%; margin-top: 1em">imapd.conf - | |
36 | IMAP configuration file</p> | |
37 | 37 | |
38 | 38 | <h2>DESCRIPTION |
39 | 39 | <a name="DESCRIPTION"></a> |
2043 | 2043 | <p style="margin-left:18%; margin-top: 1em">The external |
2044 | 2044 | program will be called with the following command line |
2045 | 2045 | options: <b><br> |
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> | |
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> | |
2050 | 2050 | |
2051 | 2051 | <p style="margin-left:18%; margin-top: 1em">And the |
2052 | 2052 | notification message will be available on <i>stdin</i>.</p> |
0 | 0 | <!-- Creator : groff version 1.22.3 --> |
1 | <!-- CreationDate: Fri May 20 06:10:06 2016 --> | |
1 | <!-- CreationDate: Fri Jul 22 02:16:04 2016 --> | |
2 | 2 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
3 | 3 | "http://www.w3.org/TR/html4/loose.dtd"> |
4 | 4 | <html> |
35 | 35 | </h2> |
36 | 36 | |
37 | 37 | |
38 | <p style="margin-left:11%; margin-top: 1em">imclient | |
39 | − (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> | |
41 | 41 | |
42 | 42 | <h2>SYNOPSIS |
43 | 43 | <a name="SYNOPSIS"></a> |
0 | 0 | <!-- Creator : groff version 1.22.3 --> |
1 | <!-- CreationDate: Fri May 20 06:10:06 2016 --> | |
1 | <!-- CreationDate: Fri Jul 22 02:16:04 2016 --> | |
2 | 2 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
3 | 3 | "http://www.w3.org/TR/html4/loose.dtd"> |
4 | 4 | <html> |
33 | 33 | </h2> |
34 | 34 | |
35 | 35 | |
36 | <p style="margin-left:11%; margin-top: 1em">imtest − | |
36 | <p style="margin-left:11%; margin-top: 1em">imtest - | |
37 | 37 | interactive IMAP test program</p> |
38 | 38 | |
39 | 39 | <h2>SYNOPSIS |
42 | 42 | |
43 | 43 | |
44 | 44 | <p style="margin-left:11%; margin-top: 1em"><b>imtest</b> [ |
45 | <b>−t</b> <i>keyfile</i> ] [ <b>−p</b> | |
46 | <i>port</i> ] [ <b>−m</b> <i>mechanism</i> ] <br> | |
47 | [ <b>−a</b> <i>userid</i> ] [ <b>−u</b> | |
48 | <i>userid</i> ] [ <b>−k</b> <i>num</i> ] [ | |
49 | <b>−l</b> <i>num</i> ] <br> | |
50 | [ <b>−r</b> <i>realm</i> ] [ <b>−f</b> | |
51 | <i>file</i> ] [ <b>−n</b> <i>num</i> ] [ | |
52 | <b>−s</b> ] [ <b>−q</b> ] <br> | |
53 | [ <b>−c</b> ] [ <b>−i</b> ] [ <b>−z</b> ] | |
54 | [ <b>−v</b> ] [ <b>−I</b> <i>file</i> ] [ | |
55 | <b>−x</b> <i>file</i> ] <br> | |
56 | [ <b>−X</b> <i>file</i> ] [ <b>−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> | |
57 | 54 | <i>option</i><b>=</b><i>value</i> ] <i>hostname</i></p> |
58 | 55 | |
59 | 56 | <h2>DESCRIPTION |
76 | 73 | </h2> |
77 | 74 | |
78 | 75 | |
79 | ||
80 | <p style="margin-left:11%; margin-top: 1em"><b>−t</b> | |
76 | <p style="margin-left:11%; margin-top: 1em"><b>-t</b> | |
81 | 77 | <i>keyfile</i></p> |
82 | 78 | |
83 | 79 | <p style="margin-left:22%;">Enable TLS. <i>keyfile</i> |
85 | 81 | <b>""</b> to negotiate a TLS encryption layer but |
86 | 82 | not use TLS authentication.</p> |
87 | 83 | |
88 | <p style="margin-left:11%;"><b>−p</b> <i>port</i></p> | |
84 | <p style="margin-left:11%;"><b>-p</b> <i>port</i></p> | |
89 | 85 | |
90 | 86 | <p style="margin-left:22%;">Port to connect to. If left off |
91 | 87 | this defaults to <b>imap</b> as defined in |
0 | 0 | <!-- Creator : groff version 1.22.3 --> |
1 | <!-- CreationDate: Fri May 20 06:10:06 2016 --> | |
1 | <!-- CreationDate: Fri Jul 22 02:16:04 2016 --> | |
2 | 2 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
3 | 3 | "http://www.w3.org/TR/html4/loose.dtd"> |
4 | 4 | <html> |
32 | 32 | </h2> |
33 | 33 | |
34 | 34 | |
35 | <p style="margin-left:11%; margin-top: 1em">installsieve | |
36 | − 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> | |
37 | 37 | |
38 | 38 | <h2>SYNOPSIS |
39 | 39 | <a name="SYNOPSIS"></a> |
58 | 58 | </h2> |
59 | 59 | |
60 | 60 | |
61 | ||
62 | <p style="margin-left:11%; margin-top: 1em"><b>−v</b> | |
61 | <p style="margin-left:11%; margin-top: 1em"><b>-v</b> | |
63 | 62 | <i>name</i></p> |
64 | 63 | |
65 | 64 | <p style="margin-left:22%;">View script with the given |
73 | 72 | <td width="3%"> |
74 | 73 | |
75 | 74 | |
76 | <p><b>−l</b></p></td> | |
75 | <p><b>-l</b></p></td> | |
77 | 76 | <td width="8%"></td> |
78 | 77 | <td width="78%"> |
79 | 78 | |
83 | 82 | it is the active script.</p></td></tr> |
84 | 83 | </table> |
85 | 84 | |
86 | <p style="margin-left:11%;"><b>−p</b> <i>port</i></p> | |
85 | <p style="margin-left:11%;"><b>-p</b> <i>port</i></p> | |
87 | 86 | |
88 | 87 | <p style="margin-left:22%;">Port to connect to. If left off |
89 | 88 | this defaults to "sieve" as defined in |
90 | 89 | /etc/services.</p> |
91 | 90 | |
92 | <p style="margin-left:11%;"><b>−i</b> <i>file</i></p> | |
91 | <p style="margin-left:11%;"><b>-i</b> <i>file</i></p> | |
93 | 92 | |
94 | 93 | <p style="margin-left:22%;">Install a file onto the server. |
95 | 94 | If a script with the same name already exists on the server |
98 | 97 | extension .script it is chopped when put on the server since |
99 | 98 | sieve names may not contain a ’.’.</p> |
100 | 99 | |
101 | <p style="margin-left:11%;"><b>−a</b> <i>name</i></p> | |
100 | <p style="margin-left:11%;"><b>-a</b> <i>name</i></p> | |
102 | 101 | |
103 | 102 | <p style="margin-left:22%;">Set <i>name</i> as the active |
104 | 103 | script. The list of available names can be obtained from the |
105 | 104 | <b>-l</b> option.</p> |
106 | 105 | |
107 | <p style="margin-left:11%;"><b>−d</b> <i>name</i></p> | |
106 | <p style="margin-left:11%;"><b>-d</b> <i>name</i></p> | |
108 | 107 | |
109 | 108 | <p style="margin-left:22%;">Delete the sieve script on the |
110 | 109 | server with <i>name</i>.</p> |
111 | 110 | |
112 | <p style="margin-left:11%;"><b>−m</b> | |
113 | <i>mechanism</i></p> | |
111 | <p style="margin-left:11%;"><b>-m</b> <i>mechanism</i></p> | |
114 | 112 | |
115 | 113 | <p style="margin-left:22%;">Force installsieve to use |
116 | 114 | <i>mechanism</i> for authentication. If not specified the |
117 | 115 | strongest authentication mechanism is chosen.</p> |
118 | 116 | |
119 | <p style="margin-left:11%;"><b>−g</b> <i>name</i></p> | |
117 | <p style="margin-left:11%;"><b>-g</b> <i>name</i></p> | |
120 | 118 | |
121 | 119 | <p style="margin-left:22%;">Get the sieve script with |
122 | 120 | <i>name</i> and save it to disk with a ".script" |
123 | 121 | extension. If a file with that name already exists it is |
124 | 122 | overwritten.</p> |
125 | 123 | |
126 | <p style="margin-left:11%;"><b>−u</b> <i>user</i></p> | |
124 | <p style="margin-left:11%;"><b>-u</b> <i>user</i></p> | |
127 | 125 | |
128 | 126 | <p style="margin-left:22%;">Userid/Authname to use for |
129 | 127 | authentication; by default, the current user.</p> |
0 | 0 | <!-- Creator : groff version 1.22.3 --> |
1 | <!-- CreationDate: Fri May 20 06:10:07 2016 --> | |
1 | <!-- CreationDate: Fri Jul 22 02:16:04 2016 --> | |
2 | 2 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
3 | 3 | "http://www.w3.org/TR/html4/loose.dtd"> |
4 | 4 | <html> |
33 | 33 | </h2> |
34 | 34 | |
35 | 35 | |
36 | <p style="margin-left:11%; margin-top: 1em">ipurge − | |
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> | |
39 | 38 | |
40 | 39 | <h2>SYNOPSIS |
41 | 40 | <a name="SYNOPSIS"></a> |
43 | 42 | |
44 | 43 | |
45 | 44 | <p style="margin-left:11%; margin-top: 1em"><b>ipurge</b> [ |
46 | <b>−f</b> ] [ <b>−C</b> <i>config-file</i> ] [ | |
47 | <b>−x</b> ] [ <b>−X</b> ] [ <b>−i</b> ] [ | |
48 | <b>−s</b> ] [ <b>−o</b> ] <br> | |
49 | [ <b>−d</b> <i>days</i> | <b>−b</b> <i>bytes</i> | |
50 | | <b>−k</b> <i>Kbytes</i> | <b>−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> | |
52 | 50 | [ <i>mailbox-pattern</i>... ]</p> |
53 | 51 | |
54 | 52 | <h2>DESCRIPTION |
91 | 89 | <td width="3%"> |
92 | 90 | |
93 | 91 | |
94 | <p style="margin-top: 1em"><b>−f</b></p></td> | |
92 | <p style="margin-top: 1em"><b>-f</b></p></td> | |
95 | 93 | <td width="8%"></td> |
96 | 94 | <td width="61%"> |
97 | 95 | |
102 | 100 | </td></tr> |
103 | 101 | </table> |
104 | 102 | |
105 | <p style="margin-left:11%;"><b>−C</b> | |
103 | <p style="margin-left:11%;"><b>-C</b> | |
106 | 104 | <i>config-file</i></p> |
107 | 105 | |
108 | 106 | <p style="margin-left:22%;">Read configuration options from |
109 | 107 | <i>config-file</i>.</p> |
110 | 108 | |
111 | <p style="margin-left:11%;"><b>−d</b> <i>days</i></p> | |
109 | <p style="margin-left:11%;"><b>-d</b> <i>days</i></p> | |
112 | 110 | |
113 | 111 | <p style="margin-left:22%;">Age of message in |
114 | 112 | <i>days</i>.</p> |
115 | 113 | |
116 | <p style="margin-left:11%;"><b>−b</b> | |
117 | <i>bytes</i></p> | |
114 | <p style="margin-left:11%;"><b>-b</b> <i>bytes</i></p> | |
118 | 115 | |
119 | 116 | <p style="margin-left:22%;">Size of message in |
120 | 117 | <i>bytes</i>.</p> |
121 | 118 | |
122 | <p style="margin-left:11%;"><b>−k</b> | |
123 | <i>Kbytes</i></p> | |
119 | <p style="margin-left:11%;"><b>-k</b> <i>Kbytes</i></p> | |
124 | 120 | |
125 | 121 | <p style="margin-left:22%;">Size of message in |
126 | 122 | <i>Kbytes</i> (2^10 bytes).</p> |
127 | 123 | |
128 | <p style="margin-left:11%;"><b>−m</b> | |
129 | <i>Mbytes</i></p> | |
124 | <p style="margin-left:11%;"><b>-m</b> <i>Mbytes</i></p> | |
130 | 125 | |
131 | 126 | <p style="margin-left:22%;">Size of message in |
132 | 127 | <i>Mbytes</i> (2^20 bytes).</p> |
138 | 133 | <td width="3%"> |
139 | 134 | |
140 | 135 | |
141 | <p><b>−x</b></p></td> | |
136 | <p><b>-x</b></p></td> | |
142 | 137 | <td width="8%"></td> |
143 | 138 | <td width="78%"> |
144 | 139 | |
150 | 145 | <td width="3%"> |
151 | 146 | |
152 | 147 | |
153 | <p><b>−X</b></p></td> | |
148 | <p><b>-X</b></p></td> | |
154 | 149 | <td width="8%"></td> |
155 | 150 | <td width="78%"> |
156 | 151 | |
162 | 157 | <td width="3%"> |
163 | 158 | |
164 | 159 | |
165 | <p><b>−i</b></p></td> | |
160 | <p><b>-i</b></p></td> | |
166 | 161 | <td width="8%"></td> |
167 | 162 | <td width="78%"> |
168 | 163 | |
174 | 169 | <td width="3%"> |
175 | 170 | |
176 | 171 | |
177 | <p><b>−s</b></p></td> | |
172 | <p><b>-s</b></p></td> | |
178 | 173 | <td width="8%"></td> |
179 | 174 | <td width="78%"> |
180 | 175 | |
185 | 180 | <td width="3%"> |
186 | 181 | |
187 | 182 | |
188 | <p><b>−o</b></p></td> | |
183 | <p><b>-o</b></p></td> | |
189 | 184 | <td width="8%"></td> |
190 | 185 | <td width="78%"> |
191 | 186 | |
192 | 187 | |
193 | 188 | <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> | |
194 | 200 | </table> |
195 | 201 | |
196 | 202 | <h2>FILES |
0 | 0 | <!-- Creator : groff version 1.22.3 --> |
1 | <!-- CreationDate: Fri May 20 06:10:07 2016 --> | |
1 | <!-- CreationDate: Fri Jul 22 02:16:04 2016 --> | |
2 | 2 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
3 | 3 | "http://www.w3.org/TR/html4/loose.dtd"> |
4 | 4 | <html> |
33 | 33 | |
34 | 34 | |
35 | 35 | <p style="margin-left:11%; margin-top: 1em"><b>/etc/krb.equiv</b> |
36 | − Kerberos equivalences</p> | |
36 | - Kerberos equivalences</p> | |
37 | 37 | |
38 | 38 | <h2>DESCRIPTION |
39 | 39 | <a name="DESCRIPTION"></a> |
0 | 0 | <!-- Creator : groff version 1.22.3 --> |
1 | <!-- CreationDate: Fri May 20 06:10:07 2016 --> | |
1 | <!-- CreationDate: Fri Jul 22 02:16:04 2016 --> | |
2 | 2 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
3 | 3 | "http://www.w3.org/TR/html4/loose.dtd"> |
4 | 4 | <html> |
34 | 34 | </h2> |
35 | 35 | |
36 | 36 | |
37 | <p style="margin-left:11%; margin-top: 1em">lmtpd − | |
38 | LMTP server process</p> | |
37 | <p style="margin-left:11%; margin-top: 1em">lmtpd - LMTP | |
38 | server process</p> | |
39 | 39 | |
40 | 40 | <h2>SYNOPSIS |
41 | 41 | <a name="SYNOPSIS"></a> |
43 | 43 | |
44 | 44 | |
45 | 45 | <p style="margin-left:11%; margin-top: 1em"><b>lmtpd</b> [ |
46 | <b>−C</b> <i>config-file</i> ] [ <b>−U</b> | |
47 | <i>uses</i> ] [ <b>−T</b> <i>timeout</i> ] [ | |
48 | <b>−D</b> ] <br> | |
49 | [ <b>−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> | |
50 | 49 | |
51 | 50 | <h2>DESCRIPTION |
52 | 51 | <a name="DESCRIPTION"></a> |
70 | 69 | </h2> |
71 | 70 | |
72 | 71 | |
73 | ||
74 | <p style="margin-left:11%; margin-top: 1em"><b>−C</b> | |
72 | <p style="margin-left:11%; margin-top: 1em"><b>-C</b> | |
75 | 73 | <i>config-file</i></p> |
76 | 74 | |
77 | 75 | <p style="margin-left:22%;">Read configuration options from |
78 | 76 | <i>config-file</i>.</p> |
79 | 77 | |
80 | <p style="margin-left:11%;"><b>−U</b> <i>uses</i></p> | |
78 | <p style="margin-left:11%;"><b>-U</b> <i>uses</i></p> | |
81 | 79 | |
82 | 80 | <p style="margin-left:22%;">The maximum number of times |
83 | 81 | that the process should be used for new connections before |
84 | 82 | shutting down. The default is 250.</p> |
85 | 83 | |
86 | <p style="margin-left:11%;"><b>−T</b> | |
87 | <i>timeout</i></p> | |
84 | <p style="margin-left:11%;"><b>-T</b> <i>timeout</i></p> | |
88 | 85 | |
89 | 86 | <p style="margin-left:22%;">The number of seconds that the |
90 | 87 | process will wait for a new connection before shutting down. |
98 | 95 | <td width="3%"> |
99 | 96 | |
100 | 97 | |
101 | <p><b>−D</b></p></td> | |
98 | <p><b>-D</b></p></td> | |
102 | 99 | <td width="8%"></td> |
103 | 100 | <td width="78%"> |
104 | 101 | |
109 | 106 | <td width="3%"> |
110 | 107 | |
111 | 108 | |
112 | <p><b>−a</b></p></td> | |
109 | <p><b>-a</b></p></td> | |
113 | 110 | <td width="8%"></td> |
114 | 111 | <td width="78%"> |
115 | 112 |
0 | 0 | <!-- Creator : groff version 1.22.3 --> |
1 | <!-- CreationDate: Fri May 20 06:10:07 2016 --> | |
1 | <!-- CreationDate: Fri Jul 22 02:16:05 2016 --> | |
2 | 2 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
3 | 3 | "http://www.w3.org/TR/html4/loose.dtd"> |
4 | 4 | <html> |
33 | 33 | </h2> |
34 | 34 | |
35 | 35 | |
36 | <p style="margin-left:11%; margin-top: 1em">lmtptest | |
37 | − interactive LMTP test program</p> | |
36 | <p style="margin-left:11%; margin-top: 1em">lmtptest - | |
37 | interactive LMTP test program</p> | |
38 | 38 | |
39 | 39 | <h2>SYNOPSIS |
40 | 40 | <a name="SYNOPSIS"></a> |
43 | 43 | |
44 | 44 | |
45 | 45 | <p style="margin-left:11%; margin-top: 1em"><b>lmtptest</b> |
46 | [ <b>−t</b> <i>keyfile</i> ] [ <b>−p</b> | |
47 | <i>port</i> ] [ <b>−m</b> <i>mechanism</i> ] <br> | |
48 | [ <b>−a</b> <i>userid</i> ] [ <b>−u</b> | |
49 | <i>userid</i> ] [ <b>−k</b> <i>num</i> ] [ | |
50 | <b>−l</b> <i>num</i> ] <br> | |
51 | [ <b>−r</b> <i>realm</i> ] [ <b>−f</b> | |
52 | <i>file</i> ] [ <b>−n</b> <i>num</i> ] [ | |
53 | <b>−c</b> ] <br> | |
54 | [ <b>−i</b> ] [ <b>−o</b> | |
55 | <i>option</i><b>=</b><i>value</i> ] [ <b>−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> | |
57 | 54 | |
58 | 55 | <h2>DESCRIPTION |
59 | 56 | <a name="DESCRIPTION"></a> |
76 | 73 | </h2> |
77 | 74 | |
78 | 75 | |
79 | ||
80 | <p style="margin-left:11%; margin-top: 1em"><b>−t</b> | |
76 | <p style="margin-left:11%; margin-top: 1em"><b>-t</b> | |
81 | 77 | <i>keyfile</i></p> |
82 | 78 | |
83 | 79 | <p style="margin-left:22%;">Enable TLS. <i>keyfile</i> |
85 | 81 | <b>""</b> to negotiate a TLS encryption layer but |
86 | 82 | not use TLS authentication.</p> |
87 | 83 | |
88 | <p style="margin-left:11%;"><b>−p</b> <i>port</i></p> | |
84 | <p style="margin-left:11%;"><b>-p</b> <i>port</i></p> | |
89 | 85 | |
90 | 86 | <p style="margin-left:22%;">Port to connect to. If left off |
91 | 87 | this defaults to <b>lmtp</b> as defined in |
0 | 0 | <!-- Creator : groff version 1.22.3 --> |
1 | <!-- CreationDate: Fri May 20 06:10:07 2016 --> | |
1 | <!-- CreationDate: Fri Jul 22 02:16:05 2016 --> | |
2 | 2 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
3 | 3 | "http://www.w3.org/TR/html4/loose.dtd"> |
4 | 4 | <html> |
36 | 36 | </h2> |
37 | 37 | |
38 | 38 | |
39 | <p style="margin-left:11%; margin-top: 1em">master − | |
40 | master Cyrus process</p> | |
39 | <p style="margin-left:11%; margin-top: 1em">master - master | |
40 | Cyrus process</p> | |
41 | 41 | |
42 | 42 | <h2>SYNOPSIS |
43 | 43 | <a name="SYNOPSIS"></a> |
45 | 45 | |
46 | 46 | |
47 | 47 | <p style="margin-left:11%; margin-top: 1em"><b>master</b> [ |
48 | <b>−C</b> <i>alternate imapd.conf</i> ] [ | |
49 | <b>−M</b> <i>alternate cyrus.conf</i> ] [ | |
50 | <b>−l</b> <i>listen queue</i> ] [ <b>−p</b> | |
51 | <i>pidfile</i> ] [ <b>−P</b> <i>snmp agentx ping | |
52 | interval</i> ] [ <b>−j</b> <i>janitor period</i> ] [ | |
53 | <b>−d</b> ] [ <b>−D</b> ] [ <b>−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> | |
55 | 54 | |
56 | 55 | <h2>DESCRIPTION |
57 | 56 | <a name="DESCRIPTION"></a> |
76 | 75 | </h2> |
77 | 76 | |
78 | 77 | |
79 | ||
80 | <p style="margin-left:11%; margin-top: 1em"><b>−C</b> | |
78 | <p style="margin-left:11%; margin-top: 1em"><b>-C</b> | |
81 | 79 | <i>alternate imapd.conf</i></p> |
82 | 80 | |
83 | 81 | <p style="margin-left:22%;">Specifies an alternate |
86 | 84 | those specifically in the respective entries in |
87 | 85 | cyrus.conf).</p> |
88 | 86 | |
89 | <p style="margin-left:11%;"><b>−M</b> <i>alternate | |
87 | <p style="margin-left:11%;"><b>-M</b> <i>alternate | |
90 | 88 | cyrus.conf</i></p> |
91 | 89 | |
92 | 90 | <p style="margin-left:22%;">Specifies an alternate |
93 | 91 | cyrus.conf for use by master.</p> |
94 | 92 | |
95 | <p style="margin-left:11%;"><b>−l</b> <i>listen queue | |
93 | <p style="margin-left:11%;"><b>-l</b> <i>listen queue | |
96 | 94 | backlog</i></p> |
97 | 95 | |
98 | 96 | <p style="margin-left:22%;">Increase the listen queue |
101 | 99 | increase this value. refer to <b>listen(2)</b> for |
102 | 100 | details.</p> |
103 | 101 | |
104 | <p style="margin-left:11%;"><b>−j</b> <i>janitor | |
102 | <p style="margin-left:11%;"><b>-j</b> <i>janitor | |
105 | 103 | full-sweeps per second</i></p> |
106 | 104 | |
107 | 105 | <p style="margin-left:22%;">Sets the amount of times per |
111 | 109 | size when you compiled Cyrus from its default of 10000 |
112 | 110 | entries).</p> |
113 | 111 | |
114 | <p style="margin-left:11%;"><b>−p</b> | |
115 | <i>pidfile</i></p> | |
112 | <p style="margin-left:11%;"><b>-p</b> <i>pidfile</i></p> | |
116 | 113 | |
117 | 114 | <p style="margin-left:22%;">Use <i>pidfile</i> as the |
118 | 115 | pidfile. If not specified, defaults to |
119 | 116 | /var/run/cyrus-master.pid</p> |
120 | 117 | |
121 | <p style="margin-left:11%;"><b>−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> | |
123 | 120 | |
124 | 121 | <p style="margin-left:22%;">Sets the amount on time in |
125 | 122 | seconds the subagent will try and reconnect to the master |
133 | 130 | <td width="3%"> |
134 | 131 | |
135 | 132 | |
136 | <p><b>−d</b></p></td> | |
133 | <p><b>-d</b></p></td> | |
137 | 134 | <td width="8%"></td> |
138 | 135 | <td width="78%"> |
139 | 136 | |
145 | 142 | <td width="3%"> |
146 | 143 | |
147 | 144 | |
148 | <p><b>−D</b></p></td> | |
145 | <p><b>-D</b></p></td> | |
149 | 146 | <td width="8%"></td> |
150 | 147 | <td width="78%"> |
151 | 148 | |
155 | 152 | consider using -L instead.</p></td></tr> |
156 | 153 | </table> |
157 | 154 | |
158 | <p style="margin-left:11%;"><b>−L</b> | |
159 | <i>logfile</i></p> | |
155 | <p style="margin-left:11%;"><b>-L</b> <i>logfile</i></p> | |
160 | 156 | |
161 | 157 | <p style="margin-left:22%;">Redirect stdout and stderr to |
162 | 158 | the given <i>logfile</i>.</p> |
163 | 159 | |
164 | <p style="margin-left:11%;"><b>−x</b> <i>snmp agentx | |
160 | <p style="margin-left:11%;"><b>-x</b> <i>snmp agentx | |
165 | 161 | socket</i></p> |
166 | 162 | |
167 | 163 | <p style="margin-left:22%;">Address the master agent (most |
0 | 0 | <!-- Creator : groff version 1.22.3 --> |
1 | <!-- CreationDate: Fri May 20 06:10:07 2016 --> | |
1 | <!-- CreationDate: Fri Jul 22 02:16:05 2016 --> | |
2 | 2 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
3 | 3 | "http://www.w3.org/TR/html4/loose.dtd"> |
4 | 4 | <html> |
33 | 33 | </h2> |
34 | 34 | |
35 | 35 | |
36 | <p style="margin-left:11%; margin-top: 1em">mbexamine | |
37 | − examine a cyrus-format mailbox</p> | |
36 | <p style="margin-left:11%; margin-top: 1em">mbexamine - | |
37 | examine a cyrus-format mailbox</p> | |
38 | 38 | |
39 | 39 | <h2>SYNOPSIS |
40 | 40 | <a name="SYNOPSIS"></a> |
43 | 43 | |
44 | 44 | |
45 | 45 | <p style="margin-left:11%; margin-top: 1em"><b>mbexamine</b> |
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> ] [ | |
49 | <b>−s seqnum</b> ] <i>mailbox</i>... <b><br> | |
50 | mbexamine</b> [ <b>−C</b> <i>config-file</i> ] | |
51 | <b>−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> | |
52 | 52 | |
53 | 53 | <h2>DESCRIPTION |
54 | 54 | <a name="DESCRIPTION"></a> |
71 | 71 | </h2> |
72 | 72 | |
73 | 73 | |
74 | ||
75 | <p style="margin-left:11%; margin-top: 1em"><b>−C</b> | |
74 | <p style="margin-left:11%; margin-top: 1em"><b>-C</b> | |
76 | 75 | <i>config-file</i></p> |
77 | 76 | |
78 | 77 | <p style="margin-left:22%;">Read configuration options from |
85 | 84 | <td width="3%"> |
86 | 85 | |
87 | 86 | |
88 | <p><b>−s</b></p></td> | |
87 | <p><b>-s</b></p></td> | |
89 | 88 | <td width="8%"></td> |
90 | 89 | <td width="78%"> |
91 | 90 | |
96 | 95 | <td width="3%"> |
97 | 96 | |
98 | 97 | |
99 | <p><b>−u</b></p></td> | |
98 | <p><b>-u</b></p></td> | |
100 | 99 | <td width="8%"></td> |
101 | 100 | <td width="78%"> |
102 | 101 | |
107 | 106 | <td width="3%"> |
108 | 107 | |
109 | 108 | |
110 | <p><b>−q</b></p></td> | |
109 | <p><b>-q</b></p></td> | |
111 | 110 | <td width="8%"></td> |
112 | 111 | <td width="78%"> |
113 | 112 |
0 | 0 | <!-- Creator : groff version 1.22.3 --> |
1 | <!-- CreationDate: Fri May 20 06:10:07 2016 --> | |
1 | <!-- CreationDate: Fri Jul 22 02:16:05 2016 --> | |
2 | 2 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
3 | 3 | "http://www.w3.org/TR/html4/loose.dtd"> |
4 | 4 | <html> |
33 | 33 | </h2> |
34 | 34 | |
35 | 35 | |
36 | <p style="margin-left:11%; margin-top: 1em">mbpath − | |
36 | <p style="margin-left:11%; margin-top: 1em">mbpath - | |
37 | 37 | translate mailbox names to filesystem paths</p> |
38 | 38 | |
39 | 39 | <h2>SYNOPSIS |
42 | 42 | |
43 | 43 | |
44 | 44 | <p style="margin-left:11%; margin-top: 1em"><b>mbpath</b> [ |
45 | <b>−C</b> <i>config-file</i> ] [ <b>−q</b> ] [ | |
46 | <b>−s</b> ] [ <b>−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> | |
48 | 47 | |
49 | 48 | <h2>DESCRIPTION |
50 | 49 | <a name="DESCRIPTION"></a> |
66 | 65 | </h2> |
67 | 66 | |
68 | 67 | |
69 | ||
70 | <p style="margin-left:11%; margin-top: 1em"><b>−C</b> | |
68 | <p style="margin-left:11%; margin-top: 1em"><b>-C</b> | |
71 | 69 | <i>config-file</i></p> |
72 | 70 | |
73 | 71 | <p style="margin-left:22%;">Read configuration options from |
74 | 72 | <i>config-file</i>.</p> |
75 | 73 | |
76 | ||
77 | <p style="margin-left:11%; margin-top: 1em"><i>−q</i> | |
74 | <p style="margin-left:11%; margin-top: 1em"><i>-q</i> | |
78 | 75 | suppress any error output.</p> |
79 | 76 | |
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> | |
80 | 80 | |
81 | <p style="margin-left:11%; margin-top: 1em"><i>−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>−m</i> | |
81 | <p style="margin-left:11%; margin-top: 1em"><i>-m</i> | |
87 | 82 | output the path to the metadata files (if different from the |
88 | 83 | message files).</p> |
89 | 84 |
0 | 0 | <!-- Creator : groff version 1.22.3 --> |
1 | <!-- CreationDate: Fri May 20 06:10:08 2016 --> | |
1 | <!-- CreationDate: Fri Jul 22 02:16:05 2016 --> | |
2 | 2 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
3 | 3 | "http://www.w3.org/TR/html4/loose.dtd"> |
4 | 4 | <html> |
33 | 33 | </h2> |
34 | 34 | |
35 | 35 | |
36 | <p style="margin-left:11%; margin-top: 1em">mupdatetest | |
37 | − interactive MUPDATE test program</p> | |
36 | <p style="margin-left:11%; margin-top: 1em">mupdatetest - | |
37 | interactive MUPDATE test program</p> | |
38 | 38 | |
39 | 39 | <h2>SYNOPSIS |
40 | 40 | <a name="SYNOPSIS"></a> |
43 | 43 | |
44 | 44 | |
45 | 45 | <p style="margin-left:11%; margin-top: 1em"><b>mupdatetest</b> |
46 | [ <b>−p</b> <i>port</i> ] [ <b>−m</b> | |
47 | <i>mechanism</i> ] <br> | |
48 | [ <b>−a</b> <i>userid</i> ] [ <b>−u</b> | |
49 | <i>userid</i> ] [ <b>−k</b> <i>num</i> ] [ | |
50 | <b>−l</b> <i>num</i> ] <br> | |
51 | [ <b>−r</b> <i>realm</i> ] [ <b>−f</b> | |
52 | <i>file</i> ] [ <b>−n</b> <i>num</i> ] [ | |
53 | <b>−q</b> ] <br> | |
54 | [ <b>−c</b> ] [ <b>−i</b> ] [ <b>−o</b> | |
55 | <i>option</i><b>=</b><i>value</i> ] [ <b>−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> ] | |
56 | 54 | <i>hostname</i></p> |
57 | 55 | |
58 | 56 | <h2>DESCRIPTION |
76 | 74 | </h2> |
77 | 75 | |
78 | 76 | |
79 | ||
80 | <p style="margin-left:11%; margin-top: 1em"><b>−p</b> | |
77 | <p style="margin-left:11%; margin-top: 1em"><b>-p</b> | |
81 | 78 | <i>port</i></p> |
82 | 79 | |
83 | 80 | <p style="margin-left:22%;">Port to connect to. If left off |
0 | 0 | <!-- Creator : groff version 1.22.3 --> |
1 | <!-- CreationDate: Fri May 20 06:10:08 2016 --> | |
1 | <!-- CreationDate: Fri Jul 22 02:16:05 2016 --> | |
2 | 2 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
3 | 3 | "http://www.w3.org/TR/html4/loose.dtd"> |
4 | 4 | <html> |
34 | 34 | </h2> |
35 | 35 | |
36 | 36 | |
37 | <p style="margin-left:11%; margin-top: 1em">nntpd − | |
38 | NNTP server process</p> | |
37 | <p style="margin-left:11%; margin-top: 1em">nntpd - NNTP | |
38 | server process</p> | |
39 | 39 | |
40 | 40 | <h2>SYNOPSIS |
41 | 41 | <a name="SYNOPSIS"></a> |
43 | 43 | |
44 | 44 | |
45 | 45 | <p style="margin-left:11%; margin-top: 1em"><b>nntpd</b> [ |
46 | <b>−C</b> <i>config-file</i> ] [ <b>−U</b> | |
47 | <i>uses</i> ] [ <b>−T</b> <i>timeout</i> ] [ | |
48 | <b>−D</b> ] <br> | |
49 | [ <b>−s</b> ] [ <b>−r</b> ] [ <b>−f</b> ] | |
50 | [ <b>−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> | |
51 | 50 | |
52 | 51 | <h2>DESCRIPTION |
53 | 52 | <a name="DESCRIPTION"></a> |
89 | 88 | </h2> |
90 | 89 | |
91 | 90 | |
92 | ||
93 | <p style="margin-left:11%; margin-top: 1em"><b>−C</b> | |
91 | <p style="margin-left:11%; margin-top: 1em"><b>-C</b> | |
94 | 92 | <i>config-file</i></p> |
95 | 93 | |
96 | 94 | <p style="margin-left:22%;">Read configuration options from |
97 | 95 | <i>config-file</i>.</p> |
98 | 96 | |
99 | <p style="margin-left:11%;"><b>−U</b> <i>uses</i></p> | |
97 | <p style="margin-left:11%;"><b>-U</b> <i>uses</i></p> | |
100 | 98 | |
101 | 99 | <p style="margin-left:22%;">The maximum number of times |
102 | 100 | that the process should be used for new connections before |
103 | 101 | shutting down. The default is 250.</p> |
104 | 102 | |
105 | <p style="margin-left:11%;"><b>−T</b> | |
106 | <i>timeout</i></p> | |
103 | <p style="margin-left:11%;"><b>-T</b> <i>timeout</i></p> | |
107 | 104 | |
108 | 105 | <p style="margin-left:22%;">The number of seconds that the |
109 | 106 | process will wait for a new connection before shutting down. |
117 | 114 | <td width="9%"> |
118 | 115 | |
119 | 116 | |
120 | <p><b>−D</b></p></td> | |
117 | <p><b>-D</b></p></td> | |
121 | 118 | <td width="2%"></td> |
122 | 119 | <td width="78%"> |
123 | 120 | |
128 | 125 | <td width="9%"> |
129 | 126 | |
130 | 127 | |
131 | <p><b>−s</b></p></td> | |
128 | <p><b>-s</b></p></td> | |
132 | 129 | <td width="2%"></td> |
133 | 130 | <td width="78%"> |
134 | 131 | |
141 | 138 | <td width="9%"> |
142 | 139 | |
143 | 140 | |
144 | <p><b>−r</b></p></td> | |
141 | <p><b>-r</b></p></td> | |
145 | 142 | <td width="2%"></td> |
146 | 143 | <td width="78%"> |
147 | 144 | |
153 | 150 | <td width="9%"> |
154 | 151 | |
155 | 152 | |
156 | <p><b>−f</b></p></td> | |
153 | <p><b>-f</b></p></td> | |
157 | 154 | <td width="2%"></td> |
158 | 155 | <td width="78%"> |
159 | 156 | |
165 | 162 | <td width="9%"> |
166 | 163 | |
167 | 164 | |
168 | <p><b>−p</b> <i>ssf</i></p></td> | |
165 | <p><b>-p</b> <i>ssf</i></p></td> | |
169 | 166 | <td width="2%"></td> |
170 | 167 | <td width="78%"> |
171 | 168 |
0 | 0 | <!-- Creator : groff version 1.22.3 --> |
1 | <!-- CreationDate: Fri May 20 06:10:08 2016 --> | |
1 | <!-- CreationDate: Fri Jul 22 02:16:05 2016 --> | |
2 | 2 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
3 | 3 | "http://www.w3.org/TR/html4/loose.dtd"> |
4 | 4 | <html> |
33 | 33 | </h2> |
34 | 34 | |
35 | 35 | |
36 | <p style="margin-left:11%; margin-top: 1em">nntptest | |
37 | − interactive NNTP test program</p> | |
36 | <p style="margin-left:11%; margin-top: 1em">nntptest - | |
37 | interactive NNTP test program</p> | |
38 | 38 | |
39 | 39 | <h2>SYNOPSIS |
40 | 40 | <a name="SYNOPSIS"></a> |
43 | 43 | |
44 | 44 | |
45 | 45 | <p style="margin-left:11%; margin-top: 1em"><b>nntptest</b> |
46 | [ <b>−t</b> <i>keyfile</i> ] [ <b>−p</b> | |
47 | <i>port</i> ] [ <b>−m</b> <i>mechanism</i> ] <br> | |
48 | [ <b>−a</b> <i>userid</i> ] [ <b>−u</b> | |
49 | <i>userid</i> ] [ <b>−k</b> <i>num</i> ] [ | |
50 | <b>−l</b> <i>num</i> ] <br> | |
51 | [ <b>−r</b> <i>realm</i> ] [ <b>−f</b> | |
52 | <i>file</i> ] [ <b>−n</b> <i>num</i> ] [ | |
53 | <b>−s</b> ] [ <b>−c</b> ] <br> | |
54 | [ <b>−i</b> ] [ <b>−o</b> | |
55 | <i>option</i><b>=</b><i>value</i> ] [ <b>−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> | |
57 | 54 | |
58 | 55 | <h2>DESCRIPTION |
59 | 56 | <a name="DESCRIPTION"></a> |
76 | 73 | </h2> |
77 | 74 | |
78 | 75 | |
79 | ||
80 | <p style="margin-left:11%; margin-top: 1em"><b>−t</b> | |
76 | <p style="margin-left:11%; margin-top: 1em"><b>-t</b> | |
81 | 77 | <i>keyfile</i></p> |
82 | 78 | |
83 | 79 | <p style="margin-left:22%;">Enable TLS. <i>keyfile</i> |
85 | 81 | <b>""</b> to negotiate a TLS encryption layer but |
86 | 82 | not use TLS authentication.</p> |
87 | 83 | |
88 | <p style="margin-left:11%;"><b>−p</b> <i>port</i></p> | |
84 | <p style="margin-left:11%;"><b>-p</b> <i>port</i></p> | |
89 | 85 | |
90 | 86 | <p style="margin-left:22%;">Port to connect to. If left off |
91 | 87 | this defaults to <b>nntp</b> as defined in |
0 | 0 | <!-- Creator : groff version 1.22.3 --> |
1 | <!-- CreationDate: Fri May 20 06:10:08 2016 --> | |
1 | <!-- CreationDate: Fri Jul 22 02:16:06 2016 --> | |
2 | 2 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
3 | 3 | "http://www.w3.org/TR/html4/loose.dtd"> |
4 | 4 | <html> |
35 | 35 | </h2> |
36 | 36 | |
37 | 37 | |
38 | <p style="margin-left:11%; margin-top: 1em">notifyd − | |
39 | Cyrus notification server</p> | |
38 | <p style="margin-left:11%; margin-top: 1em">notifyd - Cyrus | |
39 | notification server</p> | |
40 | 40 | |
41 | 41 | <h2>SYNOPSIS |
42 | 42 | <a name="SYNOPSIS"></a> |
44 | 44 | |
45 | 45 | |
46 | 46 | <p style="margin-left:11%; margin-top: 1em"><b>notifyd</b> |
47 | [ <b>−C</b> <i>config-file</i> ] [ <b>−U</b> | |
48 | <i>uses</i> ] [ <b>−T</b> <i>timeout</i> ] <br> | |
49 | [ <b>−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> | |
50 | 50 | |
51 | 51 | <h2>DESCRIPTION |
52 | 52 | <a name="DESCRIPTION"></a> |
75 | 75 | </h2> |
76 | 76 | |
77 | 77 | |
78 | ||
79 | <p style="margin-left:11%; margin-top: 1em"><b>−C</b> | |
78 | <p style="margin-left:11%; margin-top: 1em"><b>-C</b> | |
80 | 79 | <i>config-file</i></p> |
81 | 80 | |
82 | 81 | <p style="margin-left:22%;">Read configuration options from |
83 | 82 | <i>config-file</i>.</p> |
84 | 83 | |
85 | <p style="margin-left:11%;"><b>−U</b> <i>uses</i></p> | |
84 | <p style="margin-left:11%;"><b>-U</b> <i>uses</i></p> | |
86 | 85 | |
87 | 86 | <p style="margin-left:22%;">The maximum number of times |
88 | 87 | that the process should be used for new connections before |
89 | 88 | shutting down. The default is 250.</p> |
90 | 89 | |
91 | <p style="margin-left:11%;"><b>−T</b> | |
92 | <i>timeout</i></p> | |
90 | <p style="margin-left:11%;"><b>-T</b> <i>timeout</i></p> | |
93 | 91 | |
94 | 92 | <p style="margin-left:22%;">The number of seconds that the |
95 | 93 | process will wait for a new connection before shutting down. |
103 | 101 | <td width="3%"> |
104 | 102 | |
105 | 103 | |
106 | <p><b>−D</b></p></td> | |
104 | <p><b>-D</b></p></td> | |
107 | 105 | <td width="8%"></td> |
108 | 106 | <td width="75%"> |
109 | 107 |
0 | 0 | <!-- Creator : groff version 1.22.3 --> |
1 | <!-- CreationDate: Fri May 20 06:10:08 2016 --> | |
1 | <!-- CreationDate: Fri Jul 22 02:16:06 2016 --> | |
2 | 2 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
3 | 3 | "http://www.w3.org/TR/html4/loose.dtd"> |
4 | 4 | <html> |
34 | 34 | </h2> |
35 | 35 | |
36 | 36 | |
37 | <p style="margin-left:11%; margin-top: 1em">pop3d − | |
38 | POP3 server process</p> | |
37 | <p style="margin-left:11%; margin-top: 1em">pop3d - POP3 | |
38 | server process</p> | |
39 | 39 | |
40 | 40 | <h2>SYNOPSIS |
41 | 41 | <a name="SYNOPSIS"></a> |
43 | 43 | |
44 | 44 | |
45 | 45 | <p style="margin-left:11%; margin-top: 1em"><b>pop3d</b> [ |
46 | <b>−C</b> <i>config-file</i> ] [ <b>−U</b> | |
47 | <i>uses</i> ] [ <b>−T</b> <i>timeout</i> ] [ | |
48 | <b>−D</b> ] <br> | |
49 | [ <b>−s</b> ] [ <b>−k</b> ] [ <b>−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> | |
51 | 49 | |
52 | 50 | <h2>DESCRIPTION |
53 | 51 | <a name="DESCRIPTION"></a> |
79 | 77 | </h2> |
80 | 78 | |
81 | 79 | |
82 | ||
83 | <p style="margin-left:11%; margin-top: 1em"><b>−C</b> | |
80 | <p style="margin-left:11%; margin-top: 1em"><b>-C</b> | |
84 | 81 | <i>config-file</i></p> |
85 | 82 | |
86 | 83 | <p style="margin-left:22%;">Read configuration options from |
87 | 84 | <i>config-file</i>.</p> |
88 | 85 | |
89 | <p style="margin-left:11%;"><b>−U</b> <i>uses</i></p> | |
86 | <p style="margin-left:11%;"><b>-U</b> <i>uses</i></p> | |
90 | 87 | |
91 | 88 | <p style="margin-left:22%;">The maximum number of times |
92 | 89 | that the process should be used for new connections before |
93 | 90 | shutting down. The default is 250.</p> |
94 | 91 | |
95 | <p style="margin-left:11%;"><b>−T</b> | |
96 | <i>timeout</i></p> | |
92 | <p style="margin-left:11%;"><b>-T</b> <i>timeout</i></p> | |
97 | 93 | |
98 | 94 | <p style="margin-left:22%;">The number of seconds that the |
99 | 95 | process will wait for a new connection before shutting down. |
107 | 103 | <td width="9%"> |
108 | 104 | |
109 | 105 | |
110 | <p><b>−D</b></p></td> | |
106 | <p><b>-D</b></p></td> | |
111 | 107 | <td width="2%"></td> |
112 | 108 | <td width="78%"> |
113 | 109 | |
118 | 114 | <td width="9%"> |
119 | 115 | |
120 | 116 | |
121 | <p><b>−s</b></p></td> | |
117 | <p><b>-s</b></p></td> | |
122 | 118 | <td width="2%"></td> |
123 | 119 | <td width="78%"> |
124 | 120 | |
131 | 127 | <td width="9%"> |
132 | 128 | |
133 | 129 | |
134 | <p><b>−k</b></p></td> | |
130 | <p><b>-k</b></p></td> | |
135 | 131 | <td width="2%"></td> |
136 | 132 | <td width="78%"> |
137 | 133 | |
143 | 139 | <td width="9%"> |
144 | 140 | |
145 | 141 | |
146 | <p><b>−p</b> <i>ssf</i></p></td> | |
142 | <p><b>-p</b> <i>ssf</i></p></td> | |
147 | 143 | <td width="2%"></td> |
148 | 144 | <td width="78%"> |
149 | 145 |
0 | 0 | <!-- Creator : groff version 1.22.3 --> |
1 | <!-- CreationDate: Fri May 20 06:10:08 2016 --> | |
1 | <!-- CreationDate: Fri Jul 22 02:16:06 2016 --> | |
2 | 2 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
3 | 3 | "http://www.w3.org/TR/html4/loose.dtd"> |
4 | 4 | <html> |
33 | 33 | </h2> |
34 | 34 | |
35 | 35 | |
36 | <p style="margin-left:11%; margin-top: 1em">pop3test | |
37 | − interactive POP3 test program</p> | |
36 | <p style="margin-left:11%; margin-top: 1em">pop3test - | |
37 | interactive POP3 test program</p> | |
38 | 38 | |
39 | 39 | <h2>SYNOPSIS |
40 | 40 | <a name="SYNOPSIS"></a> |
43 | 43 | |
44 | 44 | |
45 | 45 | <p style="margin-left:11%; margin-top: 1em"><b>pop3test</b> |
46 | [ <b>−t</b> <i>keyfile</i> ] [ <b>−p</b> | |
47 | <i>port</i> ] [ <b>−m</b> <i>mechanism</i> ] <br> | |
48 | [ <b>−a</b> <i>userid</i> ] [ <b>−u</b> | |
49 | <i>userid</i> ] [ <b>−k</b> <i>num</i> ] [ | |
50 | <b>−l</b> <i>num</i> ] <br> | |
51 | [ <b>−r</b> <i>realm</i> ] [ <b>−f</b> | |
52 | <i>file</i> ] [ <b>−n</b> <i>num</i> ] [ | |
53 | <b>−s</b> ] [ <b>−c</b> ] <br> | |
54 | [ <b>−i</b> ] [ <b>−o</b> | |
55 | <i>option</i><b>=</b><i>value</i> ] [ <b>−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> | |
57 | 54 | |
58 | 55 | <h2>DESCRIPTION |
59 | 56 | <a name="DESCRIPTION"></a> |
76 | 73 | </h2> |
77 | 74 | |
78 | 75 | |
79 | ||
80 | <p style="margin-left:11%; margin-top: 1em"><b>−t</b> | |
76 | <p style="margin-left:11%; margin-top: 1em"><b>-t</b> | |
81 | 77 | <i>keyfile</i></p> |
82 | 78 | |
83 | 79 | <p style="margin-left:22%;">Enable TLS. <i>keyfile</i> |
85 | 81 | <b>""</b> to negotiate a TLS encryption layer but |
86 | 82 | not use TLS authentication.</p> |
87 | 83 | |
88 | <p style="margin-left:11%;"><b>−p</b> <i>port</i></p> | |
84 | <p style="margin-left:11%;"><b>-p</b> <i>port</i></p> | |
89 | 85 | |
90 | 86 | <p style="margin-left:22%;">Port to connect to. If left off |
91 | 87 | this defaults to <b>pop3</b> as defined in |
0 | 0 | <!-- Creator : groff version 1.22.3 --> |
1 | <!-- CreationDate: Fri May 20 06:10:08 2016 --> | |
1 | <!-- CreationDate: Fri Jul 22 02:16:06 2016 --> | |
2 | 2 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
3 | 3 | "http://www.w3.org/TR/html4/loose.dtd"> |
4 | 4 | <html> |
33 | 33 | </h2> |
34 | 34 | |
35 | 35 | |
36 | <p style="margin-left:11%; margin-top: 1em">quota − | |
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> | |
38 | 38 | |
39 | 39 | <h2>SYNOPSIS |
40 | 40 | <a name="SYNOPSIS"></a> |
42 | 42 | |
43 | 43 | |
44 | 44 | <p style="margin-left:11%; margin-top: 1em"><b>quota</b> [ |
45 | <b>−C</b> <i>config-file</i> ] [ <b>−d</b> | |
46 | <i>domain</i> ] [ <b>−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> | |
48 | 47 | |
49 | 48 | <h2>DESCRIPTION |
50 | 49 | <a name="DESCRIPTION"></a> |
53 | 52 | |
54 | 53 | <p style="margin-left:11%; margin-top: 1em"><i>Quota</i> |
55 | 54 | generates a report listing quota roots, giving their limits |
56 | and usage. If the <i>−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> | |
66 | 65 | |
67 | 66 | <p style="margin-left:11%; margin-top: 1em">Running |
68 | <i>quota</i> with both the <i>−f</i> option and | |
67 | <i>quota</i> with both the <i>-f</i> option and | |
69 | 68 | <i>mailbox-prefix</i> arguments is not recommended.</p> |
70 | 69 | |
71 | 70 | <p style="margin-left:11%; margin-top: 1em"><i>Quota</i> |
78 | 77 | </h2> |
79 | 78 | |
80 | 79 | |
81 | ||
82 | <p style="margin-left:11%; margin-top: 1em"><b>−C</b> | |
80 | <p style="margin-left:11%; margin-top: 1em"><b>-C</b> | |
83 | 81 | <i>config-file</i></p> |
84 | 82 | |
85 | 83 | <p style="margin-left:22%;">Read configuration options from |
86 | 84 | <i>config-file</i>.</p> |
87 | 85 | |
88 | <p style="margin-left:11%;"><b>−d</b> | |
89 | <i>domain</i></p> | |
86 | <p style="margin-left:11%;"><b>-d</b> <i>domain</i></p> | |
90 | 87 | |
91 | 88 | <p style="margin-left:22%;">List/fix quotas in |
92 | 89 | <i>domain</i>.</p> |
98 | 95 | <td width="3%"> |
99 | 96 | |
100 | 97 | |
101 | <p><b>−f</b></p></td> | |
98 | <p><b>-f</b></p></td> | |
102 | 99 | <td width="8%"></td> |
103 | 100 | <td width="78%"> |
104 | 101 | |
110 | 107 | <td width="3%"> |
111 | 108 | |
112 | 109 | |
113 | <p><b>−q</b></p></td> | |
110 | <p><b>-q</b></p></td> | |
114 | 111 | <td width="8%"></td> |
115 | 112 | <td width="78%"> |
116 | 113 |
0 | 0 | <!-- Creator : groff version 1.22.3 --> |
1 | <!-- CreationDate: Fri May 20 06:10:08 2016 --> | |
1 | <!-- CreationDate: Fri Jul 22 02:16:06 2016 --> | |
2 | 2 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
3 | 3 | "http://www.w3.org/TR/html4/loose.dtd"> |
4 | 4 | <html> |
34 | 34 | </h2> |
35 | 35 | |
36 | 36 | |
37 | <p style="margin-left:11%; margin-top: 1em">reconstruct | |
38 | − reconstruct mailboxes</p> | |
37 | <p style="margin-left:11%; margin-top: 1em">reconstruct - | |
38 | reconstruct mailboxes</p> | |
39 | 39 | |
40 | 40 | <h2>SYNOPSIS |
41 | 41 | <a name="SYNOPSIS"></a> |
44 | 44 | |
45 | 45 | |
46 | 46 | <p style="margin-left:11%; margin-top: 1em"><b>reconstruct</b> |
47 | [ <b>−C</b> <i>config-file</i> ] [ <b>−p</b> | |
48 | <i>partition</i> ] [ <b>−x</b> ] [ <b>−r</b> ] [ | |
49 | <b>−f</b> ] <br> | |
50 | [ <b>−k</b> ] [ <b>−s</b> ] [ <b>−g</b> ] | |
51 | [ <b>−G</b> ] [ <b>−R</b> ] [ <b>−o</b> ] | |
52 | [ <b>−O</b> ] <i>mailbox</i>... <b><br> | |
53 | reconstruct</b> [ <b>−C</b> <i>config-file</i> ] | |
54 | <b>−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> | |
55 | 55 | |
56 | 56 | <h2>DESCRIPTION |
57 | 57 | <a name="DESCRIPTION"></a> |
61 | 61 | |
62 | 62 | <p style="margin-left:11%; margin-top: 1em"><b><i>Reconstruct</i></b> |
63 | 63 | rebuilds one or more IMAP mailboxes. When invoked with the |
64 | <b>−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 | |
66 | 66 | corruption.</p> |
67 | 67 | |
68 | 68 | <p style="margin-left:11%; margin-top: 1em">If |
85 | 85 | <p style="margin-left:11%; margin-top: 1em"><i>Reconstruct</i> |
86 | 86 | does not adjust the quota usage recorded in any quota root |
87 | 87 | files. After running <i>reconstruct</i>, it is advisable to |
88 | run <i>quota</i>(8) with the <i>−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> | |
90 | 90 | |
91 | 91 | <h2>OPTIONS |
92 | 92 | <a name="OPTIONS"></a> |
93 | 93 | </h2> |
94 | 94 | |
95 | 95 | |
96 | ||
97 | <p style="margin-left:11%; margin-top: 1em"><b>−C</b> | |
96 | <p style="margin-left:11%; margin-top: 1em"><b>-C</b> | |
98 | 97 | <i>config-file</i></p> |
99 | 98 | |
100 | 99 | <p style="margin-left:22%;">Read configuration options from |
101 | 100 | <i>config-file</i>.</p> |
102 | 101 | |
103 | <p style="margin-left:11%;"><b>−p</b> | |
104 | <i>partition</i></p> | |
102 | <p style="margin-left:11%;"><b>-p</b> <i>partition</i></p> | |
105 | 103 | |
106 | 104 | <p style="margin-left:22%;">Search for the listed |
107 | 105 | (non-existant) mailboxes on the indicated partition. Create |
115 | 113 | <td width="3%"> |
116 | 114 | |
117 | 115 | |
118 | <p><b>−x</b></p></td> | |
116 | <p><b>-x</b></p></td> | |
119 | 117 | <td width="8%"></td> |
120 | 118 | <td width="78%"> |
121 | 119 | |
130 | 128 | <td width="3%"> |
131 | 129 | |
132 | 130 | |
133 | <p><b>−r</b></p></td> | |
131 | <p><b>-r</b></p></td> | |
134 | 132 | <td width="8%"></td> |
135 | 133 | <td width="78%"> |
136 | 134 | |
142 | 140 | <td width="3%"> |
143 | 141 | |
144 | 142 | |
145 | <p><b>−f</b></p></td> | |
143 | <p><b>-f</b></p></td> | |
146 | 144 | <td width="8%"></td> |
147 | 145 | <td width="78%"> |
148 | 146 | |
155 | 153 | <td width="3%"> |
156 | 154 | |
157 | 155 | |
158 | <p><b>−s</b></p></td> | |
156 | <p><b>-s</b></p></td> | |
159 | 157 | <td width="8%"></td> |
160 | 158 | <td width="78%"> |
161 | 159 | |
169 | 167 | <td width="3%"> |
170 | 168 | |
171 | 169 | |
172 | <p><b>−q</b></p></td> | |
170 | <p><b>-q</b></p></td> | |
173 | 171 | <td width="8%"></td> |
174 | 172 | <td width="78%"> |
175 | 173 | |
180 | 178 | <td width="3%"> |
181 | 179 | |
182 | 180 | |
183 | <p><b>−n</b></p></td> | |
181 | <p><b>-n</b></p></td> | |
184 | 182 | <td width="8%"></td> |
185 | 183 | <td width="78%"> |
186 | 184 | |
193 | 191 | <td width="3%"> |
194 | 192 | |
195 | 193 | |
196 | <p><b>−G</b></p></td> | |
194 | <p><b>-G</b></p></td> | |
197 | 195 | <td width="8%"></td> |
198 | 196 | <td width="78%"> |
199 | 197 | |
207 | 205 | <td width="3%"> |
208 | 206 | |
209 | 207 | |
210 | <p><b>−R</b></p></td> | |
208 | <p><b>-R</b></p></td> | |
211 | 209 | <td width="8%"></td> |
212 | 210 | <td width="78%"> |
213 | 211 | |
222 | 220 | <td width="3%"> |
223 | 221 | |
224 | 222 | |
225 | <p><b>−U</b></p></td> | |
223 | <p><b>-U</b></p></td> | |
226 | 224 | <td width="8%"></td> |
227 | 225 | <td width="78%"> |
228 | 226 | |
259 | 257 | ’-o’.</p> </td></tr> |
260 | 258 | </table> |
261 | 259 | |
262 | <p style="margin-left:11%;"><b>−V</b> | |
263 | <i>version</i></p> | |
260 | <p style="margin-left:11%;"><b>-V</b> <i>version</i></p> | |
264 | 261 | |
265 | 262 | <p style="margin-left:22%;">Change the cyrus.index minor |
266 | 263 | version to a specific version. This can be useful for |
287 | 284 | <td width="3%"> |
288 | 285 | |
289 | 286 | |
290 | <p><b>−m</b></p></td> | |
287 | <p><b>-m</b></p></td> | |
291 | 288 | <td width="8%"></td> |
292 | 289 | <td width="78%"> |
293 | 290 |
0 | 0 | <!-- Creator : groff version 1.22.3 --> |
1 | <!-- CreationDate: Fri May 20 06:10:09 2016 --> | |
1 | <!-- CreationDate: Fri Jul 22 02:16:06 2016 --> | |
2 | 2 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
3 | 3 | "http://www.w3.org/TR/html4/loose.dtd"> |
4 | 4 | <html> |
32 | 32 | </h2> |
33 | 33 | |
34 | 34 | |
35 | <p style="margin-left:11%; margin-top: 1em">rmnews − | |
35 | <p style="margin-left:11%; margin-top: 1em">rmnews - | |
36 | 36 | expunge and remove news articles</p> |
37 | 37 | |
38 | 38 | <h2>SYNOPSIS |
0 | 0 | <!-- Creator : groff version 1.22.3 --> |
1 | <!-- CreationDate: Fri May 20 06:10:09 2016 --> | |
1 | <!-- CreationDate: Fri Jul 22 02:16:06 2016 --> | |
2 | 2 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
3 | 3 | "http://www.w3.org/TR/html4/loose.dtd"> |
4 | 4 | <html> |
34 | 34 | </h2> |
35 | 35 | |
36 | 36 | |
37 | <p style="margin-left:11%; margin-top: 1em">sieveshell | |
38 | − remotely manipulate sieve scripts</p> | |
37 | <p style="margin-left:11%; margin-top: 1em">sieveshell - | |
38 | remotely manipulate sieve scripts</p> | |
39 | 39 | |
40 | 40 | <h2>SYNOPSIS |
41 | 41 | <a name="SYNOPSIS"></a> |
43 | 43 | |
44 | 44 | |
45 | 45 | <p style="margin-left:11%; margin-top: 1em">sieveshell |
46 | [<b>−−user</b>=<i>user</i>] | |
47 | [<b>−−authname</b>=<i>authname</i>] | |
48 | [<b>−−realm</b>=<i>realm</i>] | |
49 | [<b>−−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>] | |
50 | 49 | <i>server</i>[<b>:</b><i>port</i>]</p> |
51 | 50 | |
52 | 51 | <p style="margin-left:11%; margin-top: 1em">sieveshell |
53 | <b>−−help</b></p> | |
52 | <b>--help</b></p> | |
54 | 53 | |
55 | 54 | <h2>DESCRIPTION |
56 | 55 | <a name="DESCRIPTION"></a> |
92 | 91 | </h2> |
93 | 92 | |
94 | 93 | |
95 | ||
96 | <p style="margin-left:11%; margin-top: 1em"><b>−u</b> | |
97 | <i>user</i>, <b>−−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> | |
98 | 96 | |
99 | 97 | <p style="margin-left:17%;">The authorization name to |
100 | 98 | request; by default, derived from the authentication |
101 | 99 | credentials.</p> |
102 | 100 | |
103 | <p style="margin-left:11%;"><b>−a</b> | |
104 | <i>authname</i>, | |
105 | <b>−−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> | |
106 | 103 | |
107 | 104 | <p style="margin-left:17%;">The user to use for |
108 | 105 | authentication (defaults to current user).</p> |
109 | 106 | |
110 | <p style="margin-left:11%;"><b>−r</b> <i>realm</i>, | |
111 | <b>−−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> | |
112 | 109 | |
113 | 110 | <p style="margin-left:17%;">The realm to attempt |
114 | 111 | authentication in.</p> |
115 | 112 | |
116 | <p style="margin-left:11%;"><b>−e</b> <i>script</i>, | |
117 | <b>−−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> | |
118 | 115 | |
119 | 116 | <p style="margin-left:17%;">Instead of working |
120 | 117 | interactively, run commands from <i>script</i>, and exit |
128 | 125 | <p style="margin-left:11%; margin-top: 1em">[ |
129 | 126 | <small>MANAGESIEVE</small> ] Martin, T.; "A Protocol |
130 | 127 | for Remotely Managing Sieve Scripts", |
131 | draft−ietf−managesieve−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> | |
133 | 130 | |
134 | 131 | <h2>AUTHOR |
135 | 132 | <a name="AUTHOR"></a> |
138 | 135 | |
139 | 136 | <p style="margin-left:11%; margin-top: 1em">Tim Martin |
140 | 137 | <tmartin@mirapoint.com>, and the rest of the Cyrus |
141 | team <cyrus−bugs@andrew.cmu.edu>.</p> | |
138 | team <cyrus-bugs@andrew.cmu.edu>.</p> | |
142 | 139 | <hr> |
143 | 140 | </body> |
144 | 141 | </html> |
0 | 0 | <!-- Creator : groff version 1.22.3 --> |
1 | <!-- CreationDate: Fri May 20 06:10:09 2016 --> | |
1 | <!-- CreationDate: Fri Jul 22 02:16:07 2016 --> | |
2 | 2 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
3 | 3 | "http://www.w3.org/TR/html4/loose.dtd"> |
4 | 4 | <html> |
33 | 33 | </h2> |
34 | 34 | |
35 | 35 | |
36 | <p style="margin-left:11%; margin-top: 1em">sivtest − | |
36 | <p style="margin-left:11%; margin-top: 1em">sivtest - | |
37 | 37 | interactive MANAGESIEVE test program</p> |
38 | 38 | |
39 | 39 | <h2>SYNOPSIS |
42 | 42 | |
43 | 43 | |
44 | 44 | <p style="margin-left:11%; margin-top: 1em"><b>sivtest</b> |
45 | [ <b>−t</b> <i>keyfile</i> ] [ <b>−p</b> | |
46 | <i>port</i> ] [ <b>−m</b> <i>mechanism</i> ] <br> | |
47 | [ <b>−a</b> <i>userid</i> ] [ <b>−u</b> | |
48 | <i>userid</i> ] [ <b>−k</b> <i>num</i> ] [ | |
49 | <b>−l</b> <i>num</i> ] <br> | |
50 | [ <b>−r</b> <i>realm</i> ] [ <b>−f</b> | |
51 | <i>file</i> ] [ <b>−n</b> <i>num</i> ] [ | |
52 | <b>−c</b> ] <br> | |
53 | [ <b>−i</b> ] [ <b>−o</b> | |
54 | <i>option</i><b>=</b><i>value</i> ] [ <b>−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> | |
56 | 53 | |
57 | 54 | <h2>DESCRIPTION |
58 | 55 | <a name="DESCRIPTION"></a> |
74 | 71 | </h2> |
75 | 72 | |
76 | 73 | |
77 | ||
78 | <p style="margin-left:11%; margin-top: 1em"><b>−t</b> | |
74 | <p style="margin-left:11%; margin-top: 1em"><b>-t</b> | |
79 | 75 | <i>keyfile</i></p> |
80 | 76 | |
81 | 77 | <p style="margin-left:22%;">Enable TLS. <i>keyfile</i> |
83 | 79 | <b>""</b> to negotiate a TLS encryption layer but |
84 | 80 | not use TLS authentication.</p> |
85 | 81 | |
86 | <p style="margin-left:11%;"><b>−p</b> <i>port</i></p> | |
82 | <p style="margin-left:11%;"><b>-p</b> <i>port</i></p> | |
87 | 83 | |
88 | 84 | <p style="margin-left:22%;">Port to connect to. If left off |
89 | 85 | this defaults to <b>sieve</b> as defined in |
0 | 0 | <!-- Creator : groff version 1.22.3 --> |
1 | <!-- CreationDate: Fri May 20 06:10:09 2016 --> | |
1 | <!-- CreationDate: Fri Jul 22 02:16:07 2016 --> | |
2 | 2 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
3 | 3 | "http://www.w3.org/TR/html4/loose.dtd"> |
4 | 4 | <html> |
33 | 33 | </h2> |
34 | 34 | |
35 | 35 | |
36 | <p style="margin-left:11%; margin-top: 1em">SMMAPD − | |
36 | <p style="margin-left:11%; margin-top: 1em">SMMAPD - | |
37 | 37 | Sendmail socket map daemon</p> |
38 | 38 | |
39 | 39 | <h2>SYNOPSIS |
42 | 42 | |
43 | 43 | |
44 | 44 | <p style="margin-left:11%; margin-top: 1em"><b>smmapd</b> [ |
45 | <b>−C</b> <i>config-file</i> ] [ <b>−U</b> | |
46 | <i>uses</i> ] [ <b>−T</b> <i>timeout</i> ] <br> | |
47 | [ <b>−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> | |
48 | 48 | |
49 | 49 | <h2>DESCRIPTION |
50 | 50 | <a name="DESCRIPTION"></a> |
69 | 69 | </h2> |
70 | 70 | |
71 | 71 | |
72 | ||
73 | <p style="margin-left:11%; margin-top: 1em"><b>−C</b> | |
72 | <p style="margin-left:11%; margin-top: 1em"><b>-C</b> | |
74 | 73 | <i>config-file</i></p> |
75 | 74 | |
76 | 75 | <p style="margin-left:22%;">Read configuration options from |
77 | 76 | <i>config-file</i>.</p> |
78 | 77 | |
79 | <p style="margin-left:11%;"><b>−U</b> <i>uses</i></p> | |
78 | <p style="margin-left:11%;"><b>-U</b> <i>uses</i></p> | |
80 | 79 | |
81 | 80 | <p style="margin-left:22%;">The maximum number of times |
82 | 81 | that the process should be used for new connections before |
83 | 82 | shutting down. The default is 250.</p> |
84 | 83 | |
85 | <p style="margin-left:11%;"><b>−T</b> | |
86 | <i>timeout</i></p> | |
84 | <p style="margin-left:11%;"><b>-T</b> <i>timeout</i></p> | |
87 | 85 | |
88 | 86 | <p style="margin-left:22%;">The number of seconds that the |
89 | 87 | process will wait for a new connection before shutting down. |
97 | 95 | <td width="3%"> |
98 | 96 | |
99 | 97 | |
100 | <p><b>−D</b></p></td> | |
98 | <p><b>-D</b></p></td> | |
101 | 99 | <td width="8%"></td> |
102 | 100 | <td width="75%"> |
103 | 101 |
0 | 0 | <!-- Creator : groff version 1.22.3 --> |
1 | <!-- CreationDate: Fri May 20 06:10:09 2016 --> | |
1 | <!-- CreationDate: Fri Jul 22 02:16:07 2016 --> | |
2 | 2 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
3 | 3 | "http://www.w3.org/TR/html4/loose.dtd"> |
4 | 4 | <html> |
33 | 33 | </h2> |
34 | 34 | |
35 | 35 | |
36 | <p style="margin-left:11%; margin-top: 1em">smtptest | |
37 | − interactive SMTP test program</p> | |
36 | <p style="margin-left:11%; margin-top: 1em">smtptest - | |
37 | interactive SMTP test program</p> | |
38 | 38 | |
39 | 39 | <h2>SYNOPSIS |
40 | 40 | <a name="SYNOPSIS"></a> |
43 | 43 | |
44 | 44 | |
45 | 45 | <p style="margin-left:11%; margin-top: 1em"><b>smtptest</b> |
46 | [ <b>−t</b> <i>keyfile</i> ] [ <b>−p</b> | |
47 | <i>port</i> ] [ <b>−m</b> <i>mechanism</i> ] <br> | |
48 | [ <b>−a</b> <i>userid</i> ] [ <b>−u</b> | |
49 | <i>userid</i> ] [ <b>−k</b> <i>num</i> ] [ | |
50 | <b>−l</b> <i>num</i> ] <br> | |
51 | [ <b>−r</b> <i>realm</i> ] [ <b>−f</b> | |
52 | <i>file</i> ] [ <b>−n</b> <i>num</i> ] [ | |
53 | <b>−s</b> ] [ <b>−c</b> ] <br> | |
54 | [ <b>−i</b> ] [ <b>−o</b> | |
55 | <i>option</i><b>=</b><i>value</i> ] [ <b>−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> | |
57 | 54 | |
58 | 55 | <h2>DESCRIPTION |
59 | 56 | <a name="DESCRIPTION"></a> |
76 | 73 | </h2> |
77 | 74 | |
78 | 75 | |
79 | ||
80 | <p style="margin-left:11%; margin-top: 1em"><b>−t</b> | |
76 | <p style="margin-left:11%; margin-top: 1em"><b>-t</b> | |
81 | 77 | <i>keyfile</i></p> |
82 | 78 | |
83 | 79 | <p style="margin-left:22%;">Enable TLS. <i>keyfile</i> |
85 | 81 | <b>""</b> to negotiate a TLS encryption layer but |
86 | 82 | not use TLS authentication.</p> |
87 | 83 | |
88 | <p style="margin-left:11%;"><b>−p</b> <i>port</i></p> | |
84 | <p style="margin-left:11%;"><b>-p</b> <i>port</i></p> | |
89 | 85 | |
90 | 86 | <p style="margin-left:22%;">Port to connect to. If left off |
91 | 87 | this defaults to <b>smtp</b> as defined in |
0 | 0 | <!-- Creator : groff version 1.22.3 --> |
1 | <!-- CreationDate: Fri May 20 06:10:09 2016 --> | |
1 | <!-- CreationDate: Fri Jul 22 02:16:07 2016 --> | |
2 | 2 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
3 | 3 | "http://www.w3.org/TR/html4/loose.dtd"> |
4 | 4 | <html> |
33 | 33 | </h2> |
34 | 34 | |
35 | 35 | |
36 | <p style="margin-left:11%; margin-top: 1em">squatter | |
37 | − create SQUAT indexes for mailboxes</p> | |
36 | <p style="margin-left:11%; margin-top: 1em">squatter - | |
37 | create SQUAT indexes for mailboxes</p> | |
38 | 38 | |
39 | 39 | <h2>SYNOPSIS |
40 | 40 | <a name="SYNOPSIS"></a> |
43 | 43 | |
44 | 44 | |
45 | 45 | <p style="margin-left:11%; margin-top: 1em"><b>squatter</b> |
46 | [ <b>−C</b> <i>config-file</i> ] [ <b>−r</b> ] [ | |
47 | <b>−s</b> ] [ <b>−i</b> ] [ <b>−a</b> ] [ | |
48 | <b>−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> | |
49 | 49 | |
50 | 50 | <h2>DESCRIPTION |
51 | 51 | <a name="DESCRIPTION"></a> |
87 | 87 | </h2> |
88 | 88 | |
89 | 89 | |
90 | ||
91 | <p style="margin-left:11%; margin-top: 1em"><b>−C</b> | |
90 | <p style="margin-left:11%; margin-top: 1em"><b>-C</b> | |
92 | 91 | <i>config-file</i></p> |
93 | 92 | |
94 | 93 | <p style="margin-left:22%;">Read configuration options from |
101 | 100 | <td width="3%"> |
102 | 101 | |
103 | 102 | |
104 | <p><b>−r</b></p></td> | |
103 | <p><b>-r</b></p></td> | |
105 | 104 | <td width="8%"></td> |
106 | 105 | <td width="78%"> |
107 | 106 | |
113 | 112 | <td width="3%"> |
114 | 113 | |
115 | 114 | |
116 | <p><b>−s</b></p></td> | |
115 | <p><b>-s</b></p></td> | |
117 | 116 | <td width="8%"></td> |
118 | 117 | <td width="78%"> |
119 | 118 | |
125 | 124 | <td width="3%"> |
126 | 125 | |
127 | 126 | |
128 | <p><b>−i</b></p></td> | |
127 | <p><b>-i</b></p></td> | |
129 | 128 | <td width="8%"></td> |
130 | 129 | <td width="78%"> |
131 | 130 | |
137 | 136 | <td width="3%"> |
138 | 137 | |
139 | 138 | |
140 | <p><b>−a</b></p></td> | |
139 | <p><b>-a</b></p></td> | |
141 | 140 | <td width="8%"></td> |
142 | 141 | <td width="78%"> |
143 | 142 | |
166 | 165 | <td width="3%"> |
167 | 166 | |
168 | 167 | |
169 | <p style="margin-top: 1em"><b>−v</b></p></td> | |
168 | <p style="margin-top: 1em"><b>-v</b></p></td> | |
170 | 169 | <td width="8%"></td> |
171 | 170 | <td width="78%"> |
172 | 171 |
0 | 0 | <!-- Creator : groff version 1.22.3 --> |
1 | <!-- CreationDate: Fri May 20 06:10:09 2016 --> | |
1 | <!-- CreationDate: Fri Jul 22 02:16:07 2016 --> | |
2 | 2 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
3 | 3 | "http://www.w3.org/TR/html4/loose.dtd"> |
4 | 4 | <html> |
35 | 35 | </h2> |
36 | 36 | |
37 | 37 | |
38 | <p style="margin-left:11%; margin-top: 1em">sync_client | |
39 | − 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> | |
41 | 40 | |
42 | 41 | <h2>SYNOPSIS |
43 | 42 | <a name="SYNOPSIS"></a> |
46 | 45 | |
47 | 46 | |
48 | 47 | <p style="margin-left:11%; margin-top: 1em"><b>sync_client</b> |
49 | [ <b>−v</b> ] [ <b>−l</b> ] [ <b>−z</b> ] | |
50 | [ <b>−C</b> <i>config-file</i> ] [ <b>−S</b> | |
51 | <i>servername</i> ] <br> | |
52 | [ <b>−f</b> <i>input-file</i> ] [ <b>−F</b> | |
53 | <i>shutdown_file</i> ] [ <b>−w</b> | |
54 | <i>wait_interval</i> ] <br> | |
55 | [ <b>−t</b> <i>timeout</i> ] [ <b>−d</b> | |
56 | <i>delay</i> ] [ <b>−r</b> ] [ <b>−u</b> ] [ | |
57 | <b>−m</b> ] [ <b>−A</b> ] <br> | |
58 | [ <b>−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> | |
59 | 56 | |
60 | 57 | <h2>DESCRIPTION |
61 | 58 | <a name="DESCRIPTION"></a> |
82 | 79 | <td width="3%"> |
83 | 80 | |
84 | 81 | |
85 | <p style="margin-top: 1em"><b>−v</b></p></td> | |
82 | <p style="margin-top: 1em"><b>-v</b></p></td> | |
86 | 83 | <td width="8%"></td> |
87 | 84 | <td width="78%"> |
88 | 85 | |
94 | 91 | <td width="3%"> |
95 | 92 | |
96 | 93 | |
97 | <p><b>−l</b></p></td> | |
94 | <p><b>-l</b></p></td> | |
98 | 95 | <td width="8%"></td> |
99 | 96 | <td width="78%"> |
100 | 97 | |
105 | 102 | <td width="3%"> |
106 | 103 | |
107 | 104 | |
108 | <p><b>−o</b></p></td> | |
105 | <p><b>-o</b></p></td> | |
109 | 106 | <td width="8%"></td> |
110 | 107 | <td width="78%"> |
111 | 108 | |
117 | 114 | <td width="3%"> |
118 | 115 | |
119 | 116 | |
120 | <p><b>−z</b></p></td> | |
117 | <p><b>-z</b></p></td> | |
121 | 118 | <td width="8%"></td> |
122 | 119 | <td width="78%"> |
123 | 120 | |
128 | 125 | compression is not available.</p></td></tr> |
129 | 126 | </table> |
130 | 127 | |
131 | <p style="margin-left:11%;"><b>−C</b> | |
128 | <p style="margin-left:11%;"><b>-C</b> | |
132 | 129 | <i>config-file</i></p> |
133 | 130 | |
134 | 131 | <p style="margin-left:22%;">Read configuration options from |
135 | 132 | <i>config-file</i>.</p> |
136 | 133 | |
137 | <p style="margin-left:11%;"><b>−S</b> | |
138 | <i>servername</i></p> | |
134 | <p style="margin-left:11%;"><b>-S</b> <i>servername</i></p> | |
139 | 135 | |
140 | 136 | <p style="margin-left:22%;">Tells <b>sync_client</b> which |
141 | 137 | server to communicate with. Overrides the <i>sync_host</i> |
142 | 138 | configuration option.</p> |
143 | 139 | |
144 | <p style="margin-left:11%;"><b>−f</b> | |
145 | <i>input-file</i></p> | |
140 | <p style="margin-left:11%;"><b>-f</b> <i>input-file</i></p> | |
146 | 141 | |
147 | 142 | <p style="margin-left:22%;">In mailbox or user replication |
148 | 143 | mode: provides list of users or mailboxes to replicate. In |
150 | 145 | (<b>sync_client</b> will exit after processing the log |
151 | 146 | file).</p> |
152 | 147 | |
153 | <p style="margin-left:11%;"><b>−F</b> | |
148 | <p style="margin-left:11%;"><b>-F</b> | |
154 | 149 | <i>shutdown-file</i></p> |
155 | 150 | |
156 | 151 | <p style="margin-left:22%;">Rolling replication checks for |
160 | 155 | shutdown. Overrides <i>sync_shutdown_file</i> option in |
161 | 156 | <i>imapd.conf</i></p> |
162 | 157 | |
163 | <p style="margin-left:11%;"><b>−w</b> | |
164 | <i>interval</i></p> | |
158 | <p style="margin-left:11%;"><b>-w</b> <i>interval</i></p> | |
165 | 159 | |
166 | 160 | <p style="margin-left:22%;">Wait this long before starting. |
167 | 161 | This option is typically used so that we can attach a |
168 | 162 | debugger to one end of the replication system or the |
169 | 163 | other.</p> |
170 | 164 | |
171 | <p style="margin-left:11%;"><b>−t</b> | |
172 | <i>timeout</i></p> | |
165 | <p style="margin-left:11%;"><b>-t</b> <i>timeout</i></p> | |
173 | 166 | |
174 | 167 | <p style="margin-left:22%;">Timeout for single replication |
175 | 168 | run in rolling replication. <b>sync_client</b> will |
176 | 169 | negotiate a restart after this many seconds. Default: 600 |
177 | 170 | seconds</p> |
178 | 171 | |
179 | <p style="margin-left:11%;"><b>−d</b> | |
180 | <i>delay</i></p> | |
172 | <p style="margin-left:11%;"><b>-d</b> <i>delay</i></p> | |
181 | 173 | |
182 | 174 | <p style="margin-left:22%;">Minimum delay between |
183 | 175 | replication runs in rolling replication mode. Larger values |
194 | 186 | <td width="3%"> |
195 | 187 | |
196 | 188 | |
197 | <p><b>−r</b></p></td> | |
189 | <p><b>-r</b></p></td> | |
198 | 190 | <td width="8%"></td> |
199 | 191 | <td width="78%"> |
200 | 192 | |
209 | 201 | <td width="3%"> |
210 | 202 | |
211 | 203 | |
212 | <p><b>−n</b></p></td> | |
204 | <p><b>-n</b></p></td> | |
213 | 205 | <td width="8%"></td> |
214 | 206 | <td width="78%"> |
215 | 207 | |
217 | 209 | <p>Use the named channel for rolling replication mode. If |
218 | 210 | multiple channels are specified in <i>sync_log_channels</i> |
219 | 211 | then use one of them. This option is probably best combined |
220 | with <b>−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>−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> | |
228 | 220 | <td width="8%"></td> |
229 | 221 | <td width="78%"> |
230 | 222 | |
236 | 228 | <td width="3%"> |
237 | 229 | |
238 | 230 | |
239 | <p><b>−A</b></p></td> | |
231 | <p><b>-A</b></p></td> | |
240 | 232 | <td width="8%"></td> |
241 | 233 | <td width="78%"> |
242 | 234 | |
250 | 242 | <td width="3%"> |
251 | 243 | |
252 | 244 | |
253 | <p><b>−m</b></p></td> | |
245 | <p><b>-m</b></p></td> | |
254 | 246 | <td width="8%"></td> |
255 | 247 | <td width="78%"> |
256 | 248 | |
262 | 254 | <td width="3%"> |
263 | 255 | |
264 | 256 | |
265 | <p><b>−s</b></p></td> | |
257 | <p><b>-s</b></p></td> | |
266 | 258 | <td width="8%"></td> |
267 | 259 | <td width="78%"> |
268 | 260 |
0 | 0 | <!-- Creator : groff version 1.22.3 --> |
1 | <!-- CreationDate: Fri May 20 06:10:09 2016 --> | |
1 | <!-- CreationDate: Fri Jul 22 02:16:07 2016 --> | |
2 | 2 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
3 | 3 | "http://www.w3.org/TR/html4/loose.dtd"> |
4 | 4 | <html> |
35 | 35 | </h2> |
36 | 36 | |
37 | 37 | |
38 | <p style="margin-left:11%; margin-top: 1em">sync_reset | |
39 | − Account reset utility. DANGER.</p> | |
38 | <p style="margin-left:11%; margin-top: 1em">sync_reset - | |
39 | Account reset utility. DANGER.</p> | |
40 | 40 | |
41 | 41 | <h2>SYNOPSIS |
42 | 42 | <a name="SYNOPSIS"></a> |
45 | 45 | |
46 | 46 | |
47 | 47 | <p style="margin-left:11%; margin-top: 1em"><b>sync_reset</b> |
48 | [ <b>−C</b> <i>config-file</i> ] [ <b>−v</b> ] [ | |
49 | <b>−f</b> ]</p> | |
48 | [ <b>-C</b> <i>config-file</i> ] [ <b>-v</b> ] [ <b>-f</b> | |
49 | ]</p> | |
50 | 50 | |
51 | 51 | <h2>DESCRIPTION |
52 | 52 | <a name="DESCRIPTION"></a> |
64 | 64 | </h2> |
65 | 65 | |
66 | 66 | |
67 | ||
68 | <p style="margin-left:11%; margin-top: 1em"><b>−C</b> | |
67 | <p style="margin-left:11%; margin-top: 1em"><b>-C</b> | |
69 | 68 | <i>config-file</i></p> |
70 | 69 | |
71 | 70 | <p style="margin-left:22%;">Read configuration options from |
78 | 77 | <td width="3%"> |
79 | 78 | |
80 | 79 | |
81 | <p><b>−v</b></p></td> | |
80 | <p><b>-v</b></p></td> | |
82 | 81 | <td width="8%"></td> |
83 | 82 | <td width="78%"> |
84 | 83 | |
89 | 88 | <td width="3%"> |
90 | 89 | |
91 | 90 | |
92 | <p><b>−f</b></p></td> | |
91 | <p><b>-f</b></p></td> | |
93 | 92 | <td width="8%"></td> |
94 | 93 | <td width="78%"> |
95 | 94 |
0 | 0 | <!-- Creator : groff version 1.22.3 --> |
1 | <!-- CreationDate: Fri May 20 06:10:09 2016 --> | |
1 | <!-- CreationDate: Fri Jul 22 02:16:07 2016 --> | |
2 | 2 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
3 | 3 | "http://www.w3.org/TR/html4/loose.dtd"> |
4 | 4 | <html> |
35 | 35 | </h2> |
36 | 36 | |
37 | 37 | |
38 | <p style="margin-left:11%; margin-top: 1em">sync_server | |
39 | − 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> | |
41 | 40 | |
42 | 41 | <h2>SYNOPSIS |
43 | 42 | <a name="SYNOPSIS"></a> |
46 | 45 | |
47 | 46 | |
48 | 47 | <p style="margin-left:11%; margin-top: 1em"><b>sync_server</b> |
49 | [ <b>−C</b> <i>config-file</i> ] [ <b>−p</b> | |
50 | <i>ssf</i> ]</p> | |
48 | [ <b>-C</b> <i>config-file</i> ] [ <b>-p</b> <i>ssf</i> | |
49 | ]</p> | |
51 | 50 | |
52 | 51 | <h2>DESCRIPTION |
53 | 52 | <a name="DESCRIPTION"></a> |
66 | 65 | </h2> |
67 | 66 | |
68 | 67 | |
69 | ||
70 | <p style="margin-left:11%; margin-top: 1em"><b>−C</b> | |
68 | <p style="margin-left:11%; margin-top: 1em"><b>-C</b> | |
71 | 69 | <i>config-file</i></p> |
72 | 70 | |
73 | 71 | <p style="margin-left:22%;">Read configuration options from |
80 | 78 | <td width="9%"> |
81 | 79 | |
82 | 80 | |
83 | <p><b>−p</b> <i>ssf</i></p></td> | |
81 | <p><b>-p</b> <i>ssf</i></p></td> | |
84 | 82 | <td width="2%"></td> |
85 | 83 | <td width="78%"> |
86 | 84 |
0 | 0 | <!-- Creator : groff version 1.22.3 --> |
1 | <!-- CreationDate: Fri May 20 06:10:10 2016 --> | |
1 | <!-- CreationDate: Fri Jul 22 02:16:08 2016 --> | |
2 | 2 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
3 | 3 | "http://www.w3.org/TR/html4/loose.dtd"> |
4 | 4 | <html> |
34 | 34 | </h2> |
35 | 35 | |
36 | 36 | |
37 | <p style="margin-left:11%; margin-top: 1em">timsieved | |
38 | − 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> | |
40 | 39 | |
41 | 40 | <h2>SYNOPSIS |
42 | 41 | <a name="SYNOPSIS"></a> |
45 | 44 | |
46 | 45 | |
47 | 46 | <p style="margin-left:11%; margin-top: 1em"><b>timsieved</b> |
48 | [ <b>−C</b> <i>config-file</i> ]</p> | |
47 | [ <b>-C</b> <i>config-file</i> ]</p> | |
49 | 48 | |
50 | 49 | <h2>DESCRIPTION |
51 | 50 | <a name="DESCRIPTION"></a> |
75 | 74 | </h2> |
76 | 75 | |
77 | 76 | |
78 | ||
79 | <p style="margin-left:11%; margin-top: 1em"><b>−C</b> | |
77 | <p style="margin-left:11%; margin-top: 1em"><b>-C</b> | |
80 | 78 | <i>config-file</i></p> |
81 | 79 | |
82 | 80 | <p style="margin-left:22%;">Read configuration options from |
0 | 0 | <!-- Creator : groff version 1.22.3 --> |
1 | <!-- CreationDate: Fri May 20 06:10:10 2016 --> | |
1 | <!-- CreationDate: Fri Jul 22 02:16:08 2016 --> | |
2 | 2 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
3 | 3 | "http://www.w3.org/TR/html4/loose.dtd"> |
4 | 4 | <html> |
34 | 34 | </h2> |
35 | 35 | |
36 | 36 | |
37 | <p style="margin-left:11%; margin-top: 1em">tls_prune | |
38 | − 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> | |
40 | 39 | |
41 | 40 | <h2>SYNOPSIS |
42 | 41 | <a name="SYNOPSIS"></a> |
45 | 44 | |
46 | 45 | |
47 | 46 | <p style="margin-left:11%; margin-top: 1em"><b>tls_prune</b> |
48 | [ <b>−C</b> <i>config-file</i> ]</p> | |
47 | [ <b>-C</b> <i>config-file</i> ]</p> | |
49 | 48 | |
50 | 49 | <h2>DESCRIPTION |
51 | 50 | <a name="DESCRIPTION"></a> |
69 | 68 | </h2> |
70 | 69 | |
71 | 70 | |
72 | ||
73 | <p style="margin-left:11%; margin-top: 1em"><b>−C</b> | |
71 | <p style="margin-left:11%; margin-top: 1em"><b>-C</b> | |
74 | 72 | <i>config-file</i></p> |
75 | 73 | |
76 | 74 | <p style="margin-left:22%;">Read configuration options from |
0 | 0 | <!-- Creator : groff version 1.22.3 --> |
1 | <!-- CreationDate: Fri May 20 06:10:10 2016 --> | |
1 | <!-- CreationDate: Fri Jul 22 02:16:08 2016 --> | |
2 | 2 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
3 | 3 | "http://www.w3.org/TR/html4/loose.dtd"> |
4 | 4 | <html> |
34 | 34 | </h2> |
35 | 35 | |
36 | 36 | |
37 | <p style="margin-left:11%; margin-top: 1em">unexpunge | |
38 | − 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> | |
39 | 39 | |
40 | 40 | <h2>SYNOPSIS |
41 | 41 | <a name="SYNOPSIS"></a> |
44 | 44 | |
45 | 45 | |
46 | 46 | <p style="margin-left:11%; margin-top: 1em"><b>unexpunge</b> |
47 | [ <b>−C</b> <i>config-file</i> ] <b>−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> ] | |
48 | 54 | <i>mailbox</i> <b><br> |
49 | unexpunge</b> [ <b>−C</b> <i>config-file</i> ] | |
50 | <b>−t time-interval</b> [ <b>−d</b> ] [ | |
51 | <b>−v</b> ] [ <b>−f</b> <i>flagname</i> ] | |
52 | <i>mailbox</i> <b><br> | |
53 | unexpunge</b> [ <b>−C</b> <i>config-file</i> ] | |
54 | <b>−a</b> [ <b>−d</b> ] [ <b>−v</b> ] [ | |
55 | <b>−f</b> <i>flagname</i> ] <i>mailbox</i> <b><br> | |
56 | unexpunge</b> [ <b>−C</b> <i>config-file</i> ] | |
57 | <b>−u</b> [ <b>−d</b> ] [ <b>−v</b> ] [ | |
58 | <b>−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> | |
59 | 58 | |
60 | 59 | <h2>DESCRIPTION |
61 | 60 | <a name="DESCRIPTION"></a> |
80 | 79 | </h2> |
81 | 80 | |
82 | 81 | |
83 | ||
84 | <p style="margin-left:11%; margin-top: 1em"><b>−C</b> | |
82 | <p style="margin-left:11%; margin-top: 1em"><b>-C</b> | |
85 | 83 | <i>config-file</i></p> |
86 | 84 | |
87 | 85 | <p style="margin-left:22%;">Read configuration options from |
94 | 92 | <td width="3%"> |
95 | 93 | |
96 | 94 | |
97 | <p><b>−l</b></p></td> | |
95 | <p><b>-l</b></p></td> | |
98 | 96 | <td width="8%"></td> |
99 | 97 | <td width="78%"> |
100 | 98 | |
103 | 101 | which are available for restoration.</p></td></tr> |
104 | 102 | </table> |
105 | 103 | |
106 | <p style="margin-left:11%;"><b>−t</b> | |
104 | <p style="margin-left:11%;"><b>-t</b> | |
107 | 105 | <i>time-interval</i></p> |
108 | 106 | |
109 | 107 | <p style="margin-left:22%;">Unexpunge messages which were |
117 | 115 | <td width="3%"> |
118 | 116 | |
119 | 117 | |
120 | <p><b>−a</b></p></td> | |
118 | <p><b>-a</b></p></td> | |
121 | 119 | <td width="8%"></td> |
122 | 120 | <td width="78%"> |
123 | 121 | |
129 | 127 | <td width="3%"> |
130 | 128 | |
131 | 129 | |
132 | <p><b>−u</b></p></td> | |
130 | <p><b>-u</b></p></td> | |
133 | 131 | <td width="8%"></td> |
134 | 132 | <td width="78%"> |
135 | 133 | |
141 | 139 | <td width="3%"> |
142 | 140 | |
143 | 141 | |
144 | <p><b>−d</b></p></td> | |
142 | <p><b>-d</b></p></td> | |
145 | 143 | <td width="8%"></td> |
146 | 144 | <td width="78%"> |
147 | 145 | |
150 | 148 | messages.</p> </td></tr> |
151 | 149 | </table> |
152 | 150 | |
153 | <p style="margin-left:11%;"><b>−f</b> | |
154 | <i>flagname</i></p> | |
151 | <p style="margin-left:11%;"><b>-f</b> <i>flagname</i></p> | |
155 | 152 | |
156 | 153 | <p style="margin-left:22%;">Set the user flag |
157 | 154 | <i>flagname</i> on any restored messages. This can make it |
165 | 162 | <td width="3%"> |
166 | 163 | |
167 | 164 | |
168 | <p><b>−v</b></p></td> | |
165 | <p><b>-v</b></p></td> | |
169 | 166 | <td width="8%"></td> |
170 | 167 | <td width="46%"> |
171 | 168 |
Binary diff not shown
Binary diff not shown
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 | |
1 | 1 | |
2 | Murder changes | |
2 | Dependency changes | |
3 | 3 | |
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) | |
8 | 6 | |
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 | /* 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 |
76 | 76 | |
77 | 77 | struct caldav_db { |
78 | 78 | 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 */ | |
80 | 80 | sqlite3_stmt *stmt[NUM_STMT]; /* prepared statements */ |
81 | 81 | struct buf mailbox; /* buffers for copies of column text */ |
82 | 82 | struct buf resource; |
181 | 181 | buf_free(&fname); |
182 | 182 | |
183 | 183 | /* 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); | |
185 | 185 | |
186 | 186 | return caldavdb; |
187 | 187 | } |
213 | 213 | |
214 | 214 | if (!caldavdb) return 0; |
215 | 215 | |
216 | free(caldavdb->sched_inbox); | |
216 | 217 | buf_free(&caldavdb->mailbox); |
217 | 218 | buf_free(&caldavdb->resource); |
218 | 219 | buf_free(&caldavdb->lock_token); |
908 | 909 | } |
909 | 910 | |
910 | 911 | |
911 | EXPORTED const char *caldav_mboxname(const char *userid, const char *name) | |
912 | EXPORTED char *caldav_mboxname(const char *userid, const char *name) | |
912 | 913 | { |
913 | 914 | struct buf boxbuf = BUF_INITIALIZER; |
914 | const char *res = NULL; | |
915 | char *res = NULL; | |
915 | 916 | |
916 | 917 | buf_setcstr(&boxbuf, config_getstring(IMAPOPT_CALENDARPREFIX)); |
917 | 918 |
164 | 164 | /* create caldav_data from icalcomponent */ |
165 | 165 | void caldav_make_entry(icalcomponent *ical, struct caldav_data *cdata); |
166 | 166 | |
167 | const char *caldav_mboxname(const char *userid, const char *name); | |
167 | char *caldav_mboxname(const char *userid, const char *name); | |
168 | 168 | |
169 | 169 | #endif /* CALDAV_DB_H */ |
103 | 103 | |
104 | 104 | |
105 | 105 | #ifdef HAVE_RSCALE |
106 | #include <unicode/ucal.h> | |
106 | 107 | #include <unicode/uversion.h> |
107 | 108 | |
108 | 109 | static int rscale_cmp(const void *a, const void *b) |
110 | 111 | /* Convert to uppercase since that's what we prefer to output */ |
111 | 112 | return strcmp(ucase(*((char **) a)), ucase(*((char **) b))); |
112 | 113 | } |
113 | ||
114 | static icalarray *rscale_calendars = NULL; | |
115 | 114 | #endif /* HAVE_RSCALE */ |
116 | 115 | |
117 | 116 | |
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) | |
119 | 131 | |
120 | 132 | /* Functions to replace those not available in libical < v1.0 */ |
121 | 133 | |
178 | 190 | #define icalproperty_get_schedulestatus_parameter(prop) \ |
179 | 191 | icalproperty_get_iana_parameter_by_name(prop, "SCHEDULE-STATUS") |
180 | 192 | |
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 | |
193 | 209 | |
194 | 210 | #endif /* HAVE_SCHEDULING_PARAMS */ |
195 | 211 | |
659 | 675 | |
660 | 676 | caldav_init(); |
661 | 677 | |
678 | #ifdef HAVE_IANA_PARAMS | |
662 | 679 | config_allowsched = config_getenum(IMAPOPT_CALDAV_ALLOWSCHEDULING); |
663 | 680 | if (config_allowsched) { |
664 | 681 | namespace_calendar.allow |= ALLOW_CAL_SCHED; |
668 | 685 | ical_set_unknown_token_handling_setting(ICAL_ASSUME_IANA_TOKEN); |
669 | 686 | #endif |
670 | 687 | } |
688 | #endif /* HAVE_IANA_PARAMS */ | |
671 | 689 | |
672 | 690 | #ifdef HAVE_TZ_BY_REF |
673 | 691 | if (namespace_timezone.enabled) { |
809 | 827 | buf_free(&ical_prodid_buf); |
810 | 828 | freestrlist(cua_domains); |
811 | 829 | |
830 | my_caldav_reset(); | |
812 | 831 | caldav_done(); |
813 | 832 | } |
814 | 833 | |
2637 | 2656 | #ifdef HAVE_RSCALE |
2638 | 2657 | /* Make sure we support the provided RSCALE in an RRULE */ |
2639 | 2658 | prop = icalcomponent_get_first_property(comp, ICAL_RRULE_PROPERTY); |
2640 | if (prop) { | |
2659 | if (prop && rscale_calendars) { | |
2641 | 2660 | struct icalrecurrencetype rt = icalproperty_get_rrule(prop); |
2642 | 2661 | |
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; | |
2647 | 2665 | |
2648 | 2666 | ucase(rt.rscale); |
2649 | 2667 | while (!found && start < end) { |
2655 | 2673 | else if (r < 0) end = mid; |
2656 | 2674 | else start = mid + 1; |
2657 | 2675 | } |
2658 | uenum_close(en); | |
2659 | ||
2660 | if (!rscale) { | |
2676 | ||
2677 | if (!found) { | |
2661 | 2678 | txn->error.precond = CALDAV_SUPP_RSCALE; |
2662 | 2679 | ret = HTTP_FORBIDDEN; |
2663 | 2680 | goto done; |
4338 | 4355 | |
4339 | 4356 | if (fctx->req_tgt->resource) return HTTP_NOT_FOUND; |
4340 | 4357 | |
4341 | #ifdef HAVE_RSCALE | |
4342 | if (icalrecur_rscale_token_handling_is_supported()) { | |
4358 | if (rscale_calendars) { | |
4343 | 4359 | xmlNodePtr top; |
4344 | UEnumeration *en; | |
4345 | UErrorCode status = U_ZERO_ERROR; | |
4346 | const char *rscale; | |
4360 | int i, n; | |
4347 | 4361 | |
4348 | 4362 | top = xml_add_prop(HTTP_OK, fctx->ns[NS_DAV], &propstat[PROPSTAT_OK], |
4349 | 4363 | name, ns, NULL, 0); |
4350 | 4364 | |
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 | ||
4353 | 4368 | 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 | } | |
4357 | 4371 | |
4358 | 4372 | return 0; |
4359 | 4373 | } |
4360 | #endif | |
4361 | 4374 | |
4362 | 4375 | return HTTP_NOT_FOUND; |
4363 | 4376 | } |
282 | 282 | &namespace_principal, |
283 | 283 | &namespace_calendar, |
284 | 284 | &namespace_addressbook, |
285 | #ifdef HAVE_IANA_PARAMS | |
285 | 286 | &namespace_ischedule, |
286 | 287 | &namespace_domainkey, |
288 | #endif /* HAVE_IANA_PARAMS */ | |
287 | 289 | #endif /* WITH_DAV */ |
288 | 290 | &namespace_rss, |
289 | 291 | &namespace_dblookup, |
11881 | 11881 | prot_printf(backend_inbox->out, "%cchildren", c); |
11882 | 11882 | c = ' '; |
11883 | 11883 | } |
11884 | if (listargs->ret & LIST_RET_SPECIALUSE) { | |
11885 | prot_printf(backend_inbox->out, "%cspecial-use", c); | |
11886 | c = ' '; | |
11887 | } | |
11884 | 11888 | (void)prot_putc(')', backend_inbox->out); |
11885 | 11889 | } |
11886 | 11890 |
91 | 91 | /* current namespace */ |
92 | 92 | static struct namespace purge_namespace; |
93 | 93 | |
94 | static int dryrun = 0; | |
94 | 95 | static int verbose = 1; |
95 | 96 | static int forceall = 0; |
96 | 97 | |
99 | 100 | struct index_record *record, |
100 | 101 | void *rock); |
101 | 102 | static int usage(const char *name); |
103 | static void print_record(struct mailbox *mailbox, | |
104 | struct index_record *record); | |
102 | 105 | static void print_stats(mbox_stats_t *stats); |
103 | 106 | |
104 | 107 | int main (int argc, char *argv[]) { |
111 | 114 | fatal("must run as the Cyrus user", EC_USAGE); |
112 | 115 | } |
113 | 116 | |
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) { | |
115 | 118 | switch (option) { |
116 | 119 | case 'C': /* alt config file */ |
117 | 120 | alt_config = optarg; |
139 | 142 | usage(argv[0]); |
140 | 143 | } |
141 | 144 | size = atoi(optarg) * 1048576; /* 1024 * 1024 */ |
145 | } break; | |
146 | case 'n' : { | |
147 | dryrun = 1; | |
142 | 148 | } break; |
143 | 149 | case 'x' : { |
144 | 150 | exact = 1; |
220 | 226 | |
221 | 227 | static int usage(const char *name) |
222 | 228 | { |
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); | |
224 | 230 | printf("\tthere are no defaults and at least one of -d, -b, -k, -m\n\tmust be specified\n"); |
225 | 231 | printf("\tif no mboxpattern is given %s works on all mailboxes\n", name); |
226 | 232 | printf("\t -x specifies an exact match for days or size\n"); |
229 | 235 | printf("\t -X use delivery time instead of date header for date matches.\n"); |
230 | 236 | printf("\t -i invert match logic: -x means not equal, date is for newer, size is for smaller.\n"); |
231 | 237 | printf("\t -o only purge messages that are deleted.\n"); |
238 | printf("\t -n only print messages that would be deleted (dry run).\n"); | |
232 | 239 | exit(0); |
233 | 240 | } |
234 | 241 | |
281 | 288 | |
282 | 289 | /* thumbs up routine, checks date & size and returns yes or no for deletion */ |
283 | 290 | /* 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) | |
287 | 294 | { |
288 | 295 | time_t my_time; |
289 | 296 | time_t senttime; |
307 | 314 | if (((my_time - (time_t) senttime)/86400) == (days/86400)) { |
308 | 315 | if (invertmatch) return 0; |
309 | 316 | deleteit(record->size, stats); |
310 | return 1; | |
317 | return dryrun ? print_record(mailbox, record), 0 : 1; | |
311 | 318 | } else { |
312 | 319 | if (!invertmatch) return 0; |
313 | 320 | deleteit(record->size, stats); |
314 | return 1; | |
321 | return dryrun ? print_record(mailbox, record), 0 : 1; | |
315 | 322 | } |
316 | 323 | } |
317 | 324 | if (size >= 0) { |
319 | 326 | if (record->size == (unsigned)size) { |
320 | 327 | if (invertmatch) return 0; |
321 | 328 | deleteit(record->size, stats); |
322 | return 1; | |
329 | return dryrun ? print_record(mailbox, record), 0 : 1; | |
323 | 330 | } else { |
324 | 331 | if (!invertmatch) return 0; |
325 | 332 | deleteit(record->size, stats); |
326 | return 1; | |
333 | return dryrun ? print_record(mailbox, record), 0 : 1; | |
327 | 334 | } |
328 | 335 | } |
329 | 336 | return 0; |
332 | 339 | /* printf("comparing %ld :: %ld\n", my_time, the_record->sentdate); */ |
333 | 340 | if (!invertmatch && ((my_time - (time_t) senttime) > days)) { |
334 | 341 | deleteit(record->size, stats); |
335 | return 1; | |
342 | return dryrun ? print_record(mailbox, record), 0 : 1; | |
336 | 343 | } |
337 | 344 | if (invertmatch && ((my_time - (time_t) senttime) < days)) { |
338 | 345 | deleteit(record->size, stats); |
339 | return 1; | |
346 | return dryrun ? print_record(mailbox, record), 0 : 1; | |
340 | 347 | } |
341 | 348 | } |
342 | 349 | if (size >= 0) { |
343 | 350 | /* check size */ |
344 | 351 | if (!invertmatch && ((int) record->size > size)) { |
345 | 352 | deleteit(record->size, stats); |
346 | return 1; | |
353 | return dryrun ? print_record(mailbox, record), 0 : 1; | |
347 | 354 | } |
348 | 355 | if (invertmatch && ((int) record->size < size)) { |
349 | 356 | deleteit(record->size, stats); |
350 | return 1; | |
357 | return dryrun ? print_record(mailbox, record), 0 : 1; | |
351 | 358 | } |
352 | 359 | } |
353 | 360 | return 0; |
354 | 361 | } |
355 | 362 | } |
356 | 363 | |
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 | ||
357 | 390 | static void print_stats(mbox_stats_t *stats) |
358 | 391 | { |
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); | |
361 | 394 | printf("Deleted messages \t\t %d\n",stats->deleted); |
362 | 395 | printf("Deleted bytes \t\t %d\n",stats->deleted_bytes); |
363 | 396 | printf("Remaining messages\t\t %d\n",stats->total - stats->deleted); |
248 | 248 | kind_string = icalparameter_get_xname(param); |
249 | 249 | break; |
250 | 250 | |
251 | #ifdef HAVE_IANA_PARAMS | |
251 | 252 | case ICAL_IANA_PARAMETER: |
252 | 253 | kind_string = icalparameter_get_iana_name(param); |
253 | 254 | break; |
255 | #endif | |
254 | 256 | |
255 | 257 | default: |
256 | 258 | kind_string = icalparameter_kind_to_string(kind); |
444 | 446 | } |
445 | 447 | |
446 | 448 | |
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 | } | |
491 | 484 | } |
492 | 485 | |
493 | 486 | |
547 | 540 | break; |
548 | 541 | |
549 | 542 | 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; | |
568 | 567 | |
569 | 568 | case ICAL_REQUESTSTATUS_VALUE: |
570 | 569 | /* MUST be an array of 2-3 strings */ |
84 | 84 | |
85 | 85 | switch (evt) { |
86 | 86 | |
87 | case TOTAL_CONNECTIONS: return "Count of the total number of connections since the beginning of time"; | |
87 | 88 | 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"; | |
88 | 99 | 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"; | |
94 | 104 | 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"; | |
101 | 105 | case SERVER_UPTIME: return "Amount of time server has been running"; |
102 | 106 | 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"; | |
108 | 108 | |
109 | 109 | } |
110 | 110 | |
122 | 122 | |
123 | 123 | switch (evt) { |
124 | 124 | |
125 | case TOTAL_CONNECTIONS: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.2.1.1"); return buf; | |
125 | 126 | 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; | |
126 | 137 | 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; | |
132 | 142 | 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; | |
139 | 143 | case SERVER_UPTIME: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.2.3.1"); return buf; |
140 | 144 | 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; | |
146 | 146 | |
147 | 147 | } |
148 | 148 |
20 | 20 | |
21 | 21 | |
22 | 22 | |
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" | |
23 | 28 | #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" | |
29 | 29 | |
30 | 30 | |
31 | 31 | |
67 | 67 | |
68 | 68 | typedef enum { |
69 | 69 | |
70 | TOTAL_CONNECTIONS, | |
70 | 71 | 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, | |
71 | 82 | 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, | |
77 | 87 | AUTHENTICATION_YES, |
78 | mtaReceivedVolume, | |
79 | SIEVE_MESSAGES_PROCESSED, | |
80 | AUTHENTICATION_NO, | |
81 | mtaSuccessfulConvertedMessages, | |
82 | SIEVE_NOTIFY, | |
83 | SIEVE_VACATION_TOTAL, | |
84 | 88 | SERVER_UPTIME, |
85 | 89 | SERVER_NAME_VERSION, |
86 | SIEVE_KEEP, | |
87 | SIEVE_REDIRECT, | |
88 | SIEVE_REJECT, | |
89 | mtaTransmittedVolume, | |
90 | mtaTransmittedMessages | |
90 | AUTHENTICATION_NO | |
91 | 91 | } lmtpstats_t; |
92 | 92 | |
93 | 93 |
554 | 554 | database_init(); |
555 | 555 | |
556 | 556 | #ifdef HAVE_SSL |
557 | #if OPENSSL_VERSION_NUMBER < 0x10100000L | |
557 | 558 | CRYPTO_thread_setup(); |
559 | #endif | |
558 | 560 | #endif |
559 | 561 | |
560 | 562 | if (!masterp) { |
603 | 605 | void service_abort(int error) |
604 | 606 | { |
605 | 607 | #ifdef HAVE_SSL |
608 | #if OPENSSL_VERSION_NUMBER < 0x10100000L | |
606 | 609 | CRYPTO_thread_cleanup(); |
610 | #endif | |
607 | 611 | #endif |
608 | 612 | shut_down(error); |
609 | 613 | } |
84 | 84 | |
85 | 85 | switch (evt) { |
86 | 86 | |
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"; | |
88 | 95 | 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"; | |
90 | 104 | 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"; | |
99 | 110 | 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"; | |
104 | 114 | case GETQUOTA_COUNT: return "Number of getquota"; |
105 | 115 | 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"; | |
108 | 120 | 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"; | |
109 | 137 | 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"; | |
129 | 138 | 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"; | |
139 | 139 | |
140 | 140 | } |
141 | 141 | |
153 | 153 | |
154 | 154 | switch (evt) { |
155 | 155 | |
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; | |
157 | 164 | 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; | |
159 | 173 | 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; | |
168 | 179 | 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; | |
173 | 183 | case GETQUOTA_COUNT: snprintf(buf,buflen,"1.3.6.1.4.1.3.2.2.3.1.4.17"); return buf; |
174 | 184 | 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; | |
177 | 189 | 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; | |
178 | 206 | 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; | |
198 | 207 | 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; | |
208 | 208 | |
209 | 209 | } |
210 | 210 |
20 | 20 | |
21 | 21 | |
22 | 22 | |
23 | #define SNMPDEFINE_cmuimap "1.3.6.1.4.1.3.2.2.3.1" | |
23 | 24 | #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" | |
25 | 25 | |
26 | 26 | |
27 | 27 | |
63 | 63 | |
64 | 64 | typedef enum { |
65 | 65 | |
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, | |
67 | 74 | 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, | |
69 | 83 | 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, | |
78 | 89 | LISTRIGHTS_COUNT, |
79 | SETANNOTATION_COUNT, | |
80 | AUTHENTICATE_COUNT, | |
81 | EXPUNGE_COUNT, | |
82 | NOOP_COUNT, | |
90 | SERVER_NAME_VERSION, | |
91 | PARTIAL_COUNT, | |
92 | FIND_COUNT, | |
83 | 93 | GETQUOTA_COUNT, |
84 | 94 | BBOARD_COUNT, |
85 | SETACL_COUNT, | |
86 | FIND_COUNT, | |
95 | THREAD_COUNT, | |
96 | GETQUOTAROOT_COUNT, | |
97 | ACTIVE_CONNECTIONS, | |
98 | CAPABILITY_COUNT, | |
87 | 99 | 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, | |
88 | 116 | 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 | |
118 | 118 | } pushstats_t; |
119 | 119 | |
120 | 120 |
165 | 165 | } |
166 | 166 | for (i = 0; i < len; i++) { |
167 | 167 | 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); | |
168 | 187 | } |
169 | 188 | |
170 | 189 | strs = strs->next; |
2620 | 2620 | /* Check for shutdown file */ |
2621 | 2621 | if (sync_shutdown_file && !stat(sync_shutdown_file, &sbuf)) { |
2622 | 2622 | 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; | |
2623 | 2627 | break; |
2624 | 2628 | } |
2625 | 2629 |
205 | 205 | } |
206 | 206 | } |
207 | 207 | |
208 | #if OPENSSL_VERSION_NUMBER < 0x10100000L | |
208 | 209 | /* taken from OpenSSL apps/s_cb.c |
209 | 210 | not thread safe! */ |
210 | 211 | static RSA *tmp_rsa_cb(SSL * s __attribute__((unused)), |
218 | 219 | } |
219 | 220 | return (rsa_tmp); |
220 | 221 | } |
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 | |
221 | 236 | |
222 | 237 | #if (OPENSSL_VERSION_NUMBER >= 0x0090800fL) |
223 | 238 | /* Logic copied from OpenSSL apps/s_server.c: give the TLS context |
224 | 239 | * DH params to work with DHE-* cipher suites. Hardcoded fallback |
225 | 240 | * 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. | |
226 | 244 | */ |
227 | 245 | static DH *get_dh1024(void) |
228 | 246 | { |
229 | 247 | /* 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 | ||
241 | 267 | static DH *load_dh_param(const char *keyfile, const char *certfile) |
242 | 268 | { |
243 | 269 | DH *ret=NULL; |
291 | 317 | verify_error = X509_V_ERR_CERT_CHAIN_TOO_LONG; |
292 | 318 | } |
293 | 319 | } |
294 | switch (ctx->error) { | |
320 | switch (err) { | |
295 | 321 | 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)); | |
297 | 323 | syslog(LOG_NOTICE, "issuer= %s", buf); |
298 | 324 | break; |
299 | 325 | case X509_V_ERR_CERT_NOT_YET_VALID: |
462 | 488 | time_t expire; |
463 | 489 | int ret = -1; |
464 | 490 | unsigned char *asn; |
491 | const unsigned char *session_id = NULL; | |
492 | unsigned int session_id_length = 0; | |
465 | 493 | |
466 | 494 | assert(sess); |
467 | 495 | |
487 | 515 | |
488 | 516 | if (len) { |
489 | 517 | /* store the session in our database */ |
518 | ||
519 | session_id = SSL_SESSION_get_id(sess, &session_id_length); | |
490 | 520 | 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, | |
493 | 523 | (const char *) data, len + sizeof(time_t), NULL); |
494 | 524 | } while (ret == CYRUSDB_AGAIN); |
495 | 525 | } |
500 | 530 | if (var_imapd_tls_loglevel > 0) { |
501 | 531 | unsigned int i; |
502 | 532 | 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]); | |
505 | 535 | } |
506 | 536 | syslog(LOG_DEBUG, "new TLS session: id=%s, expire=%s, status=%s", |
507 | 537 | idstr, ctime(&expire), ret ? "failed" : "ok"); |
513 | 543 | /* |
514 | 544 | * Function for removing a session from our database. |
515 | 545 | */ |
516 | static void remove_session(unsigned char *id, int idlen) | |
546 | static void remove_session(const unsigned char *id, int idlen) | |
517 | 547 | { |
518 | 548 | int ret; |
519 | 549 | |
544 | 574 | static void remove_session_cb(SSL_CTX *ctx __attribute__((unused)), |
545 | 575 | SSL_SESSION *sess) |
546 | 576 | { |
577 | const unsigned char *session_id = NULL; | |
578 | unsigned int session_id_length = 0; | |
579 | ||
547 | 580 | assert(sess); |
548 | 581 | |
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); | |
550 | 585 | } |
551 | 586 | |
552 | 587 | /* |
555 | 590 | * called, also when session caching was disabled. We lookup the |
556 | 591 | * session in our database in case it was stored by another process. |
557 | 592 | */ |
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 | |
558 | 597 | static SSL_SESSION *get_session_cb(SSL *ssl __attribute__((unused)), |
559 | 598 | unsigned char *id, int idlen, int *copy) |
599 | #endif | |
560 | 600 | { |
561 | 601 | int ret; |
562 | 602 | const char *data = NULL; |
835 | 875 | return (-1); |
836 | 876 | } |
837 | 877 | |
878 | #if OPENSSL_VERSION_NUMBER < 0x10100000L | |
838 | 879 | SSL_CTX_set_tmp_rsa_callback(s_ctx, tmp_rsa_cb); |
880 | #endif | |
839 | 881 | |
840 | 882 | #if (OPENSSL_VERSION_NUMBER >= 0x0090800fL) |
841 | 883 | /* Load DH params for DHE-* key exchanges */ |
1438 | 1480 | } |
1439 | 1481 | } |
1440 | 1482 | |
1483 | #if OPENSSL_VERSION_NUMBER < 0x10100000L | |
1441 | 1484 | SSL_CTX_set_tmp_rsa_callback(c_ctx, tmp_rsa_cb); |
1485 | #endif | |
1442 | 1486 | |
1443 | 1487 | verify_depth = verifydepth; |
1444 | 1488 | SSL_CTX_set_verify(c_ctx, verify_flags, verify_callback); |
12 | 12 | #include "tls_th-lock.h" |
13 | 13 | |
14 | 14 | #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 | |
15 | 21 | |
16 | 22 | static pthread_mutex_t *lock_cs; |
17 | 23 | static long *lock_count; |
68 | 74 | return(ret); |
69 | 75 | } |
70 | 76 | |
77 | #endif /* OPENSSL_VERSION_NUMBER */ | |
78 | ||
71 | 79 | #endif /* HAVE_SSL */ |
8 | 8 | |
9 | 9 | #ifdef HAVE_SSL |
10 | 10 | |
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 | ||
11 | 17 | void CRYPTO_thread_setup(void); |
12 | 18 | void CRYPTO_thread_cleanup(void); |
13 | 19 | /* |
17 | 23 | void pthreads_locking_callback(int mode,int type,char *file,int line); |
18 | 24 | unsigned long pthreads_thread_id(void ); |
19 | 25 | |
26 | #endif /* OPENSSL_VERSION_NUMBER */ | |
27 | ||
20 | 28 | #endif /* HAVE_SSL */ |
21 | 29 | #endif /* INCLUDED_TLS_TH_LOCK_H */ |
55 | 55 | #include "xcal.h" |
56 | 56 | |
57 | 57 | |
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 | ||
66 | 58 | /* |
67 | 59 | * Determine the type (kind) of an iCalendar property value. |
68 | 60 | */ |
159 | 151 | } |
160 | 152 | |
161 | 153 | |
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 | ||
190 | 154 | /* |
191 | 155 | * Add iCalendar recur-rule-parts to a structured element. |
192 | 156 | */ |
195 | 159 | void (*add_str)(void *, const char *, |
196 | 160 | const char *)) |
197 | 161 | { |
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); | |
267 | 203 | } |
268 | 204 | |
269 | 205 | |
293 | 229 | /* |
294 | 230 | * Add an iCalendar recur-rule-part to a XML recur element. |
295 | 231 | */ |
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 | ||
305 | 232 | static void icalrecur_add_string_as_xml_element(void *xrecur, const char *rpart, |
306 | 233 | const char *s) |
307 | 234 | { |
326 | 253 | kind_string = icalparameter_get_xname(param); |
327 | 254 | break; |
328 | 255 | |
256 | #ifdef HAVE_IANA_PARAMS | |
329 | 257 | case ICAL_IANA_PARAMETER: |
330 | 258 | kind_string = icalparameter_get_iana_name(param); |
331 | 259 | break; |
260 | #endif | |
332 | 261 | |
333 | 262 | default: |
334 | 263 | kind_string = icalparameter_kind_to_string(kind); |
437 | 366 | case ICAL_RECUR_VALUE: { |
438 | 367 | struct icalrecurrencetype recur = icalvalue_get_recur(value); |
439 | 368 | |
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; | |
444 | 372 | } |
445 | 373 | |
446 | 374 | case ICAL_REQUESTSTATUS_VALUE: { |
661 | 589 | } |
662 | 590 | |
663 | 591 | |
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); | |
767 | 600 | } |
768 | 601 | |
769 | 602 | |
867 | 700 | } |
868 | 701 | |
869 | 702 | 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); | |
886 | 754 | |
887 | 755 | break; |
888 | 756 | } |
373 | 373 | verify_error = X509_V_ERR_CERT_CHAIN_TOO_LONG; |
374 | 374 | } |
375 | 375 | } |
376 | switch (ctx->error) { | |
376 | switch (err) { | |
377 | 377 | 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); | |
379 | 379 | printf("issuer= %s\n", buf); |
380 | 380 | break; |
381 | 381 | case X509_V_ERR_CERT_NOT_YET_VALID: |
395 | 395 | } |
396 | 396 | |
397 | 397 | |
398 | #if OPENSSL_VERSION_NUMBER < 0x10100000L | |
398 | 399 | /* taken from OpenSSL apps/s_cb.c */ |
399 | ||
400 | 400 | static RSA *tmp_rsa_cb(SSL * s __attribute__((unused)), |
401 | 401 | int export __attribute__((unused)), int keylength) |
402 | 402 | { |
407 | 407 | } |
408 | 408 | return (rsa_tmp); |
409 | 409 | } |
410 | #endif | |
410 | 411 | |
411 | 412 | /* taken from OpenSSL apps/s_cb.c |
412 | 413 | * tim - this seems to just be giving logging messages |
535 | 536 | printf("TLS engine: cannot load cert/key data, may be a cert/key mismatch?\n"); |
536 | 537 | return IMTEST_FAIL; |
537 | 538 | } |
539 | #if OPENSSL_VERSION_NUMBER < 0x10100000L | |
538 | 540 | SSL_CTX_set_tmp_rsa_callback(tls_ctx, tmp_rsa_cb); |
541 | #endif | |
539 | 542 | |
540 | 543 | verify_depth = verifydepth; |
541 | 544 | SSL_CTX_set_verify(tls_ctx, verify_flags, verify_callback); |
112 | 112 | char *thisid, *nextid; |
113 | 113 | int oldaccess = 0; |
114 | 114 | char *rights; |
115 | ||
116 | if (!identifier) | |
117 | return -1; | |
115 | 118 | |
116 | 119 | /* Convert 'identifier' into canonical form */ |
117 | 120 | canonid = auth_canonifyid(*identifier == '-' ? identifier+1 : identifier, 0); |
54 | 54 | |
55 | 55 | extern const char *lock_method_desc; |
56 | 56 | |
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) | |
59 | 62 | |
60 | 63 | extern int lock_blocking (int fd, const char *filename); |
61 | 64 | extern int lock_shared (int fd, const char *filename); |
1551 | 1551 | verify_error = X509_V_ERR_CERT_CHAIN_TOO_LONG; |
1552 | 1552 | } |
1553 | 1553 | } |
1554 | switch (ctx->error) { | |
1554 | switch (err) { | |
1555 | 1555 | 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), | |
1557 | 1557 | buf, sizeof(buf)); |
1558 | 1558 | printf("issuer= %s\n", buf); |
1559 | 1559 | break; |
1574 | 1574 | } |
1575 | 1575 | |
1576 | 1576 | |
1577 | #if OPENSSL_VERSION_NUMBER < 0x10100000L | |
1577 | 1578 | /* taken from OpenSSL apps/s_cb.c */ |
1578 | 1579 | static RSA *tmp_rsa_cb(SSL *s __attribute__((unused)), |
1579 | 1580 | int export __attribute__((unused)), |
1586 | 1587 | } |
1587 | 1588 | return (rsa_tmp); |
1588 | 1589 | } |
1590 | #endif | |
1589 | 1591 | |
1590 | 1592 | /* |
1591 | 1593 | * Seed the random number generator. |
1674 | 1676 | printf("[ TLS engine: cannot load cert/key data, may be a cert/key mismatch]\n"); |
1675 | 1677 | return -1; |
1676 | 1678 | } |
1679 | ||
1680 | #if OPENSSL_VERSION_NUMBER < 0x10100000L | |
1677 | 1681 | SSL_CTX_set_tmp_rsa_callback(imclient->tls_ctx, tmp_rsa_cb); |
1682 | #endif | |
1678 | 1683 | |
1679 | 1684 | verify_depth = verifydepth; |
1680 | 1685 | SSL_CTX_set_verify(imclient->tls_ctx, verify_flags, verify_callback); |
64 | 64 | * string naming the action that failed. |
65 | 65 | * |
66 | 66 | */ |
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) | |
69 | 70 | { |
70 | 71 | int r; |
71 | 72 | struct flock fl; |
99 | 100 | } |
100 | 101 | |
101 | 102 | if (sbuf->st_ino == sbuffile.st_ino) return 0; |
103 | ||
104 | if (changed) *changed = 1; | |
102 | 105 | |
103 | 106 | newfd = open(filename, O_RDWR); |
104 | 107 | if (newfd == -1) { |
66 | 66 | * string naming the action that failed. |
67 | 67 | * |
68 | 68 | */ |
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) | |
71 | 72 | { |
72 | 73 | int r; |
73 | 74 | struct stat sbuffile, sbufspare; |
92 | 93 | } |
93 | 94 | |
94 | 95 | if (sbuf->st_ino == sbuffile.st_ino) return 0; |
96 | ||
97 | if (changed) *changed = 1; | |
95 | 98 | |
96 | 99 | newfd = open(filename, O_RDWR); |
97 | 100 | if (newfd == -1) { |
89 | 89 | size_t map_size; |
90 | 90 | |
91 | 91 | /* the file itself */ |
92 | ino_t map_ino; | |
93 | 92 | int fd; |
94 | 93 | |
95 | 94 | /* tracking */ |
225 | 224 | return -EIO; |
226 | 225 | } |
227 | 226 | if (sbuf.st_ino == sbuffile.st_ino) break; |
227 | buf_free(&mf->map_buf); | |
228 | 228 | |
229 | 229 | newfd = open(mf->fname, O_RDWR, 0644); |
230 | 230 | if (newfd == -1) { |
239 | 239 | |
240 | 240 | mf->lock_status = MF_READLOCKED; |
241 | 241 | |
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 | ||
247 | 242 | _ensure_mapped(mf, sbuf.st_size, /*update*/0); |
248 | 243 | |
249 | 244 | return 0; |
254 | 249 | int r; |
255 | 250 | struct stat sbuf; |
256 | 251 | const char *lockfailaction; |
252 | int changed = 0; | |
257 | 253 | |
258 | 254 | assert(mf->lock_status == MF_UNLOCKED); |
259 | 255 | assert(mf->fd != -1); |
260 | 256 | assert(mf->is_rw); |
261 | 257 | assert(!mf->dirty); |
262 | 258 | |
263 | r = lock_reopen(mf->fd, mf->fname, &sbuf, &lockfailaction); | |
259 | r = lock_reopen_ex(mf->fd, mf->fname, &sbuf, &lockfailaction, &changed); | |
264 | 260 | if (r < 0) { |
265 | 261 | syslog(LOG_ERR, "IOERROR: %s %s: %m", lockfailaction, mf->fname); |
266 | 262 | return r; |
267 | 263 | } |
268 | 264 | mf->lock_status = MF_WRITELOCKED; |
269 | 265 | |
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); | |
274 | 267 | |
275 | 268 | _ensure_mapped(mf, sbuf.st_size, /*update*/0); |
276 | 269 |
22 | 22 | |
23 | 23 | #include "config.h" |
24 | 24 | |
25 | #ifndef _AIX | |
26 | typedef unsigned int uint; | |
27 | #endif | |
28 | ||
29 | 25 | #if defined(__cplusplus) && __cplusplus |
30 | 26 | extern "C" { |
31 | 27 | #endif |
33 | 29 | EXPORTED char *stristr(const char *String, const char *Pattern) |
34 | 30 | { |
35 | 31 | char *pptr, *sptr, *start; |
36 | uint slen, plen; | |
32 | size_t slen, plen; | |
37 | 33 | |
38 | 34 | for (start = (char *)String, |
39 | 35 | pptr = (char *)Pattern, |
63 | 63 | ] |
64 | 64 | [ |
65 | 65 | .B \-o |
66 | ] | |
67 | [ | |
68 | .B \-n | |
66 | 69 | ] |
67 | 70 | .br |
68 | 71 | [ |
132 | 135 | .TP |
133 | 136 | .B \-o |
134 | 137 | Only purge messages that have the \\Deleted flag set. |
138 | .TP | |
139 | .B \-n | |
140 | Only print messages that would be deleted (dry run). | |
135 | 141 | .SH FILES |
136 | 142 | .TP |
137 | 143 | .B /etc/imapd.conf |
132 | 132 | .\" ======================================================================== |
133 | 133 | .\" |
134 | 134 | .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" | |
136 | 136 | .\" For nroff, turn off justification. Always turn off hyphenation; it makes |
137 | 137 | .\" way too many mistakes in technical documents. |
138 | 138 | .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 |