LPS
Linux jako poštovní server
Internet již dávno vyrostl z dětských let a tak se na této světové síti setkáme s mnoha a mnoha aplikacemi, které dnes a denně využíváme. Ke stěžejním funkcím internetu patří stále bezesporu web a elektronická pošta. Oproti prvopočátkům internetu prošla elektronická pošta mnoha úskalí a jen díky tomu ji dne s můžeme stále využívat. V době kdy služba elektronické pošty vznikala, nikdo nemohl tušit do jak gigantických rozměrů Internet nakyne. Přesto je základ této služby již léta stále stejný a stále velmi jednoduchý.
Obsah
- 1 Operační systém Linux
- 2 Instalace GNU/Debian na virtuální PC
- 3 DNS, mx záznam
- 4 Protokol SMTP
- 5 Instalace a konfigurace postfixu
- 6 Postfix - vyhledávací tabulky
- 7 Fronty postfixu
- 8 Místní doručování (mailbox, maildir)
- 9 Server IMAP a POP3 dovecot
- 10 Povolení zabezpečené komunikace SMTP
- 11 Ověřování uživatelů SSL a TLS
- 12 Spam a antivirus (Clamv, Amavis, Spamassassin )
- 13 Postfix - zakázané přílohy
- 14 Webový IMAP klient
Operační systém Linux
- Základní vlastnosti systému, historie, bezpečnost
- Linux jako server
- Distribuce GNU/Linux
Instalace GNU/Debian na virtuální PC
- Pro testování bude využit virtualizační software Virtualbox [1]
- Instalace GNU/Debian je možné provést pomocí instalačních ISO dostupných zde: [2]
- V první fázi instalace doporučuji nepřipojovat síťovou kartu, aby si instalátor vyžádat zadání pevné IP adresy
- Po nastavení sítě připojte virt. PC do "mostu"
- Jako jméno počítače zvolte mail.xxx.cz, kde xxx je vám přiřazená doména odpovídající IP adrese
- Jako volitelný software prosím volte pouze SSH server, nic jiného
- Po instalaci je vhodné nainstalovat "Přídavky pro hosta", proto je nutné doinstalovat balík bzip2 apt-get install bzip2
- V systému je nutné orientovat se v adresářové struktuře a umět editovat textové soubory, vhodné je umět pracovat s nástroji jako cd, mv, cp, cat, chmod, chown, netstat, tail, mc a jiné
DNS, mx záznam
- Pro zjištění který server spravuje konkrétní emailovou doménu se využívá systém DNS
- Jeden z nástrojů pro kontrolu dns je program nslookup, který je obsažen v balíku dnsutils apt-get install dnsutils
- Pro prosté zjištění IP adresy z doménového jména je možné použít program nslookup následovně: nslookup amenit.cz, pro přeložení domény na jméno se využije DNS server nastavený jako výchozí v systému
- Pokud chcete ověřit DNS záznam na jiném serveru je možné spustit nslookup bez parametru
root@mail:~# nslookup > server 8.8.8.8 Default server: 8.8.8.8 Address: 8.8.8.8#53 > amenit.cz Server: 8.8.8.8 Address: 8.8.8.8#53 Non-authoritative answer: Name: amenit.cz Address: 149.62.147.101
- Podobně se dá využít utilita i pro MX záznamy
root@mail:~# nslookup > set type=mx > honza.cz Server: 10.0.0.200 Address: 10.0.0.200#53 honza.cz mail exchanger = 10 mail.honza.cz.
- Záznam v DNS může vypadat následovně
root@DNS:/etc/bind# cat db.honza.cz $TTL 3h @ IN SOA dns.david.cz. spravce.honza.cz. ( 2014010802; 4h 2h 2w 1h ) @ IN NS dns.david.cz. honza.cz. IN MX 10 mail.honza.cz. honza.cz. IN A 10.0.0.204 mail IN A 10.0.0.204 smtp IN A 10.0.0.204 imap IN A 10.0.0.204 pop3 IN A 10.0.0.204
- V souboru /etc/bind/named.conf.local je poté nutno vložit zónový soubor
zone "honza.cz" { type master; file "/etc/bind/db.honza.cz"; };
Protokol SMTP
apt-get install telnet
telnet smtp.vsb.cz 25 Trying 158.196.149.155... Connected to smtp.vsb.cz. Escape character is '^]'. 220 smtp.vsb.cz ESMTP Postfix (Ubuntu) HELO amenit.cz 250 smtp.vsb.cz mail from: david.seidl@vsb.cz 250 2.1.0 Ok rcpt to: david.seidl@vsb.cz 250 2.1.5 Ok data 354 End data with <CR><LF>.<CR><LF> Tohle je email pro Davida Seidla. . 250 2.0.0 Ok: queued as 4A7CD1C6FC9 quit 221 2.0.0 Bye Connection closed by foreign host.
Instalace a konfigurace postfixu
apt-get install postfix
/etc/postfix/main.cf /etc/postfix/master.cf
#plně kvalifikované jméno systému myhostname = mail.honza.cz #které domény systém obsluhuje mydestination = mail.honza.cz, localhost.honza.cz, honza.cz , localhost #domovské sítě mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 #honza.cz ; pokud má email jen místní část, připojí se tato doména myorigin = /etc/mailname #kam se mají předávat emaily, pokud se zakomentuje bude se využívat systém DNS relayhost =
postconf
Postfix - vyhledávací tabulky
/etc/aliases newaliases
- Kanonické mapování
cat /etc/postfix/canonical david.seidl@honza.cz sei01@honza.cz
postmap /etc/postfix/canonical
cat /etc/postfix/main.cf | grep canonical_maps sender_canonical_maps = hash:/etc/postfix/canonical recipient_canonical_maps = hash:/etc/postfix/canonical
- Podporované formáty tabulek
postconf -m
Fronty postfixu
postqueue -p //výpis zpráv ve fronntě postqueue -s vsb.cz //znovu pošle zprávy pro doménu vsb.cz
postsuper -d DBA3F1A9 //vymaže zprávu postsuper -d ALL //vymaže vše postsuper -h DBA3F1A9 //zadrží zpráv postsuper -H DBA3F1A9 //pustí zprávu postsuper -r DBA3F1A9 //opakované zařazení zprávu
postcat -q DBA3F1A9 //vypíše zprávu
Místní doručování (mailbox, maildir)
cat /etc/postfix/main.cf | grep home_mailbox home_mailbox = Maildir/
V některých případech je možné zadat parametr mail_spool_directory = /var/spool/mail pro mailbox nebo mail_spool_directory = /var/spool/mail/ pro maildir, je ale nutné vytvořit pro uživatele složky s jejich jmény
Server IMAP a POP3 dovecot
instalace apt-get install dovecot-imapd dovecot-pop3d
Změna formátu z mailbox na maildir
cat /etc/dovecot/conf.d/10-mail.conf | grep mail_location #mail_location = mbox:~/mail:INBOX=/var/mail/%u mail_location = maildir:~/Maildir/
Povolení zabezpečené komunikace SMTP
V /etc/postfix/master.cf povolit:
smtps inet n - - - - smtpd -o syslog_name=postfix/smtps -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o milter_macro_daemon_name=ORIGINATING
- Otestování pomocí openssl
openssl s_client -crlf -connect 10.0.0.204:465
Ověřování uživatelů SSL a TLS
Do /etc/postfix/master.cf přidat
-o smtpd_sasl_type=dovecot -o smtpd_sasl_path=private/auth -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject_unauth_destination
Do /etc/dovecot/conf.d/10-master přidat do service auth
unix_listener /var/spool/postfix/private/auth { mode = 0666 user = postfix group = postfix }
- Zjištění jména a hesla v base64
printf "\0sei01\0sei01" |openssl base64
- Test ověření
openssl s_client -crlf -connect 10.0.0.204:465
220 mail.honza.cz ESMTP Postfix (Debian/GNU) ehlo david.cz 250-mail.honza.cz 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-AUTH PLAIN 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN AUTH PLAIN AHNlaTAxAHNlaTAx 235 2.7.0 Authentication successful ....
Spam a antivirus (Clamv, Amavis, Spamassassin )
apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 libnet-ph-perl libnet-snpp-perl libnet-telnet-perl nomarch lzop
[SpamAssassin] ^ | Email --> [(Port 25) Postfix] --> [(10024) amavisd-new] --> [(10025) Postfix] --> Mailbox | v [ClamAV]
Poznámka
!!! V /etc/mailname musí být správná doména, tedy např david.cz a né mail.david.cz !!!
- Aktualizace virové databáze
freshclam /etc/init.d/clamav-daemon start
V souboru /etc/amavis/conf.d/15-content_filter_mode povolit řádky:
@bypass_virus_checks_maps = ( \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re); @bypass_spam_checks_maps = ( \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);
Pravidla jsou uvedena zde /etc/amavis/conf.d/20-debian_defaults
Je nutné upravit /etc/postfix/main.cf a dodat řádky
content_filter = amavis:[127.0.0.1]:10024 receive_override_options = no_address_mappings
Dále je nutné přidat službu do /etc/postfix/master.cf
amavis unix - - - - 2 smtp -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes
127.0.0.1:10025 inet n - - - - smtpd -o content_filter= -o local_recipient_maps= -o relay_recipient_maps= -o smtpd_restriction_classes= -o smtpd_client_restrictions= -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o mynetworks=127.0.0.0/8 -o strict_rfc821_envelopes=yes -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
Povolit spamassassin v souboru /etc/default/spamassassin
ENABLED=1 CRON=1
Stahovat si aktuální spamové databáze
apt-get install pyzor razor
Do souboru /etc/spamassassin/local.cf přidat:
#pyzor use_pyzor 1 pyzor_path /usr/bin/pyzor //pyzor_add_header 1 #razor use_razor2 1 razor_config /etc/razor/razor-agent.conf #bayes use_bayes 1 use_bayes_rules 1 bayes_auto_learn 1
/etc/init.d/spamassassin start
Přidat uživatele clamav do skupiny amavis, jinak nefunguje předávání emailů
usermod -a -G amavis clamav
/etc/init.d/clamav-daemon restart /etc/init.d/amavis restart /etc/init.d/postfix restart
Postfix - zakázané přílohy
cat /etc/postfix/main.cf | grep mime_header_checks mime_header_checks = regexp:/etc/postfix/mime_header_checks
cat /etc/postfix/mime_header_checks /name=[^>]*\.(bat|com|exe|dll|vbs)/ REJECT
Webový IMAP klient
apt-get install mysql-server apt-get install roundcube
Ve /var/www/ ud2lat link ln -s /var/lib/roundcube/
V souboru /var/www/roundcube/config/main.inc.php změnit:
$rcmail_config['default_host'] = '127.0.0.1';