====== Postfix,Courier,dnscache (Debian Sarge) ====== ===== 1. Úvod ===== Co je vůbec cílem článku? Potřebuji vyměnit stávající mailserver (15 klientů) za nový ve velice krátkém čase. Proto si píšu postup, jak zvládnout migraci v co nejkratším čase. Určitě víte, že když něco děláte načisto bez podkladů, ladění jednotlivých aplikací trvá neskutečně dlouho, protože se člověk častokrát zastaví na banálních věcech. Na mailserveru nyní běží * sendmail MTA * cyrus POP3 a IMAP server * bind DNS server * filtrování spamu (spamassassin) * clamav Pro novou instalaci jsem vybral * postfix MTA (TLS/SASL) * courier-{pop,impa}-ssl * dhcp3-server * spamassassin * clamav (antivir) * dnscache (djbware od DJB) To je zatím vše a jdeme na to. Nainstalujeme si "čistý" Debian stable (nyní aktuální ve verzi Sarge). Zkusíme nepracovat s žádnými backports a dalšími jinými repositáři. Doplníme /etc/apt/sources.list o ** contrib ** a ** non-free **: deb http://ftp.cz.debian.org/debian/ stable main contrib non-free deb-src http://ftp.cz.debian.org/debian/ stable main contrib non-free deb http://security.debian.org/ stable/updates main contrib non-free Zupdatujeme debian a doinstalujeme, co stejně budeme časem potřebovat pro různé testy. apt-get update apt-get upgrade apt-get install mc ssh syslog-ng mutt iproute iptraf tcpdump iftop nmap gawk arj unzoo unrar lha ===== 2. Denyhosts - zabezpečujeme ssh ===== Na začátku hned porušíme výše zmíněnou informaci, že do systému nebudeme dávat jiné věci než z debian frepositáře. Ok, budu se snažit aby to byla první a poslední aplikace mimo repositář (jen pro nedočkavé, v Debian Etch už je denyhosts jako balíček). Na server se nám bude velice brzo někdo dobývat. Dobyvatele pořešíme už v zárodku a server raději zabezpečíme. Nejbolavější je určitě ssh-čko. **Danny** mi doporučil šikovnou věcičku http://denyhosts.sf.net/ (díky za to). Je to závislé na pythonu, kouká se to do logfilu, kde je napsáno, že se někdo na server dobývá a po několika neúspěšných pokusech šupne jeho ip adresu do /etc/hosts.deny a je od něj pokoj :-) Denyhosts stáhneme z webu a podle postupu v README nainstalujeme. Denyhosts běží v python-u, proto potřebuje pro python pár nezbytných balíčků: apt-get install python python2.3-dev Stáhneme si příslušný balíček (v té době byl aktuální Denyhosts-2.6.tar.gz), rozbalíme a v instalaci postupujeme podle README.txt: tar -xvzpf denyhosts-xy.tar.gz python setup.py install cp denyhosts.cfg-dist denyhosts.cfg cd /etc/init.d ln -s /usr/share/denyhosts/deamon-control-dist denyhosts V /usr/share/denyhosts/denyhost.cfg odkomentujeme a zakomanetujeme příslušné řádky takto: # Redhat or Fedora Core: #SECURE_LOG = /var/log/secure # Mandrake, FreeBSD or OpenBSD: SECURE_LOG = /var/log/auth.log ... # Redhat/Fedora: #LOCK_FILE = /var/lock/subsys/denyhosts # Debian LOCK_FILE = /var/run/denyhosts.pid Pak už jen zrestartujeme denyhosts a vše jede správně, jak má :-) : /etc/init.d/denyhosts restart ===== 3. Networking ===== V Sarge vypadají síťové služby takto cat /etc/network/interfaces # WAN auto eth1 iface eth1 inet dhcp Na WAN portu dostávám v našem případě ip adresu přes dhcp. Ti, kdo mají statickou ip adresu od poskytovatele, si ji nastaví ručně. Nyní si nakonfigurujeme síťové služby pro LAN i WAN ==== 3.1 LAN - dhcp-server ==== Než nainstalujeme dhcp server pro LAN-ku, přidáme LAN-ce ip adresu a restartneme síťové služby, že? :-) cat >> /etc/network/interfaces << EOF auto eth0 iface eth0 inet static address 192.168.1.1 netmask 255.255.255.0 EOF /etc/init.d/networking restart A nyní už můžeme nainstalovat dhcp server. Upravíme rozsah LAN-ky a restartneme dhcp server. Pokud je potřeba, můžeme podle MAC adres přidělovat pevné ip adresy před dhcp. To už lehce můžeme nakonfigovat později. apt-get install dhcp3-server cat >> /etc/dhcp3/dhcpd.conf << EOF # # LAN subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.20 192.168.1.70; option routers 192.168.1.1; } # popripade muze pridat i na MAC pridelena IP-cky # # Hosty s ip podle MAC adresy #host MONPC { # hardware ethernet 00:00:5d:f5:00:00; # fixed-address 192.0.0.11; #} EOF /etc/init.d/dhcp3-server restart Při instalaci se nás dhcp server ptá, na kterém rozhraní bude dhcp server pracovat. To se jinak nastavuje v /etc/default/dhcp3-server ==== 3.2 Firewall - iptables ==== Nastavíme si iptables podle představ resp., jak jste PARANOIDNÍ :-) Nejsem žádný guru na iptables, proto pořeším jen základní věci. Pro výmaz všech pravidel jsem použil script z http://www.petricek.cz/. Viz. výpis. #!/bin/bash # verze 01 #howto get ip WAN address INET_IFACE="eth1" # get WAN ip via ip route #INET_IP=`ip add show dev $INET_IFACE | grep "inet "| awk -F " " '{print $2}' | awk -F "/" '{print $1}'` # get WAN ip via ifconfig INET_IP=`ifconfig $INET_IFACE | grep cast | awk -F " " '{print $2}' | awk -F ":" '{print $2}'` echo "WAN address=$INET_IP" LAN1_IP="192.168.1.1/32" LAN1_BCAST="192.168.1.255/32" LAN1_IFACE="eth0" LO_IFACE="lo" LO_IP="127.0.0.1/32" IPTABLES=`which iptables` # cistime iptables function delete_chain() { echo -n "$1/$2: "; while [ -z "`$IPTABLES -t $1 -D $2 1 2>&1 `" ]; do echo -n "#" done echo " OK"; } $IPTABLES -t filter -P INPUT ACCEPT $IPTABLES -t filter -P OUTPUT ACCEPT $IPTABLES -t filter -P FORWARD ACCEPT delete_chain filter INPUT; delete_chain filter OUTPUT; delete_chain filter FORWARD; delete_chain filter IN_FW; delete_chain filter logdrop; delete_chain filter syn-flood; $IPTABLES -X IN_FW 2> /dev/null; $IPTABLES -X logdrop 2> /dev/null; $IPTABLES -X syn-flood 2> /dev/null; $IPTABLES -t nat -P PREROUTING ACCEPT $IPTABLES -t nat -P OUTPUT ACCEPT $IPTABLES -t nat -P POSTROUTING ACCEPT delete_chain nat PREROUTING; delete_chain nat OUTPUT; delete_chain nat POSTROUTING; $IPTABLES -t mangle -P PREROUTING ACCEPT $IPTABLES -t mangle -P OUTPUT ACCEPT delete_chain mangle PREROUTING; delete_chain mangle OUTPUT; # nyni zacneme neco teprve nastavovat /sbin/depmod -a /sbin/modprobe ipt_LOG /sbin/modprobe ipt_REJECT /sbin/modprobe ipt_MASQUERADE /sbin/modprobe ip_conntrack_ftp echo "1" > /proc/sys/net/ipv4/ip_forward for interface in /proc/sys/net/ipv4/conf/*/rp_filter; do echo "1" > ${interface} done $IPTABLES -P INPUT DROP $IPTABLES -P OUTPUT DROP $IPTABLES -P FORWARD DROP $IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -j SNAT --to $INET_IP #$IPTABLES -t nat -A PREROUTING -p tcp --dport 80 -i ! $INET_IFACE \ # -d ! $INET_IP -j REDIRECT --to-port 3128 $IPTABLES -t mangle -A PREROUTING -p tcp --sport ssh -j TOS --set-tos Minimize-Delay $IPTABLES -t mangle -A PREROUTING -p tcp --dport ssh -j TOS --set-tos Minimize-Delay $IPTABLES -t mangle -A PREROUTING -p tcp --sport ftp -j TOS --set-tos Minimize-Delay $IPTABLES -t mangle -A PREROUTING -p tcp --dport telnet -j TOS --set-tos Minimize-Delay $IPTABLES -t mangle -A PREROUTING -p tcp --sport ftp-data -j TOS --set-tos Maximize-Throughput $IPTABLES -A FORWARD -p tcp ! --syn -m state --state NEW -j DROP $IPTABLES -A FORWARD -i $LAN1_IFACE -j ACCEPT #$IPTABLES -A FORWARD -i $INET_IFACE -o $LAN1_IFACE -j ACCEPT $IPTABLES -A FORWARD -i $INET_IFACE -o $LAN1_IFACE -m state --state ESTABLISHED,RELATED -j ACCEPT #$IPTABLES -A FORWARD -m limit --limit 12/h -j LOG --log-prefix "FORWARD drop:" $IPTABLES -A INPUT -i $INET_IFACE -p tcp ! --syn -m state --state NEW -j DROP $IPTABLES -A INPUT -i $INET_IFACE -p TCP --dport 21 -j ACCEPT $IPTABLES -A INPUT -i $INET_IFACE -p TCP --dport 22 -j ACCEPT $IPTABLES -A INPUT -i $INET_IFACE -p TCP --dport 25 -j ACCEPT $IPTABLES -A INPUT -i $INET_IFACE -p UDP --dport 53 -j ACCEPT $IPTABLES -A INPUT -i $INET_IFACE -p TCP --dport 53 -j ACCEPT $IPTABLES -A INPUT -i $INET_IFACE -p TCP --dport 80 -j ACCEPT $IPTABLES -A INPUT -i $INET_IFACE -p TCP --dport 143 -j ACCEPT # imap $IPTABLES -A INPUT -i $INET_IFACE -p TCP --dport 993 -j ACCEPT # imaps $IPTABLES -A INPUT -i $INET_IFACE -p TCP --dport 995 -j ACCEPT # pop3s $IPTABLES -A INPUT -i $INET_IFACE -p TCP --dport 110 -j ACCEPT # pop3 -plain text zakazeme :-) $IPTABLES -A INPUT -i $INET_IFACE -p TCP --dport 1194 -j ACCEPT $IPTABLES -A INPUT -i $INET_IFACE -p UDP --dport 1194 -j ACCEPT $IPTABLES -A INPUT -i $INET_IFACE -p TCP --dport 5000 -j ACCEPT $IPTABLES -A INPUT -i $INET_IFACE -p UDP --dport 5000 -j ACCEPT $IPTABLES -A INPUT -i $INET_IFACE -p ICMP --icmp-type echo-request -j ACCEPT $IPTABLES -A INPUT -i $LO_IFACE -j ACCEPT $IPTABLES -A INPUT -i $LAN1_IFACE -d $LAN1_IP -j ACCEPT $IPTABLES -A INPUT -i $LAN1_IFACE -d $INET_IP -j ACCEPT $IPTABLES -A INPUT -i $LAN1_IFACE -d $LAN1_BCAST -j ACCEPT $IPTABLES -A INPUT -i $LAN1_IFACE -p udp --dport 67 -j ACCEPT $IPTABLES -A INPUT -d $INET_IP -m state --state ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A INPUT -m limit --limit 12/h -j LOG --log-prefix "INPUT drop:" $IPTABLES -t mangle -A OUTPUT -o $INET_IFACE -p tcp --sport ssh -j TOS --set-tos Minimize-Delay $IPTABLES -t mangle -A OUTPUT -o $INET_IFACE -p tcp --dport ssh -j TOS --set-tos Minimize-Delay $IPTABLES -t mangle -A OUTPUT -o $INET_IFACE -p tcp --sport ftp -j TOS --set-tos Minimize-Delay $IPTABLES -t mangle -A OUTPUT -o $INET_IFACE -p tcp --dport ftp -j TOS --set-tos Minimize-Delay $IPTABLES -t mangle -A OUTPUT -o $INET_IFACE -p tcp --dport telnet -j TOS --set-tos Minimize-Delay $IPTABLES -t mangle -A OUTPUT -o $INET_IFACE -p tcp --sport ftp-data -j TOS --set-tos Maximize-Throughput $IPTABLES -A OUTPUT -s $LO_IP -j ACCEPT $IPTABLES -A OUTPUT -s $LAN1_IP -j ACCEPT $IPTABLES -A OUTPUT -s $INET_IP -j ACCEPT $IPTABLES -A OUTPUT -o $LAN1_IFACE -p UDP --dport 68 --sport 67 -j ACCEPT #$IPTABLES -A OUTPUT -j LOG --log-prefix "OUTPUT drop: Firewall pravidla jsem si dal do /etc/init.d/firewall.sh a zajistil, aby pravidla byly spouštěny ve všech run-levels. Samozřejmě provedeme restart firewallu, aby nám to k něčemu bylo, že? Pak se můžeme podívat, co jsme s naším firewall scriptem udělali :-) update-rc firewall.sh defaults /etc/init.d/firewall.sh restart iptables -L -v ==== 3.3 WAN port, nastavení dns ==== Když máme ip adresu na WAN portu přidělovanou přes dhcp, tak vám dhclient může přepsat /etc/resolv.conf podle vašeho providera. Aby jsme mohli využívat náš nakonfigurovaný dns server, resp. dnscache potřebujeme, aby se v /etc/resolv.conf objevila ip adresa našeho routeru (LAN ip adresa 192.168.1.1). Přidáme do /etc/dhclient.conf potřebná nastavení. Ještě předtím si raději stáhneme dnscache, abychom ji pak mohli snadno nainstalovat a koukneme, co nám dhclient přidal do /etc/resolv.conf: apt-get install daemontools-installer djbdns-installer get-djbdns cat >> /etc/dhclient.conf << EOF prepend domain-name-servers 192.168.1.1; request subnet-mask, broadcast-address, time-offset, routers, host-name; EOF /etc/init.d/networking restart cat /etc/resolv.conf search nameserver 192.168.1.1 Dhclient nám přepral /etc/resolv.conf podle jeho nového nastavení. Nyní je správný čas na instalaci dnscache, která nám bude cachovat dns dotazy. ===== 4. Djbdns (dnscache) ===== Nyní nainstalujeme dnscache. Dnscache jsem zvolil aplikaci D.J.Bernsteina - djbdns. Instaluje se velice jednoduše ze zdrojových kódů podle licence DJB: apt-get install daemontools-installer djbdns-installer build-daemontools build-djbdns mkdir /var/djbdns dnscache-conf dnscache dnslog /var/djbdns/dnscache 192.168.1.1 touch /var/djbdns/dnscache/root/ip/192.168 ln -s /var/djbdns/dnscache /service/dnscache ping -c 2 gmail.com PING gmail.com (216.239.57.83) 56(84) bytes of data. 64 bytes from cw-in-f83.google.com (216.239.57.83): icmp_seq=1 ttl=239 time=215 ms 64 bytes from cw-in-f83.google.com (216.239.57.83): icmp_seq=2 ttl=239 time=210 ms Dnscache nám nyní cachuje dns dotazy. Co víc si můžeme přát :-) ===== 5. Courier (IMAP,POP3 i s SSL) ===== Za IMAP a POP3 jsem vybral Courier. apt-get install courier-imap-ssl courier-pop-ssl Nastavíme /etc/courier/{pop3d.conf,imapd.conf} dle potřeb (firma, misto, atd.), vygenerujeme si certifikáty a restartujeme službu: cd /etc/courier mkpopcert mkimapcert V /etc/courier/authdaemonrc pozměníme authmodulelist na "authuserdb authpam authshadow" a službu zrestartujeme. /etc/init.d/courier-authdaemon restart Takto se nám opírá autorizace o naše známá "shadow" hesla, která mají přidělení jednotlivý uživatelé k účtům. Ano, tento způsob je asi vhodný pro malý počet lidí. Zkousnout se to určitě dá. Když je větší firma, tak představa, že by měl každý uživatel ssh účet, se mi vůbes nezamlouvá. Pak je asi lepší řešit uživatele virtuálně. ===== 6. MUTT - nastavení===== Mutt si instaluji, páč je textový a "lehký" a dá se pohodlně nastavit nejen pro testovací účely. Pro mail spool budeme používat Maildir (djb produkt) u každého uživatele. Aby se nám při zřizování uživatele již tento adresář vytvořil, dáme Maildir do /etc/skel. Pak můžeme vytvořit uživatele. cd /etc/skel maildirmake Maildir useradd petr # 1.user ls /home/petr Maildir Mutt naučíme, aby uměl pracovat s Maidir-em (viz. http://www.elho.net/mutt/maildir/): su - petr mkdir .mutt cat >> /home/petr/.mutt/muttrc << EOF set mbox_type=Maildir set folder="~/Maildir" set mask="!^\\.[^.]" set mbox="~/Maildir" set record="+.Sent" set postponed="+.Drafts" set spoolfile="~/Maildir" my_hdr From: petr@my-mailserver.cz set realname = "Petr Podrabsky" mailboxes `echo -n "+ "; find ~/Maildir -type d -name ".*" -printf "+'%f'"` EOF ===== 7. Postfix - MTA ===== Nainstalujeme si MTA postfix: apt-get install postfix Budeme mít Internet site. Vyplníme mail hostname Nyní chodí pošta uživatelům do mbox-u /var/mail/. Postfix říká, kam dávat poštu, proto mu sdělíme, že chceme, aby doručoval zprávy do Maildiru a přidáme náš subnet k mým sítím echo "" >> /etc/postfix/main.cf echo "home_mailbox = Maildir/">> /etc/postfix/main.cf cat /etc/postfix/main.cf | grep mynetworks mynetworks = 192.168.1.0/24, 127.0.0.0/8 echo "root: petr@localhost" >> /etc/postfix/aliases newaliases /etc/init.d/postfix restart Nyní máme základ hotov. MTA nyní umí zprávy přehazovat do Maildir-u. Zprávy měly nyní chodit ven i na náš mailserver. S Maildir-em umi pracovat Courier, který z něj umí číst zprávy přes POP3 a IMAP. Vyzkoušíme si čtení zpráv přes POP3 a IMAP ===== 8. Testy POP3,IMAP ===== Pošleme se jednu testovací zprávu a můžeme testovat, zda nám chodí POP3 a IMAP. echo To:petr | /usr/sbin/sendmail petr@mail-king:~$ telnet localhost 110 Trying 127.0.0.1... Connected to localhost.localdomain. Escape character is '^]'. +OK Hello there. user petr +OK Password required. pass heslouzivatelepetr +OK logged in. list +OK POP3 clients that break here, they violate STD53. 1 562 . quit +OK Bye-bye. Connection closed by foreign host. petr@mail-king:~$ Skvělé. A Ještě můžeme vyzkoušet i IMAP: petr@mail-king:~$ telnet localhost 143 Trying 127.0.0.1... Connected to localhost.localdomain. Escape character is '^]'. * OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE ACL ACL2=UNION STARTTLS] Courier-IMAP ready. Copyright 1998-2004 Double Precision, Inc. See COPYING for distribution information. AA LOGIN petr heslouzivatelepetr AA OK LOGIN Ok. AB SELECT Inbox * FLAGS (\Draft \Answered \Flagged \Deleted \Seen \Recent) * OK [PERMANENTFLAGS (\* \Draft \Answered \Flagged \Deleted \Seen)] Limited * 1 EXISTS * 1 RECENT * OK [UIDVALIDITY 1169939434] Ok * OK [MYRIGHTS "acdilrsw"] ACL AB OK [READ-WRITE] Ok ZZ LOGOUT * BYE Courier-IMAP server shutting down ZZ OK LOGOUT completed Connection closed by foreign host. Nyní vyzkoušíme POP3S a IMAPS. Pošleme z Internetu nějakou poštu k uživateli a zpět. openssl s_client -crlf -connect my-server.cz:995 # POP3S openssl s_client -crlf -connect my-server.cz:993 # IMAPS Vše jede, jak z praku. ===== 9. Postfix TLS/SASL ===== Nejdříve doinstalujeme potřebné programy: apt-get install libsasl2-modules sasl2-bin postfix-tls Nyní zařídíme v /etc/postfix/main.cf TLS pro šifrování spojení a SASL pro ověřování jména a hesla v postfixu a vygenerujeme si pro postfix pem certifikát: cat >> /etc/postfix/main.cf << EOF # TLS smtp_use_tls = yes smtp_tls_note_starttls_offer = yes smtpd_use_tls = yes smtpd_tls_auth_only = yes smtpd_tls_key_file = /etc/postfix/ssl/postfix.pem smtpd_tls_cert_file = /etc/postfix/ssl/postfix.pem smtpd_tls_received_header = yes smtpd_tls_loglevel = 1 smtpd_tls_session_cache_timeout = 3600s # SASL smtpd_sasl_auth_enable = yes broken_sasl_auth_clients = yes smtpd_sasl_local_domain = $myhostname smtpd_sasl_security_options = noanonymous smtpd_sasl_application_name = smtpd EOF mkdir /etc/postfix/ssl openssl req -new -x509 -nodes -days 3650 -out /etc/postfix/ssl/postfix.pem \ -keyout /etc/postfix/ssl/postfix.pem Nyní jsme u rozhodnutí, jak bude SASL v postfixu ověřovat jméno/heslo pro odesílání pošty. SASL je možné nastavit tak, že se bude ověřovat jméno/heslo vůči stávajícím uživatelským účtům nebo se bude ověřovat vůči sasl databázi, kde jsou jména a hesla nadefinovana sólo. Nejdříve zkusíme nastavit SASL vůči stávajícím účtům. cat > /etc/postfix/sasl/smtpd.conf << EOF # overovani SASL vuci uzivatelskym uctum pwcheck_method: saslauthd mech_list: PLAIN LOGIN EOF Postfix pracuje v prostředí chroot, proto vytvoříme pro saslauth deamona adresář v chrootu postfixu. V /etc/init.d/saslauthd upravíme začátek scriptu a zajistime spouštění SASL po restartu s nastavením mechanismu autentizace. Hned můžeme otestovat, zda nám sasl funguje. mkdir -p /var/spool/postfix/var/run/saslauthd cat /etc/init.d/saslauthd | more ... PARAMS="-m /var/spool/postfix/var/run/saslauthd" # original PID file #PIDFILE="/var/run/${NAME}/saslauthd.pid" # new PID file PIDFILE="/var/spool/postfix/var/run/${NAME}/saslauthd.pid" ... cat > /etc/default/saslauthd << EOF # spousteni saslauthd po restartu START=yes MECHANISMS="pam" EOF testsaslauthd -u user -p heslo -f /var/spool/postfix/var/run/saslauthd/mux 0: OK "Success." Řekneme našemu postfixu, že může odesílat maily i mimo naši doménu, nadefinujeme pár pravidel ohledně blokovaných domén. Nyní můžeme pomocí TLS/SASL s ověřením přes uživatelské jméno a heslo posílat poštu odkudkoliv a kamkoliv přes naš SMTP server. Relay přes náš SMTP server není možné, jelikož spamer nezná jméno a heslo uživatele na serveru. cat >> /etc/postfix/main.cf << EOF smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_sender, reject_non_fqdn_recipient, reject_unknown_recipient_domain, reject_unauth_destination, reject_rbl_client relays.ordb.org, reject_rbl_client opm.blitzed.org, reject_rbl_client list.dsbl.org, reject_rbl_client multihop.dsbl.org, reject_rbl_client sbl.spamhaus.org, reject_rbl_client cbl.abuseat.org, reject_rhsbl_sender rhsbl.sorbs.net, permit EOF -------------------- Pokud chceme ověřovat oproti sasl2 databázi, tak změníme /etc/postfix/sasl/smtpd.conf takto: cat > ./smtpd.conf << EOF # overovani SASL vuci sasl databazi pwcheck_method: auxprop mech_list: PLAIN LOGIN EOF saslpasswd2 -c -a smtpauth test1 zadame si heslo Nyní budeme schopni naše MTA odesílat maily kdekoliv z Internetu. Vyzkoušíme a uvidíme. Třeba pomocí: openssl s_client -starttls smtp -crlf -connect mail-king.dyndns.org:25 ZATIM TO FUNGUJE AZ SEMKA !!!!!! ===== 10. SPAMassassin ===== Na filtraci spamů se dá použít spamassassin s Bayesovým filterem. Na http://www.yrex.com/spam/spamconfig.php si můžeme podle otázek nechat vygenerovat config pro spamassassin. Ještě nastavíme /etc/postfix/master.cf: # smtp inet n - - - - smtpd -o content_filter=spamassassin # # spamassassin unix - n n - - pipe user=nobody argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f ${sender} ${recipient} Nakonec spamassassin v /etc/default/spamassassin povolíme (ENABLED=1) a můžeme zrestartovat /etc/init.d/spamassassin restart ===== 11. Admin pro uživatele ===== Pokud chceme některým uživatelům povolit administrátorská práva, můžeme to udělat několika způsoby. Asi nejznámější způsoby jsou pomocí: * sudo * wheel group Pomocí sudo může uživatel při opravnění provádět příkazy, které může provádět jen administrátor (root). Sudo nainstalujeme snadno apt-get install sudo V /etc/sudoers nstavíme uživatele a jeho práva a pak už můžeme provádět příkazy bez toho, že bychom se museli přehlásit k účtu root (petr nemá v sudoers žádná práva a danny má v sudoers nastavena úplná práva). petr@mail-king:~$ sudo cat /var/log/syslog petr is not in the sudoers file. This incident will be reported. danny@mail-king:~$ sudo cat /var/log/syslog | tail -n 1 Feb 24 15:17:33 mail-king postfix/qmgr[13655]: 32ED520E061: removed U druhého způsobu přidáme do systému skupinu wheel addgroup wheel V /etc/pam.d/su odkomentujeme řádky: auth required pam_wheel.so auth sufficient pam_wheel.so trust Do skupiny adm a wheel doplníme potřebného uživatele usermod -G adm,wheel petr Pak se může uživatel petr dostat k administrátorovi pomocí su bez hesla administrátora petr@mail-king:~$ su mail-king:/home/petr# ===== 12. Uživatelé a kvóty ===== ===== 13. Doplňky ===== Pro postfix a server si doladíme několik doplňků, které nám něco řeknou o systému, mailserveru a dalších aplikacích. ==== 13.1 Logwatch ==== Logwatch je jednoduchá aplikace, která nám sbírá z logů informace a každý den nám zašle souhrnné informace. apt-get install logwatch ==== 13.2 APACHE2 + mailgraph ==== Mailgraph ve spolupráci s apachem nám grafdicky znázorní, kolik zpráv se proflákalo systémem tam a zpět (http://nas-mailserver/cgi-bin/mailgraph.cgi/). apt-get install apache2 mailgraph ==== 13.3 Clamav - antivir ==== Pro uživatele dáme na server antivir. V repositáři je clamav. apt-get install clamav libclamav1 clamav-daemon