<!--
   $FML: chapter.sgml,v 1.3 2005/09/25 04:27:17 fukachan Exp $
   $jaFML: chapter.sgml,v 1.12 2003/04/15 14:51:37 fukachan Exp $
-->

<chapter id="delivery">
	<TITLE>
	&fml8; Mail Delivery System
	</TITLE>

<sect1 id="fml8-delivery">
	<title>
	The Difference Between &fml4; And &fml8;
	</title>

<para>
One of purposes of &fml8; is unification and abstraction of member
list operations. Mail distribution is based on the following module
Mail::Delivery.
</para>

<para>
Mail::Delivery class provides SMTP, ESMTP and LMTP delivery library
interface. Mail::Delivery is an adapter layer for Mail::Delivery
subclass ( SMTP ESMTP LMTP ).
</para>

<para>
For example,
<screen>
    use Mail::Delivery::SMTP;
    my $service = new Mail::Delivery::SMTP;
    if ($service->error) { Log($service->error); return;}

    $service->deliver(
                      {
                          mta             => '127.0.0.1:25',

                          smtp_sender     => 'rudo@nuinui.net',
                          recipient_maps  => $recipient_maps,
                          recipient_limit => 1000,

                          mesage          => $message
                      });
</screen>
where $message is a 
<link linkend="module.mail.message">
Mail::Message
</link>
object.
</para>

</sect1>


<sect1>
	<title>
	<link linkend="module.mail.message">
	Mail::Message
	</link>
	Object
	</title>

<para>
This object provies message analyzer.
It analyzes a message and build the following object chains on memory.
<screen>
header -> body
header -> preamble -> part1 -> part2 -> trailor (multipart)
</screen>
</para>

<para>
<link linkend="module.mail.message">
Mail::Message
</link>
class provides such data structure described above.
</para>

</sect1>


<!-- mail queue -->
&sect.mailqueue;


<sect1 id="delivery.qmgr">
	<title>
	Queue Management System
	</title>

<para>
Since 2004 summer, delivery system of &fml8; is under queue management
system like MTA. Now fml8 can deliver again messages by itself.
</para>

</sect1>


<sect1>
	<title>
	Discussion: FML::Mailer Is Apropriate ?
	</title>

<para>
Only FML::Process::QueueManager uses FML::Mailer.
So, independent FML::Mailer class is needed ?
</para>

<para>
In usual codes, reply_message() handles all message operations.
FML::Mailer is always behind it.
But modules other than reply_message() is created in the future ?
Hmm, ...
</para>

<para>
FML::Mailer should be merged into FML::Process::QueueManager class?
</para>

</sect1>


<sect1 id="recipes.delivery">
	<title>
	Delivery TIPS 	
	</title>

<qandaset>

&recipes.delivery;

</qandaset>

</sect1>


</chapter>
