+typedef struct address_t {
+ char *personal; /* real name of address */
+ char *mailbox; /* mailbox and host address */
+ int group; /* group mailbox? */
+ struct address_t *next;
+} address_t;
+
+typedef struct envelope_t {
+ address_t *return_path;
+ address_t *from;
+ address_t *to;
+ address_t *cc;
+ address_t *bcc;
+ address_t *sender;
+ address_t *reply_to;
+ address_t *mail_followup_to;
+ char *list_post; /* this stores a mailto URL, or nothing */
+ char *subject;
+ char *real_subj; /* offset of the real subject */
+ char *message_id;
+ char *supersedes;
+ char *date;
+ char *x_label;
+ char *organization;
+#ifdef USE_NNTP
+ char *newsgroups;
+ char *xref;
+ char *followup_to;
+ char *x_comment_to;
+#endif
+ BUFFER *spam;
+ LIST *references; /* message references (in reverse order) */
+ LIST *in_reply_to; /* in-reply-to header content */
+ LIST *userhdrs; /* user defined headers */
+ unsigned int irt_changed:1; /* In-Reply-To changed to link/break threads */
+ unsigned int refs_changed:1; /* References changed to break thread */
+} ENVELOPE;
+
+
+DO_INIT(address_t, address);
+void address_wipe(address_t *);
+
+DO_NEW(address_t, address);
+DO_DELETE(address_t, address);
+DO_SLIST(address_t, address);
+
+