]> code.citadel.org Git - citadel.git/blobdiff - citadel/docs/delivery-list.txt
Moved all of techdoc/ into docs/ ... for now
[citadel.git] / citadel / docs / delivery-list.txt
diff --git a/citadel/docs/delivery-list.txt b/citadel/docs/delivery-list.txt
new file mode 100644 (file)
index 0000000..e414917
--- /dev/null
@@ -0,0 +1,100 @@
+Description of the custom MIME type "application/x-citadel-delivery-list"
+
+ This MIME type may be found in the outbound queue room on Citadel systems,
+which is typically called "__CitadelSMTPspoolout__".  The room is flagged as
+a "system" room, which means that it's completely hidden to everyone, although
+an Admin can get to it if the full name is specified (but unlike a normal
+hidden room, it does not appear in the known rooms list on subsequent visits).
+ Messages in this format contain delivery instructions.  Therefore, for each
+message in the queue to be delivered to one or more recipients, there will be
+*two* messages in the room: one containing the actual message, and the other
+containing delivery instructions.  It is expected that the instructions
+message may be replaced at any time (using an Exclusive ID field) if delivery
+to only some of the recipients has been accomplished.
+ Citadel keeps reference counts of each message on disk.  Therefore if a
+message contains a mixture of local and remote recipients, there may be two
+or more references to the message itself, one of them being the one in the
+queue.
+  
+ A delivery list contains one or more lines of text, each line containing
+a single instruction (usually a recipient).  Fields are separated by the
+vertical bar character ("|") and there will always be at least one field on
+each line.
+ -- Once per Queue-Item --
+ INSTRUCTION:  msgid
+ SYNTAX:       msgid|0000000
+ DESCRIPTION:  
+    Defines the actual message for which we are providing delivery
+    instructions.  This instruction must precede all the others.  When
+    all deliveries have either succeeded or failed, both the instructions and
+    the copy of the message itself in the queue room should be deleted.  The
+    second parameter specifies the message ID in the local database.
+ INSTRUCTION:  submitted
+ SYNTAX:       submitted|999999999
+ DESCRIPTION:
+    Contains a timestamp designating when this message was first entered into
+    the system.
+ INSTRUCTION:  attempted
+ SYNTAX:       attempted|999999999
+ DESCRIPTION:
+    Contains a timestamp designating the date/time of the last delivery
+    attempt.
+ INSTRUCTION:  retry
+ SYNTAX:       retry|9999999
+ DESCRIPTION:
+    Citadel does not retry SMTP delivery at a fixed interval.  Instead, it
+starts at a nominal interval (15 minutes by default) and then doubles the
+interval after each failed attempt.  This instruction contains the interval
+which should currently be followed (and doubled again, if the next delivery
+fails).
+  
+  
+ INSTRUCTION:  bounceto
+ SYNTAX:       bounceto|Big Bad Sender[@host]
+ DESCRIPTION:
+    Where to send "bounce" messages (delivery status notifications).  The
+    contents of the second field are supplied as the "recipient" field to
+    CtdlSaveMsg(), and therefore may be a local username, a user on another
+    Citadel, or an Internet e-mail address.
+
+ INSTRUCTION:  envelope_from
+ SYNTAX:       envelope_from|blurdybloop@example.com
+ DESCRIPTION:
+    Sets a value to be used as the envelope sender during the 'MAIL FROM:'
+    phase of the SMTP transaction.  If an envelope sender is not supplied,
+    one is extracted from the message body.
+
+ INSTRUCTION:  source_room
+ SYNTAX:       source_room|Citadel Support
+ DESCRIPTION:
+    when sending mailinglist rooms this contains the source room for displaying
+    and messaging purposes.
+
+
+
+
+-- Once per Remote-part per Queue-Item --
+
+ INSTRUCTION:  remote
+ SYNTAX:       remote|friko@mumjiboolean.com|0|delivery status message
+ DESCRIPTION:
+    Names a recipient on a remote system to which the message should be
+    delivered.  The third parameter may contain any of the following values:
+       0 = No delivery has yet been attempted
+       2 = Delivery was successful
+       3 = transient error state; like connection failure or DNS lookup failure
+       4 = A transient error was experienced ... try again later
+       5 = Delivery to this address failed permanently.  The error message
+           should be placed in the fourth field so that a bounce message may
+           be generated.