1#!/bin/sh 2 3# Maintainer's sanity check 4 5OPTIONS="" 6export OPTIONS 7TZ=EST5EDT 8export TZ 9 10echo '****************************' >&2 11echo '* Sanity check in progress *' >&2 12echo '****************************' >&2 13#test ! -d confmdtest || find confmdtest -exec chmod u+rwx {} \; 14#test ! -d confmdtest2 || find confmdtest2 -exec chmod u+rwx {} \; 15test ! -d confmdtest || chmod -R u+rwx confmdtest 16test ! -d confmdtest2 || chmod -R u+rwx confmdtest2 17rm -rf confmdtest 18../maildir/maildirmake confmdtest || exit 1 19 20cat >confmdtest/cur/msg1:2,S <<EOF || exit 1 21From: John <john@example.com> 22To: Steve <steve@example.com>, Tom <tom@example.com> 23Mime-Version: 1.0 24Content-Type: multipart/mixed; boundary="b1" 25Subject: This is the message 26 27foobar 28--b1 29Content-Type: text/plain 30 31This is section 1 32 33--b1 34Content-Type: text/plain 35 36This is section 2 37 38--b1 39Content-Type: message/rfc822 40 41Mime-Version: 1.0 42Content-Type: multipart/mixed; boundary="b2" 43Subject: This is message part 3 44 45foobar 46--b2 47Content-Type: text/plain 48 49This is section 3.1 50 51--b2 52Content-Type: text/plain 53 54This is section 3.2 55 56--b2-- 57--b1 58Content-Type: multipart/mixed; boundary="b3" 59 60foobar 61--b3 62Content-Type: text/plain 63 64This is section 4.1 65 66--b3 67Content-Type: message/rfc822 68 69Mime-Version: 1.0 70Content-Type: multipart/mixed; boundary="b4" 71Subject: This is message part 4.2 72 73foobar 74--b4 75Content-Type: text/plain 76 77This is section 4.2.1 78 79--b4 80Content-Type: multipart/alternative; boundary="b5" 81 82foobar 83--b5 84Content-Type: text/plain 85 86This is section 4.2.2.1 87 88--b5 89Content-Type: text/plain 90 91This is section 4.2.2.2 92 93--b5-- 94 95--b4-- 96 97--b3-- 98 99--b1-- 100EOF 101 102inituid() { 103 104initdir="$1" 105 106if test "$initdir" = "" 107then 108 initdir="confmdtest" 109fi 110 111initinbox="$2" 112if test "$initinbox" = "" 113then 114 initinbox="inbox" 115else 116 initinbox="inbox.$initinbox" 117fi 118 119env IMAP_BROKENUIDV=1 MAILDIR=$initdir ./imapd >confmdtest.stdout <<EOF 120a001 select $initinbox 121a logout 122EOF 123 124} 125 126inituid 127 128env IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' 129a001 select inbox 130a002 fetch 1 (bodystructure) 131a003 fetch 1 (body[]) 132a004 fetch 1 (body[]<500.100>) 133a005 fetch 1 (body[1]) 134a006 fetch 1 (body[1.text]) 135a007 fetch 1 (body[2]) 136a008 fetch 1 (body[2.text]) 137a009 fetch 1 (body[3.header]) 138a010 fetch 1 (body[3.mime]) 139a011 fetch 1 (body[3.mime]<10,50>) 140a012 fetch 1 (body[3.1]) 141a013 fetch 1 (body[3.2]) 142a014 fetch 1 (body[4.1]) 143a015 fetch 1 (body[4.2.header]) 144a016 fetch 1 (body[4.2.1]) 145a017 fetch 1 (body[4.2.2.1]) 146a018 fetch 1 (body[4.2.2.2]) 147a019 fetch 1 (envelope) 148a020 fetch 1 (body) 149a021 fetch 1 (envelope body) 150a022 fetch 1 (bodystructure) 151a023 fetch 1 (rfc822.size) 152a024 fetch 1 (all) 153a025 fetch 1 (fast) 154a026 fetch 1 (full) 155a027 fetch 1 (rfc822.text) 156a028 fetch 1 (body[header.fields(content-type)]) 157adone logout 158EOF 159 160rm -f confmdtest/cur/msg1:2,S 161 162cat >confmdtest/new/msg2 <<EOF || exit 1 163From: John <john@example.com> 164To: Steve <steve@example.com>, 165 Tom <tom@example.com> 166Mime-Version: 1.0 167Date: Wed, 22 Sep 1999 15:41:09 -0200 168Content-Type: multipart/mixed; boundary="b1" 169Subject: This is the message 170 171foobar 172--b1 173Content-Type: text/plain 174 175This is section 1 176 177--b1 178Content-Type: message/rfc822 179 180Subject: This is message part 4.2 181From: dave@example.org 182To: tom@example.org 183Cc: steve@example.org 184Mime-Version: 1.0 185content-type: text/plain 186content-transfer-encoding: quoted-printable 187 188 189M=41ry had a little lamb, it's fleece was white as snow. And everywhere 190Mary went, the lamb was sure to go. 191 192--b1-- 193EOF 194 195inituid 196 197cat >confmdtest/new/msg3 <<EOF || exit 1 198From: todd@example.org 199To: kevin@example.org 200Subject: today's meeting 201 202Today's meeting has been cancelled 203EOF 204cat >confmdtest/new/msg4 <<EOF || exit 1 205Subject: New MIME headers test 206Mime-Version: 1.0 207Content-Type: multipart/mixed; boundary="c1" 208Content-Language: en 209 210 211--c1 212Content-Type: text/plain 213Content-ID: <foo@bar> 214Content-Description: MIME test message 215Content-MD5: aaaabbbb 216 217test 218 219--c1-- 220EOF 221touch -t 199901010000 confmdtest/new/msg3 222 223inituid 224 225env IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' 226b000 status inbox ( MESSAGES RECENT UIDNEXT UIDVALIDITY UNSEEN) 227b001 select inbox 228b001a status inbox ( MESSAGES RECENT UIDNEXT UIDVALIDITY UNSEEN) 229b002 fetch 1:2 (flags uid) 230b003 search header "content-type" "multipart" 231b004 search 2 header "content-type" "multipart" 232b005 search to tom@example 233b006 search subject "message part 4.2" 234b007 search before "1-Feb-1999" 235b008 search on "1-Jan-1999" 236b009 search senton "22-Sep-1999" 237b010 search recent 238b011 fetch 1 (rfc822.header) 239b012 fetch 1:2 (flags) 240b013 search seen 241b014 search body "mary had a little lamb" 242b015 uid search body "mary had a little lamb" 243b016 store 1:2 +flags(\flagged) 244b017 store 1 flags(\seen \deleted) 245b018 expunge 246b019 fetch 1 (flags uid) 247b020 create inbox.bozo 248b021 uid copy 3 inbox.bozo 249b022 select inbox.bozo 250b023 status inbox.bozo (uidnext) 251b024 fetch 1 (flags) 252b025 append inbox.bozo \Seen {11} 253test 254 255test 256 257b026 append inbox.bozo (\Seen \Flagged) {11} 258test 259 260test 261 262b027 noop 263b028 fetch 1 flags 264b029 fetch 1 flags 265b030 select inbox 266b031 fetch 2 (bodystructure) 267adone logout 268EOF 269env IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' 270foo select inbox.bozo 271foo store 1 +flags \Deleted 272foo expunge 273foo logout 274EOF 275rm -rf confmdtest 276mkdir confmdtest || exit 1 277mkdir confmdtest/tmp || exit 1 278mkdir confmdtest/cur || exit 1 279mkdir confmdtest/new || exit 1 280echo "10000S,2C" >confmdtest/maildirsize 281env IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' 282c001 select inbox 283c002 append inbox {5} 284test 285 286c003 append inbox {5} 287test 288 289c004 append inbox {5} 290test 291 292c005 noop 293c006 store 1 +flags \Deleted 294c007 append inbox {5} 295test 296 297c008 noop 298c009 append inbox {5} 299test 300 301c010 store 1 -flags \Deleted 302cdone logout 303EOF 304cat confmdtest/maildirsize 305rm -rf confmdtest 306mkdir confmdtest || exit 1 307mkdir confmdtest/tmp || exit 1 308mkdir confmdtest/cur || exit 1 309mkdir confmdtest/new || exit 1 310echo "10000S,5C" >confmdtest/maildirsize 311env IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' 312d001 select inbox 313d002 append inbox {5} 314test 315 316d003 noop 317d004 copy 1 inbox 318d005 noop 319ddone logout 320EOF 321cat confmdtest/maildirsize 322env IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' 323e001 select inbox 324e002 copy 1:2 inbox 325e003 noop 326edone logout 327EOF 328cat confmdtest/maildirsize 329../maildir/maildirmake -f Trash confmdtest || exit 1 330 331env IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' 332f001 select inbox 333f002 copy 1:2 inbox 334f002 copy 1:2 inbox.Trash 335f003 noop 336f004 select inbox.Trash 337f005 copy 1:2 inbox 338f006 copy 1:2 inbox.Trash 339f007 noop 340f008 copy 1 inbox 341f009 select inbox 342fdone logout 343EOF 344cat confmdtest/maildirsize 345echo "Counts:" `ls confmdtest/cur | wc -l` `ls confmdtest/.Trash/cur | wc -l` 346env IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' 347g001 select inbox 348g002 select Trash 349g003 select INBOX.Trash 350g004 delete INBOX.Trash 351g005 close 352g006 delete INBOX.Trash 353g007 create INBOX.a 354g008 delete INBOX.a/ 355g009 delete INBOX.a 356g010 create inbox.a/ 357gdone logout 358EOF 359 360rm -rf confmdtest2 361../maildir/maildirmake confmdtest2 362../maildir/maildirmake -f a confmdtest2 363../maildir/maildirmake -f b confmdtest2 364chmod u-rwx confmdtest2/.b/tmp 365chmod u-rwx confmdtest2/.b/new 366chmod u-rwx confmdtest2/.b/cur 367 368echo "test `pwd`/confmdtest2" >confmdtest/shared-maildirs 369 370env IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' 371h001 list "" "*" 372h002 list "" "%" 373h003 list "" "%.%" 374h004 list "" "%.%.%" 375h005 list "shared" "*" 376h006 list "shared.test" "*" 377h007 list "INBOX" "" 378h008 list "shared" "" 379h009 list "shared.test" "" 380h010 subscribe inbox 381h011 list "" "*" 382h012 lsub "" "*" 383h013 subscribe shared.test.a 384h014 list "" "*" 385h015 lsub "" "*" 386h016 subscribe shared.test.b 387h017 list "" "*" 388h018 lsub "" "*" 389h019 unsubscribe shared.test.a 390h020 list "" "*" 391h021 lsub "" "*" 392h022 subscribe shared.test.a 393h023 list "" "*" 394h024 lsub "" "*" 395hdone logout 396EOF 397 398cat >confmdtest2/.a/new/msg1 <<EOF 399Subject: message 1 400 401message 1 402EOF 403 404inituid confmdtest2 a 405 406cat >confmdtest2/.a/new/msg2 <<EOF 407Subject: message 2 408 409message 2 410EOF 411 412inituid confmdtest2 a 413 414cat >confmdtest/new/msg1 <<EOF 415Subject: message 1 416EOF 417 418cat >confmdtest/.Trash/new/msg2 <<EOF 419Subject: message 2 420EOF 421 422../maildir/maildirmake -f c confmdtest 423../maildir/maildirmake -f Trash confmdtest2 424 425env IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' 426ii001 list "" "*" 427ii002 list "" "*" 428iidone logout 429EOF 430 431env IMAP_BROKENUIDV=1 IMAP_CHECK_ALL_FOLDERS=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' 432ii003 list "" "*" 433ii004 list "" "*" 434iidone logout 435EOF 436 437env IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' 438i001 select shared.test.b 439i002 select shared.test.a 440i003 close 441i004 select shared.test.a 442i005 append shared.test.a {5} 443test 444 445i006 noop 446i007 fetch 1:* (flags) 447i008 select inbox 448i009 copy 1:2 shared.test.a 449i010 select shared.test.a 450i011 fetch 1:* (flags) 451i012 append shared.test.b {5} 452i013 copy 1 shared.test.b 453i014 store 1:2 +flags (\Deleted) 454i015 expunge 455idone logout 456EOF 457chmod -R u+rwx confmdtest 458chmod -R u+rwx confmdtest2 459 460rm -f confmdtest/new/* 461rm -f confmdtest/cur/* 462 463cat >confmdtest/new/msg1 <<EOF 464From: John <john1@example.com> 465To: John <cca4@example.com>, <ccb1@example.com> 466Cc: John <toa1@example.com>, <tob4@example.com> 467Subject: Re[2]: [foo] message 1 468Date: Wed, 22 Sep 1999 15:41:09 -0200 469 470message 1 471aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 472EOF 473 474inituid 475 476cat >confmdtest/new/msg2 <<EOF 477From: John <john2@example.com> 478To: John <cca3@example.com>, <ccb2@example.com> 479Cc: John <toa2@example.com>, <tob3@example.com> 480Subject: message 2 481Date: Wed, 22 Sep 1999 15:41:00 -0200 482 483message 2 484aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 485aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 486EOF 487 488inituid 489 490cat >confmdtest/new/msg3 <<EOF 491From: John <john3@example.com> 492To: John <cca2@example.com>, <ccb3@example.com> 493Cc: John <toa3@example.com>, <tob2@example.com> 494Subject: message 1 495Date: Wed, 22 Sep 1999 15:41:00 -0200 496 497message 3 498aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 499aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 500aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 501EOF 502 503inituid 504 505cat >confmdtest/new/msg4 <<EOF 506From: John <john4@example.com> 507To: John <cca1@example.com>, <ccb4@example.com> 508Cc: John <toa4@example.com>, <tob1@example.com> 509Subject: [fwd:message 1] (fwd) 510Date: Wed, 15 Sep 1999 15:41:00 -0200 511 512message 3 513aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 514aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 515aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 516aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 517EOF 518 519inituid 520 521env IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' 522T001 select INBOX 523T002 fetch 1:* (uid body[header.fields(date)]) 524T003 THREAD ORDEREDSUBJECT US-ASCII ALL 525T004 THREAD ORDEREDSUBJECT US-ASCII SENTSINCE 19-SEP-1999 526S001 SORT (SUBJECT DATE) US-ASCII ALL 527S002 SORT (SUBJECT REVERSE DATE) US-ASCII ALL 528S003 SORT (REVERSE SUBJECT DATE) US-ASCII ALL 529S004 SORT (FROM) US-ASCII ALL 530S005 SORT (REVERSE FROM) US-ASCII ALL 531S006 SORT (FROM) US-ASCII SENTSINCE 19-SEP-1999 532S007 SORT (REVERSE FROM) US-ASCII SENTSINCE 19-SEP-1999 533S008 SORT (TO) US-ASCII ALL 534S009 SORT (CC) US-ASCII ALL 535S010 SORT (REVERSE SIZE) US-ASCII ALL 536TDONE logout 537EOF 538 539rm -rf confmdtest 540../maildir/maildirmake confmdtest || exit 1 541../maildir/maildirmake -f Trash confmdtest || exit 1 542env IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' 543J001 list "" "*" 544J002 lsub "" "*" 545J003 SUBSCRIBE INBOX 546J004 SUBSCRIBE INBOX.Trash 547J005 list "" "*" 548J006 lsub "" "*" 549J007 UNSUBSCRIBE INBOX 550J008 LIST "" "*" 551J009 LSUB "" "*" 552JDONE logout 553EOF 554 555rm -rf confmdtest 556../maildir/maildirmake confmdtest || exit 1 557 558cat >confmdtest/new/msg1 <<EOF 559From: postmaster 560Subject: thread 1 561Message-ID: <mid1> 562Date: Sat, 05 Feb 2000 13:34:02 -0800 563 564message 1 565EOF 566 567inituid 568 569cat >confmdtest/new/msg2 <<EOF 570From: postmaster 571Subject: thread 1.1 572Date: Sat, 05 Feb 2000 13:34:02 -0800 573Message-ID: <mid2> 574References: <mid1> 575 576message 2 577EOF 578 579inituid 580 581cat >confmdtest/new/msg3 <<EOF 582From: postmaster 583Date: Sat, 05 Feb 2000 13:34:02 -0800 584Subject: thread 1.2 585In-Reply-To: <mid2> 586 587message 3 588EOF 589 590inituid 591 592cat >confmdtest/new/msg4 <<EOF 593From: postmaster 594Date: Sat, 05 Feb 2000 13:34:02 -0800 595Subject: thread 1.2 596References: <mid1> 597 598message 4 599EOF 600 601inituid 602 603cat >confmdtest/new/msg5 <<EOF 604From: postmaster 605Date: Sat, 05 Feb 2000 13:34:02 -0800 606Subject: thread 1.2 607Message-ID: <mid11> 608References: <mid10> 609 610message 5 611EOF 612 613inituid 614 615cat >confmdtest/new/msg6 <<EOF 616From: postmaster 617Date: Sat, 05 Feb 2000 13:34:01 -0800 618Subject: thread 1.2 619Message-ID: <mid12> 620References: <mid10> 621 622message 6 623EOF 624 625inituid 626 627env IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' 628K001 select INBOX 629K002 THREAD REFERENCES US-ASCII ALL 630KDONE logout 631EOF 632 633rm -rf confmdtest 634../maildir/maildirmake confmdtest || exit 1 635../maildir/maildirmake -f Trash confmdtest || exit 1 636 637env IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' 638L001 CREATE INBOX.a 639L002 CREATE INBOX.a.a 640L003 CREATE INBOX.aa 641L004 RENAME INBOX.a INBOX.b 642L005 LIST "" "*" 643L006 RENAME INBOX.b INBOX.a 644L007 LIST "" "*" 645L008 RENAME INBOX.a. INBOX.b. 646L009 LIST "" "*" 647L010 RENAME INBOX.b. INBOX.a. 648L011 LIST "" "*" 649L012 CREATE INBOX.b.a 650L013 DELETE INBOX.a 651L014 CREATE INBOX.a.a 652L015 LIST "" "*" 653L016 RENAME INBOX.a INBOX.b 654L017 RENAME INBOX.a. INBOX.b. 655L018 SELECT INBOX 656L019 APPEND INBOX \Seen {5} 657test 658 659L020 NOOP 660L021 COPY 1 INBOX 661L022 COPY 1 INBOX 662L023 COPY 1 INBOX 663L024 COPY 1 INBOX 664L025 COPY 1 INBOX 665L026 COPY 1 INBOX 666L027 NOOP 667L028 STORE 2:3,5:7 +FLAGS \Deleted 668L029 FETCH 1:* (UID FLAGS) 669L030 UID EXPUNGE 2,3:5 670L031 FETCH 1:* (UID FLAGS) 671LDONE logout 672EOF 673 674rm -rf confmdtest 675 676../maildir/maildirmake confmdtest || exit 1 677../maildir/maildirmake -q 10C confmdtest || exit 1 678 679env IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' 680M001 CREATE INBOX.a 681M002 APPEND INBOX \Seen {5} 682test 683 684M003 SELECT INBOX 685M004 COPY 1 INBOX 686M005 COPY 1 INBOX 687M006 NOOP 688M007 COPY 1:3 INBOX.a 689M008 RENAME INBOX.a INBOX.b 690MDONE logout 691EOF 692cat confmdtest/maildirsize 693env IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' 694M009 DELETE INBOX.b 695MDONE logout 696EOF 697cat confmdtest/maildirsize 698 699rm -rf confmdtest 700 701../maildir/maildirmake confmdtest || exit 1 702env IMAP_MOVE_EXPUNGE_TO_TRASH=1 IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' 703N001 LIST "" "*" 704N002 append inbox \Deleted {11} 705test 706 707test 708 709N003 LIST "" "*" 710N004 SELECT inbox 711N005 EXPUNGE 712N006 LIST "" "*" 713NDONE logout 714EOF 715 716rm -rf confmdtest 717../maildir/maildirmake confmdtest || exit 1 718../maildir/maildirmake -q10C confmdtest 719env IMAP_MOVE_EXPUNGE_TO_TRASH=1 IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' 720O001 append inbox NIL {11} 721test 722 723test 724 725o002 SELECT inbox 726o003 COPY 1 inbox 727o004 NOOP 728o005 STORE 1 +FLAGS \Deleted 729o006 COPY 1:2 inbox 730o007 NOOP 731o008 logout 732EOF 733cat confmdtest/maildirsize 734rm -f confmdtest/maildirsize 735 736env IMAP_KEYWORDS=1 IMAP_MOVE_EXPUNGE_TO_TRASH=1 IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' 737p001 SELECT INBOX 738p002 CREATE INBOX.a 739p003 COPY 1 INBOX.a 740p004 SELECT INBOX.a 741p005 STORE 1 +FLAGS(-Label1 \Deleted) 742p006 append INBOX.a (-Label2) {11} 743test 744 745test 746 747p007 EXPUNGE 748p008 FETCH 1:* FLAGS 749p009 COPY 1 INBOX.a 750p010 NOOP 751P011 FETCH 1:* FLAGS 752P012 STORE 1 -FLAGS (-Label2) 753P013 STORE 1 +FLAGS (\SEEN) 754P013 FETCH 1:* FLAGS 755P014 SEARCH SEEN 756P015 SEARCH KEYWORD -LABEL2 757P016 SEARCH UNKEYWORD -Label2 758P017 SEARCH KEYWORD -Label1 759P018 COPY 1:* INBOX.a 760P019 COPY 1:* INBOX.a 761P020 NOOP 762P021 COPY 1:* INBOX.a 763P022 COPY 1:* INBOX.a 764P023 NOOP 765P025 STORE 4 +FLAGS -Label1 766P024 FETCH 1:* FLAGS 767P025 SEARCH KEYWORD -Label2 768P026 SEARCH KEYWORD -Label2 KEYWORD -Label1 769pDONE LOGOUT 770EOF 771 772env IMAP_KEYWORDS=1 IMAP_MOVE_EXPUNGE_TO_TRASH=1 IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' 773Q001 select INBOX 774Q002 fetch 1:* FLAGS 775Q003 status INBOX.Trash MESSAGES 776Q004 expunge 777Q005 status INBOX.Trash MESSAGES 778Q006 COPY 1 INBOX.a 779Q007 STORE 1:* +FLAGS \Deleted 780Q008 NOOP 781Q009 EXPUNGE 782Q005 status INBOX.Trash MESSAGES 783qDONE LOGOUT 784EOF 785 786rm -rf confmdtest 787../maildir/maildirmake confmdtest || exit 1 788 789env IMAP_KEYWORDS=1 IMAP_MOVE_EXPUNGE_TO_TRASH=1 IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' 790R001 CREATE INBOX.a 791R002 LIST (ACL MYRIGHTS POSTADDRESS) "" "*" 792R003 ACL STORE INBOX owner -t 793R004 ACL STORE (INBOX *) owner +d 794R005 ACL STORE INBOX.a user=systemuser1 alr 795R006 ACL STORE INBOX.a user=systemuser1 +w 796R007 ACL STORE INBOX.a user=systemuser1 -w 797R008 ACL STORE INBOX.a user=systemuser1 -alr 798R009 ACL STORE INBOX.a user=systemuser1 alr 799R010 ACL STORE INBOX.a user=systemuser1 "" 800R011 ACL STORE INBOX.a user=systemuser1 alr 801R012 ACL SET (INBOX *) "owner" "acdilrsw" administrators "acdilrsw" user=systemuser2 alr 802R013 ACL DELETE INBOX.a user=systemuser1 803R014 ACL DELETE INBOX.a user=systemuser2 804R015 ACL STORE INBOX.a owner -a 805R016 ACL STORE INBOX.a -owner +wt 806R017 ACL STORE INBOX.a -owner -w 807R018 ACL DELETE INBOX.a -owner 808R019 ACL STORE INBOX.a -owner +a 809R020 ACL STORE INBOX.a owner -ci 810R021 CREATE INBOX.a.b 811R022 ACL STORE INBOX.a owner +c 812R023 CREATE INBOX.a.b 813R024 LIST (ACL) "" INBOX.a.b 814R025 CREATE INBOX.c.d 815R026 LIST (ACL) "" "INBOX.c*" 816R027 ACL STORE (INBOX.c*) -owner x 817R028 DELETE INBOX.c.d 818R029 ACL DELETE INBOX.c.d -owner 819R030 DELETE INBOX.c.d 820R031 DELETE INBOX.c. 821R032 LIST (ACL) "" "*" 822R033 DELETE INBOX.a 823R034 LIST (ACL) "" "*" 824R035 RENAME INBOX.a INBOX.f 825R036 LIST (ACL) "" "*" 826R037 CREATE INBOX.f 827R038 LIST (ACL) "" "*" 828R039 ACL STORE INBOX owner -i 829R040 SELECT INBOX 830R041 APPEND INBOX (\Seen \Deleted \Answered Foo) {0} 831R042 ACL STORE INBOX owner +i 832R043 APPEND INBOX (\Seen \Deleted \Answered Foo) {11} 833test 834 835test 836 837R043 NOOP 838R044 FETCH 1 (FLAGS) 839R045 ACL STORE INBOX owner -tw 840R046 APPEND INBOX (\Seen \Deleted \Answered Foo) {11} 841test 842 843test 844 845R047 NOOP 846R048 FETCH 2 (FLAGS) 847R049 ACL STORE INBOX owner +tw 848R050 ACL STORE INBOX owner -s 849R051 APPEND INBOX (\Seen \Deleted \Answered Foo) {11} 850test 851 852test 853 854R052 NOOP 855R053 FETCH 3 (FLAGS) 856R054 STORE 2:3 +FLAGS (\Deleted) 857R055 STORE 1 -FLAGS (\Deleted) 858R056 EXPUNGE 859R057 STORE 1 +FLAGS (\Deleted) 860R058 ACL STORE INBOX owner +s 861R059 CREATE INBOX.x 862R060 COPY 1 INBOX.x 863R061 SELECT INBOX.x 864R062 FETCH 1 (FLAGS) 865R063 SELECT INBOX 866R064 ACL STORE INBOX.x owner -s 867R065 COPY 1 INBOX.x 868R066 SELECT INBOX.x 869R067 FETCH 2 (FLAGS) 870R068 SELECT INBOX 871R069 ACL STORE INBOX.x owner +s 872R070 ACL STORE INBOX.x owner -w 873R071 COPY 1 INBOX.x 874R072 SELECT INBOX.x 875R073 FETCH 3 (FLAGS) 876R074 SELECT INBOX 877R075 ACL STORE INBOX.x owner +w 878R076 ACL STORE INBOX.x owner -t 879R077 COPY 1 INBOX.x 880R078 SELECT INBOX.x 881R079 FETCH 4 (FLAGS) 882R080 SELECT INBOX 883RDONE LOGOUT 884EOF 885 886rm -rf confmdtest 887../maildir/maildirmake confmdtest || exit 1 888../maildir/maildirmake -f a confmdtest || exit 1 889cat >confmdtest/.a/cur/msg1:2,S <<EOF || exit 1 890From: John <john@example.com> 891To: john <john@example.com> 892Subject: test 893 894test 895EOF 896env IMAP_KEYWORDS=1 IMAP_MOVE_EXPUNGE_TO_TRASH=1 IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' 897S001 SELECT INBOX.a 898S002 COPY 1 INBOX.a 899S003 NOOP 900S004 COPY 1:2 INBOX.a 901S005 NOOP 902S006 ACL STORE INBOX.a owner -e 903S007 STORE 1 +FLAGS(\Deleted) 904S008 EXPUNGE 905S009 CLOSE 906S010 SELECT INBOX.a 907S011 ACL STORE INBOX.a owner +e 908S012 EXPUNGE 909S013 STORE 1 +FLAGS(\Deleted) 910S014 CLOSE 911S015 SELECT INBOX.a 912S016 CLOSE 913S017 ACL STORE INBOX.a owner -r 914S018 SELECT INBOX.a 915S019 EXAMINE INBOX.a 916S020 STATUS INBOX.a (UIDVALIDITY) 917S021 ACL STORE INBOX.a owner +r 918S022 SELECT INBOX.a 919S023 APPEND INBOX.a NIL {11} 920test 921 922test 923 924S024 NOOP 925S025 STORE 1:* FLAGS () 926S027 ACL STORE INBOX.a owner -s 927S028 FETCH 1 (BODY[]) 928S029 ACL STORE INBOX.a owner +s 929S030 FETCH 1 (BODY[]) 930S031 ACL STORE INBOX.a owner -s 931S032 STORE 1:2 FLAGS(\Seen \Deleted Foo) 932S033 STORE 1:2 -FLAGS(\Seen \Deleted Foo) 933S034 STORE 2 +FLAGS(\Seen \Deleted \Answered Foo) 934S035 FETCH 1:2 (FLAGS) 935S036 ACL STORE INBOX.a owner +s 936S037 ACL STORE INBOX.a owner -w 937S038 STORE 1:2 FLAGS(\Seen \Deleted Bar) 938S039 STORE 1:2 -FLAGS(\Seen \Deleted Bar) 939S040 STORE 1:2 +FLAGS(\Seen \Deleted Bar) 940S041 ACL STORE INBOX.a owner +w 941S042 STORE 2 -FLAGS (\Deleted) 942S043 ACL STORE INBOX.a owner -t 943S044 STORE 1:2 FLAGS (\Deleted \Seen Bar) 944S045 STORE 1:2 -FLAGS (\Deleted \Seen Bar) 945S046 STORE 1:2 +FLAGS (\Deleted \Seen Bar) 946S047 CLOSE 947S048 ACL STORE INBOX user=courierimaptestuser1 alr 948S049 ACL STORE INBOX user=courierimaptestuser2 lr 949S050 LIST (ACL) "" INBOX 950SDONE LOGOUT 951EOF 952 953rm -rf confmdtest* 954../maildir/maildirmake confmdtest || exit 1 955../maildir/maildirmake confmdtest2 || exit 1 956../maildir/maildirmake confmdtest3 || exit 1 957mkdir confmdtest4 || exit 1 958cat >confmdtest4/index <<EOF || exit 1 959user0 1 1 `pwd` confmdtest 960a * indexa 961b * indexb 962EOF 963echo "user1 1 1 `pwd` confmdtest2" >confmdtest4/indexa || exit 1 964echo "aashared 1 1 `pwd` confmdtest5" >>confmdtest4/indexa || exit 1 965echo "user2 1 1 `pwd` confmdtest3" >confmdtest4/indexb || exit 1 966 967IMAP_SHAREDINDEXFILE=`pwd`/confmdtest4/index 968export IMAP_SHAREDINDEXFILE 969 970env AUTHENTICATED=user1 IMAP_KEYWORDS=1 IMAP_MOVE_EXPUNGE_TO_TRASH=1 IMAP_BROKENUIDV=1 MAILDIR=confmdtest2 ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' 971T001 ACL STORE INBOX user=user0 +l 972T002 CREATE INBOX.a 973T003 ACL STORE INBOX.a anyone +lr 974T004 append INBOX.a \Seen {22} 975Subject: user1 976 977user1 978 979T005 LOGOUT 980EOF 981 982env AUTHENTICATED=user2 IMAP_KEYWORDS=1 IMAP_MOVE_EXPUNGE_TO_TRASH=1 IMAP_BROKENUIDV=1 MAILDIR=confmdtest3 ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' 983T010 ACL STORE INBOX anyone +l 984T011 CREATE INBOX.a 985T012 append INBOX.a \Seen {22} 986Subject: user2 987 988user2 989 990T013 LOGOUT 991EOF 992 993env AUTHENTICATED=user0 IMAP_KEYWORDS=1 IMAP_MOVE_EXPUNGE_TO_TRASH=1 IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' 994T020 list(acl) "" "#shared.*" 995T021 ACL STORE INBOX anyone acdilrsw 996T022 list(acl) "" "#shared.%" 997T023 LOGOUT 998EOF 999 1000env AUTHENTICATED=user2 IMAP_KEYWORDS=1 IMAP_MOVE_EXPUNGE_TO_TRASH=1 IMAP_BROKENUIDV=1 MAILDIR=confmdtest3 ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' 1001T030 LIST "" "#shared.*" 1002T031 LIST "" "#shared.%" 1003T032 LIST "" "#shared.a.%" 1004T033 LIST "" "#shared.c.%" 1005T034 SELECT "#shared.a.user1" 1006T035 SELECT "#shared.a.user1.a" 1007T036 FETCH 1:* (ENVELOPE) 1008T037 STATUS #shared.a.user1 (UIDVALIDITY) 1009T038 COPY 1 #shared.user0 1010T039 SELECT #shared.user0 1011T040 CREATE #shared.a.user1.b 1012T041 CREATE #shared.c 1013T042 CREATE #shared.user0.foo 1014T043 RENAME #shared.user0.foo #shared.user0.bar 1015T044 LIST(ACL) "" "#shared.user0*" 1016T045 ACL STORE #shared.a.user1.a anyone lr 1017T046 CREATE #shared.user0.foo 1018T047 ACL STORE #shared.user0.foo anyone alr 1019T048 ACL STORE #shared.user0.bar anyone -x 1020T049 RENAME #shared.user0.bar #shared.user0.foo.bar 1021T050 ACL STORE #shared.user0.bar anyone +x 1022T051 RENAME #shared.user0.bar #shared.user0.foo.bar 1023T052 ACL STORE #shared.user0.foo anyone +c 1024T053 RENAME #shared.user0.bar #shared.user0.foo.bar 1025T054 LIST "" "#shared.user0*" 1026TDONE LOGOUT 1027EOF 1028 1029cat >confmdtest4/indexb <<EOF 1030use&2 1 1 `pwd` confmdtest3 1031user.2 1 1 `pwd` confmdtest3 1032usér/3 1 1 `pwd` confmdtest3 1033EOF 1034 1035env AUTHENTICATED=user1 IMAP_KEYWORDS=1 IMAP_MOVE_EXPUNGE_TO_TRASH=1 IMAP_BROKENUIDV=1 MAILDIR=confmdtest2 ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' 1036T055 LIST "" "#shared.b.*" 1037T056 LIST "" "#shared.b.%" 1038T057 LIST "" "#shared.b.user 2.*" 1039T058 LIST "" "#shared.b.use&-2.*" 1040TDONE LOGOUT 1041EOF 1042 1043env IMAP_SHAREDMUNGENAMES=1 AUTHENTICATED=user1 IMAP_KEYWORDS=1 IMAP_MOVE_EXPUNGE_TO_TRASH=1 IMAP_BROKENUIDV=1 MAILDIR=confmdtest2 ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' 1044T055 LIST "" "#shared.b.*" 1045T056 LIST "" "#shared.b.%" 1046T057 LIST "" "#shared.b.user\\\\:2.*" 1047T058 LIST "" "#shared.b.use&-2.*" 1048T059 CREATE INBOX.a.b 1049T060 SELECT INBOX.a.b 1050T061 RENAME INBOX.a INBOX.aa 1051T062 CLOSE 1052T063 RENAME INBOX.a INBOX.aa 1053T064 RENAME INBOX INBOX.c 1054T065 RENAME INBOX.aa #shared.user0.aa 1055T066 LIST "" #shared.* 1056T067 LIST "" #shared.% 1057T068 LIST "" #shared.% 1058T069 LIST "" #shared.%.% 1059T070 LIST "" #shared.%.%.% 1060T071 LIST "" #shared.%.%.%.% 1061TDONE LOGOUT 1062EOF 1063 1064echo "usergroup1 1 1 `pwd` confmdtest" >confmdtest4/indexgroup1 || exit 1 1065 1066env IMAP_SHAREDMUNGENAMES=1 AUTHENTICATED=user1 OPTIONS=sharedgroup=group1 IMAP_KEYWORDS=1 IMAP_MOVE_EXPUNGE_TO_TRASH=1 IMAP_BROKENUIDV=1 MAILDIR=confmdtest2 ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' 1067T072 LIST "" #shared.* 1068T073 LIST(ACL) "" INBOX 1069T074 ACL STORE INBOX user=fred lr 1070T075 ACL STORE INBOX -user=john lr 1071T076 ACL STORE INBOX -authuser lr 1072T077 GETACL INBOX 1073T078 SETACL INBOX -authuser lcr 1074T079 SETACL INBOX -john lcr 1075T080 SETACL INBOX fred cr 1076T081 GETACL INBOX 1077T082 LIST(ACL) "" INBOX 1078T083 DELETEACL INBOX -john 1079T084 DELETEACL INBOX fred 1080T085 GETACL INBOX 1081T086 LIST(ACL) "" INBOX 1082TDONE LOGOUT 1083EOF 1084 1085