address_evaluate
  Returns a linked list of address_t structures based on
  a list of email addresses

address_evaluate
  Same as above, except for one address

eps_begin
  Initializes all EPS API

eps_next_header
  Returns the next header or NULL

eps_header_free
  Deallocates the most recent header returned

eps_end
  Closes all EPS related allocations/fds/etc

eps_next_line
  Fetch the next email line.  Optionally does
  break checking.

eps_rewind
  Rewinds to the top of the email message

eps_address_evaluate
  Evalutes a list of email addresses and stores in a linked list

eps_address_evaluate_one
  Same as above, except expects only one address

eps_address_kill
  Cleans up eps_address_evalute* work

email_process
  The base for the entire filtering system,
  causes the fallthrough which brings the email
  under filtering rules.

email_init
  Initializes everything before processing an email

email_process_headers
  Calls in a header from the file, converts it to
  a header structure, and turns over to filters.

email_process_header
  Calls a variety of functions for storing header
  internals

email_process_body
  Calls in a body line from the file, and hands
  over to the filters.  If content_type is
  multipart, and a boundary is found, control is
  passed over to email_process_multipart

email_process_multipart
  Handles a single multipart attachment.  Returns
  control to email_process_body when done.
  Calls _headers and _body

email_process_multipart_headers
  Handles MIME headers

email_process_multipart_body
  Handles the MIME body based upon the MIME headers

email_process_remaining
  Mostly a debugging function.  Brings in line-by-line
  whatever remains in the email.

email_strip_crlf
  Removes CRLF from email message body lines

email_content_type
  Fetches boundary atom from content-type header.
  Uses header_fetch_atom

email_mime_version
  Checks mime version and sets appropriate content bits

email_is_boundary
  Checks if an email line is a boundary

email_header_internal
  Checks for header lines we're interested in looking
  at during processing such as Content-type, etc.

file_open_temp
  Allocates a new temporary file with proper permissions
  for temporarily storing email information

file_insert_data
  Inserts information into the temporary file
  Used to insert email

file_close_temp
  Closes related descriptors and unlinks
  file.

file_rewind
  Rewinds to the top of the temporary file
  for processing.

file_next_line
  Gets the next 'line' from the file.  Optionally,
  it can check for a 'break' in the email.

file_clear_brk
  Clears break status (see above)

file_next_line_brk
  Returns line by line until it finds a break

file_is_eof
  Returns EOF status on temporary file

filter_init
  Initializes filter variables

filter_read
  Reads filter script
  Calls subfunctions to store filters in memory

filter_parse
  Parses a filter line to understand what
  it means.

filter_new_rule
  Allocates a new filter rule

filter_add_rule
  Adds the rule to the linked list of rules/actions

filter_new_action
  Allocates a new filter action

filter_add_action
  Adds the action to the rule linked list

filter_show
  Purely debugging.  Describes whats in
  the filtering linked list.

filter_parse_header_2
  HIGHLY depricated

filter_check_negated
  Not yet implemented.
  Checks for rules which were negated, and didnt
  match.

filter_run_actions
  Probably will be depricated.
  Runs through actions associated with a rule

filter_action_okay
  Checks for action/rule mismatches.
  Example: 'replace' action with an 'attachment' rule

filter_action_replace
  More deprication?
  Not yet implemented.
  Preforms a replace action with email data

filter_parse_content_type
  Depricated
  Used to parse a boundary from Content-type headers

filter_parse_email
  Depricated

filter_parse_header
  Depricated

filter_header
  Depricated because of syntax
  Will take header_t in the future

filter_regexp
  Compares data to a regular expression

atom_begin
  Begins a linked list of atoms for a header structure

atom_new
  Allocates a new atom on the linked list

atom_end
  Returns pointer to beginning of atom list

header_allocate
  Allocates a new header structure

header_parse
  The top of the header parsing functions
  This function causes all fall-through.
  Based on an email header line, returns a
  full header structure.

header_fetch_atoms
  Returns an atom linked list based upon
  header data.  Calls subfunctions.

header_parse_atom
  Handles an individual atom data parse.

header_kill
  Deallocates header information

header_fetch_atom
  Returns a header's atom data by atom name

header_content_type
  Parses content-type email header for boundaries
  and sets content_type in email.c

int_stdin_init
  Initializes an email received from stdin
  Causes fallthrough to other subfunctions

read_message_stdin
  Reads a message from stdin

mstrdup
  Allocates a copy of a string.
  If the string is blank, it still
  allocates.

mem_init
  Initializes MEM_DEBUG functions for
  tracking memory leaks/use

mem_kill
  Performs tests on the above after the
  program is done with operations.

mem_chk
  Intensive function which is used to see
  if functions are playing in eachothers
  memory at allocation time.

mmalloc
  Homebrew allocation.  Calls subfunctions.

mfree
  Homebrew deallocation.

merror
  Fatal error handling

rfc2822_init
  Initializes handling of unrolling

rfc2822_is_rolled
  Determines if a line has rolled information on it

rfc2822_unroll
  Unrolls and returns the next line

rfc2822_line_addr
  Returns the address to the line

rfc2822_remove_crlf
  Removes CRLF and other line terminators

rfc2822_is_wsp
  Determins if a character is whitespace

rfc2822_escaped
  Returns whether or not it understood an escape
  sequence.

rfc2822_remove_comments
  Removes comments from a full email header
  Does literal checking

rfc2822_next_token
  Runs through an email headerwhich has had it's comments
  removed, while checking literals, and looks for a token
  terminator.  Optionally it will return an error if it
  finds a terminator character from a list.

rfc2822_convert_literals
  Not yet implemented.
  Final processing on header data.
  Converts literals to their meanings.

time_init
  Stores current time in memory

time_compare
  Compares current time to time in memory for process
  time testing

unroll_init
  Initializes unrolling of an email

unroll_next_line
  Returns the next line of an email
  fully unrolled

unroll_return
  Complicated :)

unroll_return_swap
  Even more complicated

unroll_file_next_line
  Looks for the next line in a file
  while checking for an email 'break'.

structure_message_id
  Generate message-id string based on string prefix, time, pid

eps_message_id
  references structure_message_id

qmail_inject
  Opens a stream to qmail_inject via popen()

eps_content_type
  returns the content_type of the current message
