HELO <doména> -- zahajuje komunikaciNěkterě další časté SMTP příkazy:
RSET -- vyčistí obálku
NOOP -- nedělá nic, obálka se nemění
MAIL FROM:<adresa> -- přidání odesílatele do obálky
RCPT TO:<adresa> -- přidání adresáta do obálky
DATA -- zahajuje přenos zprávy (hlavička + tělo zprávy). Zakončí se <CR><LF>.<CR><LF> (tečka na samostatném řádku).
QUIT ukončí spojení
EHLO <domena> -- jako HELO, ale vypíše nestandardní akceptované příkazy a další parametryPříklad komunikace:
VRFY <adresa> -- zkontroluje zda server akceptuje zprávu pro danou adresu
EXPN <adresa> -- vypíše adresy v mailing listu.
$ telnet localhost 25 Trying 127.0.0.1... Negotiating binary mode on output. Connected to localhost. Escape character is '^]'. 220 brnenska.zoo.cz ESMTP Postfix (Debian/GNU) HELO prazska 250 brnenska.zoo.cz MAIL FROM:<zirafa@prazska.zoo.cz> 250 Ok RCPT TO:<krokodyl@brneneska.zoo.cz> 250 Ok DATA 354 End data with <CR><LF>.<CR><LF> Ahoj krokodyle, jak se mas? Ja uz mam vseho po krk. Zirafa ze ZOO . 250 Ok: queued as 5194E14A53 QUIT 221 Bye Connection closed by foreign host. |
Received: from <domena klienta> by <domena MTA serveru> via <fyz. adresa> with <protokol> id <msg. id> for <puvodní formát adresy příjemce> ; <datum, čas>(Některé části mohou být vynechány).
Ke čtení: Kromě rfc2821: Bernstainova refarenční příručka o SMTP
<klíč> : <parmetry>klíč musí začínat na začátku řádku. Delší parametry mohou být rozděleny do více řádků, každý další řádek se uvozuje bílým místem.
hlavičky se dělí na strukturované a nestrukturované.
Nestrukturované se počítačem nezpracovávají a jejich parametry mohou obsahovat libovolnou posloupnost znaků (př: Subject:).
Strukturované jsou tvořeny tak, aby mohly být analyzované počítačem a jejich vytváření má určitá pravidla -- například zápis adres jako <adresa>, komentářů (komentář), textu obsahujícího speciální znaky "text s mezerou", doménového literálu [ip.ad.re.sa]. Takto je např. tvořena hlavička Received:
Některé standardní hlavičky:
Return Path: zpáteční cesta k odesílateliMinimální hlvičky obsahují klíče From:, Date: a To: nebo Bcc:
Received: záznamy přidané během zpracování
Replay to: adresa pr zaslání odpovědi
From: adresy odesilatelů
Sender: adresa skutečného odesilatele pokud je jiná než From:, nebo je ve From: více adres.
To: adresáti
Cc: adresy na které se dopis odešle i když nejsou hlavními adresáty
Bcc: tajné kopie. Jako cc, ale adresy se vymažou z ostatních mailů
Subject: předmět
Message ID: identifikace zprávy
Resent-klic: při přeposílání se klíče původních hlaviček uvodí Resent-
X-neco: doplňující hlavička
Mime-version: požitá verze MIME. viz dále
To v dnešní době nevyhovuje a proto se používá standard MIME (Multipurpose Internet Mail Extensoins) rfc2045-2049. Standard MIME také určuje jak se do zprávy zahrnují netextové subory. Jednotlivé části jsou oddělené oddělovačem. Za ním následují MIME hlavičky. Netextová data se kódují kódováním Base64.
>From krokodyl@brnenska.zoo.cz Sun Mar 23 16:32:15 2003 Return-Path: <krokodyl@brnenska.zoo.cz> X-Original-To: zirafa Delivered-To: zirafa@prazska.zoo.cz Received: by prazska.zoo.cz id AA08075; Sun, 23 Mar 2003 16:32:15 +0100 (CET) Received: by brnenska.zoo.cz (Postfix, from userid 1000) id 3CF4914A54; Sun, 23 Mar 2003 16:30:36 +0100 (CET) Date: Sun, 23 Mar 2003 16:30:36 +0100 To: Zirafa ze ZOO <zirafa@prazska.zoo.cz> Subject: Re: Your Mail Message-ID: <20030324065713.GA9311@brnenska> References: <20030324052402.3320814A53@brnenska.zoo.cz> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="FCuugMFkClbJLl1L" Content-Disposition: inline In-Reply-To: <20030324052402.3320814A53@brnenska.zoo.cz> From: krokodyl@brnenska.zoo.cz (Krokodyl z reky Nil) --FCuugMFkClbJLl1L Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Ahoj zirafo, diky za zpravu. Ja se mam fajn. Kunkaji tu zaby. Zdravi te krokodyl --FCuugMFkClbJLl1L Content-Type: audio/mpeg Content-Description: zabi kunk Content-Disposition: attachment; filename="zabi_kunk.mp3" Content-Transfer-Encoding: base64 //8OA4LGXdBnm/827///mdBt3///6H8yaf//7/80LCyTD9P/8xJRcMEazLZRkSEaULmZKZM4 YDnIH0hD1h5yBOiZSkzJWQlA9aD787KJ0QLHgiIQfT1h7IRNtKcPu+4lMyV7B7IXZiIw9nKU TAgxAve0HnKQtn2HrIekD6zfD0hbPWb/+5JE/4AL8ABLAAAAAAAACWAAAAAAAAEsAAAAAAAA pkC1k2y9h6zEwQSHAAGkhiZkplIH6mB+MOkdBZQL9NC7EiUwAx2pKNj9+R8lnZG/tdTnf97q --FCuugMFkClbJLl1L Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="zaba.txt" .--._.--. ( O O ) / . . \ .`._______.'. /( )\ _/ \ \ / / \_ .~ ` \ \ / / ' ~. { -. \ V / .- } _ _`. \ | | | / .'_ _ >_ _} | | | {_ _< /. - ~ ,_-' .^. `-_, ~ - .\ --FCuugMFkClbJLl1L-- |
Oproti monolytickému kolosu sendmail se postfix skládá s více menších částí, které se starají specifickou činnost a navzájem spolu komunikují.
Cestu zprávy přes postfix lze rozdělit do dvou částí. První se odehrává příchodem zprávy do mailserveru a končí jejím uložím do incoming fronty. Odtud je vyzvednuta v druhé fázi do fronty active a dále zpracována až systém nějakým způsobem opustí (doručení, přeposlání, smazání).
Zpráva se může do systému dostat buď lokálně (lokální MTA je první v řadě) nebo ze sítě. Lokálně je přepravována programem sendmail, který ji zařadí do fronty maildrop odkud se přes program pickup dostane k programu cleanup. Ke zpracování programem cleanup se dostanou i zprávy doručené ze sítě, které putují přes SMTP (démon smtpd). Program cleanup upraví adresy do vhodného tvaru, provede přepisy adres, maškarádu a uloží zprávo do fronty incoming.
Z fronty incoming je část zpráv vyzvednuta do fronty active programem qmgr, který je ústřední částí zpracování v druhé fázi. Program qmgr se snaží o doručení zpráv. Zprávy pro lokální počítač předává programu local, který je ukládá do mailboxů nebo v případě přesměrování v souboru .forward předává opět vstupní části (programu cleanup). Zprávy určené pro jiné počítače posílá qmgr přes rozhraní smtp dále do sítě. Maily, které se napodařilo přeposlat nebo dručit se ukládají do fronty deferred, odkud jsou opět po určité době vyzvedávány k dalšímu pokusu o doručení.
obrázek z
www.postfix.org
můžeme zde najít následující soubory:
main.cf -- hlavní konfigurační souborVětšinu konfiguračních souborů je potřeba pro postfix převést do indexovaného formátu příkazem postmap. Také použití takto vygenerovaných konfigračních souborů se musí uvést v souboru main.cf
master.cf -- konfigurační soubor pro démona master; řídí zacházení se zdroji a pod.
access -- nastavení pravidel k přistupu přes SMTP
chronical -- přepis adres, změny v hlavičce...
virtual -- virtuální přepis adres. Přepisuje se pouze v obálce
relocated -- kam přeposílat maily pro již neexistující adresy
transport -- lze měnit způsob doručování zpráv
Konfigurační soubory jsou velmi podrobně okomentované a proto by bylo zbytečné popisovat zde jejich nastavování. Pro většinu případů stačí nastavit v souboru main.cf
myhostname plné doménové jméno počítače mydomain doména ve které je umístěn $myhostname
masquerade_domains = $mydomain masquerade_classes = envelope_sender, header_sender, header_recipient masquerade_exceptions = root krokodylvšechny adresy typu jmeno@neco.blabla.$mydomain se prepísí na jmeno@$mydomain a provede se tak v obálce a hlavičce v polích Sender a Recepient. Pro roota a uzivatele krokodyl se maškaráda provádět nebude. V případě, že je u masquerade_domains více jmen uplatňuje se první shoda.
Ke čtení:
Dokumentace k postfixu: www.postfix.org/docs.html
Jmenovitě popis konfigurace: www.postfix.org/basic.html
Průvodce instalací a konfigurací:
www.bsdtoday.com/2000/September/Features274.html