Poštovní server




Funkční popisované minimum je courier-imap,postfix,postfixadmin,mysql,apache,php
Můžeme doplnit o kontextovy filtr amavis-new,antivir clamAV a spamassina +webové poštovní rozhraní Squirrelmail


Popis struktury článku
Článek budu doplnovat postupně. V první části bude popsána vždy teorie a možnosti, jaké ten který program nabízí a následovat bude popis instalace a funkčního řešení. U článků, na které jsem se ještě nedostal, bude nejspíše jen to řešení včetně instalace a základní konfigurace,tak aby to fungovalo


OBSAH

Postfix


Postfix
Pomocné utility (newaliases, postqueue, postsuper)
Spouštěče omezení
Vestavěné filtry
Whitelist a blacklist
Graylist
Virtuální domény
Autentizace SMTP
TLS/SSL
Před instalací
Instalace postfixu
Config main.cf
Config master.cf
Config pro mysql
Dokončení
Kontrola běhu
Užitečnosti

Courier imap + SASL2


Instalace
Config imapd
Config imapd-ssl
Config pop3d
Config pop3d-ssl
Config authmysqlrc
Config authdeamonrc
Kontrola běhu

Postfixadmin


Instalace
Vytvoření db
Kontrola db
Config
Doladění
Vakace
Autentizace
Užitečnosti

Clam AV


Instalace
Configy
Doladění

Amavis-new


Instalace
Config
Doplnění configů postfixe

Spamassassin


Instalace
Config
Razor
FuzzyOCR

Squirrelmail


Instalace
Nastavení apache
Upgrade Squirrelmail



Postfix


Postfix má dva konfigurační soubory. Main.cf a master.cf. Main.cf je konfigurák, který říká postfixu , jak se má chovat v určitých situacích. Master.cf spouští různé démony. Po každé změně konfiguračního souboru se musí postfix reloadnout, aby se změny znovunačetly. Při změnách různých map je třeba provést hash textového souboru, který vytvoří databázovou podobu souboru.

Pomocné utility


newaliases

alias je mailová adresa na kterou bude zaslána zpráva určená pro jiného uživatele. Nastavit se nechají pomocí postfixadmina, nebo přímo v souboru /usr/local/etc/postfix/aliases
syntaxe je následující

jmeno_puvodniho_uzivatele: jmeno_noveho_uzivatele

takže konkrétně třeba
root: kemnedomu@dvorec.eu

nakonec musíme ještě provést rehash DB příkazem
newaliases


postqueue

je uživatelské rozhraní pro postfixové fronty
-f doručí všechny zprávy z fronty
-p vytiskneme si obsah fronty
-s domena.com doručí včechny zprávy pro doménu domena.com


postsuper

provádí údržbu úloh ve frontách
-d ID odstraní zprávu s ID z fronty
-h ID umístní zprávu do fronty hold, takže se nebude postfix jí pokoušet odeslat
-H ID vyjme zprávu z fronty hold
-p vymaže dočasné soubory z disku, které zbyli po havárii
-r ID znovuzařadí zprávu s ID do fronty
-s oprava a kontrola struktury fronty

postconf

je utilita pomocí které můžeme editovat postfix
bez parametru aktuální nastavení
-d vytiskne defaultní hodnoty
-e editujeme main.cf (postconf -e "smtpd_helo_required = yes")
-hukáže pravou stranu (hodnotu) parametru (postconf -h myhostname)
-m vytiskne podporované druhy map

postmap

utilita na vytváření DB podoby textových map a na jejich prohlížení.
V textovém souboru je na pravé straně klíč a na levé hodnota
-m zobrazí databázové typy které jsou podporovány (btree,cdb,dbm,hash,sdbm )
-q zobrazí hodnoty z mapy: postmap -q aaapoptavka.cz /usr/local/etc/postfix/sender_access



Spouštěče omezení


Jsou to jakési skupiny kterými se omezují určité části komunikace serveru s klientem. Položky pro jednotlivé skupiny se píší za = a oddělují se čárkou. Přehlednější způsob je je dávat jednotlivé záznamy na samostatnou řádku POZOR: pred jednotlivými záznamy musí být na začátku řádky mezera (tabelátor)
Definují se v souboru main.cf

smptpd_client_restrictions

spouštěč se vztahuje k IP adrese nebo jménu (případně obojímu) klienta. Defaultně bez omezení
reject_unknown_client odmítá poštu od klientů, kteří nemají v pořádku DNS záznamy (PTR), tj jejichž IP adresa nemá přiřazené jméno (chyba 450)
permit_mynetworks povolí požadavky od klientů, kteří patří do naší sítě (specifikují se parametrem $mynetworks)
reject_rbl_client domain.tld odmítne klienty jejichž reverzní záznam odpovídá záznamu na veřejných blacklistech v doméně domain.tld. Toto omezení se může použít několikrát za sebou s různými servery. Ale dost to zatěžuje počítač, takže je dobré uvádět max 4 blacklistové domény. (chyba 554)
reject_rhsbl_client domain.tld odmítne klienty jejichž hostname odpovídá záznamu na veřejných blacklistech v doméně domain.tld. Toto omezení se může použít několikrát za sebou s různými servery. Ale dost to zatěžuje počítač, takže je dobré uvádět max 4 blacklistové domény.
check_client_access maptype:mapname provede akci uvedenou v mapname souboru v závislosti na jménu,IP,doméně klienta. Povolené akce-viz odstavec pod touto tabulkou "všeobecná omezení"


příklad:
smtpd_sender_restrictions = hash:/etc/postfix/access,
reject_rhsbl_sender dsn.rfc-ignorant.org (free service)

smtpd_client_restrictions = permit_mynetworks,
reject_unknown_client

smptpd_helo_restrictions

spouštěč se vztahuje k IP adrese nebo jménu (případně obojímu) parametru HELO/EHLO. Defaultně bez omezení
reject_invalid_hostname odmítne klienta, pokud HELO/EHLO parametr má špatnou syntaxi (chyba 501)
reject_unknown_hostname odmítne klienta, pokud klientovo jméno v příkazu HELO/EHLO nemá platný A nebo MX záznam (chyba 450)
reject_non_fqdn_hostname odmítne klienta, pokud klientovo jméno v příkazu HELO/EHLO nemá platné jméno podle RFC (chyba 504)
check_helo_access maptype:mapname provede akci uvedenou v mapname souboru v závislosti na jménu uvedeném v příkaze HELO/EHLO. Povolené akce-viz odstavec pod touto tabulkou "všeobecná omezení"


příklad:
smtpd_helo_restrictions = permit_mynetworks, reject_invalid_hostname

smptpd_sender_restrictions


spouštěč se vztahuje k odesílateli obálky, k parametru MAIL FROM. Defaultně smí posílat zprávy každý odesílatel obálky
reject_unknown_sender_domain odmítne požadavek, pokud odesílatelova adresa nemá v pořádku A nebo MX záznam (chyba 450)
reject_rhsbl_sender domain.tld odmítá poštu od odesílatelů jejichž hostname odpovídá záznamu na veřejných blacklistech v doméně domain.tld. Toto omezení se může použít několikrát za sebou s různými servery. Ale dost to zatěžuje počítač, takže je dobré uvádět max 4 blacklistové domény.
reject_non_fqdn_sender odmítá poštu pokud v příkazu MAIL FROM není plně kvalifikované jméno podle RFC (chyba 504)
reject_sender_login_mismatch
check_sender_access maptype:mapname provede akci uvedenou v mapname souboru v závislosti na jménu,IP,doméně pro odesílatele. Tato mapa se používá jako black/whitelist. Povolené akce-viz odstavec pod touto tabulkou "všeobecná omezení"


příklad:
smtpd_sender_restrictions = hash:/etc/postfix/access, reject_unknown_sender_domain

smptpd_recipient_restrictions

spouštěč se vztahuje k parametru RCPT TO. Defaultně povoluje pouze příjemce z domén uvedených v relay_domains a mydomains. Tím se brání otevřenému předávání zpráv (open-relay) adress_verify_map = btree:/var/spool/postfix/verified_senders
permit_auth_destination povolí požadavky , pokud je splněna jedna z následujících podmínek: cílová adresa je v následujícím parametru či mapě $relay_domains, $mydestination, $inet_interfaces, $virtual_alias_domains, nebo $virtual_mailbox_domains
reject_unauth_destination odmítne požadavky, pokud není splněna jedna z následujících podmínek: cílová adresa je v následujícím parametru či mapě $relay_domains, $mydestination, $inet_interfaces, $virtual_alias_domains, nebo $virtual_mailbox_domains (chyba 554)
permit_mx_backup odmítne požadavky pokud lokální mail system je MX hostitel pro cílovou destinaci
check_recipient_access maptype:mapname provede akci uvedenou v mapname souboru v závislosti na jménu,IP,doméně adresáta. Povolené akce-viz odstavec pod touto tabulkou "všeobecná omezení"
check_recipient_maps odmítne požadavky pokud adresát není obsažen v následujících mapách: $mydestination,$inet_interfaces, $virtual_alias_domains, $virtual_mailbox_domains, $relay_domains, $local_recipient_maps, $virtual_alias_maps, $virtual_mailbox_maps, $relay_recipient_maps
reject_unknown_recipient_domain odmítne požadavky, pokud adresát nemá v pořádku A nebo MX záznamy (chyba 450)
reject_rhsbl_recipient domain.tld odmítá poštu adresátům jejichž hostname odpovídá záznamu na veřejných blacklistech v doméně domain.tld. Toto omezení se může použít několikrát za sebou s různými servery. Ale dost to zatěžuje počítač, takže je dobré uvádět max 4 blacklistové domény. (chyba 554)
reject_non_fqdn_recipient odmítá poštu adresátům pokud není v příkazu RCPT TO plně kvalifikované jméno (chyba 504)
reject_invalid_hostname odmítá poštu pro neexistující adresáty
reject_unverified_sender jo to vlasně greylistování. Doručená zpráva se pozdrží a odesílateli se odešle kontrolní mail serveru, který poslal původní mail. Pokud je adresa odesílatele druhým serverem akceptována, postfix doručí původní zprávu. Pokud adresa akceptována není, je původní mail zahozen. Toto je velice náročná akce, takže se uvádí jako poslední filtr. Aby se postfix mohl představit jako odesílatel, musí se mu nastavit adresa. Defaultní je postmaster@domena, ale nechá se nastavit parametrem adress_verify_sender = spravce@mojedomena.cz. Tento odesilatel ale musí existovat, protože jiné servery si jej mohou také ověřit. abychom urychlili proces ověřování, můžeme si nadefinovat mapu, kam bude postfix ukládat kladné i záporné výsledky. Tato Db může být docela velká. Nadefinujeme si ji v main.cf parametrem


příklad:
smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination

poznámka: tato sekce musí končit jedním z těchto příkazů (reject, defer, defer_if_permit, nebo reject_unauth_destination), jinak postfix odmítne odeslat email


smptpd_data_restrictions

spouštěč se vztahuje ke klientovi, který pošle obsah mailu předtím, než postfix odpoví na příkaz DATA. Defaultně bez omezení
reject_multi_recipient_bounce blokuje zprávy určené více příjemcům s prázdnou adresou


smptpd_etrn_restrictions

spouštěč se vztahuje ke klientovi, který by chtěl zahltit frontu zpráv. Defaultně bez omezení
check_etrn_access maptype:mapname provede akci uvedenou v mapname souboru v závislosti na doméně použité v ETRN příkazu. Povolené akce-viz odstavec pod touto tabulkou "všeobecná omezení"


příklad:
smtpd_etrn_restrictions = permit_mynetworks, hash:/etc/postfix/etrn_access, reject


všeobecná omezení
permit povolí žádost
defer odloží žádost
reject zamítne žádost
warn_if_reject používá se při ladění. Pokud budeme chtít zprávu odmítat, použijeme toto omezení. Zpráva bude doručena, ale v logu bude zpráva warn_if_reject
reject_unauth_pipelining pokud klient pošle předčasně SMTP příkazy, aniž by věděl jestli postfix podporuje ESMTP, bude zpráva odmítnuta.


přepínatelná (yes/no)
smtpd_helo_required požaduje po klientovi na začátku sezení poslat příkaz HELO/EHLO (RFC 821, RFC 2821)
strict_rfc821_envelopes požaduje po klientovi striktně dodržovat pravidla RFC 821, ale mnoho programů toto nedodržuje
disable_vrf_command zakáže použití příkazu SMTP VRF, kterým se můžeme přesvědčit, zda existuje nějaký příjemce
allow_percent_hack povoluje přepisování adres z tvaru uživatel%doména na tvar uživatel@doména


pokud nastavujeme omezení, záleží na pořadí a na množství fitrů a omezení. Pokud je přehodíme, můžeme se stát open relay serverem a dříve nebo později se ocitneme na blacklitu. U pravidel platí, že první vyhrává. Tj pokud požadavek vyhoví pravidlu na povolení, tak již není testován dalším pravidlem, které by jej blokovalo. Stejně tak příliš restriktivní nastavení způsobí, že postfix bude odmítat skoro všechnu poštu. K vám se sice spam nedostane, ale nedostanete ani mnoho legitimních mailů. Stejně tak pokud definujete moc veřejných blaclistových serverů, může se stát, že vám třeba Seznam.cz nebude chodit pošta, protože než se zpracují veškerá filtry uplyne nějaká doba a na Seznamu mají nastveno čekat max 10sec. (i když to není podle RFC).
V seznamu filtrů je důležitý parametr permit_mynetworks. Ten tvoří hranici, před kterou uvedená pravidla platí jak pro vnější, tak i pro vnitřní sít. To co je uvedeno za tímto parametrem platí pouze pro venkovní sít. Kvůli spamu je dobré nejdřív odfiltrovat odesílatele, kteří nemají v pořádku DNS, poté použít veřejné blacklisty a jako poslední používat greylisty. Vlastní white/blacklisty je třeba dát co nejvýše, aby se aplikovali jako první

Whitelist a blacklist


můžeme na to použít soubor /usr/local/etc/postfix/sender_access
do main.cf vložíme řádek
smtpd_sender_restrictions = check_sender_access hash:/usr/local/etc/postfix/sender_access,
uvedeme jej v pravidlech co nejvýše, aby se zpracoval jako první

vytvoříme soubor sender_access
ee /usr/local/etc/postfix/sender_access
a vložíme do něj domény, které chceme blokovat/povolit

syntaxe je následující:
odesílatel VOLBA volitelny_text
příklad
lump@seznam.cz REJECT "Ve skolce jsi mi rozslapal kachnicku!!!!!!" #blokujeme maily z lump@seznam.cz + mu napiseme , proc je blokovany

seznam.cz REJECT # blokujeme všechny maily ze seznam.cz

jan.novy@odnekud.com OK # povolíme uživatele z jinak (třeba RBL listem ) blokované domény


blokovat můžeme pro odesílatele:
jen jednu adresu nekdo@domena.cz
celou doménu domena.cz
uživatele bez ohledu na domenu uzivatel@



Pro vybrané domény/adresy můžeme provést tyto akce
OK vybraný záznam bude povolen (whitelistován)
4xx text 4xx znamená chybový kod, kdy za xx si doplníte číslo podle toho o jakou akci se jedná. Text je popis chyby který se zobrazí odesílateli.
Podle http://tools.ietf.org/html/rfc3463 RFC 3463 4xx je chybový kod znamenající "zkus později"
5NN text 5xx znamená chybový kod, kdy za xx si doplníte číslo podle toho o jakou akci se jedná. Text je popis chyby který se zobrazí odesílateli.
Podle http://tools.ietf.org/html/rfc3463 RFC 3463 5xx je chybový kod znamenající "znovu to již nezkoušej"
REJECT volitelny_text zamítnutí mailu pro daného odesílatele
DEFER volitelny_text prakticky stejné jako předcházející
BCC nejaka@mailova_adresa.com pošle jednu kopii na zadanou adresu ode všech uvedených odesílatelů
DISCARD volitelny_text potvrdí úspěšné přijetí, ale v tichosti zprávu odloží
REDIRECT nejaka@mailova_adresa.com přepošle mail na uvedenou adresu místo původnímu příjemci

Více informací na http://www.postfix.org/access.5.html

rehash souboru pro vytvoření db, aby pravidla byla akceptována
postmap /usr/local/etc/postfix/sender_access

pro kontrolu, zda se změny projevili, použijeme příkaz postmap s parametrem -q , druhým parametrem je dotazovaná doména/adresa a třetím je soubor ve kterém by toto nastavení mělo být
postmap -q aaapoptavka.cz /usr/local/etc/postfix/sender_access
REJECT "Obtezujete nevyzadanou postou"

Graylist

Postfix má v sobě již možnost používat greylisty. Jedná se o to, že postfix zprávu odmítne s kodem 450 (zkus později) a adresu odesílatele použije jako ve zkušební zprávě a tu odešle zpět odkud přišla. Pokud server který odeslal původní zprávu akceptuje adresu původního odesílatele (existuje na tom daném serveru), tak náš postfix smaže zkušební zprávu a přijme zprávu od původního klienta. Pokud na vzdáleném serveru původní adresa neexistuje, tak se jedná pravděpodobně o spam a náš postfix smaže zkušební zprávu a zprávu od původního klienta odmítne.

Aby nám greylisty fungovali, musíme provést několik kroků

Zapnutí greylistů
do main.cf do sekce smtpd_recipient_restrictions vepíšeme před uzavírací permit volbu reject_unverified_sender,


smtpd_recipient_restrictions =
..
..
..
reject_unverified_sender,
permit



Nastavení odesilatele
Při vytváření zkušební zprávy, se postfix musí představit. Defaultní hodnota je postmaster@$myorigin
Tuto hodnotu můžeme změnit parametrem adress_verify_sender v main.cf. Tento uživatel ale musí existovat, protože jiné servery si jej také mohou chtít ověřit.

adress_verify_sender = odesilatel@vase_domena.cz


Kešování výsledků ověření
Aby se postfix nemusel pokaždé dotazovat na již jednou ověřené mailové adresy, můžeme mu parametrem adress_verify_map nastavit mapu, do které si bude výsledky ukládat pro pozdější zpracování.

adress_verify_map = btree:/usr/local/etc/postfix/verify_sender

poté reloadneme postfixe, který si vytvoří DB do které ukládá jak pozitivní , tak i negativní výsledky.
Pokud budeme chtít kešovat pouze pozitivní výsledky (u negativních je jedno, že je prodleva při omezování, stejně skončí zablokováním) přidáme do main.cf ještě parametr

adress_verify_negative_cache = no


Ověřování pouze některých domén
V okamžiku , kdy máme velkou zátěž serveru, se může stát, že greylist je úzké místo, které brzdí provoz. Proto můžeme ověřovat maily pouze z některých domén (většinou fremailové služby) parametr reject_unverified_sender NAHRADÍME parametrem check_sender_access. Pokud je v souboru uvedená doména a u ní je reject_unverified_sender, postfix bude adresu ověřovat. Pokud uvedená není, pravidlo se ignoruje a pokračuje se dalším pravidlem v configu

check_sender_access = hash:/usr/local/etc/postfix/sender_access
vytvoříme soubor /usr/local/etc/postfix/sender_access, do kterého zapíšeme na levou stranu doménu a na pravou stranu co se stane se zprávou

příklad souboru sender_access
seznam.cz reject_unverified_sender
qmail.com reject_unverified_sender


nezapomene rehasnout mapu
postmap hash:/usr/local/etc/postfix/sender_access

Můžeme ověřovat třeba jen domény, které mají v názvu podezřelé slovo
toto provedeme další mapou, tentokrát typu regexp (s předchozí mapou může klidně koexistovat a uvedeme je za sebou)

check_sender_access = regexp:/usr/local/etc/postfix/sender_access_keywords

vytvoříme soubor /usr/local/etc/postfix/sender_access, do kterého zapíšeme na levou řetězec, který doménové jméno obsahuje a na pravou stranu co se stane se zprávou

příklad souboru sender_access_keywords
/sale/ reject_unverified_sender
/seznam/ reject_unverified_sender



Vestavěné filtry


Filtry porovnávají obsah zpráv s danými vzorky. V případě shodného výsledku se provede nadefinovaná akce.Různé filtry kontrolují různé časti zprávy. Definují se pro ně mapy ve kterých je uveden vzorek a akce která se má provést. První nalezená shoda v mapě způsobí, že se akce provede a následující akce nejsou brány v potaz. Mapy typů PCRE, regexp, CIDR jsou textové soubory, které se načítají reloadem postfixu

header_checks filtr kontrolující hlavičku zpráv (vše od prvního řádku až po první prázdný řádek)
body_checks filtr kontrolující tělo zprávy (vše co se nachází mezi hlavičkami)
mime_header_cheks filtr kontrolující MIME hlavičku zpráv
nested_header_checks filtr kontrolující jiné hlavičky zpráv než je MIME (pracuje s hlavičkami vnořených zpráv)



Akce definované ve filtrech
REJECT volitelny_text zpráva se odmítne a odesilatel dostane volitelny_text
IGNORE řádek, na kterém je shoda bude odstraněný
WARN volitelny_text zpráva se doručí, odesílateli se zašle volitelný text
HOLD volitelny_text zpráva se doručí do fronty HOLD, kde bude čekat, dokud admin nerozhodne co s ní, odesílateli se zašle volitelný text
DISCARD volitelny_text zpráva se vymaže, ale odesílatel je informován, že zpráva byla doručena
FILTER maptype:mapname zpráva bude předána filtru (nadefinovaný v main.cf)
REDIRECT jmeno@domena.com zpráva bude přesměrována na definovaného příjemce. Tato akce má prioritu před všemy ostatními.


Použití filtrů

Je třeby si zjistit, jaké typy map jsou podporovány naším postfixem. provedeme to příkazem
postconf -m
btree
cidr
environ
hash
mysql
pcre
proxy
regexp
static
unix


dále musíme vytvořit mapu, tj textový soubor který bude obsahovat vzorek a akci, třeba header_checks
ee /usr/local/etc/postfix/header_checks

budeme kontrolovat třeba zda v předmětu není slovo viagra, pokud ano, zprávu přepošleme oblíbenému nadřízenému
do souboru napíšeme
/^Subject: *viagra*/ REDIRECT reditel@domena.cz

vytvoříme testovací soubor (test) , do kterého vložíme následující

From: bla@bla.cz
Subject: bla viagra bla
qwert qwertz qwertzu


uložíme jej někam (třeba do /home/test )a podstrčíme jej filtru k otestování

postmap -q - regexp:/usr/local/etc/postfix/header_checks < /home/test

pokud to funguje, měl by výsledkem být vyfiltrovaný řádek a akce. pokud shoda nenastala, nevypíše se nic

jestliže je vše OK, do main.cf přidáme řádku
header_checks = regexp:/usr/local/etc/postfix/header_checks

a reloadneme postfixe
/usr/local/etc/rc.d/postfix reload


Virtuální domény


Virtuální aliasové domény


Postfix může zpracovávat zprávy pro více domén a to pomocí virtuálních domén. Tyto jsou definované pomocí parametru virtual_alias_domains . Hodnoty se berou z databáze (odkazuje na soubor, kde jsou údaje pro připojení k DB- viz řešení v instalaci) , nebo v souboru kde jsou uvedené na pravé straně domény a na levé datum vytvoření domény (může být libovolný, nemá žádný podstatný význam, ale být musí).

Příklad souboru virtual_alias_domains
doma.com 20093004
jinde.cz 20092905


do main.cf přidáme řádku
virtual_alias_domains = hash:/usr/local/etc/postfix/virtual_alias_domains
a poté musíme rehasnout DB
postmap hash:/usr/local/etc/postfix/virtual_alias_domains

dále musíme vytvořit soubor virtual_alias_domains_maps kde namapujeme virtuální příjemce na lokální

Příklad souboru virtual_alias_maps
#virtualni prijemci #lokalni prijemci
abuse@doma.com spravce@mojedomena.cz
postmaster@jinde.cz spravce@mojedomena.cz, druhyspravce@mojedomena.cz
@zasejina.cz spravce@mojedomena.cz #vše z domeny zasejina.cz bude chodit na spravce@mojedomena.cz


poté musíme rehasnout DB

postmap hash:/usr/local/etc/postfix/virtual_alias_maps
a do main.cf přidáme řádku
virtual_alias_domains = hash:/usr/local/etc/postfix/virtual_alias_maps
a reloadneme postfixe
/usr/local/etc/rc.d/postfix reload

Upozornění:
-nedávejte virtuální doménu do parametru mydestination.
-v souboru virtual_alias_maps na pravé straně uvádějte vždy plné jméno domény.
-v souboru virtual_alias_maps je možné používat regulární výrazy
Virtuální schránkové domény

Defaultně postfix používá pro doručování lokální uživatele, ale můžeme mu nadefinovat i uživatele, kteří nemají s lokálními účty nic společného. Můžeme je definovat ručně, pomocí DB, nebo LDAP serveru.
V master.cf je třeba zkontrolovat, zda se spouští démon virtual (nesmí být v chrootu - 5tý sloupec)

#service type private unpriv chroot wakeup maxproc command + args
virtual unix - n n - - virtual



do main.cf vložíme řádek , kde na pravé straně jsou domény odděleny mezerami
virtual_mailbox_domains = domena1.cz domena2.cz
případně můžeme použít i soubor a odkazovat se na něj
virtual_mailbox_domains = /usr/local/etc/postfix/virtual_domains
syntaxe souboru virtual_domains je na každé řádce jedna doména (nezapomene nastavit práva pro postfixe)
cat /usr/local/etc/postfix/virtual_domains
domena1.cz
domena2.cz
domena3.cz



nadefinujeme vlastníka souborů virtuálních schránek parametry v main.cf

virtual_uid_maps = hash:/usr/local/etc/postfix/virtual_uids
virtual_gid_maps = hash:/usr/local/etc/postfix/virtual_gids


kde pak musíme soubory virtual_uids a virtual_gids načíst příkazem postmap

nebo je můžeme definovat přímo
virtual_uid_maps = static:1001
virtual_gid_maps = static:1001



příkazem
adduser vytvoříme uživatele "vuser" a přiřadíme mu uid 1001 a gid 1001

přiřadíme kam se budou ukládat schránky virtuálních uživatelů
virtual_mailbox_base = /var/spool/vmail

tento adresář vytvoříme a přiřadíme vlastníka a nastavíme práva
mkdir /var/spool/vmail
chown vuser:vuser /var/spool/vmail
chmod 700 /var/spool/vmail



vytvoříme mapu příjemců. Do main.cf vložíme parametr
virtual_maibox_maps = hash:/usr/local/etc/postfix/virtual_recepients

vytvoříme soubor s mapou

ee /usr/local/etc/postfix/virtual_recepients

a do něj nastavíme na levé straně jména příjemců a na pravou dáme jména schránek, do kterých se bude pošta ukládat. Defaultně je použitý mailbox, ale pokud použijeme na pravé straně
za názvem schránky lomítko (/), bude použit formát maildir.
příklad souboru
#jména příjemců #jména schránek
jarda@domena1.cz jarda
pepa@domena1.cz pepa
honza@domena1.cz honza/ #toto bude formát maildir


nesmíme mapu zapomenout převést na DB příkazem

postmap hash:/usr/local/etc/postfix/virtual_recepients


pokud chceme použít virtuální aliasy, musíme do main.cf přidat řádku
virtual_alias_maps = hash:/usr/local/etc/postfix/virtual_aliases

kde na levé straně uvedeme aliasy a na pravé cílové adresy

příklad souboru virtual_aliases
#aliasy #cílové adresy
king@domena1.cz jarda@domena1.cz
hnup@domena1.cz pepa@domena1.cz


opět vytvoříme DB

postmap hash:/usr/local/etc/postfix/virtual_aliases

a reloadneme postfixe

Pokud bychom chtěli pro každou virtuální doménu mít jiného vlastníka, tak vlastníky musíme nejdříve vytvořit a přiřadit jim UID a GID
např
domenak1 s UID 1001 a GID 1001
domenak2 s UID 1002 a GID 1002

jediný rozdíl spočívá v tom, že musíme pro každou doménu vytvořit vlastní podadresář a přiřadit mu vlasníka, tj podadresář pro domena1 bude mít vlastníka domenak1 a podadresář pro domena2 bude mít vlastníka domenak2 a musíme do souboru virtual_uid_maps vložíme na levou stranu mailovou adresu (případně celou doménu-začíná zavináčem) a na pravou stranu UID

příklad souboru uid_maps

jarda@domena1.cz 1001
pepa@domena1.cz 1001
@domena2.cz 1002


do main.cf vložíme řádek
virtual_uid_maps = hash:/usr/local/etc/postfix/virtual_uid_maps

a vytvoříme DB
postmap hash:/usr/local/etc/postfix/virtual_uid_maps

analogicky to provedeme i s GID

Autentizace SMTP



používá se pro připojení uživatelů, kteří nemají pevnou IP (obchodní cestující, freemail servery) , které není možné přihlásit jiným bezpečným způsobem (openVPN, Ipsec a pod)

nejdříve musíme nainstalovat cyrus-sasl2 a cyrus-sasl2-saslauthd


cd /usr/ports/security/cyrus-sasl2-saslauthd
make all install clean
make install



Options for cyrus-sasl 2.1.22
─────────────────────────────────────────────
[ ] BDB Use Berkeley DB
[X] MYSQL Use MySQL
[ ] PGSQL Use PostgreSQL
[ ] SQLITE Use SQLite
[ ] DEV_URANDOM Use /dev/urandom
[ ] ALWAYSTRUE Enable the alwaystrue password verifier
[ ] KEEP_DB_OPEN Keep handle to Berkeley DB open
[X] AUTHDAEMOND Enable use of authdaemon
[X] LOGIN Enable LOGIN authentication
[X] PLAIN Enable PLAIN authentication
[X] CRAM Enable CRAM-MD5 authentication
[X] DIGEST Enable DIGEST-MD5 authentication
[ ] OTP Enable OTP authentication
[X] NTLM Enable NTLM authentication


POZNÁMKA
OTP(Volba OneTime Password je pro praci s jednorazovymi hesly),
když jí vyberete a objeví se vám hláška v logu ("OTP unavailable
because can't read/write key database /etc/opiekeys: Permission denied") je třeba
nastavit práva. Nebo ji vůbec nevybírat.

cd /usr/ports/security/cyrus-sasl2-saslauthd <


aby jste neměli problémy se stupidními klienty Microsoft Outlook/Outlook Express, přesuneme soubory NTLM do jiného adresáře
cd /usr/local/lib/sasl2
mkdir deactivated
mv *ntlm* deactivated



start při spuštění stroje umožníme takto:
do rc.conf zapíšeme
saslauthd_enable="YES"
saslauthd_flags=" -a pam"


aktivace SMTP AUTH na straně serveru (v main.cf zapíšeme)

smtpd_sasl_auth_enable = "yes"


konfigurace ověřování (v main.cf zapíšeme)
smtpd_sasl_security_options = noanonymous, noplaintext

máme tyto možnosti
noanonymous je nutné jej vždy ponechat, jinak by mohlo dojít k open relay
noplaintext z ověřování vyloučíme nešifrované mechanismy
noactive z ověřování vyloučíme mechanismy které jsou neúčinné proti aktivním útokům
nodicdionary z ověřování vyloučíme mechanismy prolomitelné pomocí slovníkového útoku
mutual_auth tímto se server autentizuje klientovi

povolíme stupidní klienty od M$
broken_sasl_auth_clients = yes

můžeme ponechat prázdné, pokud jej nevyžaduje nějaký zásuvný modul
smtpd_sasl_local_domain = $myhostname

smtpd_sender_restrictions =
permit_sasl_authenticated,
permit_mynetworks,
permit_sasl_authenticated,


oznamuje SASL autentizovanému uživateli jméno v smtpd
smtpd_sasl_authenticated_header = yes

ti co používají dovecot přidají i
#smtpd_sasl_type = dovecot
#smtpd_sasl_path = private/auth



vytvoříme konfigurák SASL a upravíme práva
ee /usr/local/lib/sasl2/smtpd.conf

volby
log_level: 3 ukecanost v rozsahu 0-7
pwcheck_method: saslauthd pokud použijeme zásuvné moduly (auxprop) , nastavíme tam tento , jinak necháme saslauthd
mech_list: PLAIN LOGIN CRAM-MD5 DIGEST-MD5 ověřovací mechanismy
auxprop_plugin: sasldb


příklad configu
log_level: 3
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN CRAM-MD5 DIGEST-MD5
auxprop_plugin: sasldb


nastavíme práva souboru
chmod 644 /usr/local/lib/sasl2/smtpd.conf

kontrola běhu
/usr/local/etc/rc.d/saslauthd status
saslauthd is running as pid 77000.

a otestujeme telnetem

telnet localhost 25
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.dvorec.eu.
Escape character is '^]'.
220 mail.dvorec.eu ESMTP Postfix
ehlo ja.dvorec.eu
250-mail.dvorec.eu
250-PIPELINING
250-SIZE 10485760
250-VRFY
250-ETRN

250-AUTH LOGIN PLAIN DIGEST-MD5 CRAM-MD5
250-AUTH=LOGIN PLAIN DIGEST-MD5 CRAM-MD5

250 8BITMIME


dále vytvoříme SASLdb

volby pro SASLdb
-c vytvoř uživatele
-d smaž uživatele
-u oblast (musí být stejná jako v parametru smtpd_sasl_local_domain)


jarda = přihlašovací jméno
postconf -h myhostname = zjištění parametru myhostname (můžemejej ale napsat i ručně)
saslpasswd2 -c -u `postconf -h myhostname` jarda

vyzve vás k zadání hesla a ověření
Password:
Again (for verification):


nastavíme (při zadávání prvního uživatele) práva a přiřadíme skupinu postfix
chmod 640 /usr/local/etc/sasldb2.db
chgrp postfix /usr/local/etc/sasldb2.db


spustíme démona příkazem
/usr/local/etc/rc.d/saslauthd start

při odeslání testovacího mailu by mělo být vidět v logu

Jul 15 09:45:04 www postfix/smtpd[84569]: connect from mail.keytec.cz[85.207.55.210]
Jul 15 09:45:06 www postfix/smtpd[84569]: 578C1126B5E: client=mail.keytec.cz[85.207.55.210], sasl_method=CRAM-MD5, sasl_username=jarda@mail.dvorec.eu
Jul 15 09:45:06 www postfix/cleanup[84570]: 578C1126B5E: message-id=<4A5D8900.9050002@dvorec.eu>
Jul 15 09:45:06 www postfix/qmgr[84521]: 578C1126B5E: from=<jaroslav@dvorec.eu>, size=683, nrcpt=1 (queue active)



pokud by jste dostli něco takového v logu, zkontrolujte, zda jste vytvořili sasldb2 databázi, nasměrovali na ní démona a postfix má práva číst
Poznámka: funguje to i tak, ale ověřuju se proti jménu a heslu uživatelů v systému

Jul 15 07:35:11 www postfix/smtpd[83562]: connect from mail.keytec.cz[85.207.55.210]
Jul 15 07:35:11 www postfix/smtpd[83562]: warning: SASL authentication failure: no user in db
Jul 15 07:35:11 www postfix/smtpd[83562]: warning: SASL authentication failure: no user in db
Jul 15 07:35:11 www postfix/smtpd[83562]: warning: SASL authentication failure: no secret in database
Jul 15 07:35:11 www postfix/smtpd[83562]: warning: mail.keytec.cz[85.207.55.210]: SASL CRAM-MD5 authentication failed
Jul 15 07:35:11 www postfix/smtpd[83562]: warning: SASL authentication failure: no user in db
Jul 15 07:35:11 www postfix/smtpd[83562]: warning: SASL authentication failure: no user in db


seznam uživatelů v sasldb2 vylistujeme příkazem
sasldblistusers2
jarda@mail.dvorec.eu: userPassword

kde jarda je jméno použité při autentizaci


Pokud budete chtít použíte pro autentizaci MYSQL, config by mohl vypadat následovně (netestováno)

/usr/local/lib/sasl2/smtpd.conf

pwcheck_method: auxprop
auxprop_plugin: sql
sql_engine: mysql
mech_list: sql plain login
sql_hostnames: localhost
sql_user: postfix
sql_passwd: your-password
sql_database: postfix
sql_statement: SELECT clear FROM postfix_smtp WHERE
email = '%u@%r'
sql_verbose: yes




tímto příkazem si vypíšeme autentizační mechanismy
saslauthd -v
saslauthd 2.1.23
authentication mechanisms: sasldb getpwent kerberos5 pam rimap


Omezení odesílatelů
Defaultně může jakýkoliv klient, který se autentizuje posílat zprávy s libovolnou adresou. Např klient který se autentizoval jako jarous může posílat zprávy jako jarda@dvorec.eu, nebo pepa@dvorec.eu, nebo třeba qwertz@dvorec.eu (jeho schránka ale většinou musí existovat-podle nastavení postfixu)
My ale jedinou mapou můžeme omezit na to, že autentizovaný klient jako jarous může posílat maily pouze jako jarda@dvorec.eu

do main.cf přidáme řádku
smtpd_sender_login_maps = hash:/usr/local/etc/postfix/smtpd_sender_login_maps

vytvoříme soubor
/usr/local/etc/postfix/smtpd_sender_login_maps
touch /usr/local/etc/postfix/smtpd_sender_login_maps
a vložíme do něj tyto řádky
# mailova adresa #prihlasovaci jmeno
jarda@dvorec.eu jarous
kingove@dvorec.eu jarous, pepa


poté musíme rehashnout db
postmap hash:/usr/local/etc/postfix/smtpd_sender_login_maps

posledním krokem je nastavení main.cf, do sekce smptpd_recipient_restrictions
zapíšeme
smptpd_recipient_restrictions =
...
...
reject_unauthenticated_sender_login_mismach
...


a samozřejmě musíme reloadnout postfixe

Vyjmutí určitých sítí z autentizace


Můžeme si nastavit, že některé sítě budou ze SMTP AUTH vyjmeté. V main.cf použijeme parametr
smtpd_sasl_exceptions_network = $myhostname, 10.0.0.0/24

použít můžeme rozsah sítí , nebo parametry postfixu ($myhostname)


TLS/SSL



Jedná se o šifrované spojení mezi klientem a poštovním serverem. Rozdíl mezi TLS a SSL je minimální a pro potřeby poštovního serveru spočívá prakticky jen v tom, že TLS komunikuje na portu 25 a server musí odpovědět 250-STARTTLS a SSL komunikuje na portu 465 a odpověd nevyžaduje.


Nejdříve si nainstalujeme OpenSSL
cd /usr/ports/security/openssl/
make install clean
rehash



Připravíme si adresář pro certifikáty
mkdir -p /usr/local/etc/postfix/certs/CA
cd /usr/local/etc/postfix/certs/CA
mkdir certs crl newcerts private
echo "01" > serial
touch index.txt
cp /usr/src/crypto/openssl/apps/openssl.cnf .


upravíme, případně doplníme následující údaje v configu

edit openssl.cnf
dir = /usr/local/etc/postfix/certs/CA
[ req_distinguished_name ]
countryName = CS
countryName_default = CS
stateOrProvinceName = Czech rep.
stateOrProvinceName_default = Czech rep.
localityName = Borovany
localityName_default = Borovany
0.organizationName = server Dvorec.eu
0.organizationName_default = server Dvorec.eu
organizationalUnitName = server
organizationalUnitName_default = server
commonName = mail.dvorec.eu
commonName_default = mail.dvorec.eu
commonName_max = 64
emailAddress = sprav@dvorec.eu
emailAddress_default = sprav@dvorec.eu



Vytvoření certifikační autority
nezapomente vložené heslo, jinak nebudete schopni generovat nové certifikáty.
U commonName je třeba použít resolvovatelný název, nebo IP adresu. Pokud jej nevyplníme, defaultní nastavení ssl vyhodí chybu při vytváření mykey.pem. Tento soubor pak má nulovou velikost a TLS pak samozřejmě nefunguje.
openssl req -new -x509 -keyout private/cakey.pem -out cacert.pem -days 3650 -config openssl.cnf

Vygenerování požadavku
openssl req -nodes -new -x509 -keyout mykey.pem -out myreq.pem -days 3650 -config openssl.cnf

Podepsání
openssl x509 -x509toreq -in myreq.pem -signkey mykey.pem -out tmp.pem

Odstranění hesla
openssl ca -config openssl.cnf -policy policy_anything -out mycert.pem -infiles tmp.pem
pak se zeptá
Certificate is to be certified until Aug 28 06:23:27 2022 GMT (3650 days) Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
obojí potvrdíme

Odstranění dočasného souboru
rm tmp.pem

Překopírování a nastavení práv
cp cacert.pem mycert.pem mykey.pem /usr/local/etc/postfix/certs/
cd /usr/local/etc/postfix/certs/
chown root:wheel cacert.pem mycert.pem
chown root:postfix mykey.pem
chmod 755 cacert.pem
chmod 644 mycert.pem
chmod 440 mykey.pem



upravíme config main.cf

smtpd_use_tls = yes
smtpd_tls_auth_only = yes
smtpd_tls_key_file = /usr/local/etc/postfix/certs/mykey.pem
smtpd_tls_cert_file = /usr/local/etc/postfix/certs/mycert.pem
smtpd_tls_CAfile = /usr/local/etc/postfix/certs/cacert.pem
smtpd_tls_loglevel = 2
smtpd_tls_recieved_header = yes
smtpd_tls_note_starttls_offer = yes
smtpd_sasl_tls_security_options = noanonymous
tls_random_source = dev:/dev/urandom



otestujeme telnetem

telnet localhost 25
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.dvorec.eu.
Escape character is '^]'.
220 mail.dvorec.eu ESMTP Postfix
ehlo ja.dvorec.eu
250-mail.dvorec.eu
250-PIPELINING
250-SIZE 10485760
250-VRFY
250-ETRN

250-STARTTLS
250-AUTH LOGIN PLAIN DIGEST-MD5 CRAM-MD5
250-AUTH=LOGIN PLAIN DIGEST-MD5 CRAM-MD5
250 8BITMIME



při zaslání testovací zprávy na server by jste měli dostat něco podobného v logu
tail /var/log/maillpg
Jul 17 13:05:26 www postfix/smtpd[23441]: connect from mail.keytec.cz[85.207.55.210]
Jul 17 13:05:26 www postfix/smtpd[23441]: setting up TLS connection from mail.keytec.cz[85.207.55.210]
Jul 17 13:05:34 www postfix/smtpd[23441]: TLS connection established from mail.keytec.cz[85.207.55.210]: SSLv3 with cipher DHE-RSA-AES256-SHA (256/256 bits)


Selektivní použití TLS


při více doménách si můžeme specifikovat, která doména musí být přes TLS a která ne. Provedeme to mapou v main.cf

smtp_tls_per_site = hash:/usr/local/etc/postfix/tls_per_site


volby jsou

NONE TLS je zablokované
MAY TLS je možno použít
MUST TLS se musí použít
MUST_MOPEERMATCH mírnější verze MUST


do souboru uvedeme na levou stranu uvedeme doménu a na pravou stranu uvedeme hodnotu

příklad souboru tls_per_site

dvorec.eu MUST
nedvorec.eu NONE


nezapomeneme vytvořit mapu
postmap hash:/usr/local/etc/postfix/tls_per_site

Poznámka:
pokud tuto vobu v configu zapneme, tak počítače které nejsou v mapě se berou automaticky s protkolem TLS

Jestliže vám chodí pokud v klientu zapnete SSL a TLS nechodí a pokud telnet zvenčí místo 250-STARTTLS nabízí 250-XXXXXXXA (nebo něco podobného) a klient řve že server nenabízí STARTTLS, problém bude ve firewallu/routeru (většinou CISCO) někde cestou ven (u mě to byl provider)

telnet z localhosta

telnet localhost 25
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.dvorec.eu.
Escape character is '^]'.
220 mail.dvorec.eu ESMTP Postfix
ehlo ja.jsem
250-mail.dvorec.eu
250-PIPELINING
250-SIZE 10485760
250-VRFY
250-ETRN

250-STARTTLS
250 8BITMIME
quit
221 Bye
Connection closed by foreign host.



telnet zvenci

telnet mail.dvorec.eu 25
Trying 89.31.47.158...
Connected to mail.dvorec.eu.
Escape character is '^]'.
220 ****************************
ehlo ja.jsem
250-mail.dvorec.eu
250-PIPELINING
250-SIZE 10485760
250-VRFY
250-ETRN

250-XXXXXXXA
250 8BITMIME
quit
221 Bye
Connection closed by foreign host.



Nastavení klientů

Do adresy serveru vyplnte stejné jméno jako jste dávali v Common Name při generování certifikátu, jinak vám to bude hlásit, že certifikát je podvržený.

Mozilla thunderbid

Nástroje => Nastavení účtu
v bílém sloupci nalevo je dole položka Server odchozí pošty (SMTP)
poklikáme na název serveru



Poznámka:
Pro použití autentizace, zaškrtněte příslušné políčko a vyplnte autentizační jméno
Pro použití TLS/SSL zaškrtněte příslušné políčko

MS Outlook 2003
Nástroje => E-mailové účty => Zobrazit nebo změnit existující účty (Další) => klik na jméno serveru => Salší nastavení => druhá karta-Server pro odchozí poštu



Poznámka:Zaškrtněte políčko Server pro odchozí poštu požaduje ověření, zpřístupní se ostatní volby. První volba je pokud ověřovací jméno souhlasí s přihlašovacím (tak to má nastaven seznam.cz), jinak vyberte druhou volbu

Popis řešení

Postfix bude nainstalován s autentizací, podporou TLS/SSL, antivirem, antispamem a vakacemi. Uživatelé budou virtuální a jejich údaje uloženy v DB. O grafické rozhraní se postará PHP aplikace postfixadmin. Pošta bude vybírána ze schránek programem Courier imap a jako webové rozhraní poslouží Squirrelmail. Bohužel jednotlivé aplikace se spolu proplétají a proto jedno nastavení často ovlivnuje jiný program.

Před instalací


Nejdříve nainstalujte MYSQL a Apache s PHP, pokud chcete používat postfixadmina
Než něco začneme dělat s poštou, je třeba mít nastavený DNS server. At už svůj, nebo někde u providera, ale musí být dostupný z internetu, protože ten říká klientům, kde mají hledat vaší doménu.
Podrobněji je tomu věnovaná stránka o DNS
Základem je nastavit MX záznam. Ten říká klientovi, který server pro danou doménu doručuje poštu. Neméně důležité je, aby byly v pořádku reverzní záznamy. Jinak hrozí, že váš server bude odmítán jako spammer.
Upozornění: Reverzní záznam má odkazovat přímo na A záznam a nikoliv na CNAME.
Je možno pro jednu doménu nadefinovat více mailserverů, přičemž hodnota udává , který bude jako primární a který bede záložní. Čím nižší číslo, tím je vyšší priorita tohoto serveru.
zde je část výpisu příkazu dig
dig mail.seznam.cz mx

email.seznam.cz. 300 IN MX 10 mx1.seznam.cz.
email.seznam.cz. 300 IN MX 20 mx2.seznam.cz.


Instalace


cd /usr/ports/mail/postfix
make all install clean


Vybrat

[X] PCRE Perl Compatible Regular Expressions
[X] SASL2 Cyrus SASLv2 (Simple Auth. and Sec. Layer)
[ ] DOVECOT Dovecot SASL authentication method
[ ] SASLKRB If your SASL req. Kerberos select this option
[ ] SASLKRB5 If your SASL req. Kerberos5 select this option
[ ] SASLKMIT If your SASL req. MIT Kerberos5 select this option
[X] TLS Enable SSL and TLS support
[ ] BDB Berkeley DB (choose version with WITH_BDB_VER)
[X] MYSQL MySQL maps (choose version with WITH_MYSQL_VER)
[ ] PGSQL PostgreSQL maps (choose with DEFAULT_PGSQL_VER)
[ ] OPENLDAP OpenLDAP maps (choose ver. with WITH_OPENLDAP_VER)
[ ] CDB CDB maps lookups
[ ] NIS NIS maps lookups
[X] VDA VDA (Virtual Delivery Agent)
[ ] TEST SMTP/LMTP test server and generator



během instalace se zeptá,na aktivaci v mailer.conf
Would you like to activate Postfix in /etc/mail/mailer.conf [n]?
Dejte Y

upravit /etc/rc.conf

sendmail_enable=”NO”
sendmail_submit_enable=”NO”
sendmail_outbound_enable=”NO”
sendmail_msp_queue_enable=”NO”
postfix_enable=”YES”



upravit periodic.conf
ee /etc/periodic.conf

daily_clean_hoststat_enable=”NO”
daily_status_mail_rejects_enable=”NO”
daily_status_include_submit_mailq=”NO”
daily_submit_queuerun=”NO”


můžeme si zobrazit používané knihovny

ldd /usr/local/libexec/postfix/smtpd
vypíše to následující
##################
/usr/local/libexec/postfix/smtpd:
libpcre.so.0 => /usr/local/lib/libpcre.so.0 (0x280c1000)
libssl.so.4 => /usr/lib/libssl.so.4 (0x280dc000)
libcrypto.so.4 => /lib/libcrypto.so.4 (0x2810a000)
libdb-4.1.so.2 => /usr/local/lib/libdb-4.1.so.2 (0x281fd000)
libmysqlclient.so.15 => /usr/local/lib/mysql/libmysqlclient.so.15 (0x282bb000)
libz.so.3 => /lib/libz.so.3 (0x28315000)
libcrypt.so.3 => /lib/libcrypt.so.3 (0x28326000)
libm.so.4 => /lib/libm.so.4 (0x2833e000)
libc.so.6 => /lib/libc.so.6 (0x28354000)
##################



v main.cf je třeba upravit dle potřeby. Pokud se rozhodnete pro vlastní řešení, ve kterém nebudou jednotlivé položky jako u mě, zakomentujte (vymažte) příslušnou sekci.
ee /usr/local/etc/postfix/main.cf



##################zacatek main.cg#####################################


###############Hlavni sekce###########################
# jmeno hostitele ve formatu FQDN..
myhostname = mail.dvorec.eu
# jmeno domeny pro kterou prijimam maily-je treba k nemu nastavit v DNS reverzni zaznam
mydomain = dvorec.eu
myorigin = $myhostname
# na jakejch rozhranich posloucha
inet_interfaces = all
# parametry ,kam bude posta dorucovana lokalne
#mydestination = $myhostname, localhost.$mydomain, localhost,
# odkud prijimam maily
mynetworks = 192.168.0.0/24, 127.0.0.0/8, 10.0.0.0/24
###############Hlavni sekce###########################


###############Ostatní nastaveni###############
readme_directory = no
sample_directory = /usr/local/etc/postfix
sendmail_path = /usr/local/sbin/sendmail
html_directory = no
setgid_group = maildrop
# cesta k prikazum postfixu (postmap, postconf, postdrop)
command_directory = /usr/local/sbin
manpage_directory = /usr/local/man
# cesta k demonum postfixu
daemon_directory = /usr/local/libexec/postfix
newaliases_path = /usr/local/bin/newaliases
mailq_path = /usr/local/bin/mailq
# cesta kde budou ulozeny maily
queue_directory = /var/spool/postfix
# vlastnik mailu
mail_owner = postfix
# kod chybove odpovedi SMTP server
unknown_local_recipient_reject_code = 450
###############Ostatní nastaveni###############


###############Antispamova sekce###############
# nutne pro stupidni klienty typu outlook express
broken_sasl_auth_clients = yes

smtpd_client_restrictions = permit_sasl_authenticated, permit_mynetworks
smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname,
  reject_rbl_client bl.spamcop.net,
  reject_rbl_client sbl-xbl.spamhaus.org
#vyhozeni mailu co nemaj v poradku DNS zaznam
  reject_unknown_client,
#odmitnuti mailu s falesnou adresou
# reject_unverified_sender,
  reject_unknown_sender_domain,

#black/white list
smtpd_sender_restrictions = check_sender_access hash:/usr/local/etc/postfix/sender_access,
  permit
###############Antispamova sekce###############


##################### SASL/TLS Authentication###########################
###############SASL sekce###############
#nutne pro stupidni klienty typu outlook express
  broken_sasl_auth_clients = yes
  smtpd_sasl_auth_enable = yes
  smtpd_sasl_authenticated_header = yes
  smtpd_sasl_local_domain = #$myhostname
  smtpd_sasl_security_options = noanonymous
  #smtpd_sasl_type = dovecot
  #smtpd_sasl_path = private/auth
###############SASL sekce###############


###############TLS sekce###############
smtpd_use_tls = yes
smtpd_tls_auth_only = yes
smtpd_tls_key_file = /usr/local/etc/postfix/certs/mykey.pem
smtpd_tls_cert_file = /usr/local/etc/postfix/certs/mycert.pem
smtpd_tls_CAfile = /usr/local/etc/postfix/certs/cacert.pem
smtpd_tls_loglevel = 2
smtpd_tls_recieved_header = yes
smtpd_tls_note_starttls_offer = yes
smtpd_sasl_tls_security_options = noanonymous
tls_random_source = dev:/dev/urandom
###############TLS sekce###############
######################konec SASL/TLS #############


###############MySQL konfigurace ###############
# cesta ,kde hledat informace o aliasech
virtual_alias_maps = proxy:mysql:/usr/local/etc/postfix/mysql_virtual_alias_maps.cf
#cislo musi byt shodne s MYSQL_GID_FIELD a MYSQL_UID_FIELD v /usr/local/etc/authlib/authmysqlrc
virtual_gid_maps = static:125
virtual_uid_maps = static:125
virtual_minimum_uid = 125
#umistneni virtualnich schranek
virtual_mailbox_base = /usr/local/virtual
# cesta ,kde hledat informace o domenach
virtual_mailbox_domains = proxy:mysql:/usr/local/etc/postfix/mysql_virtual_domains_maps.cf
#velikost virtualnich schranek
#virtual_mailbox_limit = 51200000
# cesta ,kde hledat informace o postovnich schrankach
virtual_mailbox_maps = proxy:mysql:/usr/local/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_transport = virtual
relay_domains = proxy:mysql:/usr/local/etc/postfix/mysql_relay_domains_maps.cf
###############MySQL konfigurace###############


###############nastavení schránek###############
#virtual_create_maildirsize = yes
#virtual_mailbox_extended = yes
# cesta ,kde hledat informace o kvotach
virtual_mailbox_limit_maps = proxy:mysql:/usr/local/etc/postfix/mysql_virtual_mailbox_limit_maps.cf
proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps
 $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains
 $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps
 $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks
 $virtual_mailbox_limit_maps
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = Sorry, this user has overdrawn their diskspace quota. Please try again later
virtual_overquota_bounce = yes
# Omezeni zpravy na 10Mb
message_size_limit = 10485760
###############nastavení schránek###############


##### zakomentujte nasledujici sekce,pokud je nepouzivate
###############Sekce pro vakace###############
transport_maps = hash:/usr/local/etc/postfix/transport
vacation_destination_recipient_limit = 1
###############Sekce pro vakace###############


###############Sekce pro amavis###############
#Toto zajistuje vstup do obsahoveho filtru amavisu na portu 10024
content_filter=smtp-amavis:[127.0.0.1]:10024
###############Sekce pro amavis###############


####################konec main.cf###########################







nastavit master.cf

ee /usr/local/etc/postfix/master.cf

smtp inet n - n - - smtpd
  -o content_filter=spamassassin
smtps inet n - n - - smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
pickup fifo n - n 60 1 pickup
cleanup unix n - n - 0 cleanup
qmgr fifo n - n 300 1 qmgr
tlsmgr unix - - n 1000? 1 tlsmgr
rewrite unix - - n - - trivial-rewrite
bounce unix - - n - 0 bounce
defer unix - - n - 0 bounce
trace unix - - n - 0 bounce
verify unix - - n - 1 verify
flush unix n - n 1000? 0 flush
proxymap unix - - n - - proxymap
smtp unix - - n - - smtp
relay unix - - n - - smtp
-o fallback_relay=
showq unix n - n - - showq
error unix - - n - - error
retry unix - - n - - error
discard unix - - n - - discard
local unix - n n - - local
virtual unix - n n - - virtual
lmtp unix - - n - - lmtp
anvil unix - - n - 1 anvil
scache unix - - n - 1 scache


##### zakomentujte nasledujici sekce,pokud je nepouzivate


#pro vakace
vacation unix - n n - - pipe
flags=DRhu user=vacation argv=/var/spool/vacation/vacation.pl


#spamassasin -dale je treba zablokovat 2 radku
spamassassin unix - n n - - pipe
  user=spamd argv=/usr/local/bin/spamc -f -e
  /usr/sbin/sendmail -oi -f ${sender} ${recipient}

#Demon Amavisu na vystupu z postfixu na portu 25
smtp-amavis unix - - n - 2 smtp
  -o smtp_data_done_timeout=1200
  -o smtp_send_xforward_command=yes
  -o disable_dns_lookups=yes
  -o max_use=20



#Start druhe instance postfixu na portu 10025-pouze pri pouziti amavisu
127.0.0.1:10025 inet n - n - - smtpd
 -o content_filter=
  -o local_recipient_maps=
  -o relay_recipient_maps=
  -o smtpd_restriction_classes=
  -o smtpd_delay_reject=no
  -o smtpd_client_restrictions=permit_mynetworks,reject
  -o smtpd_helo_restrictions=
  -o smtpd_sender_restrictions=
  -o smtpd_recipient_restrictions=permit_mynetworks,reject
  -o smtpd_data_restrictions=reject_unauth_pipelining
  -o smtpd_end_of_data_restrictions=
  -o mynetworks=127.0.0.0/8
  -o smtpd_error_sleep_time=0
  -o smtpd_soft_error_limit=1001
  -o smtpd_hard_error_limit=1000
  -o smtpd_client_connection_count_limit=0
  -o smtpd_client_connection_rate_limit=0
  -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks


#################################




Vytvoření konfigů pro mysql

změnte si "heslo_postfixe" na své

ee /usr/local/etc/postfix/mysql_virtual_alias_maps.cf

user = postfix
password = heslo_postfixe
hosts = localhost
dbname = postfix
query = SELECT goto FROM alias WHERE address=’%s’ AND active = 1


ee /usr/local/etc/postfix/mysql_virtual_domains_maps.cf

user = postfix
password = heslo_postfixe
hosts = localhost
dbname = postfix
query = SELECT domain FROM domain WHERE domain=’%s’
#optional query to use when relaying for backup MX
#query = SELECT domain FROM domain WHERE domain=’%s’ and backupmx = ‘0′ and active = ‘1′


ee /usr/local/etc/postfix/mysql_virtual_mailbox_maps.cf

user = postfix
password = heslo_postfixe
hosts = localhost
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username=’%s’ AND active = 1


ee /usr/local/etc/postfix/mysql_virtual_mailbox_limit_maps.cf

user = postfix
password = heslo_postfixe
hosts = localhost
dbname = postfix
query = SELECT quota FROM mailbox WHERE username=’%s’


ee /usr/local/etc/postfix/mysql_relay_domains_maps.cf

user = postfix
password = heslo_postfixe
hosts = localhost
dbname = postfix
query = SELECT domain FROM domain WHERE domain=’%s’ and backupmx = ‘1′


nastavíme práva
chmod 640 /usr/local/etc/postfix/mysql_* && chgrp postfix /usr/local/etc/postfix/mysql_*

updatneme DB transportů

postmap /usr/local/etc/postfix/transport

upravíme aliasy-vložíme řádek kde evedeme mail,na který mají chodit rootovské maily

ee /etc/aliases
root: Tvuj_mail@Tvoje_doména

vytvoříme DB aliasů
/usr/bin/newaliases


vytvoříme virtuální adresář a nastavíme práva

mkdir /usr/local/virtual
chown -R postfix:postfix /usr/local/virtual
chmod -R 700 /usr/local/virtual


Autentizace


Pro použití autentizace, se podívejte výše, kde je popsána instalace
link je ZDE

TLS/SSL


Pro použití TLS/SSL, se podívejte výše, kde je popsána instalace
link je ZDE


nahodíme postfix
/usr/local/etc/rc.d/postfix start

zkontrolujte /var/log/maillog a /var/log/messages,jestli se tam nevyskytli nějaké chyby

tail -n50 /var/log/maillog



otestování telnetem

telnet localhost 25
Trying 127.0.0.1…
Connected to localhost.domain.tld.
Escape character is ‘^]’.
220 test.domain.tld ESMTP Postfix
EHLO test.com
250-test.domain.tld
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN




Užitečnosti


vymazání fronty mailů
postsuper -r ALL



pokud chceme ve scriptu posílat přílohu, použijeme program mutt
mutt -s "<Predmet>" -a <Soubor1> -a <Soubor2> me@my.com < <Text_mailu>


Je třeba mít správně nastavenou DNS pro poštovní server, jinak nás mohou některé servery odmítat. RFC1912 přímo píše

RFC1912: Common DNS Operational and Configuration Errors

2.1 Inconsistent, Missing, or Bad Data Every Internet-reachable host should have a name. The consequences of this are becoming more and more obvious. Many services available on the Internet will not talk to you if you aren't correctly registered in the DNS. Make sure your PTR and A records match. For every IP address, there should be a matching PTR record in the in-addr.arpa domain. If a host is multi-homed, (more than one IP address) make sure that all IP addresses have a corresponding PTR record (not just the first one). Failure to have matching PTR and A records can cause loss of Internet services similar to not being registered in the DNS at all. Also, PTR records must point back to a valid A record, not a alias defined by a CNAME. It is highly recommended that you use some software which automates this checking, or generate your DNS data from a database which automatically creates consistent data.


Zasílání mailů pomocí telnetu (testování odesílání)

telnet mail.keytec.cz 25
Trying 85.207.55.210...
Connected to mail.keytec.cz.
Escape character is '^]'.
220 mail.keytec.cz ESMTP Postfix


kod 220 potvrzuje jméno serveru
představíme se "helo" pro SMTP nebo "ehlo" pro ESMTP

helo jarda.keytec.cz

server nám potvrdí pozdrav kodem 250 a sdělí své jméno

250 mail.keytec.cz

vytvoříme obálku mailu-do zobáčků napíšeme odesílatele

mail from: <jarda@keytec.cz>
250 Ok

server nám potvrdil vytvoření

zadáme příjemce-adresa se píše do zobáčků

rcpt to: <spravce@nekam.cz>
250 Ok

server nám potvrdil vytvoření, můžeme zadat opakováním příkazu rcpt to: další příjemce

příkazem data vytvoříme zprávu

data
354 End data with <CR><LF>.<CR><LF>

příkazem subject: napíšeme předmět, po odentrování píšeme tělo mailu
subject: zprava

toto je telo mailu


zprávu pošleme znakem tečky na samostatném řádku
.
250 Ok: queued as C271B2DA6EE

server nám potvdil přijetí

.


příkaz
postfix upgrade-configuration
updatne main.cf a master.cf informacemi, které postfix potřebuje k běhu. Přidá nebo upraví služby a konfigurační parametry.

postfix upgrade-configuration
Editing /usr/local/etc/postfix/master.cf, adding missing entry for proxywrite service
Editing /usr/local/etc/postfix/master.cf, adding missing entry for postscreen TCP service
Editing /usr/local/etc/postfix/master.cf, adding missing entry for smtpd unix-domain service
Editing /usr/local/etc/postfix/master.cf, adding missing entry for dnsblog unix-domain service
Editing /usr/local/etc/postfix/master.cf, adding missing entry for tlsproxy unix-domain service

Note: the following files or directories still exist but are
no longer part of Postfix:

/usr/local/etc/postfix/transport

COMPATIBILITY: editing main.cf, setting inet_protocols=ipv4.
Specify inet_protocols explicitly if you want to enable IPv6.
In a future release IPv6 will be enabled by default.


pokud v logu bude hláška
warning: dict_nis_init: NIS domain name not set - NIS lookups disabled

zkontrolujeme si nastavení
postconf | grep nis
alias_maps = hash:/etc/aliases, nis:mail.aliases
lmtp_sasl_mechanism_filter =
smtp_sasl_mechanism_filter =

zkompilovali jsme si postfixe s podporou NIS . Zabijeme jej v main.cf řádkem
alias_maps = hash:/etc/aliases





Porozumění logu při přijetí e-mailu

příchozí mail je doručený

Aug 31 07:44:24 www postfix/smtpd[72760]: initializing the server-side TLS engine
Aug 31 07:44:24 www postfix/smtpd[72760]: connect from mail.brizatkove.cz[193.85.252.34]
Aug 31 07:44:24 www postfix/smtpd[72760]: setting up TLS connection from mail.brizatkove.cz[193.85.252.34]
Aug 31 07:44:24 www postfix/smtpd[72760]: mail.brizatkove.cz[193.85.252.34]: TLS cipher list "aNULL:-aNULL:ALL:+RC4:@STRENGTH"
Aug 31 07:44:24 www postfix/smtpd[72760]: SSL_accept:before/accept initialization
Aug 31 07:44:24 www postfix/smtpd[72760]: SSL_accept:SSLv3 read client hello A
Aug 31 07:44:24 www postfix/smtpd[72760]: SSL_accept:SSLv3 write server hello A
Aug 31 07:44:24 www postfix/smtpd[72760]: SSL_accept:SSLv3 write certificate A
Aug 31 07:44:24 www postfix/smtpd[72760]: SSL_accept:SSLv3 write key exchange A
Aug 31 07:44:24 www postfix/smtpd[72760]: SSL_accept:SSLv3 write server done A
Aug 31 07:44:24 www postfix/smtpd[72760]: SSL_accept:SSLv3 flush data
Aug 31 07:44:24 www postfix/smtpd[72760]: SSL_accept:SSLv3 read client key exchange A
Aug 31 07:44:24 www postfix/smtpd[72760]: SSL_accept:SSLv3 read finished A
Aug 31 07:44:24 www postfix/smtpd[72760]: SSL_accept:SSLv3 write change cipher spec A
Aug 31 07:44:24 www postfix/smtpd[72760]: SSL_accept:SSLv3 write finished A
Aug 31 07:44:24 www postfix/smtpd[72760]: SSL_accept:SSLv3 flush data
Aug 31 07:44:24 www postfix/smtpd[72760]: Anonymous TLS connection established from mail.brizatkove.cz[193.85.252.34]: TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)
Aug 31 07:44:24 www postfix/smtpd[72760]: B05FA34C3D8: client=mail.brizatkove.cz[193.85.252.34]
Aug 31 07:44:24 www postfix/cleanup[72764]: B05FA34C3D8: message-id=>OF203EA770.D512AD01-ONC1257A6B.001FDFA1-C1257A6B.001F892E@europasta.eu<
Aug 31 07:44:24 www postfix/qmgr[72713]: B05FA34C3D8: from=>xyz@europasta.eu<, size=27674, nrcpt=1 (queue active)

předání spamassassinu

Aug 31 07:44:24 www spamd[72595]: spamd: connection from localhost [127.0.0.1] at port 46732
Aug 31 07:44:24 www spamd[72595]: spamd: setuid to spamd succeeded
Aug 31 07:44:24 www spamd[72595]: spamd: processing message >OF203EA770.D512AD01-ONC1257A6B.001FDFA1-C1257A6B.001F892E@europasta.eu< for spamd:58
Aug 31 07:44:24 www postfix/smtpd[72760]: disconnect from mail.brizatkove.cz[193.85.252.34]
Aug 31 07:44:26 www spamd[72595]: spamd: clean message (1.8/5.0) for spamd:58 in 1.7 seconds, 27250 bytes.
Aug 31 07:44:26 www spamd[72595]: spamd: result: . 1 - HTML_IMAGE_ONLY_08,HTML_MESSAGE scantime=1.7,size=27250,user=spamd,uid=58,required_score=5.0,rhost=localhost,raddr=127.0.0.1,rport=46732,mid=>OF203EA770.D512AD01-ONC1257A6B.001FDFA1-C1257A6B.001F892E@europasta.eu<,autolearn=no
Aug 31 07:44:26 www postfix/pipe[72765]: B05FA34C3D8: to=>xyz@dvorec.eu<, orig_to=>jv@dvorec.eu<, relay=spamassassin, delay=2, delays=0.28/0.01/0/1.7, dsn=2.0.0, status=sent (delivered via spamassassin service)
Aug 31 07:44:26 www postfix/qmgr[72713]: B05FA34C3D8: removed
Aug 31 07:44:26 www postfix/pickup[72712]: 8ABC334C3EB: uid=58 from=>xyz@europasta.eu<
Aug 31 07:44:26 www postfix/cleanup[72764]: 8ABC334C3EB: message-id=>OF203EA770.D512AD01-ONC1257A6B.001FDFA1-C1257A6B.001F892E@europasta.eu<
Aug 31 07:44:26 www postfix/qmgr[72713]: 8ABC334C3EB: from=>xyz@europasta.eu<, size=27953, nrcpt=1 (queue active)
Aug 31 07:44:26 www spamd[72594]: prefork: child states: II
Aug 31 07:44:26 www postfix/smtpd[72771]: initializing the server-side TLS engine

předání amavisu

Aug 31 07:44:26 www postfix/smtpd[72771]: connect from localhost[127.0.0.1]
Aug 31 07:44:26 www postfix/smtpd[72771]: B7C0834C41F: client=localhost[127.0.0.1]
Aug 31 07:44:26 www postfix/cleanup[72764]: B7C0834C41F: message-id=>OF203EA770.D512AD01-ONC1257A6B.001FDFA1-C1257A6B.001F892E@europasta.eu<
Aug 31 07:44:26 www postfix/smtpd[72771]: disconnect from localhost[127.0.0.1]
Aug 31 07:44:26 www postfix/qmgr[72713]: B7C0834C41F: from=>xyz@europasta.eu<, size=28153, nrcpt=1 (queue active)

amavis scanuje email

Aug 31 07:44:26 www amavis[76470]: (76470-10) Passed CLEAN {RelayedInbound}, [192.1.1.143] >xyz@europasta.eu< -< >xyz@dvorec.eu<, Message-ID: >OF203EA770.D512AD01-ONC1257A6B.001FDFA1-C1257A6B.001F892E@europasta.eu<, mail_id: n_BnNS3UDTxV, Hits: -, size: 27953, queued_as: B7C0834C41F, 183 ms

předání postfixu a vyřazení z fronty

Aug 31 07:44:26 www postfix/smtp[72769]: 8ABC334C3EB: to=>xyz@dvorec.eu<, relay=127.0.0.1[127.0.0.1]:10024, delay=0.21, delays=0.01/0.01/0/0.18, dsn=2.0.0, status=sent (250 2.0.0 from MTA(smtp:[127.0.0.1]:10025): 250 2.0.0 Ok: queued as B7C0834C41F)
Aug 31 07:44:26 www postfix/qmgr[72713]: 8ABC334C3EB: removed

předání do uživatelovi schránky

Aug 31 07:44:26 www postfix/virtual[72772]: B7C0834C41F: to=>xyz@dvorec.eu<, relay=virtual, delay=0.02, delays=0.01/0.01/0/0, dsn=2.0.0, status=sent (delivered to maildir)
Aug 31 07:44:26 www postfix/qmgr[72713]: B7C0834C41F: removed


na téhle adrese si můžeme otestovat, jestli váš pošták není openrelay
http://www.spamhelp.org/shopenrelay/

Courier-imap + SASL2

Tato aplikace se stará o vybírání mailových schránek. Dalším podobným nástrojem je Dovecot.



instalace SASL2
autentizace- Pokud jste SASL2 nainstalovali s postfixem ( Autentizace SMTP), tak pokračujte dále instalací courier-imap

cd /usr/ports/security/cyrus-sasl2


chmod 600 opieaccess
chmod 600 opiekeys




Instalace courier-imap

cd /usr/ports/mail/courier-imap
make install


-vybereme

[X] OPENSSL Build with OpenSSL support
[ ] FAM Build in fam support for IDLE command
[ ] DRAC Build in DRAC support
[X] TRASHQUOTA Include deleted mails in the quota
[ ] GDBM Use gdbm db instead of system bdb
[X] IPV6 Build with IPv6 support
[ ] AUTH_LDAP LDAP support
[X] AUTH_MYSQL MySQL support
[ ] AUTH_PGSQL PostgreSQL support
[ ] AUTH_USERDB Userdb support
[ ] AUTH_VCHKPW Vpopmail/vchkpw support



upravime rc.conf
ee /etc/rc.conf
saslauthd_enable="YES"
saslauthd_flags=" -a pam"
courier_authdaemond_enable="YES"
courier_imap_imapd_enable="YES"
courier_imap_pop3d_enable="YES"
courier_imap_imapd_ssl_enable="YES"
courier_imap_pop3d_ssl_enable="YES"


zazálohujeme konfigy
cp /usr/local/etc/courier-imap/imapd /usr/local/etc/courier-imap/imapd.old
cp /usr/local/etc/courier-imap/imapd-ssl /usr/local/etc/courier-imap/imapd-ssl.old
cp /usr/local/etc/courier-imap/pop3d /usr/local/etc/courier-imap/pop3d.old
cp /usr/local/etc/courier-imap/pop3d-ssl /usr/local/etc/courier-imap/pop3d-ssl.old
cp /usr/local/etc/authlib/authmysqlrc /usr/local/etc/authlib/authmysqlrc.old
cp /usr/local/etc/authlib/authdaemonrc /usr/local/etc/authlib/authdaemonrc.old



prepiseme imapd
ee /usr/local/etc/courier-imap/imapd

ADDRESS=0
PORT=143
#Pocet spustenych subdemonu
MAXDAEMONS=50
MAXPERIP=4
PIDFILE=/var/run/imapd.pid
TCPDOPTS="-nodnslookup -noidentlookup"
IMAP_CAPABILITY="IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA AUTH=CRAM-MD5 AUTH=CRAM-SHA1 AUTH=CRAM-SHA256 IDLE"
IMAP_CAPABILITY="IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE"
IMAP_KEYWORDS=1
IMAP_CAPABILITY_ORIG="IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA AUTH=CRAM-MD5 AUTH=CRAM-SHA1 AUTH=CRAM-SHA256 IDLE"
IMAP_PROXY=0
IMAP_PROXY_FOREIGN=0
IMAP_IDLE_TIMEOUT=90
IMAP_CAPABILITY_TLS="$IMAP_CAPABILITY AUTH=PLAIN"
IMAP_CAPABILITY_TLS_ORIG="$IMAP_CAPABILITY_ORIG AUTH=PLAIN"
IMAP_DISABLETHREADSORT=0
IMAP_CHECK_ALL_FOLDERS=0
IMAP_OBSOLETE_CLIENT=0
IMAP_UMASK=022
IMAP_ULIMITD=65536
IMAP_USELOCKS=1
IMAP_SHAREDINDEXFILE=/usr/local/etc/courier-imap/shared/index
IMAP_ENHANCEDIDLE=0
IMAP_TRASHFOLDERNAME=Trash
IMAP_EMPTYTRASH=Trash:7
IMAP_MOVE_EXPUNGE_TO_TRASH=0
SENDMAIL=/usr/sbin/sendmail
HEADERFROM=X-IMAP-Sender
#Startuje IMAP sluzbu pokud ANO
IMAPDSTART=YES
MAILDIRPATH=Maildir



prepiseme imapd-ssl
ee /usr/local/etc/courier-imap/imapd-ssl

SSLPORT=993
SSLADDRESS=0
SSLPIDFILE=/var/run/imapd-ssl.pid
IMAPDSSLSTART=YES
IMAPDSTARTTLS=YES
IMAP_TLS_REQUIRED=0
COURIERTLS=/usr/local/bin/couriertls
TLS_PROTOCOL=SSL23
TLS_STARTTLS_PROTOCOL=TLS23
#cesta k certifikatu
TLS_CERTFILE=/usr/local/etc/postfix/ssl/smtpd.pem
TLS_VERIFYPEER=NONE
TLS_CACHEFILE=/usr/local/var/couriersslcache
TLS_CACHESIZE=524288
MAILDIRPATH=Maildir



prepiseme pop3d
ee /usr/local/etc/courier-imap/pop3d

MAXDAEMONS=50
MAXPERIP=4
PIDFILE=/var/run/pop3d.pid
POP3AUTH_TLS_ORIG="LOGIN PLAIN"
POP3_PROXY=0
PORT=110
ADDRESS=0
TCPDOPTS="-nodnslookup -noidentlookup"
#Toto startuje POP3 sluzbu
POP3DSTART=YES
MAILDIRPATH=Maildir




prepiseme pop3d-ssl

ee /usr/local/etc/courier-imap/pop3d-ssl

SSLPORT=995
SSLADDRESS=0
SSLPIDFILE=/var/run/pop3d-ssl.pid
POP3DSSLSTART=NO
POP3_STARTTLS=YES
POP3_TLS_REQUIRED=0
COURIERTLS=/usr/local/bin/couriertls
TLS_PROTOCOL=SSL23
TLS_STARTTLS_PROTOCOL=TLS23
#cesta k certifikatu
TLS_CERTFILE=/usr/local/etc/postfix/ssl/smtpd.pem
TLS_VERIFYPEER=NONE
TLS_CACHEFILE=/usr/local/var/couriersslcache
TLS_CACHESIZE=524288
MAILDIRPATH=Maildir





nastavíme autentizaci
POZOR nesmí být v konfigu mezery,ale jen tabulátory


nastaveni konfigurace autentizace vuci MySQL
ee /usr/local/etc/authlib/authmysqlrc
změnte si "heslo_postfixe" na své(stejné jako /usr/local/etc/postfix/mysql_virtual_*.cf vytváření DB pro postfixadmina)

MYSQL_SERVER localhost
#nasledujici 2 polozky nastavit dle toho,co jste vlozili do DB
MYSQL_USERNAME postfix
MYSQL_PASSWORD heslo_postfixe
MYSQL_SOCKET /tmp/mysql.sock
MYSQL_PORT 0
MYSQL_OPT 0
MYSQL_DATABASE postfix
MYSQL_USER_TABLE mailbox
#MYSQL_CLEAR_PWFIELD password
MYSQL_CRYPT_PWFIELD password
#cislo zmenit dle virtual_uid_maps = static:125
MYSQL_UID_FIELD '125'
MYSQL_GID_FIELD '125'
MYSQL_LOGIN_FIELD username
#cestu zmenit dle virtual_mailbox_base = /usr/local/virtual/ v main.cf
MYSQL_HOME_FIELD '/usr/local/virtual/'
MYSQL_MAILDIR_FIELD maildir
MYSQL_NAME_FIELD name
MYSQL_QUOTA_FIELD quota
MYSQL_WHERE_CLAUSE active='1'



ee /usr/local/etc/authlib/authdaemonrc

authmodulelist="authmysql"
authmodulelistorig="authmysql"
daemons=5
authdaemonvar=/var/run/authdaemond
subsystem=mail
DEBUG_LOGIN=1 #pokud dame 2,budou se v logu ukazovat i hesla
DEFAULTOPTIONS="wbnodsn=1"
LOGGEROPTS=""


prava
chmod 755 /var/run/authdaemond

nahození authdemona
/usr/local/etc/rc.d/courier-authdaemond start

test běhu
cat /var/log/maillog | grep authdaemond
#########################
Oct 1 10:38:29 test authdaemond: modules="authmysql", daemons=5
Oct 1 10:38:29 test authdaemond: Installing libauthmysql
Oct 1 10:38:29 test authdaemond: Installation complete: authmysql
###########################




nahození couriera
/usr/local/libexec/courier-imap/imapd.rc start
/usr/local/libexec/courier-imap/pop3d.rc start


nahození couriera s podporou SSL
/usr/local/libexec/courier-imap/imapd-ssl.rc start
/usr/local/libexec/courier-imap/pop3d-ssl.rc start



kontrola behu

sockstat -4 | grep courier
root couriertcp 3182 5 tcp4 *:995 *:*
root couriertcp 3176 5 tcp4 *:993 *:*
root couriertcp 3169 5 tcp4 *:110 *:*
root couriertcp 3163 5 tcp4 *:143 *:*


kontrola zda courier posloucha

telnet 127.0.0.1 110
Trying 127.0.0.1...
Connected to localhost.dvorec.eu.
Escape character is '^]'.
+OK Hello there.
user spravce@dvorec.xx
+OK Password required.
pass HESLO
+OK logged in.
STAT #vylistuje maily
+OK 2 8471
LIST
+OK
1 7065
2 1406
retr 2 #precteme mail c.2

telnet 127.0.0.1 110
Trying 127.0.0.1...
Connected to localhost.dvorec.eu.
Escape character is '^]'.
+OK Hello there.
user spravce@dvorec.xx
+OK Password required.
pass HESLO


Nefunkční přihlášení do schránky
pokud se nejde připojit a v logu maillog máte
www authdaemond: failed to connect to mysql server (server=mysql.example.com, userid=admin): Unknown MySQL server host 'mysql.example.com' (1)
po portupgrade se může stát, že configy se zaarchivují a místo nich se vytvoří defaultní
oprava je jednoduchá
cp /usr/local/etc/authlib/authmysqlrc.bak /usr/local/etc/authlib/authmysqlrc


Chybová hláška maximální počet povolených spojení
Thunderbird hlásí:
"Nelze se připojit na IMAP server. Pravděpodobně jste překročili maximální počet povolených spojení na server
edit /usr/local/etc/courier-imap/imapd

#pocet soucasne pripojeny klientu
MAXPERIP=40


pak restartneme
/usr/local/etc/rc.d/courier-imap-imapd


Pokud v logu bude chyba
accept: error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number je třeba v /etc/courier/imapd-ssl a /etc/courier/pop3d-ssl upravit paramatry na

TLS_PROTOCOL=SSL23
TLS_STARTTLS_PROTOCOL=SSL23
je to způsobeno tím, že používáte vyšší verzi SSL, ale v configu máte určtě
TLS_PROTOCOL=SSL1
TLS_STARTTLS_PROTOCOL=SSL1
tímto bude akeptována verze 2 a 3


POSTFIXADMIN

Je grafické rozhraní napsané v PHP, kterým se nastavují virtuální domény, uživatelé a atd.


instalace
cd /usr/ports/mail/postfixadmin/
make install




Vytvoříme adresář pro dočasné soubory
mkdir /root/temp
cd /root/temp
ee /root/temp/mysqscript.postfix


vlozit nasledujici


#####POZOR
#9 a 12 radek musi souhlasit s virtual_******_maps.cnf
#user = postfix
#password = heslo_postfixe
#####POZOR-upravit localhost a password na radku o 9 nize a o 12nize
#####POZOR-je to tady zformátovaný do úzkýho sloupce,po nakopírování se to přeformátuje tak jak má konec řádky je vždy ukončen středníkem.

#toto je radek 1 ##################################################################
# mysql -u root [-p] < postfix-db.sql
#
#
# Postfix / MySQL
#
USE mysql;
# Postfix user & password
INSERT INTO user (Host, User, Password) VALUES ('localhost','postfix',password('password'));
INSERT INTO db (Host, Db, User, Select_priv) VALUES ('localhost','postfix','postfix','Y');
# Postfix Admin user & password
INSERT INTO user (Host, User, Password) VALUES ('localhost','postfixadmin',password('password'));
INSERT INTO db (Host, Db, User, Select_priv, Insert_priv, Update_priv, Delete_priv) VALUES ('localhost', 'postfix', 'postfixadmin', 'Y', 'Y', 'Y','Y');
FLUSH PRIVILEGES;
GRANT USAGE ON postfix.* TO postfix@localhost;
GRANT SELECT, INSERT, DELETE, UPDATE ON postfix.* TO postfix@localhost;
GRANT USAGE ON postfix.* TO postfixadmin@localhost;
GRANT SELECT, INSERT, DELETE, UPDATE ON postfix.* TO postfixadmin@localhost;
CREATE DATABASE postfix;
USE postfix;

#
# Table structure for table admin
#
CREATE TABLE admin (
username varchar(255) NOT NULL default '',
password varchar(255) NOT NULL default '',
created datetime NOT NULL default '0000-00-00 00:00:00',
modified datetime NOT NULL default '0000-00-00 00:00:00',
active tinyint(1) NOT NULL default '1',
PRIMARY KEY (username),
KEY username (username)
) TYPE=MyISAM COMMENT='Postfix Admin - Virtual Admins';

#
# Table structure for table alias
#
CREATE TABLE alias (
address varchar(255) NOT NULL default '',
goto text NOT NULL,
domain varchar(255) NOT NULL default '',
created datetime NOT NULL default '0000-00-00 00:00:00',
modified datetime NOT NULL default '0000-00-00 00:00:00',
active tinyint(1) NOT NULL default '1',
PRIMARY KEY (address),
KEY address (address)
) TYPE=MyISAM COMMENT='Postfix Admin - Virtual Aliases';


#
# Table structure for table domain
#
CREATE TABLE domain (
domain varchar(255) NOT NULL default '',
description varchar(255) NOT NULL default '',
aliases int(10) NOT NULL default '0',
mailboxes int(10) NOT NULL default '0',
maxquota int(10) NOT NULL default '0',
transport varchar(255) default NULL,
backupmx tinyint(1) NOT NULL default '0',
created datetime NOT NULL default '0000-00-00 00:00:00',
modified datetime NOT NULL default '0000-00-00 00:00:00',
active tinyint(1) NOT NULL default '1',
PRIMARY KEY (domain),
KEY domain (domain)
) TYPE=MyISAM COMMENT='Postfix Admin - Virtual Domains';

#
# Table structure for table domain_admins
#
CREATE TABLE domain_admins (
username varchar(255) NOT NULL default '',
domain varchar(255) NOT NULL default '',
created datetime NOT NULL default '0000-00-00 00:00:00',
active tinyint(1) NOT NULL default '1',
KEY username (username)
) TYPE=MyISAM COMMENT='Postfix Admin - Domain Admins';

#
# Table structure for table log
#
CREATE TABLE log (
timestamp datetime NOT NULL default '0000-00-00 00:00:00',
username varchar(255) NOT NULL default '',
domain varchar(255) NOT NULL default '',
action varchar(255) NOT NULL default '',
data varchar(255) NOT NULL default '',
KEY timestamp (timestamp)
) TYPE=MyISAM COMMENT='Postfix Admin - Log';

#
# Table structure for table mailbox
#
CREATE TABLE mailbox (
username varchar(255) NOT NULL default '',
password varchar(255) NOT NULL default '',
name varchar(255) NOT NULL default '',
maildir varchar(255) NOT NULL default '',
quota int(10) NOT NULL default '0',
domain varchar(255) NOT NULL default '',
created datetime NOT NULL default '0000-00-00 00:00:00',
modified datetime NOT NULL default '0000-00-00 00:00:00',
active tinyint(1) NOT NULL default '1',
PRIMARY KEY (username),
KEY username (username)
) TYPE=MyISAM COMMENT='Postfix Admin - Virtual Mailboxes';


#
# Table structure for table vacation
#
CREATE TABLE vacation (
email varchar(255) NOT NULL default '',
subject varchar(255) NOT NULL default '',
body text NOT NULL,
cache text NOT NULL,
domain varchar(255) NOT NULL default '',
created datetime NOT NULL default '0000-00-00 00:00:00',
active tinyint(1) NOT NULL default '1',
PRIMARY KEY (email),
KEY email (email)
) TYPE=MyISAM COMMENT='Postfix Admin - Virtual Vacation';
##########################################################



vložíme do DB příkazem-místo HESLO použijte heslo jaké máte pro roota do DB
mysql -u root -pHESLO < /root/temp/mysqscript.postfix
smažeme nepotřebný soubor
rm /root/temp/mysqscript.postfix


KONTROLA vytvoření DB a přístupu uživatele postfix

mysql -u postfix -pheslo_postfixe


show databases;
+----------+
| Database |
+----------+
| postfix |
| test |
+----------+

use postfix;

show tables;
+-------------------+
| Tables_in_postfix |
+-------------------+
| admin |
| alias |
| domain |
| domain_admins |
| log |
| mailbox |
| vacation |
+-------------------+
7 rows in set (0.00 sec)



SELECT * FROM mailbox;
SELECT * FROM domain;



Zeditujeme configurák postfixadmina

ee /usr/local/www/postfixadmin/config.inc.php
upravime nasledujici

$CONF['database_user'] = 'postfixadmin';#stejne jako na radku 12 ktery se vlozil do mysql
$CONF['database_password'] = 'posta';#stejne jako na radku 9 ktery se vlozil do mysql
$CONF['database_name'] = 'postfix'; #stejne jako na radku 9 ktery se vlozil do mysql
$CONF[’postfix_admin_url’] =
$CONF[’postfix_admin_path’] =
$CONF[’admin_email’] =
$CONF[’quota_multiplier’] =
$CONF[’vacation_domain’] =
$CONF[’footer_link’] =
$CONF[’welcome_text’] =



<?php
//
// Postfix Admin
// by Mischa Peters <mischa at high5 dot net>
// Copyright (c) 2002 - 2005 High5!
// License Info: http://www.postfixadmin.com/?file=LICENSE.TXT
//
// File: config.inc.php
//
if (ereg ("config.inc.php", $_SERVER['PHP_SELF']))
{
header ("Location: login.php");
exit;
}

// Postfix Admin Path
// Set the location to your Postfix Admin installation here.
$CONF['postfix_admin_url'] = 'http://dvorec.eu/postfixadmin';
$CONF['postfix_admin_path'] = '/usr/local/www/postfixadmin';

// Language config
// Language files are located in './languages'.
$CONF['default_language'] = 'cs';

// Database Config
// mysql = MySQL 3.23 and 4.0
// mysqli = MySQL 4.1
// pgsql = PostgreSQL
$CONF['database_type'] = 'mysql';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'HESLO';
$CONF['database_name'] = 'postfix';
$CONF['database_prefix'] = '';

// Site Admin
// Define the Site Admins email address below.
// This will be used to send emails from to create mailboxes.
$CONF['admin_email'] = 'spravce@dvorec.eu';

// Mail Server
// Hostname (FQDN) of your mail server.
// This is used to send email to Postfix in order to create mailboxes.
$CONF['smtp_server'] = 'localhost';
$CONF['smtp_port'] = '25';

// Encrypt
// In what way do you want the passwords to be crypted?
// md5crypt = internal postfix admin md5
// system = whatever you have set as your PHP system default
// cleartext = clear text passwords (ouch!)
$CONF['encrypt'] = 'md5crypt';
// Generate Password
// Generate a random password for a mailbox and display it.
// If you want to automagically generate paswords set this to 'YES'.
$CONF['generate_password'] = 'NO';

// Page Size
// Set the number of entries that you would like to see
// in one page.
$CONF['page_size'] = '10';

// Default Aliases
// The default aliases that need to be created for all domains.
$CONF['default_aliases'] = array (
'abuse' => 'abuse@spravce@change-this-to-your.domain.tld',
'hostmaster' => 'hostmaster@change-this-to-your.domain.tld',
'postmaster' => 'postmaster@change-this-to-your.domain.tld',
'webmaster' => 'webmaster@change-this-to-your.domain.tld'
);

// Mailboxes
// If you want to store the mailboxes per domain set this to 'YES'.
// Example: /usr/local/virtual/domain.tld/username@domain.tld
$CONF['domain_path'] = 'YES';
// If you don't want to have the domain in your mailbox set this to 'NO'.
// Example: /usr/local/virtual/domain.tld/username
$CONF['domain_in_mailbox'] = 'NO';

// Default Domain Values
// Specify your default values below. Quota in MB.
$CONF['aliases'] = '10';
$CONF['mailboxes'] = '100';
$CONF['maxquota'] = '10';

// Quota
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'NO';
// You can either use '1024000' or '1048576'
$CONF['quota_multiplier'] = '1024000';

// Transport
// If you want to define additional transport options for a domain set this to 'YES'.
// Read the transport file of the Postfix documentation.
$CONF['transport'] = 'NO';

// Virtual Vacation
// If you want to use virtual vacation for you mailbox users set this to 'YES'.
// NOTE: Make sure that you install the vacation module. http://high5.net/postfixadmin/
$CONF['vacation'] = 'YES';
// This is the autoreply domain that you will need to set in your Postfix
// transport maps to handle virtual vacations. It does not need to be a
// real domain (i.e. you don't need to setup DNS for it).
$CONF['vacation_domain'] = 'autoreply.dvorec.eu';
// Alias Control
// Postfix Admin inserts an alias in the alias table for every mailbox it creates.
// The reason for this is that when you want catch-all and normal mailboxes
// to work you need to have the mailbox replicated in the alias table.
// If you want to take control of these aliases as well set this to 'YES'.
$CONF['alias_control'] = 'NO';

// Special Alias Control
// Set to 'NO' if you don't want your domain admins to change the default aliases.
$CONF['special_alias_control'] = 'YES';

// Logging
// If you don't want logging set this to 'NO';
$CONF['logging'] = 'YES';

// Header
$CONF['show_header_text'] = 'NO';
$CONF['header_text'] = ':: Postfix Admin ::';

// Footer
// Below information will be on all pages.
// If you don't want the footer information to appear set this to 'NO'.
$CONF['show_footer_text'] = 'YES';
$CONF['footer_text'] = 'Navrat na hlavni stranku Dvorec.eu';
$CONF['footer_link'] = 'http://www.dvorec.eu';

// Welcome Message
// This message is send to every newly created mailbox.
// Change the text between EOM.
$CONF['welcome_text'] = <<<EOM
Dobry den,

Vitejte ve vasem postovnim uctu
EOM;

//
// END OF CONFIG FILE
//
?>





upravit chybu ve formátování stránky-nastavit hodnotu z 750 na 1000
ee /usr/local/www/postfixadmin/stylesheet.css

#menu {
width: 1000px;
}


a

#alias_table, #mailbox_table, #overview_table, #log_table, #admin_table {
width: 1000px;
}



nastavení práv

cd /usr/local/www/postfixadmin
chmod 640 *.php *.css
cd /usr/local/www/postfixadmin/admin/
chmod 640 *.php .ht*
cd /usr/local/www/postfixadmin/images/
chmod 640 *.gif *.png
cd /usr/local/www/postfixadmin/languages/
chmod 640 *.lang
cd /usr/local/www/postfixadmin/templates/
chmod 640 *.tpl
cd /usr/local/www/postfixadmin/users/
chmod 640 *.php




VAKACE
je to takové to oznámení,když jedete na dovolenou,že jste mimo.Je to tak inteligentní,že na každý mail to odpoví jen jednou. Takže se NEMŮŽE stát,že pošlete mail ,příjemce má nastavený vakace,automat vám odpoví,vy mezitím nastavíte taky vakace a ono by to poslalo automaticky mail příjemci,ten by zas automaticky odpověděl ...., Tak to fungovalo dříve.

Vytvoreni uzivatele pro vakace
pw groupadd vacation
pw useradd vacation -c Virtual\ Vacation -d /nonexistent -g vacation -s /sbin/nologin


vytvoreni adresare pro vakace
mkdir /var/spool/vacation
cp /usr/local/www/postfixadmin/VIRTUAL_VACATION/vacation.pl /var/spool/vacation/
chown -R vacation:vacation /var/spool/vacation/
chmod -R 700 /var/spool/vacation/


zeditovat
ee /var/spool/vacation/vacation.pl

my $db_pass = #stejne jako na radku 9 ktery se vlozil do mysql
my $logfile =
my $debugfile = “/var/spool/vacation/vacation.debug”;
my $syslog = 1;



upravit master.cf-již je doplněno v sekci Postfix
ee /usr/local/etc/postfix/master.cf

vacation unix - n n - - pipe
flags=DRhu user=vacation argv=/var/spool/vacation/vacation.pl


doplnit-upravit main.cf-již je doplněno v sekci Postfix
ee /usr/local/etc/postfix/main.cf

transport_maps = hash:/usr/local/etc/postfix/transport
vacation_destination_recipient_limit = 1



ee /usr/local/etc/postfix/transport
místo dvorec.eu si dejte svoji doménu


autoreply.dvorec.eu vacation:

vytvoreni postmapove DB
postmap /usr/local/etc/postfix/transport



reload postfixe

/usr/local/etc/rc.d/postfix reload



Nastavit cestu pro apache

ee /usr/local/etc/apache22/Includes/postfixadmin.conf

Alias /postfixadmin/ "/usr/local/www/postfixadmin/"
<Directory "/usr/local/www/postfixadmin">
Options Indexes
AllowOverride ALL
Order allow,deny
Allow from all
</Directory>





NASTAVIT autentizaci

ee /usr/local/www/postfixadmin/admin/.htaccess

AuthUserFile /usr/local/www/postfixadmin/admin/.htpasswd
AuthGroupFile /dev/null
AuthName "Postfix Admin sekce"
AuthType Basic

<limit GET POST>
require valid-user
</limit>


-parametr -c vytvoří soubor při dapřidávání dalších uživatelu nepoužívat-původní by se přepsal
htpasswd -c /usr/local/www/postfixadmin/admin/.htpasswd admin
nastavit heslo




Doporučuji nakopčit soubory .ht* z adresáře admin i do adresáře users. Nezapomente vytvořit hesla pro všechny uživatele,kteří budou si samy moci měnit heslo,nastavovat vakace a apod.
cp /usr/local/www/postfixadmin/admin/.ht* /usr/local/www/postfixadmin/users/.ht*

vymazat setup.php
mv /usr/local/www/postfixadmin/setup.php /usr/local/www/postfixadmin/setup.php.old




spuštění postfixadmina
http://www.dvorec.eu/postfixadmin/setup.php

Pokud dostaneme následující hlášku ,tak není chyba v závislostech stále opravena
The Postfix program

<"spravce@dvorec.xx"@autoreply.dvorec.xx> (expanded from <spravce@dvorec.xx>):
Command died with status 2: "/var/spool/vacation/vacation.pl". Command
output: Can't locate DBI.pm in @INC (@INC contains:
/usr/local/lib/perl5/5.8.8/BSDPAN /usr/local/lib/perl5/site_perl/5.8.8/mach
/usr/local/lib/perl5/site_perl/5.8.8 /usr/local/lib/perl5/site_perl
/usr/local/lib/perl5/5.8.8/mach /usr/local/lib/perl5/5.8.8 .) at
/var/spool/vacation/vacation.pl line 18. BEGIN failed--compilation aborted
at /var/spool/vacation/vacation.pl line 18.


Tímto příkazem si zjistíme co schází
pkg_info -W /var/spool/vacation/vacation.pl

a nainstalujeme to
cd /usr/ports/lang/perl5.8 && nake install
cd /usr/ports/databases/p5-DBI && nake install
cd /usr/ports/databases/p5-DBD-mysql && nake install




Užitečnosti

#pokud se preklikneme ve jmenu ci heslu pri editaci souboru pro vytvareni DB, muzeme vymazat uzivatele z DB a pak je znova natahnout

USE mysql;
delete from user where User='postfix';
delete from db where User='postfix';
delete from user where User='postfixadmin';
delete from db where User='postfixadmin';
FLUSH PRIVILEGES;


#a muzem smazat i kompletni DB
DROP DATABASE postfix;

#pokud mame problem s postfixadminem muzete vkladat data rucne

INSERT INTO domain (domain, description, transport) VALUES ('dvorec.eu', 'moje domena', 'virtual');

INSERT INTO alias (address, goto, domain) VALUES ('spravce@dvorec.eu', 'spravce@dvorec.xx', 'dvorec.eu');
INSERT INTO mailbox (username, password, maildir, quota, domain) VALUES ('spravce@dvorec.xx', 'HESLO', 'dvorec.eu/test/', '2000', 'dvorec.eu');






CLAMAV

je antivirový program


Instalace
cd /usr/ports/security/clamav
make install


Vybereme následujicí

[X] ARC Enable arch archives support
[X] ARJ Enable arj archives support
[X] LHA Enable lha archives support
[ ] MILTER Compile the milter interface
[ ] LDAP libmilter was built with LDAP
[ ] STDERR Print logs to stderr instead of stdout
[ ] EXPERIMENTAL Build experimental code




vložit
ee /usr/local/etc/clamav.conf


LogFile /var/log/clamav/clamd.log
LogFileMaxSize 2M
DatabaseDirectory /var/db/clamav
LocalSocket /var/amavis/clamd
FixStaleSocket
MaxDirectoryRecursion 15
User clamav
AllowSupplementaryGroups
ScanMail


cp /usr/local/etc/freshclam.conf /usr/local/etc/freshclam.conf.old

upravit-přepsat
ee /usr/local/etc/freshclam.conf

DatabaseDirectory /var/db/clamav
UpdateLogFile /var/log/clamav/freshclam.log
PidFile /var/run/clamav/freshclam.pid
LogVerbose yes
DatabaseOwner clamav
DatabaseMirror database.clamav.net
NotifyClamd /usr/local/etc/clamd.conf
MaxAttempts 3
#jak casto se ma kontrolovat DB-12x za den
Checks 12



provést

mkdir /usr/local/share/clamav
chown -R clamav:clamav /usr/local/share/clamav
chmod 750 /usr/local/share/clamav
mkdir /var/amavis/
chown -R clamav:clamav /var/amavis
chmod 750 /var/amavis
mkdir /var/log/clamav
touch /var/log/clamav/freshclam.log
chown clamav:clamav /var/log/clamav/freshclam.log
chmod 600 /var/log/clamav/freshclam.log
touch /var/log/clamav/clamd.log
chown clamav:clamav /var/log/clamav/clamd.log
chmod 600 /var/log/clamav/clamd.log




rucni update virové DB freshclam

/usr/local/bin/freshclam


ClamAv je samostatný démon, který může fungovat a také funguje nezávisle. Může jej využívat třeba Samba , nebo jej můžete spustit samostatně.

proskenování adresáře /home
clamscan -r -i -l scan.txt /home

proskenování adresáře /home/jarda , odstranění zavirovaných souborů a výstup scanu do txt
clamscan -r -i –remove -l scan_home.txt /home/jarda
prohlídnutí výstupu txt
cat scan_home.txt

výsledek - předhodil jsem mu jeden zavirovaný soubor
/home/votruba/Crack/7z457-x64.msi: OK
/home/votruba/Crack/7z460.exe: OK
/home/votruba/Crack/xxxxx-keygen.exe: Hacktool.Crack-7 FOUND
/home/votruba/Crack/disable_activation.cmd: OK
/home/votruba/Crack/install.txt: OK
/home/votruba/Crack/mckg.zip: Hacktool.Crack-7 FOUND
/home/votruba/Crack/scan.txt: OK

----------- SCAN SUMMARY -----------
Known viruses: 1299659
Engine version: 0.97.5
Scanned directories: 1
Scanned files: 7
Infected files: 2
Data scanned: 7.34 MB
Data read: 2.09 MB (ratio 3.51:1)
Time: 10.066 sec (0 m 10 s)



AMAVISD-NEW

je kontextový filtr. Připojují se do něho i jiné plikace, jako filtr spamu, antiviry a pod. Jeho pomocí se nechají blokovat domény, spustitelné přílohy a pod.


cd /usr/ports/security/amavisd-new
make install clean clean-depends


vybrat


[X] BDB Use BerkeleyDB for nanny/cache/snmp
[ ] SQLITE Use SQLite for lookups
[X] MYSQL Use MySQL for lookups/logging/quarantine
[ ] PGSQL Use PgSQL for lookups/logging/quarantine
[ ] LDAP Use LDAP for lookups
[ ] SASL Use SASL authentication
[X] MILTER Sendmail milter support
[X] SPAMASSASSIN Use mail/p5-Mail-SpamAssassin
[ ] P0F Passive operating system fingerprinting
[ ] ALTERMIME Use AlterMime for defanging/disclaimers
[X] FILE Use newer file(1) utility from ports
[X] RAR RAR support with archivers/rar
[X] UNRAR RAR support with archivers/unrar
[X] ARJ ARJ support with archivers/arj
[X] UNARJ ARJ support with archivers/unarj
[X] LHA LHA support with archivers/lha
[X] ARC ARC support with archivers/arc
[ ] NOMARCH ARC support with archivers/nomarch
[X] CAB CAB support with archivers/cabextract
[X] RPM RPM support with archivers/rpm2cpio
[X] ZOO ZOO support with archivers/zoo
[X] UNZOO ZOO support with archivers/unzoo
[X] LZOP LZOP support with archivers/lzop
[X] FREEZE FREEZE support with archivers/freeze
[X] P7ZIP P7ZIP support with archivers/p7zip
[ ] TNEF Add external tnef decoder converters/tnef





na dotaz
Do you wish to run sa-update to fetch new rules [N]?
odpovíme
Y
zazálohujeme config
cp /usr/local/etc/amavisd.conf /usr/local/etc/amavisd.conf.old

upravit
ee /usr/local/etc/amavisd.conf

################################################

use strict;

$max_servers = 2; # number of pre-forked children (2..15 is common)
$daemon_user = 'vscan'; # (no default; customary: vscan or amavis)
$daemon_group = 'vscan'; # (no default; customary: vscan or amavis)

####################################################
#####-upravit domenu
$mydomain = 'dvorec.eu'; # a convenient default for other settings
@local_domains_acl = ( ".$mydomain", '.dvorec.eu' );
$unix_socketname = "/var/amavis/amavisd.sock";
@inet_acl = qw( 127.0.0.1 );
####################################################
$forward_method = 'smtp:[127.0.0.1]:10025';
$notify_method = $forward_method;
$inet_socket_port = 10024;
$inet_socket_bind = '127.0.0.1';
$max_servers = 3;

$MYHOME = '/var/amavis';
$TEMPBASE = "$MYHOME/tmp";
$QUARANTINEDIR = '/var/virusmails';

@local_domains_maps = ( [".$mydomain"] );
@mynetworks = qw( 192.168.0.0/24 127.0.0.0/8 );

@bypass_virus_checks_acl = qw( . );
@bypass_spam_checks_acl = qw( . );

$X_HEADER_TAG = 'X-Virus-Scanned';
$X_HEADER_LINE = "Passed virus scan at $mydomain";

#sahani pro hesla do DB-nema to vyznam
#Pokud ho budete chtit obnovit, musite napred uzivateli "mail@localhost" pridelit prava..
#@lookup_sql_dsn = (
#['DBI:mysql:database=mail;host=127.0.0.1;port=3306', 'mail', 'wAhAha'] );
#$sql_select_policy = "SELECT domain FROM domains WHERE domain='%s'";

$log_level = 1;
$log_recip_templ = undef;
$DO_SYSLOG = 1;
$SYSLOG_LEVEL = 'mail.debug';

$enable_db = 1;
$enable_global_cache = 1;

$final_virus_destiny = D_DISCARD;
$final_banned_destiny = D_BOUNCE;
$final_spam_destiny = D_DISCARD; # Pokud chceme dorucovat, zmenit na D_PASS;
$final_bad_header_destiny = D_PASS;

$sa_spam_subject_tag = '*** SPAM *** ';

$sa_tag_level_deflt = 2.0;
$sa_tag2_level_deflt = 6.31;
$sa_kill_level_deflt = 6.31;
$sa_dsn_cutoff_level = 10;
$sa_mail_body_size_limit = 200*1024;
$sa_local_tests_only = 0;
$sa_auto_whitelist = 1;

$virus_admin = "alert\@$mydomain";

$mailfrom_notify_admin = "virusalert\@$mydomain";
$mailfrom_notify_recip = "virusalert\@$mydomain";
$mailfrom_notify_spamadmin = "spam.police\@$mydomain";
$mailfrom_to_quarantine = '';


@addr_extension_virus_maps = ('virus');
@addr_extension_spam_maps = ('spam');
@addr_extension_banned_maps = ('banned');
@addr_extension_bad_header_maps = ('badh');

$path = '/usr/local/sbin:/usr/local/bin:/usr/sbin:/sbin:/usr/bin:/bin';
$file = 'file';
$gzip = 'gzip';
$bzip2 = 'bzip2';
$lzop = 'lzop';
$rpm2cpio = ['rpm2cpio.pl','rpm2cpio'];
$cabextract = 'cabextract';
$uncompress = ['uncompress', 'gzip -d', 'zcat'];
$unfreeze = ['unfreeze', 'freeze -d', 'melt', 'fcat'];
$arc = ['nomarch', 'arc'];
$unarj = ['arj', 'unarj'];
$unrar = ['rar', 'unrar'];
$zoo = 'zoo';
$lha = 'lha';
$cpio = ['gcpio','cpio'];
$dspam = 'dspam';

$MAXLEVELS = 14;
$MAXFILES = 1500;
$MIN_EXPANSION_QUOTA = 100*1024;
$MAX_EXPANSION_QUOTA = 300*1024*1024;

$defang_virus = 1;
$defang_banned = 1;

@viruses_that_fake_sender_maps = (new_RE(
[qr'\bEICAR\b'i => 0],
[qr'^(WM97|OF97|Joke\.)'i => 0],
[qr/.*/ => 1],
));

@keep_decoded_original_maps = (new_RE(
qr'^MAIL-UNDECIPHERABLE$',
qr'^(ASCII(?! cpio)|text|uuencoded|xxencoded|binhex)'i,
));

$banned_filename_re = new_RE(
qr'\.[^./]*\.(exe|vbs|pif|scr|bat|cmd|com|dll)\.?$'i,
qr'^application/x-msdownload$'i,
qr'^application/x-msdos-program$'i,
qr'^application/hta$'i,
[ qr'^\.(tgz|tar|gz)$' => 0 ],
qr'.\.(exe|vbs|pif|scr|bat|cmd|com)$'i,
qr'^\.(exe-ms)$',
);


@score_sender_maps = ({
'.' => [
new_RE(
[qr'^(bulkmail|offers|cheapbenefits|earnmoney|foryou)@'i
=> 5.0],
[qr'^(greatcasino|investments|lose_weight_today|market\.alert)@'i=>
5.0],
[qr'^(money2you|MyGreenCard|new\.tld\.registry|opt-out|opt-in)@'i=>
5.0],
[qr'^(optin|saveonlsmoking2002k|specialoffer|specialoffers)@'i
=> 5.0],
[qr'^(stockalert|stopsnoring|wantsome|workathome|yesitsfree)@'i
=> 5.0],
[qr'^(your_friend|greatoffers)@'i => 5.0],
[qr'^(inkjetplanet|marketopt|MakeMoney)\d*@'i => 5.0],
),
],
});

#spusteni clamAV
@av_scanners = (
['ClamAV-clamd', \&ask_daemon, ["CONTSCAN {}\n",
"/var/run/clamav/clamd"],
qr/\bOK$/, qr/\bFOUND$/,
qr/^.*?: (?!Infected)(.*) FOUND$/ ],
);

1;




#######################################



doplnit do master.cf -již je vloženo

##########################
#Demon Amavisu na vystupu z postfixu na portu 25
amavis unix - - n - 2 smtp
-o smtp_data_done_timeout=1200
-o smtp_send_xforward_command=yes
-o disable_dns_lookups=yes
-o max_use=20



#Start druhe instance postfixu na portu 10025
127.0.0.1:10025 inet n - n - - smtpd
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_delay_reject=no
-o smtpd_client_restrictions=permit_mynetworks,reject
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o smtpd_data_restrictions=reject_unauth_pipelining
-o smtpd_end_of_data_restrictions=
-o mynetworks=127.0.0.0/8
-o smtpd_error_sleep_time=0
-o smtpd_soft_error_limit=1001
-o smtpd_hard_error_limit=1000
-o smtpd_client_connection_count_limit=0
-o smtpd_client_connection_rate_limit=0
-o receive_override_options=no_header_body_checks,no_unknown_recipient_checks

#################################



doplnit do main.cf -již je vloženo

content_filter=smtp-amavis:[127.0.0.1]:10024



ee /etc/rc.conf
clamav_clamd_enable="YES"
clamav_freshclam_enable="YES"
amavisd_enable="YES"


spustíme
/usr/local/etc/rc.d/amavisd restart
/usr/local/etc/rc.d/clamav-freshclam start
/usr/local/etc/rc.d/clamav-clamd start



pokud dostaneme chybu při startu
/usr/local/etc/rc.d/clamav-clamd start
Missing /var/db/clamav/clamav/*.cvd or *.cld files. You must run freshclam first

zkusíme nejdříve aktualizovat amavis
cd /var/db/pkg
portupgrade -Rcv clamav-0.97.5_1/

pak si vypíšeme debug
/usr/local/bin/freshclam --debug

POZOR
musí nám sedět řádka DatabaseDirectory /var/db/clamav
v těchto konfigurácích /usr/local/etc/clamav.conf
/usr/local/etc/freshclam.conf

jinak se nesejde clam AV a freshclam


spouštění clam AV zajištuje poslední odstavec configu amavisu



SpamAssassin

je aplikace která na základě heuristiky označuje spamy
>
Instalace
cd /usr/ports/mail/p5-Mail-SpamAssassin

Vybereme

Options for p5-Mail-SpamAssassin 3.2.3
──────────────────────────────────────────────
[X] AS_ROOT Run spamd as root (recommended)
[ ] SPAMC Build spamd/spamc (not for amavisd)
[ ] SACOMPILE sa-compile
[ ] DKIM DKIM/DomainKeys Identified Mail
[X] SSL Build with SSL support for spamd/spamc
[X] GNUPG Install GnuPG (for sa-update)
[X] MYSQL Add MySQL support
[ ] PGSQL Add PostreSQL support
[X] RAZOR Add Vipul's Razor support
[ ] SPF_QUERY Add SPF query support
[ ] RELAY_COUNTRY Relay country support




Na dotaz
Do you wish to run sa-update to fetch new rules [N]?
odpovíme
y


POZOR -pokud necháme zatrženo AS_ROOT,spamd poběží jako root. Ošetříme to úpravou v /etc/rc.conf

spamd_flags="-u spamd -H /var/spool/spamd"


upravíme config
edit /usr/local/etc/mail/spamassassin/local.cf


use_bayes 1
bayes_auto_learn 1
rewrite_header Subject *****SPAM*****
lock_method flock
required_score 5.0
report_safe 1
skip_rbl_checks 1

#razor, pyzor, DCC - pokud pouzijeme use_dcc 0, je to vypnute, 1= zapnute
use_dcc 0
dcc_timeout 10
dcc_home /usr/local/dcc
dcc_dccifd_path /usr/local/dcc/dccifd

use_razor2 1
razor_config /usr/local/etc/mail/spamassassin/.razor/razor-agent.conf

use_pyzor 0
pyzor_options --homedir /usr/local/etc/mail/spamassassin/.pyzor

add_header all Status _YESNO_, score=_SCORE_ required=_REQD_ tests=_TESTSSCORES(,)_ _DCCR_ _PYZOR_ _RBL_ autolearn=_AUTOLEARN


# Change 192.168.0.* to your actual internal/external address(es).
internal_networks 192.168.0.0/24
#duveryhodne IP
#trusted_networks 192.168.0/24


vložíme do /etc/rc.conf
mcedit /etc/rc.conf
spamd_enable=”YES”

Spustíme SA
/usr/local/etc/rc.d/sa-spamd start

upravíme master.cf postfixu
mcedit /usr/local/etc/postfix/master.cf

upravit řádku
smtp inet n - n - - smtpd
na
smtp inet n - - - - smtpd
-o content_filter=spamassassin


a přidáme řádku

spamassassin unix - n n - - pipe
user=spamd argv=/usr/local/bin/spamc -f -e
/usr/sbin/sendmail -oi -f ${sender} ${recipient}



restart postfixu
/usr/local/etc/rc.d/postfix restart
nebo
service postfix restart



RAZOR + PYZOR + DCC jsou pluginy do Spamassassina, který si sahá do katalogu spamu a podle toho určuje, zda jde o spam, či nikoliv

Instalace
cd /usr/ports/mail/razor-agents
make install

cd /usr/ports/mail/pyzor
make install

cd /usr/ports/mail/dcc-dccd
make install



pouze pro použití DCC
mcedit /etc/rc.conf
dccifd_enable="YES"
dccifd_flags="-A -h /usr/local/dcc"



přepneme do adresáře SA a vytvoříme adresáře .razor a .pyzor
cd /usr/local/etc/mail/spamassassin
mkdir .razor .pyzor


provedeme tyto příkazy:
pyzor --homedir /usr/local/etc/mail/spamassassin/.pyzor discover
razor-admin -create -home /usr/local/etc/mail/spamassassin/.razor/
razor-admin -discover -home /usr/local/etc/mail/spamassassin/.razor/
razor-admin -register -home /usr/local/etc/mail/spamassassin/.razor/



zkontrolovat, jestli je odkomentováno v některém souboru končícím na .pre v adresáři
/usr/local/etc/mail/spamassassin následující řádky , které spouští pluginy

loadplugin Mail::SpamAssassin::Plugin:DCC
loadplugin Mail::SpamAssassin::Plugin::Pyzor
loadplugin Mail::SpamAssassin::Plugin::Razor2


start SA
/usr/local/etc/rc.d/sa-spamd start


test pyzora
pyzor --homedir /usr/local/etc/mail/spamassassin ping
odpoved
public.pyzor.org:24441 (200, 'OK')


pokud chcete použít DCC
cd /usr/local/dcc
mcedit dcc_conf

zkontroluj, zda je odkomentováno :

DCCD_ENABLE=on
DNSBL_ARGS="'-Bset:rej-msg=5.7.1 550 mail %s from %s rejected; see http://www.spamhaus.org/xbl/' -Bsbl-xbl.spamhaus.org,any"
DCCIFD_ENABLE=on
DCCM_ENABLE=off



aktualizace DCC
mcedit /etc/crontab
vložíme
25 1 * * * root /usr/local/dcc/libexec/cron-dccd 2>&1
a restartneme crona

nahodíme DCC
/usr/local/etc/rc.d/dccifd start
a zkontrolujeme běh
ps auxw |grep dcc


restartneme SA
/usr/local/etc/rc.d/sa-spamd restart



Upozornění
pokud bude v logách

warning: connect to transport private/spamassassin: Connection refused

použijeme
postsuper -r ALL && postqueue –f
pro doručení mailů a pak zkontrolujeme, jestli máme v pořádku v master.cf tuto řádku:
spamassassin unix - n n - - pipe
user=spamd argv=/usr/local/bin/spamc -f -e
/usr/sbin/sendmail -oi -f ${sender} ${recipient}




FuzzyOCR je plugin do Spamassassina, který detekuje spam v obrázcích vložených do těla mailu. Na základě OCR technologie si přečte obrázek a následně předá zjištěný text na analýzu.

instalace

cd /usr/ports/mail/p5-FuzzyOcr-devel
make all install clean


nakopírujeme soubory do adresáře spamassassina
cp /usr/local/share/examples/FuzzyOcr/FuzzyOcr.* /usr/local/etc/mail/spamassassin

to je vše

Webový poštovní klient - Squirrelmail

Je aplikace v PHP umožnující zobrazovat maily ze schránky a posílat je. (stejně jako outlook)



Instalace Squirrelmail
cd /usr/ports/mail/squirrelmail/
make install clean clean-depends

nastavení konfigu veverky
cd /usr/local/www/squirrelmail/config
config.pl


SquirrelMail Configuration : Read: config_default.php (1.4.0)
---------------------------------------------------
Main Menu --
1. Organization Preferences
2. Server Settings
3. Folder Defaults
4. General Options
5. Themes
6. Address Books
7. Message of the Day (MOTD)
8. Plugins
9. Database
10. Languages

D. Set pre-defined settings for specific IMAP servers

C Turn color on
S Save data
Q Quit

máčknem 1 a dostanem se do menu
1. Organization Preferences
máčknem 1 a dostanem se do menu
1. Organization Name : SquirrelMail
zmenime si nazev podle serveru(firmy,milenky,psa)

2. Organization Logo : ../images/sm_logo.png
zde si muzem zmenit obrazek na uvitaci obrazovce

3. Org. Logo Width/Height : (308/111)
zde si muzem zmenit velikost loga

ostatni můžem nechat
máčknem S čímž uložíme změny
máčknem R čímž se vrátíme na předcházející obrazovku
máčknem 2 a dostanem se do menu
2. Server Settings

1. Domain : example.com

změníme na svou doménu

ostatni můžem nechat
máčknem S čímž uložíme změny
máčknem R čímž se vrátíme na předcházející obrazovku

3. Folder Defaults

změníme pouze názvy adresářů
3. Trash Folder : INBOX.Trash
4. Sent Folder : INBOX.Sent
5. Drafts Folder : INBOX.Drafts

na

3. Trash Folder : INBOX.Kos
4. Sent Folder : INBOX.Odeslane
5. Drafts Folder : INBOX.Prijate


ostatni můžem nechat
máčknem S čímž uložíme změny
máčknem R čímž se vrátíme na předcházející obrazovku

8. Plugins



Plugins
Installed Plugins

Available Plugins:
1. listcommands
2. fortune
3. delete_move_next
4. message_details
5. mail_fetch
6. info
7. newmail
8. bug_report
9. administrator
10. abook_take
11. calendar
12. sent_subfolders
13. spamcop
14. squirrelspell
15. filters
16. translate

R Return to Main Menu
C Turn color on
S Save data
Q Quit

Command >>


vybereme 11,13,15,

ostatni můžem nechat
máčknem S čímž uložíme změny
máčknem R čímž se vrátíme na předcházející obrazovku


Language preferences
1. Default Language : en_US
2. Default Charset : iso-8859-1
3. Enable lossy encoding : false

R Return to Main Menu
C Turn color on
S Save data
Q Quit

Command >>

upravíme
1. Default Language : cs
2. Default Charset : iso-8859-2


ostatni můžem nechat
máčknem S čímž uložíme změny
máčknem R čímž se vrátíme na předcházející obrazovku

máčknem S čímž uložíme změny(pro sichr)
máčknem Q čímž opustíme menu



Nastavíme apache aby věděl kde má hledat soubory
ee /usr/local/etc/apache22/Includes/veverka.conf
Alias /posta "/usr/local/www/squirrelmail"

<Directory "/usr/local/www/squirrelmail">
Options Indexes
AllowOverride None
Order deny,allow
allow from all
# allow from 127.0.0.1

</Directory>





-parametr -c vytvoří soubor při dapřidávání dalších uživatelu nepoužívat-původní by se přepsal
htpasswd -c /usr/local/www/squirrelmail/.htpasswd admin
nastavit heslo

ee /usr/local/www/squirrelmail/.htaccess

php_value max_execution_time 200
php_value memory_limit 20M
php_value post_max_size 10M
php_value upload_max_filesize 10M
php_value file_uploads = On
php_value session.auto_start = 1

AuthUserFile /usr/local/www/squirrelmail/.htpasswd
AuthGroupFile /dev/null
AuthName "webmail"
AuthType Basic

<limit GET POST>
require valid-user
</limit>


nastavíme práva na soubory .ht*
chown www:www /usr/local/www/squirrelmail/.ht* && chmod 750 /usr/local/www/squirrelmail/.ht*

reload apache
/usr/local/etc/rc.d/apache22 restart

otevrit login.php
ee /usr/local/www/squirrelmail/src/login.php
a pred posledni značku </body></html>
vložit text
<center><font face="Verdana"> <h5><a href="http://www.dvorec.eu/postfixadmin/users">Moje konto: Změna hesla nebo přesměrování.</a></h5> </font> </center>


Řešení problémů
For SquirrelMail to work properly you will need to make sure the
following option is set in your php.ini file:
file_uploads = On

If you have problems with SquirrelMail saying "you must login" after
you just have, the following php.ini option may help:
session.auto_start = 1


Stažení pluginů do SquirrelMail
http://www.squirrelmail.org/plugins.php


Upgrade SquirrelMail


Poznámka: V době upgrade nebyla k dispozici čeština s identická se zbytkem programu. Použil jsem tedy nejbližší možnou a možná sem tam něco bude holt anglicky.


stažení nové verze a češtiny
pokud preferujete stažení do PC a následný upload souborů na server, zde je link pro stažení. Jinak následující řádku přeskočte.
http://www.squirrelmail.org/download.php

odzálohujeme starou verzi
mv /usr/local/www/squirrelmail/ /usr/local/www/squirrelmail-old

nastavíme se do adresáře www na serveru
cd /usr/local/www

stáhneme si soubory pro squirrelmail (zde pro verzi 1.4.17)
fetch "http://downloads.sourceforge.net/squirrelmail/squirrelmail-1.4.17.tar.gz"

rozbalíme archiv a přejmenujeme adresář na squirrelmail
tar -zxvf squirrelmail-1.4.17.tar.gz && mv squirrelmail-1.4.17 squirrelmail

vlezeme do adresáře squirrelmail
cd /usr/local/www/squirrelmail

stáhneme si soubory pro češtinu
fetch "http://downloads.sourceforge.net/squirrelmail/cs_CZ-1.4.13-20071220.tar.gz"

rozbalíme češtinu
tar -zxvf cs_CZ-1.4.13-20071220.tar.gz

smázneme nyní již nepotřebné tary
rm /usr/local/www/squirrelmail-1.4.17.tar.gz && rm -R /usr/local/www/squirrelmail/cs_CZ-1.4.13-20071220.tar.gz

upravíme práva
chown -R www:www /usr/local/www/squirrelmail

z nové verze pro sichr zazálohujeme adresář s configem
cp -R /usr/local/www/squirrelmail/config /usr/local/www/squirrelmail-old/__newcofig__

nakopírujeme původní configy a soubory .ht* do nového squirrelmail
cp -R /usr/local/www/squirrelmail-old/config /usr/local/www/squirrelmail/
cp /usr/local/www/squirrelmail-old/.ht* /usr/local/www/squirrelmail/

výrobce programu ještě doporučuje spustit soubor conf.pl, aby jsme se podívali na nové vlastnosti, které můžeme nastavit a eventuálně upravit některé chyby. Nezapomeneme nakonec uložit.Takže spustíme
/usr/local/www/squirrelmail/config/conf.pl
Počet přístupů na stránky 1