--- /dev/null
+diff -ruN snapshot-20001005.orig/Makefile.in snapshot-20001005/Makefile.in
+--- snapshot-20001005.orig/Makefile.in Sun Oct 1 02:42:42 2000
++++ snapshot-20001005/Makefile.in Mon Dec 4 21:33:21 2000
+@@ -6,7 +6,7 @@
+ src/lmtp src/trivial-rewrite src/qmgr src/smtp src/bounce src/pipe \
+ src/showq src/postalias src/postcat src/postconf src/postdrop \
+ src/postkick src/postlock src/postlog src/postmap src/postsuper \
+- src/nqmgr src/spawn src/flush # src/base64 proto man html
++ src/nqmgr src/spawn src/flush virtual # src/base64 proto man html
+
+ default: update
+
+diff -ruN snapshot-20001005.orig/src/global/mail_params.h snapshot-20001005/src/global/mail_params.h
+--- snapshot-20001005.orig/src/global/mail_params.h Thu Oct 5 05:23:06 2000
++++ snapshot-20001005/src/global/mail_params.h Mon Dec 4 21:34:53 2000
+@@ -1057,6 +1057,28 @@
+
+ extern void mail_params_init(void);
+
++/*
++ * Tunables for the "virtual" local delivery agent
++ */
++#define VAR_VIRT_MAILBOX_MAPS "virtual_mailbox_maps"
++#define DEF_VIRT_MAILBOX_MAPS ""
++extern char *var_mailbox_maps;
++#define VAR_VIRT_UID_MAPS "virtual_uid_maps"
++#define DEF_VIRT_UID_MAPS ""
++extern char *var_uid_maps;
++#define VAR_VIRT_GID_MAPS "virtual_gid_maps"
++#define DEF_VIRT_GID_MAPS ""
++extern char *var_gid_maps;
++#define VAR_VIRT_USEDOTLOCK "virtual_usedotlock"
++#define DEF_VIRT_USEDOTLOCK 0
++extern bool var_virt_usedotlock;
++#define VAR_VIRT_MINUID "virtual_minimum_uid"
++#define DEF_VIRT_MINUID 100
++extern int var_virt_minimum_uid;
++#define VAR_VIRT_MAILBOX_BASE "virtual_mailbox_base"
++#define DEF_VIRT_MAILBOX_BASE ""
++extern char *var_virt_mailbox_base;
++
+ /*
+ * Content inspection and filtering.
+ */
+diff -ruN virtual.orig/mailbox.c virtual/mailbox.c
+--- virtual.orig/mailbox.c Sun Jan 23 12:31:22 2000
++++ snapshot-20001005/virtual/mailbox.c Mon Dec 4 21:48:03 2000
+@@ -135,7 +135,7 @@
+ if (deliver_flock(vstream_fileno(dst), why) < 0)
+ vstream_fclose(dst);
+ else if (mail_copy(COPY_ATTR(state.msg_attr), dst,
+- copy_flags, why) == 0) {
++ copy_flags, "\n", why) == 0) {
+ status = 0;
+ }
+ }
+diff -ruN virtual.orig/maildir.c virtual/maildir.c
+--- virtual.orig/maildir.c Sun Jan 23 12:31:23 2000
++++ snapshot-20001005/virtual/maildir.c Mon Dec 4 21:49:33 2000
+@@ -130,7 +130,7 @@
+ || (dst = vstream_fopen(tmpfile, O_WRONLY | O_CREAT | O_EXCL, 0600)) == 0)) {
+ vstring_sprintf(why, "create %s: %m", tmpfile);
+ } else {
+- if (mail_copy(COPY_ATTR(state.msg_attr), dst, copy_flags, why) == 0) {
++ if (mail_copy(COPY_ATTR(state.msg_attr), dst, copy_flags, "\n", why) == 0) {
+ if (link(tmpfile, newfile) < 0
+ && (errno != ENOENT
+ || (make_dirs(curdir, 0700), make_dirs(newdir, 0700)) < 0