FreeBSD internet server


FreeBSD je vyspělý operační systém pro architektury x86 a kompatibilní (včetně procesorů Pentium a Athlon), AMD64 a kompatibilní (včetně procesorů Opteron, Athlon 64 a EM64T), UltraSPARC, IA-64, PC-98 a ARM. Systém vznikl z BSD, z verze UNIXu vyvinutého na University of California v Berkley, je vyvíjen a udržován velkým týmem jednotlivců. Jedná se o velmi stabilní OS ideálně použitelný jako mailový a webový server. Samotná instalace a konfigurace FreeBSD 6.2 je posána v článku Instalace FreeBSD 6.2. V následujícím textu se pokusím popsat instalaci a konfiguraci mailserveru, pop3 a imap server na Sendmailu, Imap-UW a Openwebmailu s podporou antivirového a antispamového programu ClamAV a Spamassassin, a webserveru Apache22 s podporou PHP, MySQL a Awstat. Domovké stránky FreeBSD jsou www.freebsd.cz.

Spamassassin a ClamAV
Spamassassin slouží k odfiltrování nevyžádané pošty, tzv. spamu , funguje tak že podle známých kriterií hodnotí příchozí emaily a přiděluje jim bodové ohodnocení. Rozeznává se například: otazník na konci předmětu, mail je psán velkými písmeny, mail obsahuje jenom obrázek, informace o povzbuzujících prostředcíh, skvělém software apod. , kontroluje formát (HTML formátování, obrázky, skrytý text) a ověřuje platnost adresy odesilatele. Součtem bodů je rozhodnuto, zda se jedná o spam. ClamAV je antivirus pro UNIXové operační systémy, provádí kontrolu e-mailů na straně serveru. Domovké stránky Sapmassassin a ClamAV jsou spamassassin.apache.org a www.clamav.net.

Instalace Spamassasinu:
Před instalací je nutné zkontrolovat zda máme poslední verzi Perlu (pkg_info). Update lze provést např. takto:
cd /usr/ports/lang/perl5.8
make deinstall
make install clean

Kompilace a instalace SpamAssassin:
cd /usr/ports/mail/p5-Mail-SpamAssassin
make config (vybrány položky as_root,ssl,razor)
make install clean
Instalace spamassassin-milter (rozhraní mezi SpamAssassin a Sendmail)
cd /usr/ports/mail/spamass-milter
make install clean

Instalace antivirového programu ClamAV :
cd /usr/ports/mail/p5-Mail-ClamAV
make install clean

následujícím dialogu vybrat položku MILTER
nastavení práv zápisu do logu pro AVmilter
touch /var/log/clamav/clamd.log
chown clamav /var/log/clamav/clamd.log

Po instalaci musí byt vytvořeny následující scripty:
# ls -l /usr/local/etc/rc.d
-r-xr-xr-x 1 root wheel 687 Sep 2 18:17 clamav-clamd
-r-xr-xr-x 1 root wheel 722 Sep 2 18:17 clamav-freshclam
-r-xr-xr-x 1 root wheel 1066 Sep 2 18:17 clamav-milter
-r-xr-xr-x 1 root wheel 696 Sep 2 18:01 sa-spamd
-r-xr-xr-x 1 root wheel 1013 Sep 2 18:04 spamass-milter
do souboru /etc/mail/freebsd.mc nebo vlastního konfiguračního souboru přidáme následující řádky (vložit před a za příkazy MAILER(local) a MAILER(smtp)) následovně:
FEATURE(dnsbl,`all.rbl.jp‘)dnl
FEATURE(dnsbl,`list.dsbl.org‘)dnl
FEATURE(dnsbl,`sbl-xbl.spamhaus.org‘)dnl
FEATURE(dnsbl,`bl.spamcop.net‘)dnl

MAILER(local)
MAILER(smtp)

INPUT_MAIL_FILTER(`spamassassin‘,`S=local:/var/run/spamass-milter.sock, F=, T=C:15m;S:4m;R:4m;E:10m‘)dnl
INPUT_MAIL_FILTER(`clmilter‘, `S=local:/var/run/clamav/clmilter.sock, F=, T=S:4m;R:4m‘)dnl
define(`confINPUT_MAIL_FILTERS‘, `clmilter,spamassassin‘)dnl

Do /etc/rc.conf přidáme následující řádky pro automatické spuštění:
spamass_milter_enable=“YES“
spamd_enable=“YES“
clamav_clamd_enable=“YES“
clamav_milter_enable=“YES“
clamav_freshclam_enable=“YES“
a pokračujeme konfigurací sendmailu.

Sendmail
Sendmail je software pro doručování elektronické pošty (MTA – Mail Transfer Agent). Má jednoduchou základní konfiguraci, je součástí instalace FreeBSD. Domovké stránky Sendmail jsou www.sendmail.com. Celý Sendmail se řídí podle souboru /etc/mail/sendmail.cf. Tento konfigurační soubor je sadou pravidel, podle kterých se řídí doručování elektronické pošty, má poměrně komplikovanou a špatně čitelnou strukturu a doporučuji upravovat jen odborníkům. Usnadněním a zjednodušením při vytvoření tohoto konfiguračního souboru je použití makrojazyku M4. V tom to jazyce je vytvořen skript obsahující makra pro popis funkcí sendmailu. Jedná se o skript již zmíněný v konfiguraci Spamassassinu a ClamAV /etc/mail/freebsd.mc. Příklad .mc skriptu:

divert(-1)
# moje konfigurace
divert(0)
VERSIONID(`$FreeBSD: src/etc/sendmail/freebsd.mc,v 1.29 2003/12/24 21:15:09 gshapiro Exp $‘)
OSTYPE(freebsd6)
DOMAIN(generic)
FEATURE(access_db, `hash -o -T<TMPF> /etc/mail/access‘)
FEATURE(blacklist_recipients)
FEATURE(local_lmtp)
FEATURE(mailertable, `hash -o /etc/mail/mailertable‘)
FEATURE(virtusertable, `hash -o /etc/mail/virtusertable‘)
define(`confCW_FILE‘, `-o /etc/mail/local-host-names‘)
DAEMON_OPTIONS(`Name=IPv4, Family=inet‘)
DAEMON_OPTIONS(`Name=IPv6, Family=inet6, Modifiers=O‘)
define(`confBIND_OPTS‘, `WorkAroundBrokenAAAA‘)
define(`confNO_RCPT_ACTION‘, `add-to-undisclosed‘)
define(`confPRIVACY_FLAGS‘, `authwarnings,noexpn,novrfy‘)
FEATURE(dnsbl,`all.rbl.jp‘)dnl
FEATURE(dnsbl,`list.dsbl.org‘)dnl
FEATURE(dnsbl,`sbl-xbl.spamhaus.org‘)dnl
FEATURE(dnsbl,`bl.spamcop.net‘)dnl
MAILER(local)
MAILER(smtp)
INPUT_MAIL_FILTER(`spamassassin‘,`S=local:/var/run/spamass-milter.sock, F=, T=C:15m;S:4m;R:4m;E:10m‘)dnl
INPUT_MAIL_FILTER(`clmilter‘, `S=local:/var/run/clamav/clmilter.sock, F=, T=S:4m;R:4m‘)dnl
define(`confINPUT_MAIL_FILTERS‘, `clmilter,spamassassin‘)dnl
LOCAL_RULESETS
SLocal_check_relay
R$* $: $&{client_resolve}
RTEMP $#error $@ 4.7.1 $: „450 Access denied. Cannot resolve PTR record for “ $&{client_addr}
RFAIL $#error $@ 4.7.1 $: „450 Access denied. IP name lookup failed “ $&{client_name}

Formáty poznámek .mc souboru:
divert(-1) a divert(0) – úvodní komentář – nepřenáší se do .cf
dnl – vše za dnl do konce řádku poznámka, nepřenáší se do .cf souboru.
# – vše za # do konce řádku poznámka, přenáší se do .cf souboru.
Makra:
Makro VERSIONID je nepovinné, používá se k zapsání užitečného komentáře do sendmail.cf, např. verze konfigurace.
Makro MAILER říká, jaké způsoby doručování pošty jsou povoleny.
Podrobnější popis maker naleznete v dokumentaci GNU/GPL ke stažení Linux dokumentační projekt.pdf na straně 526.
Máme-li připraven .mc soubor vygenerujeme z něj .cf soubor.
cd /etc/mail
m4 /usr/share/sendmail/cf/m4/cf.m4 freebsd.mc > sendmail.cf

Další konfigurační soubory sendmailu:

/etc/mail/local-host-names
Soubor local-host-names obsahuje jména domén pro které bude sendmail příjmat poštu. Příklad:
mojedomena.cz
mojedomena.net
mojedomena.com

/etc/mail/relay-domains
Definuje kdo má povoleno odesílat maily z tohoto serveru.Např.:

example.com
192.168.0

Druhý řádek povoluje odesílat maily počítačům z lokální sítě 192.168.0.0/24. Pokud soubor neexistuje vytvoříme ho příkazem:
touch /etc/mail/relay-domains

/etc/mail/aliases
Definuje seznam jmen a přesměrování pošty pro tyto uživatele do mailboxu uživatele root, viz příklad:
postmaster: root
abuse: root
security: root

/etc/mail/access
Obsahuje seznam povolených nebo zamítnutých přístupů k mailserveru definovaný e-mail adresou, doménovým jménem, hostnames nebo IP adresou. Pokud neexistuje vytvoříme ho příkazem touch /etc/mail/access
Příklad souboru:
localhost RELAY
172.0.0.1 RELAY
10.0.0.1 RELAY
info@pr-software.net REJECT
mta163060.savings1friend.com REJECT
69.63.161.83 REJECT
72.26.220 REJECT
exrim.net REJECT
Soubor je hashovaná databáze, která se vygeneruje příkazem: makemap hash /etc/mail/access < /etc/mail/access

/etc/mail/virtusertable
Soubor obsahuje seznam emailových adres a domén párovaný s uživateli pro které je doručována pošta. Např.:
info@pr-software.net user1
info@pr-software.net user2
@mojedomena.cz user3
@mojedomena.net user1
Soubor je hashovaná databáze, která se vygeneruje příkazem: makemap hash /etc/mail/virtusertable < /etc/mail/virtusertable

Nastavení přístupových práv pro soubory a adresáře sendmailu:
-r-xr-sr-x root smmsp /usr/sbin/sendmail
drwxrwx— smmsp smmsp /var/spool/clientmqueue
drwx—— root wheel /var/spool/mqueue
-r–r–r– root wheel /etc/mail/sendmail.cf
-r–r–r– root wheel /etc/mail/submit.cf

Spuštění sendmailu:
Do /etc/rc.conf pro automatické spuštění přidat řádek sendmail_enable=“YES“
Ručně se sendmail ovládá:
cd /etc/mail
make start
make stop
make restart

Testování sendmailu:
Jestli sendmail správně funguje otestujeme telnetem na portu 25 : telnet localhost 25
Příklad testování, Tučně uvedený text vkládáme a potvrzujeme Enter:
telnet mail.example.net 25
SERVER:220 local ESMTP Sendmail 8.13.5/8.13.5; Wed, 15 Mar 2006 01:51:21 -0800 (PST)
USER:HELO host.example.com
SERVER:250 mail.example.net Hello host.example.com [192.0.2.1], pleased to meet you
USER:MAIL FROM:<
user@example.com>
SERVER:250 2.1.0 <
user@example.com>… Sender ok
USER:RCPT TO:<
postmaster@example.net>
SERVER:250 2.1.5 <
postmaster@example.net>… Recipient ok
USER:DATA
SERVER:354 Enter mail, end with „.“ on a line by itself
USER:This is a test message
USER:.
SERVER:250 2.0.0 k2FApLlB020139 Message accepted for delivery
USER:QUIT
SERVER:221 2.0.0 mail.example.net closing connection

Logy sendmailu jsou v /var/log/ , zobrazení obsahu mailové fronty /usr/bin/mailq , zpracování zpráv v mailové frontě /usr/sbin/sendmail -q

Spuštění a otestování Clamav a SpamAssassin
Po rebootu serveru zjistíme jestli jsou procesy spuštěny ps -axw | grep -e clam -e spam
Při provádění změn v SpamAssassin local.cf je nutné provést restart SpamAssassin daemona a kontrolu jestli běží /usr/local/etc/rc.d/sa-spamd.sh restart
a ps -ax | grep spam . Když provádíme změny v sendmail.cf je nutný restart sendmailu cd /etc/mail a make restart

Imap-UW
Je pop2, pop3 a imap4 daemon pro přístup k elektronickým zprávám drženým na mail serveru. Zajištuje rozhraní pro stažení elekdronické pošty uvedenými protokoly. Domovké stránky Imap-UW jsou www.washington.edu/imap/. Instalace s provede následujícím způsobem:
cd /usr/ports/mail/imap-uw
make -DWITH_SSL_AND_PLAINTEXT && make install
přepínače:
WITHOUT_SSL – zkompiluje bez podpory SSL
WITH_SSL_AND_PLAINTEXT – s podporou SSL, ale podporuje i non-encrypted přihlášení.

Po instalaci do /etc/inetd.conf přidat následující řádky:
pop2 stream tcp nowait root /usr/local/libexec/ipop2d ipop2d
pop3 stream tcp nowait root /usr/local/libexec/ipop3d ipop3d
imap4 stream tcp nowait root /usr/local/libexec/imapd imapd

Když použijete PAM autentikaci je nutné přidata do /etc/pam.conf následující řádky:
imap auth required pam_unix.so
imap account required pam_unix.so
imap session required pam_unix.so
pop3 auth required pam_unix.so
pop3 account required pam_unix.so
pop3 session required pam_unix.so

Pro podporu SSL je nutné vytvořit a nainstalovat SSL certifikát pro imapd a ipop3d, „makecert“ nebo instalovat ručně v /usr/local/certs a do /etc/inetd.conf přidat následující řádky:
pop3s stream tcp nowait root /usr/local/libexec/ipop3d ipop3d
imaps stream tcp nowait root /usr/local/libexec/imapd imapd

MySQL
MySQL http://www.mysql.com/ je relační databázový systém typu DBMS (database managment system). Instalaci serveru provedeme následovně:
cd /usr/ports/databases/mysql51-server
make install clean
nebo
pkg_add -r mysql51-server
Následuje konfigurace serveru, instalace databází, nastavení práv a hesla uživatele root
/usr/local/bin/mysql_install_db
chown -R mysql /var/db/mysql/
chgrp -R mysql /var/db/mysql/
/usr/local/bin/mysqld_safe –user=mysql &
echo ‘mysql_enable=”YES”‘ >> /etc/ rc.conf
/usr/local/bin/mysqladmin -u root password newpassword
/usr/local/bin/mysqladmin -u root -h myserver.example.net password ‚new-password‘
nebo
mysql -u root
use mysql
UPDATE user SET Password=PASSWORD(‚mypassword‘) WHERE user=’root‘;
FLUSH PRIVILEGES;
exit

Ovládání serveru (start a stop):
/usr/local/etc/rc.d/mysql-server stop
/usr/local/etc/rc.d/mysql-server start

Zálohování databází scriptem (spouštěn z CRONu) a odeslání zálohy mailem:
#!/usr/local/bin/bash
/usr/local/bin/mysqldump -u root -ppassword -B data > /tmp/backupdata.sql
tar czf /tmp/backupdata.tar.gz /tmp/backupdata.sql
date | mutt -s \“zaloha\“ -a backup.tar.gz iam@example.net

Obnova dat ze záloh:
mysql -u root –p < /tmp/backupdata.sql

Apache22
Apache HTTP Server je webový server pro BSD, ale i další platformy (Solaris, Linux, Windows ap.). Domovské stránky jsou www.apache.org. Instalaci provedeme následovně:

cd /usr/ports/www/apache22
make install clean
echo ‘apache22_enable =”YES”‘ >> /etc/ rc.conf
/usr/local/sbin/apachectl start
nebo
/usr/local/etc/rc.d/apache22 start

Konfigurační soubory Apache HTTP Serveru leží v /usr/local/etc/apache22/httpd.conf a všechny soubyry v adresáři /usr/local/etc/apache22/extra/
Popis konfiguračních souborů a nastavení webserveru najdete na http://httpd.apache.org/docs/2.2/

Ovládání serveru (start a stop):
/usr/local/sbin/apachectl start
/usr/local/sbin/apachectl stop
/usr/local/sbin/apachectl restart
/usr/local/sbin/apachectl graceful
(načtení konfigurace bez restartu)

PHP5
PHP je skritovací programovací jazyk, určený především pro programování dynamických internetových stránek, konzolových a desktopových aplikací.Domovská stránka PHP je www.php.net. Instalaci PHP5 a PHP5 extension provedene následovně:

cd /usr/ports/lang/php5
make config –
vybrat apache 2
make install clean

cd /usr/ports/lang/php5-extensions
make config
vybrat: GD,CURL,ICONV,MYSQL,PCRE,POSIX,SESSIONS,XML
make install clean
Do konfiguračního souboru Apache http.conf přidat následující řádky:
AddType application/x- httpd-php .php
AddType application/x- httpd-php-source .phps

OpenWebMail
Webmail je služba umožňující číst a posílat Vaši poštu pomocí webového prohlížeče. Můžete tak přijímat a odesílat důležité e-maily ať jste kdekoliv na světě.Domovcká stránka OpenWebmail je http://www.openwebmail.org/.
Před vlastní instalací Openwebmailu je nutné překompilovat Perl následovně:
do /etc/make.conf přidat řádek
ENABLE_SUIDPERL=“YES“
Pak překompilovat:
cd /usr/ports/lang/perl5.8
make -DFORCE_PKG_REGISTRATION install clean

Instalace Openwebmail:
cd /usr/ports/mail/openwebmail
make install clean

Nápovědu k OpenWebmail najde te na http://www.openwebmail.org/ v sekci Help a tipy na instalaci najdete v sekci FAQ.

Nastavení openwebmail tak aby byl na url webmail.mojedomena.cz

do /usr/local/etc/apache22/extra/httpd-vhost.conf přidat
<VirtualHost *:80>
DocumentRoot /openwebmail
ServerName webmail.mojedomena.cz
</VirtualHost>

do adresáře openwebmailu přidat index.html obsahující
<html>
<head><meta http-equiv=“Refresh“ content=“0;URL=/cgi-bin/openwebmail/openwebmail.pl“>
</head>
<body onload=“window.open(‚/cgi-bin/openwebmail/openwebmail.pl‘,’_top‘)“>
</body>
</html>

Awstat
AWStats je statistický software pro zpracování logů nejen z webserverů, generující podrobné přehledy a grafy o návštěvnosti Vašich stránek. Domovská stránka AWStats je http://awstats.sourceforge.net/ , dokumentaci naleznete na http://awstats.sourceforge.net/docs/index.html.

Instalace AWStats:
cd /usr/ports/www/awstats
make install clean

Konfigurace Awstats
Najděte soubor config.pl na vašem serveru v /usr/ports/www/awstats/work/awstats-6.1/tools a spustte jej ./config.pl
Zkopírujte celý obsah adresáře (zdrojová cesta je různá pro různé verze awstat) do /usr/local/etc/awstats/
# cp -Rv /usr/ports/www/awstats/work/awstats-6.1/ /usr/local/etc/awstats
Nastavte práva a spusťte konfigurační skript:
# chmod +x /usr/local/etc/awstats
# /usr/local/etc/awstats/tools/configure.pl
Skript vygeneruje do adresáře /etc/awstats/, soubor pojmenovaný podle vaší domény ve tvaru awstats.www.domain.com.conf
Modifikujte soubor podle toho kde leží logy vašeho Apache serveru
LogFile=“/var/log/domain.com-access_log“
DirData=“/var/log/awstats“
(vytvořte adresář)
Restartujte Apache # /usr/local/sbin/apachectl restart
Generování statistik pro vaši doménu
# /usr/local/etc/awstats/wwwroot/cgi-bin/awstats.pl -update -config=www.domain.com
Test statistiky provedete ve ve vašem prohlížeci na url
http://www.domain.com/awstats/awstats.pl?config=www.domain.com
Pro další domény postupujeme stejným způsobem. Pravidelné generování statistik se spouští z cronu, přidáním řádky do /etc/crontab
01 0 * * * /usr/local/etc/awstats/wwwroot/cgi-bin/awstats.pl -update -config=www.domain.com
02 0 * * * /usr/local/etc/awstats/wwwroot/cgi-bin/awstats.pl -update -config=www.otherdomain.com

,