Qmail je náhrada sendmailu. Tento výtah z dokumentace obsahuje informace užitečné pro uživatele (ne pro administrátory systému). Originální dokumentace je přístupná na www.qmail.org.
Každý uživatel si může ve svém domácím adresáři vytvořit (například textovým editorem joe) soubor .qmail, kterým může měnit doručování e-mailu (pokud administrátor systému tuto možnost neomezí).
Standardně Qmail nově došlé dopisy ukládá do souboru Mailbox v domácím adresáři uživatele. Pokud existuje v domácím adresáři soubor .qmail a má nenulovou délku, řídí se Qmail při doručování pošty instrukcemi v něm uvedenými. Pokud soubor .qmail existuje, ale je prázdný, Qmail doručuje poštu standardně do Mailbox.
Každý řádek může obsahovat jednu instrukci, Qmail je vykonává postupně. Instrukce mohou být:
Uživatel si chce přesměrovat všechnu poštu na adresu jan.jirka@post.cz. .qmail může obsahovat:
&jan.jirka@post.cz
Uživatel, který má login jirkaj, chce, aby mu pošta byla přesměrována na adresu jan.jirka@post.cz, ale kopii každého dopisu chce pro jistotu ponechat i zde (neboli standardně uložit do souboru Mailbox v domácím adresáři). Do souboru .qmail napíše (s komentářem):
# vsechno forwarduj na jan.jirka@post.cz,
# kopii ponech tady
&jan.jirka@post.cz
./Mailbox
Qmail kontroluje přístupová práva k souboru .qmail a do domácího adresáře uživatele a v některých případech z bezpečnostních důvodů poštu nedoručí a ponechá ji ve frontě:
Pokud Qmail při ukládání dopisu do souboru Mailbox zjistí, že nemůže dopis uložit celý, protože uživatel má zaplněné všechno přidělené místo na disku (dojde k překročení přidělené quoty), ponechá dopis ve frontě a Mailbox zkrátí na původní délku. Uživatel tedy nezjistí, že mu přišel dopis, který se mu na disk nevešel. Dopis čeká ve frontě a Qmail se ho pokouší v pravidelných intervalech doručit znovu. Pokud uživatel uvolní dost místa, doručí ho, pokud ne, vrátí ho zpět jako nedoručitelný. Mezitím se mohou do Mailboxu uložit další kratší nově došlé dopisy. Problém je v tom, že uživatel není informovaný o tom, že ve frontě pro něj čeká velký dopis, pro který by měl na disku uvolnit místo.
Pokud .qmail obsahuje samé komentáře, pošta se zdá se někam ztrácí :-( Pozor na to.
Každý uživatel si může zavést další adresy ve tvaru login-něco@server.domena (nebo login-něco@doména, záleží na konfiguraci serveru). Pošta poslaná na tyto adresy se řídí podle souborů .qmail-něco v uživatelově domácím adresáři, obsah souborů je stejný jako u .qmail.
Příklad: Uživatel jirkaj chce, aby mu známí posílali urgentní vzkazy na mobilní telefon (adresa +420603712345@sms.paegas.cz), ale nechce zveřejnit jeho telefonní číslo. Vytvoří si proto adresu jirkaj-urgent@ruk.cuni.cz a poštu z ní forwarduje na mobilní telefon. Založí si soubor .qmail-urgent a do něj napíše
&+420603712345@sms.paegas.cz
Pokud pro adresu příslušný .qmail-něco neexistuje, Qmail hledá soubor .qmail-default a řídí se podle něho. Pokud ani ten neexistuje, vrátí poštu jako nedoručitelnou.
Qmail při zpracování instrukcí v souboru .qmail postupuje takto:
Pokud se všechny instrukce mají provést nezávisle na sobě a krach jedné neovlivnit provedení ostatních, chce to vytvořit pro každou samostatný .qmail-něco soubor a do .qmail dát jen forwardy na všechny .qmail-něco soubory s instrukcemi. Ty se pak provádějí současně.
Jestliže .qmail soubor obsahuje instrukci | program , Qmail spustí sh -c program v domácím adresáři uživatele a předá mu dopis na standardní vstup. Program s nastaveným SUID bitem spustit odmítne. Záhlaví dopisu nezačíná standardním From řádkem. Programy, které pracovaly se sendmailem, ho většinou potřebují. Je možné ho doplnit programem preline (.qmail pak obsahuje | preline program ).
Návratové kódy programu jsou interpretovány následovně: 0 znamená úspěšné doručení; 99 znamená, že doručení bylo úspěšné, ale Qmail nemá pokračovat v interpretování dalších příkazů v .qmail souboru; 100 znamená, že doručení se nezdařilo (hard error); 111 znamená, že doručení v této chvíli není možné, ale má se za chvíli zkusit znovu (dopis zůstane ve frontě, soft error); 64, 65, 70, 76, 77, 78 a 112 hard error; ostatní soft error.
Qmail nastaví spouštěnému programu několik proměnných prostředí:
SENDER - adresa odesílatele
NEWSENDER - adresa odesílatele (??)
RECIPIENT - adresa příjemce ve tvaru local@domain
USER - login uživatele
HOME - domácí adresář uživatele
HOST - domain část adresy příjemce
LOCAL - část adresy příjemce před zavináčem
EXT - .qmail extenze (.qmail-ext)
EXT2 - druhá .qmail extenze (.qmail-ext-ext2)
EXT3 - třetí .qmail extenze (.qmail-ext-ext2-ext3)
EXT4 - čtvrtá .qmail extenze (.qmail-ext-ext2-ext3-ext4)
DTLINE - Delivered-To: řádka záhlaví
RPLINE - Return-Path: řádka záhlaví
UFLINE - UUCP-style From řádka (první řádka záhlaví dopisu v mailboxu)
POZOR! Proměnné prostředí nejsou v uvozovkách, mohou obsahovat speciální znaky, které při jejich zpracování v shellu mohou způsobit nežádoucí chování programu (potenciální "security hole", kterou musí ošetřit autor programu).
Jednoduchý program pro odesílání pošty (náhrada klasického unixového mail)
Použití: mailsubj subject adresa1 adresa2 ...
Text dopisu čte ze svého standardního vstupu
Příklad: cat dopis | /var/qmail/binmailsubj 'pozvanka na predtaveni' jan.jirka@ruk.cuni.cz