# Úvod do UNIXu (SWI095x1h), 11. cvičení, 2005-05-04
# SU1, Malá Strana, MFF UK
#
# Řešení jsou odladěná na FreeBSD 4.11-RELEASE, případné konkrétní
# situace se týkají stroje mail.kolej.
#
# $DevNullCZ: cviceni-11.txt,v 1.1 2005/05/04 16:50:17 jp Exp $
#

#---------------------------------------------------------------------
# příklady
#---------------------------------------------------------------------

(a1) Z těla mailu, který dostanete, přečtěte příkazy typu "GET nnn"
kde "nnn" je číslo RFC. Příkaz "GET" musí být samotný a na začátku
řádky.  Příslušné RFC stáhněte a uložte si ho do nějakého adresáře.
Stačí uvažovat pouze jeden příkaz v mailu.

Pro otestování použijte vaši adresu, kterou máte na mail.kolej (tj.
LOGIN@mail.kolej.mff.cuni.cz, tedy např.
pechanec@mail.kolej.mff.cuni.cz). Mail dostanete jako vstup do
nějakého programu tak, že ve svém adresáři do souboru ".forward"
dáte něco jako "| /home/pechanec/get_rfc.sh". Sami se podívejte, jak
takový mail vypadá a jaký má formát. Podívejte se i na "man forward"
pro další informace.

Pokud v mailu, který dostanete, nebude žádný "GET" příkaz, daný mail
připojte (připojit, nepřepisovat !!!) do souboru vaší pošty
("/var/mail/<LOGIN_NAME>"), což je akce, která se udělá normálně,
pokud nepoužijete ".forward" soubor.  Maily si můžete přečíst
například programem "pine". Nejjednodušší způsob, jak si poslat
mail, je:

# echo test | mail xxx@mail.kolej.mff.cuni.cz

Ideální způsob, jak ověřit, že vám toto přesměrování mailu do vašeho
skriptu funguje, je dát do skriptu nejdříve toto:

# cat > test.txt

Pozor na to, že při použití relativní cesty je aktuálním adresářem
váš domovský adresář.

Stažení RFC lze udělat například takto:

# fetch http://www.faqs.org/rfc/rfc791.txt



(a2) Vytvořte skript (sadu skriptů), který zajistí fungování mailové
konference. Jako adresu konference použijte svoji adresu na
mail.kolej.mff.cuni.cz. Fungování ma být následující:

  - pro přihlašení do konference je v těle mailu příkaz:

#   subscribe <list_name> <address>

    tj. například "subscribe unix-l jp@devnull.cz"

  - pro odhlášení z konference bude v těle mailu příkaz:

#   unsubscribe <list_name> <address>

  - pro výpis přihlášených lidí v konferenci bude v těle mailu
    příkaz:

#   list <list_name>

Příkazy jsou na začátku řádky, nic jiného na řádce pak již není.
Poslání mailu do konference je simulováno mailem na vaší adresu se
subjectem, který má tvar "<listname>: <subject>".

Rozeslání mailu na všechny přihlášené adresy simulujte například
tak, že pro každou konferenci mějte zvláštní adresář, každý mail do
konference si sekvenčně očíslujte (dále označeno jako "<number>") a
za rozeslání považujte to, že vytvoříte adresář
"<list_name>/<number>_<subject>/" a v něm soubory, které se budou
jmenovat jako adresy lidí přihlášených v konferenci a tyto soubory
pak budou obsahovat text mailu (bez hlaviček), který mají dostat.

Na začátku testujte jen s jednou konferencí, uvažujte pouze
maximálně jeden administrativní příkaz v mailu (pokud tam není ani
jeden, opět mail připojte do "/var/mail/<LOGIN_NAME>"). Pokud
stihněte, uvažujte i více konferencí a více příkazu v jednom mailu.