$Log$
+Revision 655.24 2005/10/06 19:16:31 ajc
+* Added the EUID command to search for a message by EUID
+
+Revision 655.23 2005/10/06 17:14:41 ajc
+* newinstall.sh: prefer curl over wget
+
+Revision 655.22 2005/10/06 04:09:19 ajc
+* THE DREADED AUTO-PURGER now purges euid index records which point to
+ messages that no longer exist.
+
+Revision 655.21 2005/10/06 03:36:05 ajc
+* Changed the format of the euidindex record to contain the record's key.
+ This will allow us to auto-purge stale records later.
+
+Revision 655.20 2005/10/04 16:38:17 ajc
+* CtdlOutputPreLoadedMsg() calling syntax has changed. It no longer needs
+ the message number, because it is being supplied a preloaded message.
+* msgbase.c: fixed a problem where HEADERS_NONE mode was broken when
+ outputting a message in RFC822 format. This was breaking IMAP commands
+ such as xx FETCH nn BODY[TEXT]
+
+Revision 655.19 2005/10/02 04:40:58 ajc
+* The EUID index is now built, and replication checks are being performed
+ using it. It is much faster now because we don't have to scan the entire
+ room anymore. We still need to do two things:
+ 1. Write a server command to fetch messages by EUID instead of msgnum
+ 2. Find a way to purge stale EUID index records.
+
+Revision 655.18 2005/10/01 05:18:57 ajc
+* Began writing code to index messages by euid per room
+
+Revision 655.17 2005/09/27 04:18:45 ajc
+* Auto-add *recipient* addresses to Contacts. This is done asynchronously
+ because we do have to scan the address book to make sure we don't
+ already have the address recorded.
+
+Revision 655.16 2005/09/26 21:46:08 ajc
+* Attempt to save *outgoing* email addresses to the address book.
+
+Revision 655.15 2005/09/21 20:07:18 ajc
+* Set the To: field for digests as well
+
+Revision 655.14 2005/09/21 16:56:17 ajc
+* The "To: line of a mailing list message is now set to the address of the
+ list instead of the address of the recipient.
+
+Revision 655.13 2005/09/21 13:21:31 ajc
+* Don't harvest incoming addresses. A few hours of operation of this in a
+ production environment proved that it's stupid. This feature has been
+ disabled; we will harvest outgoing addresses instead.
+
+Revision 655.12 2005/09/21 04:27:34 ajc
+* When reading messages in MT_MIME mode from a Citadel client, don't
+ list MIME parts that are part of a multipart/alternative group.
+
+Revision 655.11 2005/09/18 21:51:44 ajc
+* File the auto-generated vCards into the users' address books.
+
+Revision 655.10 2005/09/18 20:33:13 ajc
+* Now harvesting addresses, converting them to vCards, and storing them in
+ the Aide> room. All that's left to do now is file the messages in the
+ appropriate users' address books.
+
+Revision 655.9 2005/09/18 19:34:26 ajc
+* When submitting a message, harvest non-local addresses for potential
+ inclusion in a user's Collected Addresses book. Note: we don't actually
+ do anything with these addresses yet. That comes next.
+
+Revision 655.8 2005/09/18 17:50:05 ajc
+* serv_network.c: use a stat() call to determine the mtime of spoolin, and
+ skip the scan if it hasn't been touched since the last time we looked.
+* serv_network.c: don't create network/systems/ directory. We haven't used
+ that in ages.
+* serv_network.c: only attempt to create directories at startup, not at
+ every queue run. Also, chown() them to the citadel user.
+
+Revision 655.7 2005/09/16 20:40:44 ajc
+* CC: support for message creation, and IMAP. Not tested.
+
+Revision 655.6 2005/09/16 20:21:38 ajc
+* CC: and BCC: delivery are working (tested using message submittal
+ from WebCit) -- still missing the insertion of Y (CC) header field, and
+ the handling of CC in IMAP.
+
+Revision 655.5 2005/09/16 04:23:21 ajc
+* Cc: and Bcc: support. Not finished yet.
+
+Revision 655.4 2005/09/15 21:37:06 ajc
+* Restructured cmd_auto() to be able to search vCards in more than one room.
+ For now we are using the Global Address Book as the second room, but in
+ production that might be a bit too slow.
+
+Revision 655.3 2005/09/15 18:36:29 ajc
+* serv_smtp.c: Allow the use of *any* RFC822-compliant address format,
+ including Name <user@node>, or user@node (Name), by stripping down the
+ address before doing RCPT To: in the SMTP client.
+
+Revision 655.2 2005/09/15 03:31:09 ajc
+* cmd_auto() (used by WebCit address autocompletion) now queries the
+ fn, n, and all email fields in the vCards in user's Contacts room.
+
+Revision 655.1 2005/09/14 03:48:32 ajc
+* Bumped internal version number to 5.66
+* Checked in an initial but incomplete version of the AUTO command
+ (to be used for address autocompletion)
+
+Revision 655.0 2005/09/13 14:00:12 ajc
+* THIS IS 6.55
+
+Revision 654.27 2005/09/13 03:56:37 ajc
+* Don't crash when user hits <.A>ide <P>ost
+
+Revision 654.26 2005/09/10 18:46:48 ajc
+* Functions such as imap_fetch_internaldate() now return quietly with no
+ output, instead of crashing, if passed a NULL message pointer.
+
+Revision 654.25 2005/09/09 19:44:21 ajc
+* New bmstrcasestr() function to perform very fast case-insensitive
+ substring searches using the Boyer-Moore algorithm. Like its predecessor,
+ it is based on the one written by Urs Jannsen; unlike its predecessor, it
+ actually works.
+
+Revision 654.24 2005/09/08 03:25:09 ajc
+* messages.c: break up long lines (preferably by substituting spaces with
+ newlines) to avoid sending messages to the server containing lines with
+ more than 1024 characters, to avoid having the server truncate those
+ lines.
+
+Revision 654.23 2005/09/07 03:08:06 ajc
+* When rejecting a message due to RBL, give the alleged spammers the
+ relevant TXT record if there is one. Hopefully. This needs testing.
+
+Revision 654.22 2005/09/02 03:50:42 ajc
+* serv_network.c: fixed a bug in digest generation that was causing the
+ tops of some messages to be cut off.
+
+Revision 654.21 2005/09/01 22:07:08 ajc
+* citserver.c: change to usage of strdup() to work on RH9 where it's
+ a macro
+
+Revision 654.20 2005/08/29 20:49:50 ajc
+* imap_fetch.c: fixed a bug in the IMAP FETCH BODY code that was causing the
+ "most recently fetched message" cache to be burned even when it shouldn't
+ have been. This was causing abominally slow message load time when a message
+ contains attachments and the MUA is a client such as Thunderbird that does
+ partial fetches.
+
+Revision 654.19 2005/08/23 04:00:01 ajc
+* Mailing list messages are now customized with a To: header for each
+ recipient. This uses more overhead but makes delivery more reliable.
+ We also prepend [List name] to the subject.
+* The undocumented client-side mailing list participation option received
+ a similar update. We now set an explicit To: header in there as well,
+ because some lists demand it.
+
+Revision 654.18 2005/08/21 19:40:50 ajc
+* techdoc/protocol.txt: document that unless otherwise specified,
+ everything in the Citadel system is UTF-8.
+
+Revision 654.17 2005/08/21 06:16:37 ajc
+* html.c: don't transform <32 or >126 characters to question marks. We
+ like foreign character sets now.
+
+Revision 654.16 2005/08/15 16:36:46 ajc
+* Added a "MIME-Version:" header in a couple of places
+
+Revision 654.15 2005/08/12 18:00:29 ajc
+* Bounds checking in CtdlDirectoryLookup()
+
+Revision 654.14 2005/08/12 15:18:27 ajc
+* updated the roadmap
+
+Revision 654.13 2005/08/12 02:12:31 ajc
+* Added more room name macros
+
+Revision 654.12 2005/08/11 23:12:26 ajc
+* debian/citadel-server.postinst: remove reference to '?' file
+ (patch sent in by W. Goesgens)
+
+Revision 654.11 2005/08/11 13:55:26 ajc
+* Attempt to fix broken build of our replacement strcpy() on gcc2.96 by
+ issuing an #undef strcpy (it's a macro in that environment)
+
+Revision 654.10 2005/08/10 21:47:41 ajc
+* Added "instant expunge" and "allow spoofing" site config options.
+
+Revision 654.9 2005/08/10 21:10:54 ajc
+* moved "instant expunge" to imap_do_store() so that it gets called from
+ both STORE and UID STORE commands.
+
+Revision 654.8 2005/08/10 15:39:35 ajc
+* Experimental "instant expunge" option. For now, you have to put
+ -DINSTANT_EXPUNGE into the CFLAGS line of your Makefile. If we decide to
+ keep this it will become a site config option.
+
+Revision 654.7 2005/08/10 02:44:56 ajc
+* Applied changes to debian files sent in by WG
+
+Revision 654.6 2005/08/09 21:58:57 ajc
+* Removed the ./help/? hack; replaced with actual "show directory" code
+ in the server.
+
+Revision 654.5 2005/08/09 16:28:32 ajc
+* setup.c: added "exim4" to the list of non-Citadel MTA's which can be
+ disabled during setup.
+
+Revision 654.4 2005/08/09 14:13:36 ajc
+* newinstall.sh: hunt for both 'make' and 'gmake', but this time make sure
+ that the make in question is actually GNU Make, regardless of its name
+
+Revision 654.3 2005/08/08 14:57:19 ajc
+* Added a new "with header summary" mode to the MSGS command.
+
+Revision 654.2 2005/08/08 14:28:41 ajc
+* CtdlForEachMessage() -- avoid scanning v_seen sequence set for each message
+ during a MSGS_ALL fetch, because the results don't matter.
+
+Revision 654.1 2005/08/05 21:31:01 ajc
+* Any "delete message" operation which is synchronous to a client is now
+ deferred. This is accomplished by copying the message pointer to
+ the __CitadelDeletedMessages__ room, which keeps the reference count at
+ least 1. THE DREADED AUTO-PURGER can sweep it up later.
+
+Revision 654.0 2005/08/05 16:22:38 ajc
+* THIS IS 6.54
+
+Revision 653.18 2005/08/04 04:46:42 ajc
+* Bumped internal version number to 6.54
+* removed some tracing messages
+
+Revision 653.17 2005/08/04 04:22:09 ajc
+* imap_fetch.c: removed a spurious ')' character from the output
+ of the 'charset' field.
+
+Revision 653.16 2005/08/02 03:40:15 ajc
+* Removed instances of hard-coded CTDLDIR; this breaks -h
+
+Revision 653.15 2005/08/02 03:05:31 ajc
+* Added in Wilfried Goesgens' debian/ build directory.
+
+Revision 653.14 2005/08/02 02:49:12 ajc
+* Applied Wilfried Goesgens' dirconfig patch for more install targets
+
+Revision 653.13 2005/08/01 20:45:26 ajc
+* citadel_ipc.c: RUN_DIR not RUNDIR in line 2944
+
+Revision 653.12 2005/07/29 03:50:52 ajc
+* Temporarily disabling network_purge_spoolout() because it may be
+ removing files it shouldn't.
+
+Revision 653.11 2005/07/29 01:50:58 ajc
+* Create network/ directory hierarchy if it doesn't exist
+
+Revision 653.10 2005/07/28 03:22:19 ajc
+* Added a "macintosh readme" written by Mathew McBride
+
+Revision 653.9 2005/07/26 02:49:25 ajc
+* Applied a patch sent in by Wilfried Goesgens which allows the various
+ program and data directories to be set to any location on the host
+ system. This will allow packagers to do FSSTND-type configurations.
+
+Revision 653.8 2005/07/25 17:37:36 ajc
+* citadel_ipc.c: when performing a MSG4 command, don't return the
+ charset as part of the content-type string.
+
+Revision 653.7 2005/07/21 17:20:55 ajc
+* <.R>ead <U>ser-list now takes advantage of the server-side string match
+ if available. It still filters on the client side as well, in case the
+ server is older and sent back the whole list.
+
+Revision 653.6 2005/07/21 15:02:27 ajc
+* Server-side LIST command now accepts a search string.
+
+Revision 653.5 2005/07/19 20:04:31 ajc
+* MSG4 command now outputs content type *and* charset
+
+Revision 653.4 2005/07/19 17:30:13 ajc
+* Fixed a bug in the MIME parser that was causing it to prematurely go
+ out of scope when binary parts are included. (8-bit MIME is not yet
+ explicitly supported in the Citadel server, but WebCit uses this to
+ handle data coming in via the POST method.)
+
+Revision 653.3 2005/07/19 14:21:51 ajc
+* mime_parser.c: don't default to Content-type: text/plain; charset=us-ascii
+ because there are places where those fields actually need to be empty (in
+ WebCit, actually, but I don't want to fork the mime parser).
+
+Revision 653.2 2005/07/19 04:10:01 ajc
+* Updated the MIME parser API to include the "charset" portion of
+ the content type.
+
+Revision 653.1 2005/07/09 11:30:18 ajc
+* Removed trailing space at the end of the list of messages returned by
+ an IMAP SEARCH command.
+
+Revision 653.0 2005/07/06 21:41:52 ajc
+* THIS IS 6.53
+
+Revision 652.1 2005/07/06 21:41:17 ajc
+* Fixed bug #149 (incorrect sequence set optimization, resulting in
+ messages being marked as read/unread incorrectly during IMAP sessions)
+
+Revision 652.0 2005/07/06 02:28:38 ajc
+* THIS IS 6.52
+
+Revision 651.8 2005/07/06 02:28:20 ajc
+* citadel.lsm: removed. Nobody uses the Linux Software Map anymore.
+* Updated internal version number to 6.52
+
+Revision 651.7 2005/07/06 01:53:34 ajc
+* imap_fetch.c: additional self-check to avoid attempting to fetch messages
+ with UID's lower than 1. Hopefully this fixes bug #150.
+
+Revision 651.6 2005/07/01 22:07:27 ajc
+* CtdlSetSeen() -- when new vset overflows its size, trim it in such a way
+ so that it doesn't mark the oldest messages as new.
+
+Revision 651.5 2005/06/28 02:58:19 ajc
+* docs update
+
+Revision 651.4 2005/06/26 22:19:20 ajc
+* auth.c: applied fleeb's patch to validpw() to clean up FreeBSD compatibility
+
+Revision 651.3 2005/06/22 03:45:17 ajc
+* Documented the auto-log-cull as it relates to backup strategies
+
+Revision 651.2 2005/06/22 03:03:34 ajc
+* Automatic deletion of committed database logs is now a site-definable
+ setting.
+
+Revision 651.1 2005/06/16 02:42:58 ajc
+* There is now a dedicated thread for doing database checkpoints.
+
+Revision 651.0 2005/06/12 03:46:30 ajc
+* THIS IS 6.51
+
+Revision 647.42 2005/06/12 03:31:33 ajc
+* ChangeLog: restored automatic prepending of CVS commit log messages
+ to the top of this file. Somehow it got lost somewhere around 647.20
+
Revision 647.41 2005/06/12 03:30:20 ajc
* Test
-----------------------------
revision 647.40
date: 2005/06/12 03:24:15; author: ajc; state: Exp; lines: +0 -1
* When delivering list digests, put the name of the room in [brackets]
in the subject line. This makes lots of other software happy. (We
need to do this for non-digest list subscribers too.)
-----------------------------
+
revision 647.39
date: 2005/06/12 01:15:33; author: ajc; state: Exp; lines: +1 -0
* Provide separate filtered and unfiltered LMTP sockets.
-----------------------------
+
revision 647.38
date: 2005/06/09 20:10:02; author: ajc; state: Exp; lines: +0 -1
* Easy Install requires gmake
-----------------------------
+
revision 647.37
date: 2005/06/09 03:35:58; author: ajc; state: Exp; lines: +1 -0
* Allow IMAP DELETE of a zapped/forgotten/unsubscribed room
-----------------------------
+
revision 647.36
date: 2005/06/09 03:20:21; author: ajc; state: Exp; lines: +0 -1
* Do not log IMAP/POP/SMTP password commands
-----------------------------
+
revision 647.35
date: 2005/06/07 21:45:14; author: ajc; state: Exp; lines: +1 -0
* bounce messages need subjects
-----------------------------
+
revision 647.34
date: 2005/06/06 23:50:01; author: ajc; state: Exp; lines: +0 -1
* Made some changes to the calendar/uuid logic to fix a bug that caused
duplicate entries for an event to appear in some situations
-----------------------------
+
revision 647.33
date: 2005/06/03 22:26:03; author: ajc; state: Exp; lines: +1 -0
* When saving a vCard to a dedicated contacts room, always set the subject
to the name in the vCard.
-----------------------------
+
revision 647.32
date: 2005/06/03 22:22:36; author: ajc; state: Exp; lines: +0 -1
* Removed old Aethera hacks
-----------------------------
+
revision 647.31
date: 2005/06/03 04:01:27; author: ajc; state: Exp; lines: +1 -0
* Documentation update
-----------------------------
+
revision 647.30
date: 2005/06/02 19:32:30; author: ajc; state: Exp; lines: +0 -1
* Set the correct flags in the target room after an IMAP COPY command.
-----------------------------
+
revision 647.29
date: 2005/06/02 16:09:32; author: ajc; state: Exp; lines: +1 -0
* tools.c: generated uuid's no longer contain "{" and "}" characters.
-----------------------------
+
revision 647.28
date: 2005/06/02 03:39:44; author: ajc; state: Exp; lines: +0 -1
* Do not turn the initial thread into a worker thread after initialization.
Its stack size is too small, which could cause crashes.
-----------------------------
+
revision 647.27
date: 2005/06/01 22:32:57; author: ajc; state: Exp; lines: +1 -0
* Implemented a workaround for the IMAP "expungebob bug." Specifically, since
Thunderbird) to misbehave -- they were simply electing not to transmit the
flag at all. As a workaround, \Deleted is now advertised as a
PERMANENTFLAGS flag, even though it technically isn't.
-----------------------------
+
revision 647.26
date: 2005/06/01 18:31:50; author: ajc; state: Exp; lines: +0 -1
* serv_vandelay.c: updated the export format to include some of the config
items we missed.
-----------------------------
+
revision 647.25
date: 2005/06/01 05:23:26; author: ajc; state: Exp; lines: +1 -0
* The full text indexer now runs in its own dedicated thread instead of
thread and patiently wait for it to complete before exiting. These changes
all put together mean that citserver will not hang when it is terminated
during an indexing operation.
-----------------------------
+
revision 647.24
date: 2005/05/27 23:46:57; author: ajc; state: Exp; lines: +0 -1
* Removed OpenLDAP from Easy Install, because it was just too problematic.
-----------------------------
+
revision 647.23
date: 2005/05/26 04:25:29; author: ajc; state: Exp; lines: +1 -0
* Applied xmlns and etag patches sent in by Johannes Schneider that improve
GroupDAV support.
* Located and fixed a MIME Content-type bug that I accidentally created
while removing a temporary hack that was in place during the last KDE beta.
-----------------------------
+
revision 647.22
date: 2005/05/23 19:33:56; author: ajc; state: Exp; lines: +0 -1
* database_sleepycat.c: cdb_truncate() no longer encapsulated in a
transaction. Truncating a database in Citadel is always synchronous,
and with big tables (such as when the full text indexer is switched off
or reinitialized) it was running out of memory.
-----------------------------
+
revision 647.21
date: 2005/05/23 19:31:52; author: ajc; state: Exp; lines: +5 -1
* test
-----------------------------
+
Revision 647.20 2005/05/23 19:26:04 ajc
* Move the location of the "enable full text index" configuration item to
a new location. Reusing an old location was a stupid idea because old
Revision 572.39 2000/09/04 03:59:15 ajc
IO's changes:
- ----------------------------
+
revision 572.4
date: 2000/09/03 06:36:01; author: error; state: Exp; lines: +5 -1
Added HP/UX linker flag for dynamic modules to work
- ----------------------------
+
revision 572.3
date: 2000/09/01 06:50:00; author: error; state: Exp; lines: +8 -1
Changed to use integer macros from typesize.h for specific bit widths
- ----------------------------
Revision 572.38 2000/09/01 20:17:08 ajc
* msgbase.c: cmd_opna() - increase desired_section buffer from 64 to 256 bytes