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
-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") |
-h | ukáž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)
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 |
adress_verify_map = btree:/var/spool/postfix/verified_senders
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