
Mailserver howto
- Blog
In deze howto beschrijf ik de installatie en configuratie van Postfix op Debian. We gaan gebruik maken van virtuele gebruikers en domeinen. Daarnaast gebruiken we Spamassassin in combinatie met Spampd om on-the-fly mail te controleren op spam. On-the-fly scannen betekent dat de mailserver de mail accepteert als de spamcontrole negatief is. Biedt de verzendende mailserver spam aan, dan weigert de mailserver de mail met een 550 error code. Deze werkwijze heeft als voordeel dat mails niet verdwijnen in spam-boxen, maar de verzendende mailserver de gebruiker informeert over het niet afleveren van de mail.
Om mail te kunnen lezen maken we gebruik van de pop3 en imap-server Dovecot. Daarnaast installeren we Squirrelmail zodat de gebruikers ook webbased mail kunnen ontvangen en verzenden. Het gebruik van Squirrelmail is optioneel en kan zonder problemen overgeslagen worden.
We beginnen deze howto met een default installatie van Debian 8.1.0 met alleen ssh actief. Tijdens de installatie installeer je alleen sshd en de standaard system utilities. Na de installatie log je in als de gebruiker die je hebt aangemaakt en doe je een su naar de root gebruiker.
su -
Installeer de benodigde softwarepakketten. Tijdens de installatie vraagt de installer welke Postfix configuratie je wilt gebruiken. Kies hierbij “Internet Site” en geef daarna de FQDN van je mailserver op.
root@mailserver:/# apt-get install postfix spampd dovecot-core dovecot-pop3d dovecot-imapd
Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: binutils cpp cpp-4.9 gcc gcc-4.9 libasan1 libatomic1 libc-dev-bin libc6-dev libcilkrts5 libcloog-isl4 libdigest-hmac-perl liberror-perl libgcc-4.9-dev libgomp1 libio-multiplex-perl libio-socket-inet6-perl libisl10 libitm1 liblsan0 libmail-spf-perl libmpc3 libmpfr4 libnet-cidr-perl libnet-dns-perl libnet-ip-perl libnet-server-perl libnetaddr-ip-perl libquadmath0 libsocket6-perl libsys-hostname-long-perl libtsan0 libubsan0 linux-libc-dev make manpages-dev re2c sa-compile spamassassin spamc ssl-cert Suggested packages: binutils-doc cpp-doc gcc-4.9-locales ntp dovecot-gssapi dovecot-sieve dovecot-pgsql dovecot-mysql dovecot-sqlite dovecot-ldap dovecot-lmtpd dovecot-managesieved dovecot-solr dovecot-lucene gcc-multilib autoconf automake libtool flex bison gdb gcc-doc gcc-4.9-multilib gcc-4.9-doc libgcc1-dbg libgomp1-dbg libitm1-dbg libatomic1-dbg libasan1-dbg liblsan0-dbg libtsan0-dbg libubsan0-dbg libcilkrts5-dbg libquadmath0-dbg glibc-doc liblog-log4perl-perl make-doc postfix-mysql postfix-pgsql postfix-ldap postfix-pcre sasl2-bin dovecot-common resolvconf postfix-cdb ufw postfix-doc razor libdbi-perl pyzor libmail-dkim-perl openssl-blacklist The following packages will be REMOVED: exim4 exim4-base exim4-config exim4-daemon-light The following NEW packages will be installed: binutils cpp cpp-4.9 dovecot-core dovecot-imapd dovecot-pop3d gcc gcc-4.9 libasan1 libatomic1 libc-dev-bin libc6-dev libcilkrts5 libcloog-isl4 libdigest-hmac-perl liberror-perl libgcc-4.9-dev libgomp1 libio-multiplex-perl libio-socket-inet6-perl libisl10 libitm1 liblsan0 libmail-spf-perl libmpc3 libmpfr4 libnet-cidr-perl libnet-dns-perl libnet-ip-perl libnet-server-perl libnetaddr-ip-perl libquadmath0 libsocket6-perl libsys-hostname-long-perl libtsan0 libubsan0 linux-libc-dev make manpages-dev postfix re2c sa-compile spamassassin spamc spampd ssl-cert 0 upgraded, 46 newly installed, 4 to remove and 0 not upgraded. Need to get 31.2 MB of archives. After this operation, 105 MB of additional disk space will be used. Do you want to continue? [Y/n]
Controleer of Spampd en Postfix automatisch starten tijdens het booten. Als Spamassassin automatisch opstart, dan moet deze uitgeschakeld worden.
root@mailserver:/# ls -al /etc/rc$(runlevel | awk '{print $2}').d | egrep 'postfix|spampd|spamassassin'
lrwxrwxrwx 1 root root 22 Jul 30 13:35 S02spamassassin -> ../init.d/spamassassin lrwxrwxrwx 1 root root 16 Jul 30 13:35 S02spampd -> ../init.d/spampd lrwxrwxrwx 1 root root 17 Jul 30 13:35 S03postfix -> ../init.d/postfix
Staat Spampd of Postfix er niet bij enable deze dan met het update-rc.d commando.
root@mailserver:/# update-rc.d postfix defaults
Start tijdens het booten Spamassassin automatich op, dan schakelen we deze uit met het update-rc.d commando. Het is niet nodig om Spamassassin op te starten aangezien Spampd dit zelf doet zodra het nodig is.
root@mailserver:~# update-rc.d spamassassin disable
insserv: warning: current start runlevel(s) (empty) of script `spamassassin' overrides LSB defaults (2 3 4 5). insserv: warning: current stop runlevel(s) (0 1 2 3 4 5 6) of script `spamassassin' overrides LSB defaults (0 1 6).
Reboot de machine.
root@mailserver:/# reboot
Log opnieuw in als gebruiker, su naar root, en controleer of Postfix en Spampd opgestart zijn.
root@mailserver:~# ps axu | egrep 'postfix|spampd'
root 595 0.0 0.3 36152 3976 ? Ss 20:29 0:00 /usr/lib/postfix/master postfix 596 0.0 0.3 38216 3888 ? S 20:29 0:00 pickup -l -t unix -u -c postfix 597 0.0 0.3 38264 3872 ? S 20:29 0:00 qmgr -l -t unix -u spampd 601 0.0 6.4 138176 66224 ? Ss 20:29 0:00 /usr/bin/perl -T /usr/sbin/spampd --L --tagall --port=10025 --host=127.0.0.1 --relayport=10026 --relayhost=127.0.0.1 --pid=/var/run/spampd.pid --children=3 --user=spampd --group=spampd --logsock=unix spampd 604 0.0 6.4 138308 66484 ? S 20:29 0:00 /usr/bin/perl -T /usr/sbin/spampd --L --tagall --port=10025 --host=127.0.0.1 --relayport=10026 --relayhost=127.0.0.1 --pid=/var/run/spampd.pid --children=3 --user=spampd --group=spampd --logsock=unix spampd 605 0.0 6.2 138176 64208 ? S 20:29 0:00 /usr/bin/perl -T /usr/sbin/spampd --L --tagall --port=10025 --host=127.0.0.1 --relayport=10026 --relayhost=127.0.0.1 --pid=/var/run/spampd.pid --children=3 --user=spampd --group=spampd --logsock=unix spampd 606 0.0 6.3 138176 65068 ? S 20:29 0:00 /usr/bin/perl -T /usr/sbin/spampd --L --tagall --port=10025 --host=127.0.0.1 --relayport=10026 --relayhost=127.0.0.1 --pid=/var/run/spampd.pid --children=3 --user=spampd --group=spampd --logsock=unix postfix 673 0.0 0.5 42444 5368 ? S 20:30 0:00 tlsmgr -l -t unix -u -c root 741 0.0 0.2 12720 2216 pts/0 S+ 21:08 0:00 grep -E postfix|spampd
Maak een self-signed-certificate voor de nieuwe mailserver en beantwoord de vragen van Openssl naar jouw situatie.
root@mailserver:~# openssl req -x509 -nodes -days 365 -newkey rsa:4096 -keyout /etc/ssl/private/mailserver.atcomputing.nl.key -out /etc/ssl/certs/mailserver.atcomputing.nl.cer
Generating a 4096 bit RSA private key ..................................................................................++ ........................................................................................++ writing new private key to '/etc/ssl/private/mailserver.atcomputing.nl.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:NL State or Province Name (full name) [Some-State]:Gelderland Locality Name (eg, city) []:Nijmegen Organization Name (eg, company) [Internet Widgits Pty Ltd]:AT Computing Organizational Unit Name (eg, section) []:IT Common Name (e.g. server FQDN or YOUR name) []:mailserver.atcomputing.nl Email Address []:postmaster@atcomputing.nl
Ga naar de config directory van Postfix.
root@mailserver:~# cd /etc/postfix/
Open de main.cf config-file en vervang de inhoud van de file voor onderstaande configuratie. Pas vervolgens de optie smtpd_tls_cert_file en smtpd_tls_key_file aan zodat deze verwijzen naar jouw certificaten. De optie smtpd_banner is zo aangepast deze geen OS en MTA versie informatie meer vrij geeft, maar nog wel aan RFC 821 voldoet. Met de optie mynetworks geef je aan welke van jouw netwerken mail mogen relayen via de mailserver. Als laatste gaan we de optie virtual_uid_maps en virtual_gid_maps aanpassen, maar hiervoor maken we eerst een gebruiker aan.
root@mailserver:/etc/postfix# vi main.cf
# See /usr/share/postfix/main.cf.dist for a commented, more complete version smtpd_banner = $myhostname ESMTP This is not the server you're looking for biff = no # appending .domain is the MUA's job. append_dot_mydomain = no # Uncomment the next line to generate "delayed mail" warnings #delay_warning_time = 4h readme_directory = no # TLS parameters smtpd_tls_cert_file=/etc/ssl/certs/mailserver.atcomputing.nl.cer smtpd_tls_key_file=/etc/ssl/private/mailserver.atcomputing.key smtpd_use_tls=yes smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache # See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for # information on enabling SSL in the smtp client. myhostname = mailserver.atcomputing.nl alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases mynetworks = 127.0.0.0/8, 172.25.20.0/24 mailbox_size_limit = 51200000 recipient_delimiter = + inet_interfaces = all default_transport = smtp relay_transport = smtp inet_protocols = all #Virtual domain configuration virtual_mailbox_base = /var/vmail virtual_mailbox_domains = /etc/postfix/vdomains virtual_mailbox_maps = hash:/etc/postfix/vmaps virtual_alias_maps = hash:/etc/postfix/valias virtual_minimum_uid = 100 virtual_uid_maps = static:1001 virtual_gid_maps = static:1001 #Header check for spam report header_checks = regexp:/etc/postfix/header_checks
Maak de configuratiebestanden voor de virtual users, domains en header_checks aan.
root@mailserver:/etc/postfix# touch vdomains vmaps header_checks valias
Open de master.cf file.
root@mailserver:/etc/postfix# vi master.cf
Wijzig de regel.
smtp inet n - - - - smtpd
in de regels.
smtp inet n - n - 20 smtpd -o smtpd_proxy_filter=127.0.0.1:10025 -o smtpd_client_connection_count_limit=10 127.0.0.1:10026 inet n - n - - smtpd -o smtpd_authorized_xforward_hosts=127.0.0.0/8 -o smtpd_client_restrictions= -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o smtpd_data_restrictions= -o mynetworks=127.0.0.0/8 -o receive_override_options=no_unknown_recipient_checks
Open de vdomains-file en voeg het domain toe waar je mail voor wilt ontvangen.
root@mailserver:/etc/postfix# vi vdomains
atcomputing.nl
Voeg je e-mailadressen toe aan de vmaps-file. Let hierbij op de trailing / voor maildir of zonder / voor mbox formaat.
root@mailserver:/etc/postfix# vi vmaps
postmaster@atcomputing.nl atcomputing.nl/postmaster/
Open de valias-file en voer onderstaande vereiste e-mailadressen toe. Welke e-mailadressen zijn vereist voor jouw organisatie lees je in RFC 2142.
root@mailserver:/etc/postfix# vi valias
abuse@atcomputing.nl postmaster@atcomputing.nl webmaster@atcomputing.nl postmaster@atcomputing.nl
Maak een postfix-lookup-table van de vmaps en valias-file.
postmap vmaps postmap valias
Open de header_checks-file en voeg de header check toe.
root@mailserver:/etc/postfix# vi header_checks
/^X-Spam-Flag: YES/ REJECT Possible spam detected
Maak de Vmail gebruiker en groep aan.
root@mailserver:/etc/postfix# useradd vmail
Controleer de uid en gid van de gebruiker Vmail en wijzig de main.cf file uid en gid van de opties virtual_uid_maps en virtual_gid_maps.
id vmail
uid=1001(vmail) gid=1001(vmail) groups=1001(vmail)
Maak een directory met de naam van je domein voor het opslaan van de mail.
root@mailserver:/etc/postfix# mkdir -p /var/vmail/atcomputing.nl
Maak de gebruiker Vmail eigenaar van de nieuwe directory.
root@mailserver:/etc/postfix# chown -R vmail:vmail /var/vmail
Herstart Postfix.
root@mailserver:/etc/postfix# /etc/init.d/postfix restart
De configuratie van Dovecot staat in /etc/dovecot/dovecot.conf. Vanuit deze file worden de files die eindigen op .conf uit de directory conf.d geïnclude. Ga naar de Dovecot configuratie directory.
root@mailserver:/etc/postfix# cd /etc/dovecot
Open de 10-mail.conf file en wijzig de mail_location optie.
root@mailserver:/etc/dovecot# vi conf.d/10-mail.conf
mail_location = maildir:/var/vmail/%d/%n
Wijzig de certificaten in /etc/dovecot/conf.d/10-ssl.conf file en zet ssl op yes.
root@mailserver:/etc/dovecot# vi conf.d/10-ssl.conf
ssl = yes
ssl_cert = </etc/ssl/certs/mailserver.atcomputing.nl.cer
ssl_key = </etc/ssl/private/mailserver.atcomputing.nl.key
Zorg dat de Dovecot gaat luisteren op de pop3(s) en imap(s) poorten.
root@mailserver:/etc/dovecot# vi /usr/share/dovecot/protocols.d/imapd.protocol
protocols = $protocols imap
root@mailserver:/etc/dovecot# vi /usr/share/dovecot/protocols.d/pop3.protocol
protocols = $protocols pop3
Include de auth-passwdfile.conf.ext in de /etc/dovecot/conf.d/10-auth.conf file en zet de auth-system.conf.ext uit. Deze opties staan onderaan in de file.
root@mailserver:/etc/dovecot# vi conf.d/10-auth.conf
#!include auth-system.conf.ext #!include auth-sql.conf.ext #!include auth-ldap.conf.ext !include auth-passwdfile.conf.ext #!include auth-checkpassword.conf.ext #!include auth-vpopmail.conf.ext #!include auth-static.conf.ext
De /etc/dovecot/conf.d/auth-passwdfile.conf.ext moet onderstaande configuratie bevatten.
root@mailserver:/etc/dovecot# vi conf.d/auth-passwdfile.conf.ext
# Authentication for passwd-file users. Included from auth.conf. # # passwd-like file with specified location. # <doc/wiki/AuthDatabase.PasswdFile.txt> passdb { driver = passwd-file args = scheme=CRYPT username_format=%u /etc/dovecot/shadow } userdb { driver = passwd-file args = username_format=%u /etc/dovecot/passwd }
Maak de passwd en shadow-file aan voor Dovecot.
root@mailserver:/etc/dovecot# touch passwd shadow
Geef de files aan de Dovecot gebruiker.
root@mailserver:/etc/dovecot# chown dovecot:dovecot passwd shadow.
Wijzig de rechten op de shadow en passwd-file.
root@mailserver:/etc/dovecot# chmod 600 shadow passwd
Voeg de gebruiker Postmaster toe aan de /etc/dovecot/passwd file en pas hierbij de user id aan naar de Vmail gebruiker. Alle users in deze file krijgen de uid van de gebruiker Vmail. In dit geval 1001.
root@mailserver:/etc/dovecot# vi passwd
postmaster@atcomputing.nl::1001:1001:::::
Maak een wachtwoord voor de gebruiker postmaster@atcomputing.nl.
root@mailserver:/etc/dovecot# doveadm pw -s SHA512-CRYPT
{SHA512-CRYPT}$6$bNG4uuTHtskOtOk7$PejRyCsgoB7nHZcOru/fo6LZnHZ9o0k58S2E3PUdefDxIWUxLo2gEdLTRDxTHHUeL9Ks.2m.LRaBgfC9k.N9c/
Voeg de output van het commando achter het e-mailadres gevolgd voor een dubbele punt toe aan de shadow-file.
root@mailserver:/etc/dovecot# vi shadow
postmaster@atcomputing.nl:{SHA512-CRYPT}$6$bNG4uuTHtskOtOk7$PejRyCsgoB7nHZcOru/fo6LZnHZ9o0k58S2E3PUdefDxIWUxLo2gEdLTRDxTHHUeL9Ks.2m.LRaBgfC9k.N9c/
Herstart Dovecot.
root@mailserver:/etc/dovecot# /etc/init.d/dovecot restart
Als test verzenden we een mail aan de gebruiker postmaster@atcomputing.nl (sessie mislukt omdat mail mogelijk spam is).
root@mailserver:~# telnet localhost 25
Trying ::1... Connected to localhost. Escape character is '^]'. 220 mailserver.atcomputing.nl ESMTP This is not the server you're looking for ehlo mailserver.foobar.nl 250-mailserver.atcomputing.nl 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-STARTTLS 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN MAIL FROM:<demo@foobar.nl> 250 2.1.0 Ok RCPT TO:<postmaster@atcomputing.nl> 250 2.1.5 Ok DATA 354 End data with . Dit is een demo . 550 5.7.1 Possible spam detected quit 221 2.0.0 Bye Connection closed by foreign host.
Nogmaals testen met mailheaders zodat spamcontrole de mail accepteert.
root@mailserver:~# telnet localhost 25
Trying ::1... Connected to localhost. Escape character is '^]'. 220 mailserver.atcomputing.nl ESMTP This is not the server you're looking for ehlo mailserver.foobar.nl 250-mailserver.atcomputing.nl 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-STARTTLS 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN MAIL FROM:<demo@foobar.nl> 250 2.1.0 Ok RCPT TO:<postmaster@atcomputing.nl> 250 2.1.5 Ok DATA 354 End data with . From demo@foobar.nl Tue Jul 28 06:08:56 2015 Return-Path: <demo@foobar.nl> X-Original-To: postmaster@atcomputing.nl Delivered-To: postmaster@atcomputing.nl Subject: Demo mail From: demo <demo@foobar.nl> To: postmaster <postmaster@atcomputing.nl> Date: Tue, 28 Jul 2015 06:08:46 +0200 Dit is een demo . 250 2.0.0 Ok: queued as 81E0D80136 quit 221 2.0.0 Bye Connection closed by foreign host.
Mail lezen met imaps verbinding.
openssl s_client -connect localhost:993
CONNECTED(00000003) depth=0 C = NL, ST = Gelderland, L = Nijmegen, O = AT Computing, OU = IT, CN = mailserver.atcomputing.nl, emailAddress = rs@atcomputing.nl verify error:num=18:self signed certificate verify return:1 depth=0 C = NL, ST = Gelderland, L = Nijmegen, O = AT Computing, OU = IT, CN = mailserver.atcomputing.nl, emailAddress = rs@atcomputing.nl verify return:1 --- Certificate chain 0 s:/C=NL/ST=Gelderland/L=Nijmegen/O=AT Computing/OU=IT/CN=mailserver.atcomputing.nl/emailAddress=rs@atcomputing.nl i:/C=NL/ST=Gelderland/L=Nijmegen/O=AT Computing/OU=IT/CN=mailserver.atcomputing.nl/emailAddress=rs@atcomputing.nl --- Server certificate -----BEGIN CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIGEzCCA/ugAwIBAgIJAOtH3jdKfnPsMA0GCSqGSIb3DQEBCwUAMIGfMQswCQYD VQQGEwJOTDETMBEGA1UECAwKR2VsZGVybGFuZDERMA8GA1UEBwwITmlqbWVnZW4x FTATBgNVBAoMDEFUIENvbXB1dGluZzELMAkGA1UECwwCSVQxIjAgBgNVBAMMGW1h aWxzZXJ2ZXIuYXRjb21wdXRpbmcubmwxIDAeBgkqhkiG9w0BCQEWEXJzQGF0Y29t cHV0aW5nLm5sMB4XDTE1MDczMDEyMjM1MVoXDTE2MDcyOTEyMjM1MVowgZ8xCzAJ BgNVBAYTAk5MMRMwEQYDVQQIDApHZWxkZXJsYW5kMREwDwYDVQQHDAhOaWptZWdl bjEVMBMGA1UECgwMQVQgQ29tcHV0aW5nMQswCQYDVQQLDAJJVDEiMCAGA1UEAwwZ bWFpbHNlcnZlci5hdGNvbXB1dGluZy5ubDEgMB4GCSqGSIb3DQEJARYRcnNAYXRj b21wdXRpbmcubmwwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCuZxnU SJFRMcUdg/0D8o7/tJuaYpoRipAzR4WQDGvNof3xZ5IKH5Qk4l0UMLAjtauis+nG leQr34J0swMyXQWgr4v8v+I+hNflA1CLwB5N2XZgkW2q+V1y5v7FFH4bTxrnCsTV n+9dXaEO4uwtoBnV1yhjGP1CxQPI5t75E7TbtT2yYbEzx41Y5F8/di+z5w0iWFjK tOUu2/aV6tH+vMMh6sbxZIpirKKT+AurEg9EdD2JHHhXdAg02fEy71vSUDL9IRUM e1gDwSOh9ndv1aJMzTStL1f7COtY+JvHeMKCGvxafjwqx6SFbHECE8p0omeMtzPf /B7dY9z7O1A8NLOqzHD/958gb/K3kfb7Pjr2oo7y0n9OkPmiCxYxPjrUaZwza6d7 s7i3o9bIDgWb4pVOH5Yow2+2hV2GX3R9DYRDjgiX/FlZuZ2M38w89conLm0C7lzr QuU9aTM42xhRtjqN60L8pU18eFXkMfjwZvaXsH8Ajr5cza9m1ho7Vg2G6a4fFMa9 zNCDMFoGgmd2MnWrxHZpe/64whlKd1ZFfsg4QV9yGLZ2PpoDwOVrQTcO6AOFFFda Uy3MJeWrkSwuBhkf9TlliBuqAbktaBaVJTK28n68Vf56EXYPOA8cO/tvj9B0t53t Mj5VSvfwOA8MumtSpqrLLXvnkAJ9HSIi6Z9K7wIDAQABo1AwTjAdBgNVHQ4EFgQU 3FTLCB3hfTqolbBMr/ziy/c0clwwHwYDVR0jBBgwFoAU3FTLCB3hfTqolbBMr/zi y/c0clwwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAYnMPXvjkoT5M 46DgCJXkDlBWuFD0MjG45oFDfv4vBh61mm1zqZ5eX2xfMZvoEt9UHe1U+D5rf5R8 94Q/n+w3Nx/Lta7jdVkdqQjQSV7xAEN3M8kGkZ2nGmulOSCShG6nOEVyH9JkBRqd 6azUGdJuG5JTh6dfgt2DplHTXUonnRzPjdnofyG9o1tW3gDtR89GH+e3wRQ3pmMB ohWhaWTMs22OyVLj0PFw9ix31GTJoKcrhVZyZbmOSHr53EFnD89oSrizysiz2rF6 D+5HS7YCGRu4Z7IUIUjZtOLTmTsWzOAHToDyLMmuHfRvDwsltrmh6tFrEHJVkLqs fhv07ll+lSWe/K0P0tF8MeYagPNQLTrAW0Ajbf0xAaD0EIbEfJtbBMgiG20ceyLD /hu0J91sNHYsvfnR1Z4pPQOgcH8BgzPnNlxKei5bQurTqCoZXGtDa7CXgPuW67fQ N3e+xpaAFpsyK0Nrkt0bOqn7u20n9ihRBoF8A2xeaVIZrgEKK1+E4fxvf2/qn6Tv DJCRP6T75l8aq5KQdhcNDlmqvf18X0wPg31bODBZ2+oY+flwFSN1FuixxqQdJ24R GQVKDteg1mKtGGtuOybYc5mXjujmIiwAWQ0L83sPngv2nGUy6vB150PN3F7G7swY Q+SRgqCrcGrOfTMOdcZYZGMTYPKtwXc= -----END CERTIFICATE----- subject=/C=NL/ST=Gelderland/L=Nijmegen/O=AT Computing/OU=IT/CN=mailserver.atcomputing.nl/emailAddress=rs@atcomputing.nl issuer=/C=NL/ST=Gelderland/L=Nijmegen/O=AT Computing/OU=IT/CN=mailserver.atcomputing.nl/emailAddress=rs@atcomputing.nl --- No client certificate CA names sent --- SSL handshake has read 2506 bytes and written 453 bytes --- New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES256-GCM-SHA384 Server public key is 4096 bit Secure Renegotiation IS supported Compression: NONE Expansion: NONE SSL-Session: Protocol : TLSv1.2 Cipher : ECDHE-RSA-AES256-GCM-SHA384 Session-ID: F115DBAE503B66EB302675D1D8847E040E8A8FA221429708C94209B9D1757945 Session-ID-ctx: Master-Key: 9C8BE696AF3E94F60A24EB88A375B03F0CA8B843AD844202D27E21BEF1975E4490AE964976872D2548492B8D0AD6629D Key-Arg : None PSK identity: None PSK identity hint: None SRP username: None TLS session ticket lifetime hint: 300 (seconds) TLS session ticket: 0000 - be 01 d1 0f 63 93 19 23-a3 8e 7e a4 b2 97 18 76 ....c..#..~....v 0010 - 26 75 08 e0 e7 13 28 46-48 72 02 90 2a aa 7e d4 &u....(FHr..*.~. 0020 - 75 34 68 e0 30 33 e7 54-0d 6d 44 6c 44 24 c7 27 u4h.03.T.mDlD$.' 0030 - 16 77 62 5f d0 0c 8f a8-34 b5 24 21 f5 36 35 4c .wb_....4.$!.65L 0040 - 26 dc f4 76 6d fd 9750 - a5 d6 0f 74 3b 4e d7 ef-8b bf 38 36 8b 4b 61 a0 ...t;N....86.Ka. 0060 - 18 43 fc 13 2c 4c 36 4d-e5 e6 86 af 81 ad 57 d6 .C..,L6M......W. 0070 - bc 11 99 c5 b6 5a 9f 70-24 ba c2 b6 6e c3 4b 0f .....Z.p$...n.K. 0080 - 8e a7 b2 5e 80 fb 60 47-82 b4 13 86 1c 9c 6a e9 ...^..`G......j. 0090 - 53 1e 3d 8b 47 91 c9 97-3a d1 28 f7 cc 9e 2d 86 S.=.G...:.(...-. Start Time: 1438344892 Timeout : 300 (sec) Verify return code: 18 (self signed certificate) --- * OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE AUTH=PLAIN] Dovecot ready. 0 login postmaster@atcomputing.nl wachtwoord 0 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS THREAD=ORDEREDSUBJECT MULTIAPPEND URL-PARTIAL CATENATE UNSELECT CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS SPECIAL-USE BINARY MOVE] Logged in 1 list "" "*" * LIST (\HasNoChildren) "." INBOX 1 OK List completed. 2 select "INBOX" * FLAGS (\Answered \Flagged \Deleted \Seen \Draft) * OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft \*)] Flags permitted. * 2 EXISTS * 0 RECENT * OK [UNSEEN 1] First unseen. * OK [UIDVALIDITY 1438266521] UIDs valid * OK [UIDNEXT 3] Predicted next UID 2 OK [READ-WRITE] Select completed (0.000 secs). 3 fetch 1 all * 1 FETCH (FLAGS () INTERNALDATE "30-Jul-2015 16:25:04 +0200" RFC822.SIZE 1106 ENVELOPE ("Tue, 28 Jul 2015 06:08:46 +0200" "demo mail" (("demo" NIL "demo" "foobar.nl")) (("demo" NIL "demo" "foobar.nl")) (("demo" NIL "demo" "foobar.nl")) (("postmaster" NIL "postmaster" "atcomputing.nl")) NIL NIL NIL "<20150730140823.81E0D80136@mailserver.atcomputing.nl>")) 3 OK Fetch completed. 4 fetch 1 body[] * 1 FETCH (FLAGS (\Seen) BODY[] {1106} Return-Path: <demo@foobar.nl> X-Original-To: postmaster@atcomputing.nl Delivered-To: postmaster@atcomputing.nl Received: from mailserver.atcomputing.nl (localhost [127.0.0.1]) by mailserver.atcomputing.nl (Postfix) with ESMTP id 81E0D80136 for <postmaster@atcomputing.nl>; Thu, 30 Jul 2015 16:08:23 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on mailserver.atcomputing.nl X-Spam-Level: X-Spam-Status: No, score=-0.4 required=5.0 tests=ALL_TRUSTED,MISSING_MID autolearn=no autolearn_force=no version=3.4.0 Received: from mailserver.foobar.nl (localhost [IPv6:::1]) by mailserver.atcomputing.nl (Postfix) with ESMTP for <postmaster@atcomputing.nl>; Thu, 30 Jul 2015 16:08:11 +0200 (CEST) X-Mailbox-Line: From demo@foobar.nl Tue Jul 28 06:08:56 2015 X-Original-To: postmaster@atcomputing.nl Delivered-To: postmaster@atcomputing.nl Subject: Demo mail From: demo <demo@foobar.nl> To: postmaster <postmaster@atcomputing.nl> Date: Tue, 28 Jul 2015 06:08:46 +0200 Message-Id: <20150730140823.81E0D80136@mailserver.atcomputing.nl> Dit is een demo . ) 4 OK Fetch completed. 6 logout * BYE Logging out 6 OK Logout completed. closed
Testen van de pop3.
root@mailserver:/etc/dovecot# telnet localhost 110 Trying ::1... Connected to localhost. Escape character is '^]'. +OK Dovecot ready. user postmaster@atcomputing.nl +OK pass wachtwoord +OK Logged in. list +OK 2 messages: 1 1106 2 1769 . retr 1 +OK 1106 octets Return-Path: <demo@foobar.nl> X-Original-To: postmaster@atcomputing.nl Delivered-To: postmaster@atcomputing.nl Received: from mailserver.atcomputing.nl (localhost [127.0.0.1]) by mailserver.atcomputing.nl (Postfix) with ESMTP id 81E0D80136 for <postmaster@atcomputing.nl>; Thu, 30 Jul 2015 16:08:23 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on mailserver.atcomputing.nl X-Spam-Level: X-Spam-Status: No, score=-0.4 required=5.0 tests=ALL_TRUSTED,MISSING_MID autolearn=no autolearn_force=no version=3.4.0 Received: from mailserver.foobar.nl (localhost [IPv6:::1]) by mailserver.atcomputing.nl (Postfix) with ESMTP for <postmaster@atcomputing.nl>; Thu, 30 Jul 2015 16:08:11 +0200 (CEST) X-Mailbnon-secure (SSL/TLS) connections. ^] telnet> quit
Installeer Squirrelmail.
root@mailserver:~# apt-get install squirrelmail Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: apache2 apache2-bin apache2-data apache2-utils libapache2-mod-php5 libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap liblua5.1-0 libonig2 libqdbm14 php5-cli php5-common php5-json php5-readline squirrelmail-locales squirrelmail-viewashtml Suggested packages: apache2-doc apache2-suexec-pristine apache2-suexec-custom php-pear php5-user-cache squirrelmail-decode php5-recode imapproxy php5-ldap Recommended packages: php5-mhash The following NEW packages will be installed: apache2 apache2-bin apache2-data apache2-utils libapache2-mod-php5 libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap liblua5.1-0 libonig2 libqdbm14 php5-cli php5-common php5-json php5-readline squirrelmail squirrelmail-locales squirrelmail-viewashtml 0 upgraded, 19 newly installed, 0 to remove and 0 not upgraded. Need to get 11.2 MB of archives. After this operation, 42.3 MB of additional disk space will be used. Do you want to continue? [Y/n]
Ga naar de apache2 config directory.
root@mailserver:# cd /etc/apache2
Om veiligheidsredenen willen we zo min mogelijk informatie prijsgeven over onze server. We zetten daarom de ServerTokens optie van OS naar ServerTokens minimal. Open hiervoor de security.conf file en wijzig de ServerTokens optie.
root@mailserver:/etc/apache2# vi conf-enabled/security.conf
ServerTokens Minimal #ServerTokens OS #ServerTokens Full
Activeer de ssl site en rewrite/ssl module.
root@mailserver:/etc/apache2# a2ensite default-ssl root@mailserver:/etc/apache2# a2enmod rewrite root@mailserver:/etc/apache2# a2enmod ssl
Ga naar de /etc/apache2/sites-available directory.
root@mailserver:/etc/apache2# cd sites-available
Wijzig de 000-default.conf file en maak een redirect naar https. Voeg onderstaande code toe aan de config-file tussen de VirtualHost tags en wijzig eventueel ook de ServerAdmin optie naar jouw e-mailadres.
root@mailserver:/etc/apache2/sites-available# vi 000-default.conf
RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
Open het bestand default-ssl.conf en voeg onderstaande code toe tussen de VirtualHost tags.
root@mailserver:/etc/apache2/sites-available# vi default-ssl.conf
RewriteEngine on RewriteRule ^/$ /squirrelmail/src/login.php [R]
Na het toevoegen van de redirect passen we de certificaten aan. Wijzig de opties SSLCertificateFile en SSLCertificateKeyFile zodat ze de juiste files bevatten.
SSLCertificateFile /etc/ssl/certs/mailserver.atcomputing.nl.cer SSLCertificateKeyFile /etc/ssl/private/mailserver.atcomputing.nl.key
Maak de volgende solftlink aan om de website toegankelijk te maken voor de webserver.
ln -s /usr/share/squirrelmail /var/www/html/squirrelmail
Herstart Apache.
/etc/init.d/apache2 restart
Test de Squirrelmail website door met een browser het IP-adres van de mailserver te bezoeken. Er zal direct een redirect plaatsvinden naar https en de Squirrelmail login pagina.
De mailserver is nu klaar voor het verzenden en ontvangen van e-mails. Binnen deze howto heb ik er voor gekozen om virtuele users en domains te configureren. Het gebruik hiervan maakt het makkelijker om later wijzigingen te maken. Nu is het bijvoorbeeld simpeler om e-mails te gaan ontvangen en verzenden voor extra domeinen. Nieuwe mail controleert Spamassassin on-the-fly op spam. Blijkt de aangeboden mail een spambericht te zijn, dan dropt de mailserver deze ter plekke in plaats van mail-boxen hiermee te vervuilen.