Linux Systeembeheer/Elektronische post
Inleiding
[bewerken]Elektronische post is niet meer weg te denken in een moderne wereld. Al deze mails moeten natuurlijk opgeslagen worden. Dit gebeurt door mailservers. In dit hoofdstuk leren we hoe je zelf een mailserver kan opstellen, en hoe je deze kan beveiligen. Verder worden er verschillende begrippen toegelicht.
Leerdoelen
[bewerken]- Het de begrippen MSA, MTA, MUA, MDA kennen en de verschillen ertussen
- MSA: Mail Submission Agent, cfr RFC4409
- MTA: Mail Transfer Agent
- MUA: Mail User Agent (= mail client)
- MDA: Mail Delivery Agent
- Een volwaardige e-mailserver kunnen installeren op een RedHat-gebaseerd Linux-systeem
- Een Postfix SMTP-server kunnen opzetten
- De basisinstellingen in main.cf kunnen aanpassen
- Mailboxes kunnen aanmaken voor gebruikers en aliassen definiëren
- Mail lokaal versturen
- Mail kunnen doorsturen naar een andere mailserver
- Een mailserver kunnen beveiligen
- HELO, restricties op binnenkomende mails, attachments blokkeren
- Een spamfilter (SpamAssassin) en virusscanner (ClamAV) kunnen installeren en koppelen aan PostFix
- Een Dovecot POP/IMAP server kunnen installeren en doorverbinden met Postfix
- Een Webmail server (Horde, Squirrelmail) kunnen installeren en doorverbinden met Postfix
- Een Postfix SMTP-server kunnen opzetten
Postfix
[bewerken]Installeren postfix:
$ yum install postfix system-switch-mail
Runlevel systeemservice aanpassen:
$ chkconfig --level 2345 postfix on
Het bestand main.cf aanpassen:
$ vi /etc/postfix/main.cf inet_interfaces = all mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain mynetworks = 192.168.0.0/24, 127.0.0.0/8 relay_domains = home_mailbox = Maildir/ relayhost = [mail-out.hogent.be] #mail-out.hogent.be is de smtp server op school, afhankelijk van de ISP kan dit veranderen (bv. voor Telenet is dit "uit.telenet.be" en voor Belgacom "relay.belgacom.net")
Iptables aanpassen:
$ iptables –I INPUT –p tcp --dport 25 –j ACCEPT $ service iptables save $ service iptables restart
Instellen als default email agent:
$ system-switch-mail
Beveiliging
Het bestand main.cf aanpassen:
$ vi /etc/postfix/main.cf #HELO restrictions: smtpd_delay_reject = yes smtpd_helo_required = yes smtpd_helo_restrictions = permit_mynetworks, reject_non_fqdn_helo_hostname, reject_invalid_helo_hostname, permit #Sender restrictions: smtpd_sender_restrictions = permit_mynetworks, reject_non_fqdn_sender, reject_unknown_sender_domain, permit #Recipient restrictions: smtpd_recipient_restrictions = reject_unauth_pipelining,reject_non_fqdn_recipient,reject_unknown_recipient_domain, permit_mynetworks, reject_unauth_destination, check_sender_access hash:/etc/postfix/sender_access, reject_rbl_client zen.spamhaus.org, reject_rbl_client bl.spamcop.net, check_policy_service unix:postgrey/socket, permit #Controle attachments: mime_header_checks = regexp:/etc/postfix/mime_header_checks
Ook het mime_header_checks bestand moet aangepast worden:
$ vi /etc/postfix/mime_header_checks /^content-(type|disposition):.*name[[:space:]]*=.*\.(bat|com|dll|scr|exe|vbs|pif)/ REJECT Bad attachment file name extension: $2
Service starten:
$ service postfix start
Dovecot
[bewerken]Installatie Dovecot:
$ yum install dovecot
Runlevel systeemservice aanpassen:
$ chkconfig --level 2345 dovecot on
Iptables aanpassen:
$ iptables –I INPUT 1 –p tcp --dport 110 –j ACCEPT $ iptables –I INPUT 1 –p tcp --dport 143 –j ACCEPT $ service iptables save $ service iptables restart
Config-bestand aanpassen:
$ vi /etc/dovecot.conf protocols = imap imaps pop3 pop3s mail_location = maildir:~/Maildir pop3_uidl_format = %08Xu%08Xv
Config-bestand aanpassen voor fedora 15 en hoger:
$ vi /etc/dovecot/dovecot.conf Regel 20: protocols = imap pop3 # imaps en pop3s worden niet meer ondersteund in fedora 16 $ vi /etc/dovecot/conf.d/10-auth.conf Regel 99: auth_mechanisms = plain login $ vi /etc/dovecot/conf.d/10-mail.conf Regel 30: mail_location = maildir:~/Maildir
Mailbox toevoegen:
$ Mkdir /home/admin/Maildir $ chmod –R 700 /home/admin/Maildir
Alias toevoegen:
$ vi /etc/aliases root: admin
Service starten:
$ service dovecot start
Webmail
[bewerken]Webmail installeren:
$ yum install httpd php mod_ssl
Runlevel van systeemservice aanpassen:
$ chkconfig --level 2345 httpd on
Iptables aanpassen:
$ iptables –I INPUT 1 –p tcp --dport 80 –j ACCEPT $ service iptables save $ service iptables restart
Installeren Squirrelmail:
$ yum install squirrelmail
Configuratie squirrelmail:
$ /usr/share/squirrelmail/config/conf.pl Laad de pre-defined settings voor dovecot (D) Stel het domein in en verander sendmail naar SMTP (2) Save (S) Quit (Q)
httpd.conf aanpassen:
$ vi /etc/httpd/conf/httpd.conf <VirtualHost *:80>
DocumentRoot /usr/share/squirrelmail
</VirtualHost>
SELinux instellen om toegang te krijgen tot IMAP via apache:
$ setsebool -P httpd_can_network_connect=1
Service starten:
$ service httpd start
Virusscanner
[bewerken]Voor CentOS 5.5 dienen we eerst een nieuwe repository toe te voegen om clamav te kunnen installeren.
Eerst downloaden we de laatste versie van de repo ( te vinden op https://packages.sw.be/rpmforge-release/ ).
$ wgethttps://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.i386.rpm
Installeren van DAG's GPG-key en package:
$ rpm --importhttps://apt.sw.be/RPM-GPG-KEY.dag.txt$ rpm -i rpmforge-release-0.5.2-2.el5.rf.*.rpm
Installeren ClamAV (antivirus) en SpamAssassin (spamfilter):
$ yum install amavisd-new clamav clamav-devel clamd spamassassin
Het config bestand clamd aanpassen:
$ vi /etc/clamd.conf TCPSocket 3310
Het config bestand freshclam aanpassen:
$ vi /etc/freshclam.conf # Example #In commentaar zetten
Antivirus databank bijwerken:
$ freshclam
Het config-bestand van clamsmtpd aanpassen:
vi /etc/clamsmtpd.conf OutAddress: 127.0.0.1:10026 Listen: 127.0.0.1:10025 Header: X-Virus-Scanned: ClamAV using ClamSMTP Action: drop
amavisd.conf aanpassen:
$ vi /etc/amavisd.conf $mydomain = '3tina.org'; $MYHOME = '/var/amavis'; $helpers_home = "$MYHOME/var"; $lock_file = "$MYHOME/var/amavisd.lock"; $pid_file = "$MYHOME/var/amavisd.pid"; $virus_admin = "postmaster\@$mydomain"; $mailfrom_notify_admin = "postmaster\@$mydomain"; $mailfrom_notify_recip = "postmaster\@$mydomain"; $mailfrom_notify_spamadmin = "postmaster\@$mydomain"; $myhostname = ‘fedora’; ### https://www.clamav.net/ ['ClamAV-clamd', \&ask_daemon, ["CONTSCAN {}\n", "/var/run/clamav/clamd.sock"], qr/\bOK$/, qr/\bFOUND$/, qr/^.*?: (?!Infected archive)(.*) FOUND$/ ],
master.cf van postfix aanpassen:
$ vi /etc/postfix/master.cf amavisfeed unix - - n - 2 smtp -o lmtp_data_done_timeout=1200 -o lmtp_send_xforward_command=yes -o disable_dns_lookups=yes -o max_use=20 127.0.0.1:10025 inet n - n - - smtpd -o content_filter= -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 smtpd_restriction_classes= -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,no_milters,no_address_mappings -o local_header_rewrite_clients= -o smtpd_milters= -o local_recipient_maps= -o relay_recipient_maps=
Main van postfix aanpassen:
$ vi in /etc/postfix/main.cf content_filter=amavisfeed:[127.0.0.1]:10024
Services herstarten:
$ service postfix restart $ service amavisd start $ service clamd start
Aanpassingen in SELINUX
$ vi amavisdlocal.te module amavisdlocal 1.0; require { type traceroute_port_t; type pgpkeyserver_port_t; type amavis_var_lib_t; type amavis_t; type clockspeed_port_t; class udp_socket name_bind; class lnk_file { read create unlink getattr }; } #============= amavis_t ============== allow amavis_t clockspeed_port_t:udp_socket name_bind; allow amavis_t pgpkeyserver_port_t:udp_socket name_bind; allow amavis_t traceroute_port_t:udp_socket name_bind; allow amavis_t amavis_var_lib_t:lnk_file { read create unlink getattr };
Nieuwe file clamlocal.de aanmaken:
$ vi clamlocal.de module clamlocal 1.0; require { type proc_t; type var_t; type sysctl_kernel_t; type clamd_t; class file { read getattr }; class dir { read search }; } #============= clamd_t ============== allow clamd_t proc_t:file { read getattr }; allow clamd_t sysctl_kernel_t:dir search; allow clamd_t sysctl_kernel_t:file read; allow clamd_t var_t:dir read; allow clamd_t var_t:file { read getattr };
Policies toevoegen:
$ checkmodule -M -m -o amavisdlocal.mod amavisdlocal.te $ semodule_package -o amavisdlocal.pp -m amavisdlocal.mod $ semodule -i amavisdlocal.pp $ checkmodule -M -m -o clamlocal.mod clamlocal.te $ semodule_package -o clamlocal.pp -m clamlocal.mod $ semodule -i clamlocal.pp
Labo-opdracht
[bewerken]- Zet een Postfix mailserver op en configureer hem zodat je hem kan gebruiken om vanop een andere pc op het netwerk een mail te sturen naar je eigen e-mailadres (bijv. @telenet.be, @hotmail.com, @gmail.com, ...).
- Test of je op de machine zelf een mail kan versturen naar een lokale gebruiker
- Test of je vanop een andere machine een mail kan sturen naar een lokale gebruiker
- Test of je vanop een andere machine een mail kan sturen naar een extern e-mailadres
- Installeer en configureer Dovecot naast Postfix zodat je vanop een andere pc mails kan lezen via een mailclient. Maak enkele mailboxen aan.
- Zorg voor Webmail-toegang (met Squirrelmail of Horde)
- Installeer ClamAV en SpamAssassin