Hello community, here is the log from the commit of package dovecot20 for openSUSE:12.1:Update:Test checked in at 2011-12-07 19:22:22 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:12.1:Update:Test/dovecot20 (Old) and /work/SRC/openSUSE:12.1:Update:Test/.dovecot20.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "dovecot20", Maintainer is "" Changes: -------- --- /work/SRC/openSUSE:12.1:Update:Test/dovecot20/dovecot20.changes 2011-12-07 19:22:26.000000000 +0100 +++ /work/SRC/openSUSE:12.1:Update:Test/.dovecot20.new/dovecot20.changes 2011-12-07 19:22:26.000000000 +0100 @@ -1,0 +2,76 @@ +Sat Nov 19 19:24:21 UTC 2011 - [email protected] + +- Update to Pigeonhole 2.0.5: + + Sieve vacation extension: made discard message for implicit + delivery more verbose + - The sieve-test tool: mixed up original and final envelope recipient + in implementation of command line arguments. + - Sieve vacation extension: resolved FIXME regarding the use of + variables in the :handle argument. Variables are now handled + correctly. + - Sieve body extension: fixed handling of :content "message/rfc822". + This now yields the headers of the embedded message as required by + the specification. Handling of :content "multipart" remains to be + fixed. + - LDA Sieve plugin: fixed problem with recipient_delimiter + configuration. Now it falls back to global recipient_delimiter + setting if plugin/recipient_delimiter is not set. + +------------------------------------------------------------------- +Thu Nov 17 12:35:21 UTC 2011 - [email protected] + +- Update to 2.0.16: + * VSZ limits weren't being enforced for any processes. On server with + large mailboxes you may now see errors about it if the limits aren't + high enough. To fix them, either increase individual service { + vsz_limit } values or simply increase the default_vsz_limit setting. + * Proxying: If using ssl=yes or starttls=yes with a hostname (not IP) + as proxy destination, require that the certificate matches the given + hostname. + * LMTP: Changed default client_limit to 1. This should improve LMTP + throughput with default settings. + * dsync: Quota is no longer enforced (i.e. dsync can't fail because + user is over quota). + + Added "auto" mail storage driver, which can be used to autodetect + mailbox location and format. This behavior is already the default + for empty mail_location setting, so this change is mainly useful for + shared namespace's location setting. + + checkpassword: Export all auth %variables to AUTH_* environment. + +------------------------------------------------------------------- +Sat Nov 12 22:36:23 UTC 2011 - [email protected] + +- update to 2.0.15: + * several fixes and performance enhancements: + + updated INSTALL documentation for new configuration options of the + include extension + + include extension: made nesting_depth and max_includes limits + configurable + + include extension: implemented proper configuration handling + Configuration is now only read once at extension initialization + + variables extension: fixed deinitialization problem (unfreed variable + scope data) newly found by Valgrind + + variables extension: fixed segfault bug triggered when dumping binary + variable scopes + + sieve: fixed debug mode; no messages were logged in some situations + + fix sievec: forgot to enable -D (debug) parameter + + lib-sieve: vacation extension: finally added support for using the + original recipient in vacation address check + + lib-sieve: added X-Sieve-Redirected-From header for people using SPF/SRS + + lib-sieve: add ihave extension (RFC5463) + + lib-sieve: made sure that flags and keywords are only checked when the + mailbox is actually opened + + made vnd.dovecot.debug extension available to the LDA plugin instead of + only the command line tools + + Sieve Storage: improved handling of unconfigured user home directory + + * doveadm now can move messages back to primary storage + +------------------------------------------------------------------- +Sun Sep 18 17:17:12 UTC 2011 - [email protected] + +- Remove redundant tags/sections from specfile + (cf. packaging guidelines) +- Use %_smp_mflags for parallel build + +------------------------------------------------------------------- Old: ---- dovecot-2.0-pigeonhole-0.2.4.tar.bz2 dovecot-2.0-pigeonhole_pass_config.patch dovecot-2.0-pigeonhole_pie.patch dovecot-2.0.14.tar.bz2 New: ---- dovecot-2.0-pigeonhole-0.2.5.tar.bz2 dovecot-2.0.16.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ dovecot20.spec ++++++ --- /var/tmp/diff_new_pack.zjfdly/_old 2011-12-07 19:22:27.000000000 +0100 +++ /var/tmp/diff_new_pack.zjfdly/_new 2011-12-07 19:22:27.000000000 +0100 @@ -15,15 +15,14 @@ # Please submit bugfixes or comments via http://bugs.opensuse.org/ # -# norootforbuild Name: dovecot20 -Version: 2.0.14 +Version: 2.0.16 Release: 0 %define pkg_name dovecot %define sieve_version 2.0 -%define dovecot_version 2.0.14 +%define dovecot_version 2.0.16 %define dovecot_pigeonhole_docdir %{_docdir}/%{pkg_name}/dovecot-pigeonhole #define with_unfinished_sieve_features 1 # @@ -76,14 +75,14 @@ # taken from http://www.dovecot.org/releases/2.0/%{pkg_name}-%{version}.tar.gz Source: %{pkg_name}-%{dovecot_version}.tar.bz2 # hg clone http://hg.rename-it.nl/dovecot-2.0-pigeonhole/ -%define dovecot_pigeonhole_source_dir %{pkg_name}-%{sieve_version}-pigeonhole-0.2.4 +%define dovecot_pigeonhole_source_dir %{pkg_name}-%{sieve_version}-pigeonhole-0.2.5 Source1: %{dovecot_pigeonhole_source_dir}.tar.bz2 Source2: %{pkg_name}.init Source3: %{pkg_name}.pam Source4: %{pkg_name}.README.SuSE Source5: %{pkg_name}-fw Patch0: dovecot-2.0_pie.patch -Patch1: dovecot-2.0-pigeonhole_pie.patch +#Patch1: dovecot-2.0-pigeonhole_pie.patch Summary: IMAP and POP3 Server Written Primarily with Security in Mind %description @@ -95,10 +94,6 @@ compatible with UW-IMAP and Courier IMAP servers as well as mail clients accessing the mailboxes directly. -Author: --------- - Timo Sirainen <[email protected]> - %package backend-mysql License: BSD 3-Clause; LGPL v2.1 or later; X11/MIT Group: Productivity/Networking/Email/Servers @@ -120,10 +115,6 @@ This package holds the files needed for MySQL support. -Author: --------- - Timo Sirainen <[email protected]> - %package backend-pgsql License: BSD 3-Clause; LGPL v2.1 or later; X11/MIT Group: Productivity/Networking/Email/Servers @@ -145,11 +136,6 @@ This package holds the files needed for PostgreSQL support. -Author: --------- - Timo Sirainen <[email protected]> - - %if 0%{?with_sqlite} %package backend-sqlite @@ -173,12 +159,8 @@ This package holds the files needed for SQLite support. -Author: --------- - Timo Sirainen <[email protected]> %endif - %if 0%{?with_clucene} %package fts-lucene @@ -202,9 +184,6 @@ This package holds the files needed for fulltext search support via CLucene. -Author: --------- - Timo Sirainen <[email protected]> %endif %if 0%{?with_solr} @@ -230,10 +209,6 @@ This package holds the files needed for fulltext search support via solr. - -Author: --------- - Timo Sirainen <[email protected]> %endif %package devel @@ -257,10 +232,6 @@ This package holds the file needed to compile plugins outside of the dovecot tree. -Author: --------- - Timo Sirainen <[email protected]> - %prep %setup -q -n %{pkg_name}-%{dovecot_version} -a 1 %{__gzip} -9v ChangeLog @@ -276,9 +247,6 @@ %build export CFLAGS="%{optflags}" -%if 0%{?suse_version} > 1000 - export CFLAGS="$CFLAGS -fstack-protector" -%endif #{__aclocal} -I . #{__autoheader} #{__libtoolize} --force @@ -292,7 +260,6 @@ export LIBS="-pie" %configure \ --docdir=%{_docdir}/%{pkg_name} \ - --libexecdir=%{_prefix}/lib \ --with-moduledir=%{_libdir}/%{pkg_name}/modules \ --with-ioloop=best \ --with-ldap=plugin \ @@ -316,7 +283,7 @@ --with-libwrap \ --with-docs \ --disable-static -make +make %{?_smp_mflags} pushd %{dovecot_pigeonhole_source_dir} #./autogen.sh @@ -330,7 +297,7 @@ --with-unfinished-features \ %endif --docdir="%{dovecot_pigeonhole_docdir}" - make + make %{?_smp_mflags} popd %check @@ -377,6 +344,7 @@ # install sieve docs %{__install} -m 0755 -Dd %{buildroot}%{dovecot_pigeonhole_docdir} pushd %{dovecot_pigeonhole_source_dir} +%__sed -i 's/\r$//' doc/rfc/* cp -av AUTHORS COPYING* INSTALL NEWS README TODO \ examples/ doc/rfc/ doc/devel \ %{buildroot}%{dovecot_pigeonhole_docdir}/ @@ -385,17 +353,11 @@ # install firewall services %{__install} -D -m 644 %{S:5} %{buildroot}%{_sysconfdir}/sysconfig/SuSEfirewall2.d/services/%{pkg_name} - -%clean -%{__rm} -rf %{buildroot} - - %pre /usr/sbin/groupadd -r %{pkg_name} &>/dev/null || : /usr/sbin/useradd -o -g %{pkg_name} -s /bin/false -r -c "User for Dovecot imapd" -d %{_var}/run/%{pkg_name} %{pkg_name} &>/dev/null || : /usr/sbin/useradd -o -g %{pkg_name} -s /bin/false -r -c "User for Dovecot login" -d %{_var}/run/%{pkg_name} dovenull &>/dev/null || : - %preun %stop_on_removal %{pkg_name} @@ -408,7 +370,6 @@ %insserv_cleanup %restart_on_update %{pkg_name} - %files %defattr(-,root,root) %{_sysconfdir}/init.d/%{pkg_name} @@ -530,6 +491,7 @@ %{_libdir}/%{pkg_name}/modules/dict/libdriver_pgsql.so %if 0%{?with_sqlite} + %files backend-sqlite %defattr(-,root,root,-) %{_libdir}/%{pkg_name}/modules/libdriver_sqlite.so @@ -538,12 +500,14 @@ %endif %if 0%{?with_clucene} + %files fts-lucene %defattr(-,root,root,-) %{_libdir}/%{pkg_name}/modules/lib21_fts_lucene_plugin.so %endif %if 0%{?with_solr} + %files fts-solr %defattr(-,root,root,-) %{_libdir}/%{pkg_name}/modules/lib21_fts_solr_plugin.so ++++++ dovecot-2.0-pigeonhole-0.2.4.tar.bz2 -> dovecot-2.0-pigeonhole-0.2.5.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dovecot-2.0-pigeonhole-0.2.4/NEWS new/dovecot-2.0-pigeonhole-0.2.5/NEWS --- old/dovecot-2.0-pigeonhole-0.2.4/NEWS 2011-09-13 22:29:27.000000000 +0200 +++ new/dovecot-2.0-pigeonhole-0.2.5/NEWS 2011-11-19 15:47:56.000000000 +0100 @@ -1,3 +1,18 @@ +v0.2.5 19-11-2011 Stephan Bosch <[email protected]> + + + Sieve vacation extension: made discard message for implicit delivery more + verbose + - The sieve-test tool: mixed up original and final envelope recipient in + implementation of command line arguments. + - Sieve vacation extension: resolved FIXME regarding the use of variables in + the :handle argument. Variables are now handled correctly. + - Sieve body extension: fixed handling of :content "message/rfc822". This now + yields the headers of the embedded message as required by the specification. + Handling of :content "multipart" remains to be fixed. + - LDA Sieve plugin: fixed problem with recipient_delimiter configuration. Now + falls back to global recipient_delimiter setting if + plugin/recipient_delimiter is not set. + v0.2.4 13-09-2011 Stephan Bosch <[email protected]> + Vacation extension: finally added support for using the original recipient diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dovecot-2.0-pigeonhole-0.2.4/TODO new/dovecot-2.0-pigeonhole-0.2.5/TODO --- old/dovecot-2.0-pigeonhole-0.2.4/TODO 2011-08-29 16:58:19.000000000 +0200 +++ new/dovecot-2.0-pigeonhole-0.2.5/TODO 2011-09-17 09:04:33.000000000 +0200 @@ -34,7 +34,6 @@ accordingly) * Finish body extension: - Implement proper :content "multipart" behavior - - Implement proper :content "message/rfc822" behavior - Build test cases for decoding MIME encodings to UTF-8 * Cleanup the test suite - Restructure test scripts diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dovecot-2.0-pigeonhole-0.2.4/configure new/dovecot-2.0-pigeonhole-0.2.5/configure --- old/dovecot-2.0-pigeonhole-0.2.4/configure 2011-09-13 22:26:17.000000000 +0200 +++ new/dovecot-2.0-pigeonhole-0.2.5/configure 2011-11-19 15:54:12.000000000 +0100 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.67 for Pigeonhole 0.2.4. +# Generated by GNU Autoconf 2.67 for Pigeonhole 0.2.5. # # Report bugs to <[email protected]>. # @@ -701,8 +701,8 @@ # Identity of this package. PACKAGE_NAME='Pigeonhole' PACKAGE_TARNAME='dovecot-2.0-pigeonhole' -PACKAGE_VERSION='0.2.4' -PACKAGE_STRING='Pigeonhole 0.2.4' +PACKAGE_VERSION='0.2.5' +PACKAGE_STRING='Pigeonhole 0.2.5' PACKAGE_BUGREPORT='[email protected]' PACKAGE_URL='' @@ -1460,7 +1460,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures Pigeonhole 0.2.4 to adapt to many kinds of systems. +\`configure' configures Pigeonhole 0.2.5 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1531,7 +1531,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of Pigeonhole 0.2.4:";; + short | recursive ) echo "Configuration of Pigeonhole 0.2.5:";; esac cat <<\_ACEOF @@ -1644,7 +1644,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -Pigeonhole configure 0.2.4 +Pigeonhole configure 0.2.5 generated by GNU Autoconf 2.67 Copyright (C) 2010 Free Software Foundation, Inc. @@ -1922,7 +1922,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by Pigeonhole $as_me 0.2.4, which was +It was created by Pigeonhole $as_me 0.2.5, which was generated by GNU Autoconf 2.67. Invocation command line was $ $0 $@ @@ -2731,7 +2731,7 @@ # Define the identity of the package. PACKAGE='dovecot-2.0-pigeonhole' - VERSION='0.2.4' + VERSION='0.2.5' # Some tools Automake needs. @@ -11235,7 +11235,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by Pigeonhole $as_me 0.2.4, which was +This file was extended by Pigeonhole $as_me 0.2.5, which was generated by GNU Autoconf 2.67. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -11301,7 +11301,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -Pigeonhole config.status 0.2.4 +Pigeonhole config.status 0.2.5 configured by $0, generated by GNU Autoconf 2.67, with options \\"\$ac_cs_config\\" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dovecot-2.0-pigeonhole-0.2.4/configure.in new/dovecot-2.0-pigeonhole-0.2.5/configure.in --- old/dovecot-2.0-pigeonhole-0.2.4/configure.in 2011-09-13 22:26:09.000000000 +0200 +++ new/dovecot-2.0-pigeonhole-0.2.5/configure.in 2011-11-19 15:48:11.000000000 +0100 @@ -1,4 +1,4 @@ -AC_INIT([Pigeonhole], [0.2.4], [[email protected]], [dovecot-2.0-pigeonhole]) +AC_INIT([Pigeonhole], [0.2.5], [[email protected]], [dovecot-2.0-pigeonhole]) AC_CONFIG_AUX_DIR([.]) AC_CONFIG_SRCDIR([src]) AC_CONFIG_MACRO_DIR([m4]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dovecot-2.0-pigeonhole-0.2.4/doc/man/sieve-dump.1.in new/dovecot-2.0-pigeonhole-0.2.5/doc/man/sieve-dump.1.in --- old/dovecot-2.0-pigeonhole-0.2.4/doc/man/sieve-dump.1.in 2011-06-21 17:18:28.000000000 +0200 +++ new/dovecot-2.0-pigeonhole-0.2.5/doc/man/sieve-dump.1.in 2011-10-05 18:17:35.000000000 +0200 @@ -1,5 +1,5 @@ .\" Copyright (c) 2010-2011 Pigeonhole authors, see the included COPYING file -.TH "SIEVE\-DUMP" 1 "2011-06-21" "Pigeonhole for Dovecot v2.0" "Pigeonhole" +.TH "SIEVE\-DUMP" 1 "2011-10-04" "Pigeonhole for Dovecot v2.0" "Pigeonhole" .\"------------------------------------------------------------------------ .SH NAME sieve\-dump \- Pigeonhole\(aqs Sieve script binary dump tool @@ -72,7 +72,7 @@ will exit with one of the following values: .TP 4 .B 0 -Dump was successful. (EX_OK, EXIT_SUCCES) +Dump was successful. (EX_OK, EXIT_SUCCESS) .TP .B 1 Operation failed. This is returned for almost all failures. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dovecot-2.0-pigeonhole-0.2.4/doc/man/sieve-filter.1.in new/dovecot-2.0-pigeonhole-0.2.5/doc/man/sieve-filter.1.in --- old/dovecot-2.0-pigeonhole-0.2.4/doc/man/sieve-filter.1.in 2011-06-21 17:18:06.000000000 +0200 +++ new/dovecot-2.0-pigeonhole-0.2.5/doc/man/sieve-filter.1.in 2011-10-05 18:17:28.000000000 +0200 @@ -1,5 +1,5 @@ .\" Copyright (c) 2010-2011 Pigeonhole authors, see the included COPYING file -.TH "SIEVE\-FILTER" 1 "2011-02-23" "Pigeonhole for Dovecot v2.0" "Pigeonhole" +.TH "SIEVE\-FILTER" 1 "2011-10-04" "Pigeonhole for Dovecot v2.0" "Pigeonhole" .SH NAME sieve\-filter \- Pigeonhole\(aqs Sieve mailbox filter tool @@ -196,7 +196,7 @@ will exit with one of the following values: .TP 4 .B 0 -Sieve filter applied successfully. (EX_OK, EXIT_SUCCES) +Sieve filter applied successfully. (EX_OK, EXIT_SUCCESS) .TP .B 1 Operation failed. This is returned for almost all failures. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dovecot-2.0-pigeonhole-0.2.4/doc/man/sieve-test.1.in new/dovecot-2.0-pigeonhole-0.2.5/doc/man/sieve-test.1.in --- old/dovecot-2.0-pigeonhole-0.2.4/doc/man/sieve-test.1.in 2011-06-21 17:18:14.000000000 +0200 +++ new/dovecot-2.0-pigeonhole-0.2.5/doc/man/sieve-test.1.in 2011-10-05 18:26:05.000000000 +0200 @@ -1,5 +1,5 @@ .\" Copyright (c) 2010-2011 Pigeonhole authors, see the included COPYING file -.TH "SIEVE\-TEST" 1 "2011-06-21" "Pigeonhole for Dovecot v2.0" "Pigeonhole" +.TH "SIEVE\-TEST" 1 "2011-10-04" "Pigeonhole for Dovecot v2.0" "Pigeonhole" .SH NAME sieve\-test \- Pigeonhole\(aqs Sieve script tester .\"------------------------------------------------------------------------ @@ -32,6 +32,15 @@ .\"------------------------------------------------------------------------ .SH OPTIONS .TP +.BI \-a\ orig\-recipient\-address +The original envelope recipient address. This is what Sieve\(aqs envelope test +will compare to when the \(dqto\(dq envelope part is requested. Some tests and +actions will also use this as the script owner\(aqs e\-mail address. If this +option is omitted, the recipient address is retrieved from the +\(dqEnvelope-To:\(dq, or \(dqTo:\(dq message headers. If none of these headers +is present either, the recipient address defaults to +\[email protected]\fP. +.TP .BI \-c\ config\-file Alternative Dovecot configuration file path. .TP @@ -58,9 +67,12 @@ SMTP recipients. Such actions only print the outgoing message to \fBstdout\fP. .TP .BI \-f\ envelope\-sender -The envelope sender or return path. This is what Sieve\(aqs envelope test will -compare to when the \(dqfrom\(dq envelope part is requested. Also, this is -where response messages are sent to. +The envelope sender address (return path). This is what Sieve\(aqs envelope test +will compare to when the \(dqfrom\(dq envelope part is requested. Also, this is +where response messages are \(aqsent\(aq to. If this option is omitted, the sender +address is retrieved from the \(dqReturn-Path:\(dq, \(dqSender:\(dq or +\(dqFrom:\(dq message headers. If none of these headers is present either, +the sender envelope address defaults to \[email protected]\fP. .TP .BI \-l\ mail\-location The location of the user\(aqs mail store. The syntax of this option\(aqs @@ -75,9 +87,11 @@ by default. .TP .BI \-r\ recipient\-address -The envelope recipient address. This is what Sieve\(aqs envelope test will compare -to when the \(dqto\(dq envelope part is requested. Some tests and actions will also -use this as the owner\(aqs e\-mail address. +The final envelope recipient address. Some tests and actions will +use this as the script owner\(aqs e\-mail address. For example, this is what is +used by the vacation action to check whether a reply is appropriate. If the +\fB\-r\fP option is omitted, the orignal envelope recipient address will be used +in stead (see \fB\-a\fP option for more info). .TP .BI \-s\ script\-file Specify additional scripts to be executed before the main script. Multiple @@ -196,7 +210,7 @@ will exit with one of the following values: .TP 4 .B 0 -Execution was successful. (EX_OK, EXIT_SUCCES) +Execution was successful. (EX_OK, EXIT_SUCCESS) .TP .B 1 Operation failed. This is returned for almost all failures. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dovecot-2.0-pigeonhole-0.2.4/doc/man/sievec.1.in new/dovecot-2.0-pigeonhole-0.2.5/doc/man/sievec.1.in --- old/dovecot-2.0-pigeonhole-0.2.4/doc/man/sievec.1.in 2011-06-21 17:16:49.000000000 +0200 +++ new/dovecot-2.0-pigeonhole-0.2.5/doc/man/sievec.1.in 2011-10-05 18:23:31.000000000 +0200 @@ -1,5 +1,5 @@ .\" Copyright (c) 2010-2011 Pigeonhole authors, see the included COPYING file -.TH "SIEVEC" 1 "2011-06-21" "Pigeonhole for Dovecot v2.0" "Pigeonhole" +.TH "SIEVEC" 1 "2011-10-04" "Pigeonhole for Dovecot v2.0" "Pigeonhole" .\"------------------------------------------------------------------------ .SH NAME sievec \- Pigeonhole\(aqs Sieve script compiler @@ -32,7 +32,8 @@ extension as Sieve scripts and corresponding files with a \fB.svbin\fP extension as the associated compiled binary. This means for example that Dovecot\(aqs LDA process will first look for a binary file \(dqdovecot.svbin\(dq when it needs to -execute \(dqdovecot.sieve\(dq. It will compile a new binary when it is missing. +execute \(dqdovecot.sieve\(dq. It will compile a new binary when it is missing +or outdated. .PP The \fBsievec\fP command is also useful to verify Sieve scripts before using. Additionally, with the \fB\-d\fP option it can output a textual (and thus @@ -82,16 +83,16 @@ .TP .I out\-file Specifies where the (binary) output is to be written. This argument is optional. -If omitted a binary compiled from <scriptname>.sieve is saved as -<scriptname>.svbin. If \fB\-b\fP is specified, the binary dump is output to -\fBstdout\fP. +If this argument is omitted, a binary compiled from <scriptname>.sieve is saved +as <scriptname>.svbin. If this argument is omitted and \fB\-b\fP is specified, +the binary dump is output to \fBstdout\fP. .\"------------------------------------------------------------------------ .SH "EXIT STATUS" .B sievec will exit with one of the following values: .TP 4 .B 0 -Compile was successful. (EX_OK, EXIT_SUCCES) +Compile was successful. (EX_OK, EXIT_SUCCESS) .TP .B 1 Operation failed. This is returned for almost all failures. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dovecot-2.0-pigeonhole-0.2.4/src/lib-sieve/plugins/body/ext-body-common.c new/dovecot-2.0-pigeonhole-0.2.5/src/lib-sieve/plugins/body/ext-body-common.c --- old/dovecot-2.0-pigeonhole-0.2.4/src/lib-sieve/plugins/body/ext-body-common.c 2011-04-16 22:15:51.000000000 +0200 +++ new/dovecot-2.0-pigeonhole-0.2.5/src/lib-sieve/plugins/body/ext-body-common.c 2011-09-17 09:04:33.000000000 +0200 @@ -61,12 +61,14 @@ i_assert( wanted_types != NULL ); for (; *wanted_types != NULL; wanted_types++) { - const char *wanted_subtype = strchr(*wanted_types, '/'); + const char *wanted_subtype; if (**wanted_types == '\0') { /* empty string matches everything */ return TRUE; } + + wanted_subtype = strchr(*wanted_types, '/'); if (wanted_subtype == NULL) { /* match only main type */ if (strlen(*wanted_types) == type_len && @@ -112,7 +114,7 @@ /* Add new item to the result */ return_part = array_append_space(&ctx->return_body_parts); - + /* Depending on whether a decoded body part is requested, the appropriate * cache item is read. If it is missing, this function fails and the cache * needs to be completed by ext_body_parts_add_missing(). @@ -134,7 +136,7 @@ } static void ext_body_part_save -(struct ext_body_message_context *ctx, struct message_part *part, +(struct ext_body_message_context *ctx, struct ext_body_part_cached *body_part, bool decoded) { buffer_t *buf = ctx->tmp_buffer; @@ -154,8 +156,6 @@ if ( !decoded ) { body_part->raw_body = part_data; body_part->raw_body_size = part_size; - printf("%ld <=> %ld\n", (long) buf->used - 1, (long) part->body_size.physical_size); - i_assert(buf->used - 1 == part->body_size.physical_size); } else { body_part->decoded_body = part_data; body_part->decoded_body_size = part_size; @@ -195,7 +195,7 @@ (const struct sieve_message_data *msgdata, struct ext_body_message_context *ctx, const char * const *content_types, bool decode_to_plain) { - struct ext_body_part_cached *body_part = NULL; + struct ext_body_part_cached *body_part = NULL, *header_part = NULL; struct message_parser_ctx *parser; struct message_decoder_context *decoder; struct message_block block, decoded; @@ -214,25 +214,50 @@ /* Get the message stream */ if ( mail_get_stream(msgdata->mail, NULL, NULL, &input) < 0 ) return FALSE; - + //if (mail_get_parts(msgdata->mail, &parts) < 0) + // return FALSE; + buffer_set_used_size(ctx->tmp_buffer, 0); /* Initialize body decoder */ - decoder = decode_to_plain ? message_decoder_init(FALSE) : NULL; - + decoder = decode_to_plain ? message_decoder_init(FALSE) : NULL; + + //parser = message_parser_init_from_parts(parts, input, 0, 0); parser = message_parser_init(ctx->pool, input, 0, 0); + while ( (ret = message_parser_parse_next_block(parser, &block)) > 0 ) { + if ( block.part != prev_part ) { + bool message_rfc822 = FALSE; + /* Save previous body part */ - if ( body_part != NULL && save_body ) { - ext_body_part_save(ctx, prev_part, body_part, decoder != NULL); + if ( body_part != NULL ) { + /* Treat message/rfc822 separately; headers become content */ + if ( block.part->parent == prev_part && + strcmp(body_part->content_type, "message/rfc822") == 0 ) { + message_rfc822 = TRUE; + } else { + if ( save_body ) + ext_body_part_save(ctx, body_part, decoder != NULL); + } } - + /* Start processing next */ - prev_part = block.part; body_part = array_idx_modifiable(&ctx->cached_body_parts, idx); - idx++; body_part->content_type = "text/plain"; + + /* If this is message/rfc822 content retain the enveloping part for + * storing headers as content. + */ + if ( message_rfc822 ) { + i_assert(idx > 0); + header_part = array_idx_modifiable(&ctx->cached_body_parts, idx-1); + } else { + header_part = NULL; + } + + prev_part = block.part; + idx++; } if ( block.hdr != NULL || block.size == 0 ) { @@ -244,6 +269,12 @@ /* Check for end of headers */ if ( block.hdr == NULL ) { + /* Save headers for message/rfc822 part */ + if ( header_part != NULL ) { + ext_body_part_save(ctx, header_part, decoder != NULL); + header_part = NULL; + } + /* Save bodies only if we have a wanted content-type */ save_body = _is_wanted_content_type (content_types, body_part->content_type); @@ -255,9 +286,22 @@ */ if ( block.hdr->eoh ) body_part->have_body = TRUE; + else if ( header_part != NULL ) { + /* Save message/rfc822 header as part content */ + if ( block.hdr->continued ) { + buffer_append(ctx->tmp_buffer, block.hdr->value, block.hdr->value_len); + } else { + buffer_append(ctx->tmp_buffer, block.hdr->name, block.hdr->name_len); + buffer_append(ctx->tmp_buffer, block.hdr->middle, block.hdr->middle_len); + buffer_append(ctx->tmp_buffer, block.hdr->value, block.hdr->value_len); + } + if ( !block.hdr->no_newline ) { + buffer_append(ctx->tmp_buffer, "\r\n", 2); + } + } /* We're interested of only Content-Type: header */ - if ( strcasecmp(block.hdr->name, "Content-Type" ) != 0) + if ( strcasecmp(block.hdr->name, "Content-Type" ) != 0 ) continue; /* Header can have folding whitespace. Acquire the full value before @@ -289,8 +333,11 @@ } /* Save last body part if necessary */ - if ( body_part != NULL && save_body ) - ext_body_part_save(ctx, prev_part, body_part, decoder != NULL); + if ( header_part != NULL ) { + ext_body_part_save(ctx, header_part, decoder != NULL); + } else if ( body_part != NULL && save_body ) { + ext_body_part_save(ctx, body_part, decoder != NULL); + } /* Try to fill the return_body_parts array once more */ have_all = ext_body_get_return_parts(ctx, content_types, decode_to_plain); @@ -310,7 +357,6 @@ static struct ext_body_message_context *ext_body_get_context (const struct sieve_extension *this_ext, struct sieve_message_context *msgctx) { - pool_t pool = sieve_message_context_pool(msgctx); struct ext_body_message_context *ctx; /* Get message context (contains cached message body information) */ @@ -319,8 +365,12 @@ /* Create it if it does not exist already */ if ( ctx == NULL ) { + pool_t pool; + + pool = sieve_message_context_pool(msgctx); ctx = p_new(pool, struct ext_body_message_context, 1); ctx->pool = pool; + p_array_init(&ctx->cached_body_parts, pool, 8); p_array_init(&ctx->return_body_parts, pool, 8); ctx->tmp_buffer = buffer_create_dynamic(pool, 1024*64); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dovecot-2.0-pigeonhole-0.2.4/src/lib-sieve/plugins/vacation/cmd-vacation.c new/dovecot-2.0-pigeonhole-0.2.5/src/lib-sieve/plugins/vacation/cmd-vacation.c --- old/dovecot-2.0-pigeonhole-0.2.4/src/lib-sieve/plugins/vacation/cmd-vacation.c 2011-08-02 17:48:33.000000000 +0200 +++ new/dovecot-2.0-pigeonhole-0.2.5/src/lib-sieve/plugins/vacation/cmd-vacation.c 2011-10-05 19:08:54.000000000 +0200 @@ -231,7 +231,7 @@ bool mime; - string_t *handle; + struct sieve_ast_argument *handle_arg; }; /* @@ -348,10 +348,10 @@ *arg = sieve_ast_argument_next(*arg); } else if ( sieve_argument_is(tag, vacation_handle_tag) ) { - ctx_data->handle = sieve_ast_argument_str(*arg); - + ctx_data->handle_arg = *arg; + /* Detach optional argument (emitted as mandatory) */ - *arg = sieve_ast_arguments_detach(*arg,1); + *arg = sieve_ast_arguments_detach(*arg, 1); } return TRUE; @@ -468,34 +468,48 @@ return FALSE; /* Construct handle if not set explicitly */ - if ( ctx_data->handle == NULL ) { - string_t *reason = sieve_ast_argument_str(arg); - unsigned int size = str_len(reason); - - /* Precalculate the size of it all */ - size += ctx_data->subject == NULL ? - sizeof(_handle_empty_subject) - 1 : str_len(ctx_data->subject); - size += ctx_data->from == NULL ? - sizeof(_handle_empty_from) - 1 : str_len(ctx_data->from); - size += ctx_data->mime ? - sizeof(_handle_mime_enabled) - 1 : sizeof(_handle_mime_disabled) - 1; + if ( ctx_data->handle_arg == NULL ) { + T_BEGIN { + string_t *handle; + string_t *reason = sieve_ast_argument_str(arg); + unsigned int size = str_len(reason); + + /* Precalculate the size of it all */ + size += ctx_data->subject == NULL ? + sizeof(_handle_empty_subject) - 1 : str_len(ctx_data->subject); + size += ctx_data->from == NULL ? + sizeof(_handle_empty_from) - 1 : str_len(ctx_data->from); + size += ctx_data->mime ? + sizeof(_handle_mime_enabled) - 1 : sizeof(_handle_mime_disabled) - 1; - /* Construct the string */ - ctx_data->handle = str_new(sieve_command_pool(cmd), size); - str_append_str(ctx_data->handle, reason); - - if ( ctx_data->subject != NULL ) - str_append_str(ctx_data->handle, ctx_data->subject); - else - str_append(ctx_data->handle, _handle_empty_subject); - - if ( ctx_data->from != NULL ) - str_append_str(ctx_data->handle, ctx_data->from); - else - str_append(ctx_data->handle, _handle_empty_from); + /* Construct the string */ + handle = t_str_new(size); + str_append_str(handle, reason); + + if ( ctx_data->subject != NULL ) + str_append_str(handle, ctx_data->subject); + else + str_append(handle, _handle_empty_subject); + + if ( ctx_data->from != NULL ) + str_append_str(handle, ctx_data->from); + else + str_append(handle, _handle_empty_from); - str_append(ctx_data->handle, - ctx_data->mime ? _handle_mime_enabled : _handle_mime_disabled ); + str_append(handle, + ctx_data->mime ? _handle_mime_enabled : _handle_mime_disabled ); + + /* Create positional handle argument */ + ctx_data->handle_arg = sieve_ast_argument_string_create + (cmd->ast_node, handle, sieve_ast_node_line(cmd->ast_node)); + } T_END; + + if ( !sieve_validator_argument_activate + (valdtr, cmd, ctx_data->handle_arg, TRUE) ) + return FALSE; + } else { + /* Attach explicit handle argument as positional */ + (void)sieve_ast_argument_attach(cmd->ast_node, ctx_data->handle_arg); } return TRUE; @@ -507,18 +521,12 @@ static bool cmd_vacation_generate (const struct sieve_codegen_env *cgenv, struct sieve_command *cmd) -{ - struct cmd_vacation_context_data *ctx_data = - (struct cmd_vacation_context_data *) cmd->data; - +{ sieve_operation_emit(cgenv->sblock, cmd->ext, &vacation_operation); /* Generate arguments */ if ( !sieve_generate_arguments(cgenv, cmd, NULL) ) return FALSE; - - /* FIXME: this will not allow the handle to be a variable */ - sieve_opr_string_emit(cgenv->sblock, ctx_data->handle); return TRUE; } @@ -779,13 +787,13 @@ (struct act_vacation_context *) action->context; sieve_result_action_printf( rpenv, "send vacation message:"); - sieve_result_printf(rpenv, " => seconds : %d\n", ctx->seconds); + sieve_result_printf(rpenv, " => seconds : %d\n", ctx->seconds); if ( ctx->subject != NULL ) - sieve_result_printf(rpenv, " => subject: %s\n", ctx->subject); + sieve_result_printf(rpenv, " => subject : %s\n", ctx->subject); if ( ctx->from != NULL ) - sieve_result_printf(rpenv, " => from : %s\n", ctx->from); + sieve_result_printf(rpenv, " => from : %s\n", ctx->from); if ( ctx->handle != NULL ) - sieve_result_printf(rpenv, " => handle : %s\n", ctx->handle); + sieve_result_printf(rpenv, " => handle : %s\n", ctx->handle); sieve_result_printf(rpenv, "\nSTART MESSAGE\n%s\nEND MESSAGE\n", ctx->reason); } @@ -1176,10 +1184,23 @@ /* My address not found in the headers; we got an implicit delivery */ if ( *hdsp == NULL ) { + const char *original_recipient = ""; + /* No, bail out */ + + if ( config->use_original_recipient ) { + original_recipient = t_strdup_printf("original-recipient=<%s>, ", + ( orig_recipient == NULL ? "UNAVAILABLE" : + str_sanitize(orig_recipient, 128) )); + } + sieve_result_global_log(aenv, - "discarding vacation response for message implicitly delivered to <%s>", - recipient ); + "discarding vacation response for implicitly delivered message; " + "no known (envelope) recipient address found in message headers " + "(recipient=<%s>, %sand%s additional `:addresses' are specified)", + str_sanitize(recipient, 128), original_recipient, + (ctx->addresses == NULL ? " no" : "")); + return TRUE; } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dovecot-2.0-pigeonhole-0.2.4/src/managesieve-login/managesieve-login-settings.c new/dovecot-2.0-pigeonhole-0.2.5/src/managesieve-login/managesieve-login-settings.c --- old/dovecot-2.0-pigeonhole-0.2.4/src/managesieve-login/managesieve-login-settings.c 2011-04-16 22:15:51.000000000 +0200 +++ new/dovecot-2.0-pigeonhole-0.2.5/src/managesieve-login/managesieve-login-settings.c 2011-11-09 17:19:23.000000000 +0100 @@ -51,7 +51,7 @@ .client_limit = 0, .service_count = 1, .idle_kill = 0, - .vsz_limit = 64*1024*1024, + .vsz_limit = (uoff_t)-1, .unix_listeners = ARRAY_INIT, .fifo_listeners = ARRAY_INIT, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dovecot-2.0-pigeonhole-0.2.4/src/plugins/lda-sieve/lda-sieve-plugin.c new/dovecot-2.0-pigeonhole-0.2.5/src/plugins/lda-sieve/lda-sieve-plugin.c --- old/dovecot-2.0-pigeonhole-0.2.4/src/plugins/lda-sieve/lda-sieve-plugin.c 2011-06-06 16:45:01.000000000 +0200 +++ new/dovecot-2.0-pigeonhole-0.2.5/src/plugins/lda-sieve/lda-sieve-plugin.c 2011-09-17 09:04:37.000000000 +0200 @@ -42,13 +42,13 @@ static const char *lda_sieve_get_homedir (void *context) { - struct mail_user *mail_user = (struct mail_user *) context; + struct mail_deliver_context *mdctx = (struct mail_deliver_context *)context; const char *home = NULL; - if ( mail_user == NULL ) + if ( mdctx == NULL || mdctx->dest_user == NULL ) return NULL; - if ( mail_user_get_home(mail_user, &home) <= 0 ) + if ( mail_user_get_home(mdctx->dest_user, &home) <= 0 ) return NULL; return home; @@ -57,12 +57,19 @@ static const char *lda_sieve_get_setting (void *context, const char *identifier) { - struct mail_user *mail_user = (struct mail_user *) context; + struct mail_deliver_context *mdctx = (struct mail_deliver_context *)context; + const char *value = NULL; - if ( mail_user == NULL ) + if ( mdctx == NULL ) return NULL; - return mail_user_plugin_getenv(mail_user, identifier); + if ( mdctx->dest_user == NULL || + (value=mail_user_plugin_getenv(mdctx->dest_user, identifier)) == NULL ) { + if ( strcmp(identifier, "recipient_delimiter") == 0 ) + value = mdctx->set->recipient_delimiter; + } + + return value; } static const struct sieve_environment lda_sieve_env = { @@ -665,7 +672,7 @@ /* Initialize Sieve engine */ - svinst = sieve_init(&lda_sieve_env, mdctx->dest_user, debug); + svinst = sieve_init(&lda_sieve_env, mdctx, debug); /* Initialize master error handler */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dovecot-2.0-pigeonhole-0.2.4/src/sieve-tools/sieve-dump.c new/dovecot-2.0-pigeonhole-0.2.5/src/sieve-tools/sieve-dump.c --- old/dovecot-2.0-pigeonhole-0.2.4/src/sieve-tools/sieve-dump.c 2011-06-06 13:19:18.000000000 +0200 +++ new/dovecot-2.0-pigeonhole-0.2.5/src/sieve-tools/sieve-dump.c 2011-10-05 18:43:08.000000000 +0200 @@ -28,7 +28,7 @@ static void print_help(void) { printf( -"Usage: sieve-dump [-h] [-P <plugin>] [-x <extensions>]\n" +"Usage: sieve-dump [-c <config-file>] [-h] [-P <plugin>] [-x <extensions>]\n" " <sieve-binary> [<out-file>]\n" ); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dovecot-2.0-pigeonhole-0.2.4/src/sieve-tools/sieve-test.c new/dovecot-2.0-pigeonhole-0.2.5/src/sieve-tools/sieve-test.c --- old/dovecot-2.0-pigeonhole-0.2.4/src/sieve-tools/sieve-test.c 2011-06-22 22:07:30.000000000 +0200 +++ new/dovecot-2.0-pigeonhole-0.2.5/src/sieve-tools/sieve-test.c 2011-10-05 19:00:18.000000000 +0200 @@ -42,7 +42,8 @@ static void print_help(void) { printf( -"Usage: sieve-test [-c <config-file>] [-C] [-D] [-d <dump-filename>] [-e]\n" +"Usage: sieve-test [-a <orig-recipient-address] [-c <config-file>]\n" +" [-C] [-D] [-d <dump-filename>] [-e]\n" " [-f <envelope-sender>] [-l <mail-location>]\n" " [-m <default-mailbox>] [-P <plugin>]\n" " [-r <recipient-address>] [-s <script-file>]\n" @@ -131,13 +132,13 @@ while ((c = sieve_tool_getopt(sieve_tool)) > 0) { switch (c) { case 'r': - /* original recipient address */ - recipient = optarg; - break; - case 'a': /* final recipient address */ final_recipient = optarg; break; + case 'a': + /* original recipient address */ + recipient = optarg; + break; case 'f': /* envelope sender address */ sender = optarg; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dovecot-2.0-pigeonhole-0.2.4/src/sieve-tools/sievec.c new/dovecot-2.0-pigeonhole-0.2.5/src/sieve-tools/sievec.c --- old/dovecot-2.0-pigeonhole-0.2.4/src/sieve-tools/sievec.c 2011-08-09 20:59:02.000000000 +0200 +++ new/dovecot-2.0-pigeonhole-0.2.5/src/sieve-tools/sievec.c 2011-10-05 18:42:06.000000000 +0200 @@ -30,7 +30,7 @@ static void print_help(void) { printf( -"Usage: sievec [-d] [-P <plugin>] [-x <extensions>] \n" +"Usage: sievec [-c <config-file>] [-d] [-P <plugin>] [-x <extensions>] \n" " <script-file> [<out-file>]\n" ); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dovecot-2.0-pigeonhole-0.2.4/src/testsuite/testsuite-script.c new/dovecot-2.0-pigeonhole-0.2.5/src/testsuite/testsuite-script.c --- old/dovecot-2.0-pigeonhole-0.2.4/src/testsuite/testsuite-script.c 2011-09-11 11:27:14.000000000 +0200 +++ new/dovecot-2.0-pigeonhole-0.2.5/src/testsuite/testsuite-script.c 2011-09-14 17:17:42.000000000 +0200 @@ -41,7 +41,6 @@ { struct sieve_instance *svinst = testsuite_sieve_instance; struct sieve_binary *sbin; - const char *sieve_dir; const char *script_path; sieve_runtime_trace(renv, SIEVE_TRLVL_TESTS, "compile script `%s'", script); @@ -51,7 +50,7 @@ return SIEVE_EXEC_FAILURE; script_path = t_strconcat(script_path, "/", script, NULL); - + if ( (sbin = sieve_compile(svinst, script_path, NULL, testsuite_log_ehandler, NULL)) == NULL ) return NULL; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dovecot-2.0-pigeonhole-0.2.4/tests/extensions/body/content.svtest new/dovecot-2.0-pigeonhole-0.2.5/tests/extensions/body/content.svtest --- old/dovecot-2.0-pigeonhole-0.2.4/tests/extensions/body/content.svtest 2011-04-16 22:15:51.000000000 +0200 +++ new/dovecot-2.0-pigeonhole-0.2.5/tests/extensions/body/content.svtest 2011-10-01 11:34:26.000000000 +0200 @@ -204,7 +204,8 @@ Content-Type: message/rfc822 From: Someone Else -Subject: hello request +Subject: Hello, this is an elaborate request for you to finally say hello + already! Please say Hello @@ -313,6 +314,20 @@ * matches the :content specification. */ -/* FIXME */ +test "Content-Type: message/rfc822" { + if not body :content "message/rfc822" :contains + "From: Someone Else" { + test_fail "missed raw message/rfc822 from header"; + } + + if not body :content "message/rfc822" :is text: +From: Someone Else +Subject: Hello, this is an elaborate request for you to finally say hello + already! +. + { + test_fail "header content does not match exactly"; + } +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dovecot-2.0-pigeonhole-0.2.4/tests/extensions/vacation/message.svtest new/dovecot-2.0-pigeonhole-0.2.5/tests/extensions/vacation/message.svtest --- old/dovecot-2.0-pigeonhole-0.2.4/tests/extensions/vacation/message.svtest 2011-04-16 22:15:51.000000000 +0200 +++ new/dovecot-2.0-pigeonhole-0.2.5/tests/extensions/vacation/message.svtest 2011-10-01 11:28:45.000000000 +0200 @@ -1,5 +1,7 @@ require "vnd.dovecot.testsuite"; require "vacation"; +require "variables"; +require "body"; test_set "message" text: From: [email protected] @@ -46,3 +48,43 @@ test_fail "in-reply-to header set incorrectly"; } } + +test_result_reset; + +test_set "message" text: +From: [email protected] +Subject: frop +References: <[email protected]> <[email protected]> + <[email protected]> <[email protected]> <[email protected]> +Message-ID: <[email protected]> +To: [email protected] + +Frop +. +; + +test "Variables" { + set "message" "I am not in today!"; + set "subject" "Out of office"; + set "from" "[email protected]"; + + vacation :from "${from}" :subject "${subject}" "${message}"; + + if not test_result_execute { + test_fail "execution of result failed"; + } + + test_message :smtp 0; + + if not header :contains "subject" "Out of office" { + test_fail "subject not set properly"; + } + + if not header :contains "from" "[email protected]" { + test_fail "from address not set properly"; + } + + if not body :contains :raw "I am not in today!" { + test_fail "message not set properly"; + } +} ++++++ dovecot-2.0-pigeonhole-0.2.4.tar.bz2 -> dovecot-2.0.16.tar.bz2 ++++++ ++++ 601438 lines of diff (skipped) -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
