X-Git-Url: https://code.citadel.org/?p=citadel.git;a=blobdiff_plain;f=citadel%2Fdocs%2Fsmtpclient.txt;h=01fad9282b607b5db8561d6db7528cb7be29982d;hp=6c48df93480c406192e5f8bddaa0715514a552ea;hb=84b0681dca33397ed0a1770f822b8cfdbfee5574;hpb=a955a6fb8b90910f8d2011b59a9dd025eb267ac0 diff --git a/citadel/docs/smtpclient.txt b/citadel/docs/smtpclient.txt index 6c48df934..01fad9282 100644 --- a/citadel/docs/smtpclient.txt +++ b/citadel/docs/smtpclient.txt @@ -1,15 +1,13 @@ ====== SMTP Client ====== ===== source files involved: ===== -event_client.h - AsyncIO structure, interfaces to event Queue - modules/smtp/smtp_clienthandlers.h - SMTP-Client Context struct & functions. modules/smtp/smtpqueue.h - parsing of Queue mails & respective structures modules/smtp/serv_smtpqueue.c - queue handling executed by housekeeping thread; de/serialization of Queue-control-messages modules/smtp/serv_smtpeventclient.c - business logic -modules/smtp/smtp_clienthandlers.c - Protocoll logic +modules/smtp/smtp_clienthandlers.c - Protocol logic msgbase.c - writes spool messages + spoolcontrol files @@ -18,7 +16,7 @@ event_client.c - base event functions modules/eventclient/serv_eventclient.c - the event queue modules/c-ares-dns/serv_c-ares-dns.c - nameserver lookup -===== Spool Controll ===== +===== Spool Control ===== Citadel stores two messages for mail deliveries; the spool control message format is described in delivery-list.txt; its generated in msgbase.c, and de/serialized in serv_smtpqueue.c. The for Spool-control structures are kept in memory as OneQueItem per Spool-Control-File, and MailQEntry per Recipient of the message. For each MailQEntry which is still to be delivered, one SmtpOutMsg (containing the AsyncIO context) is spawned. The Jobs are processed in paralell, each job finished triggers an update of the spool control message, so we don't accidently deliver a message twice to one recipient. If the last recipient has succeeded, or permanently failed, the spool-file and the mail-file are removed from the spool room.