OSEC

Neohapsis is currently accepting applications for employment. For more information, please visit our website www.neohapsis.com or email hr@neohapsis.com
 
Subject: Re: Some questions on postfix, SUMMARY
From: Marco d'Itri (mdlinux.it)
Date: Fri Mar 03 2000 - 18:00:43 CST


On Mar 03, "Karimov, Rashid (NBC, CNBC)" <Rashid.Karimovnbc.com> wrote:

>Some of our messages are generated on WinNT (don't ask me why ! :),
>and if an NT system can just drop off a message into NFS-mounted maildrop
>queue, it would ease the transition.
This is bad, for reliability and for performance.
I think what you really need is a small custom SMTP client which you can
embed in your applications. It would talk SMTP to the postfix servers
(use DNS round robin, MX records or add some other kind of load
balancing you like) and just send it all the messages.
If no SMTP server is available the mail is spooled in a local maildir
like spool (even NFS mounted, if you don't have enough local storage).
There is no need to do any locking, just write to a single file all
the messages.

An possible API (thread safe, just open more connections if SMTP latency
is a problem) would be:

struct SMTP_CONNECTION ...

/* open a new connection to server. If there is no server available
   open a new file in fallback_spool */
SMTP_CONNECTION *open_smtp_connection(char *server, char *fallback_spool);

/* send the message in XXX (a buffer, fd or some other input form you
   like) to the recepients using the conn connection already opened.
   If the connection fails, write the message to the spool. */
int maildrop_it(SMTP_CONNECTION *conn, char **recepients, XXX);

int close_smtp_connection(SMTP_CONNECTION *conn);

-- 
ciao,
Marco