Mailserver howto

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.
# 

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:
250 2.1.0 Ok
RCPT TO:
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:
250 2.1.0 Ok
RCPT TO:
250 2.1.5 Ok
DATA
354 End data with .
From demo@foobar.nl Tue Jul 28 06:08:56 2015
Return-Path: 
X-Original-To: postmaster@atcomputing.nl
Delivered-To: postmaster@atcomputing.nl
Subject: Demo mail
From: demo 
To: postmaster 
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: 
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 ; 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 ; 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 
To: postmaster 
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: 
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 ; 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 ; 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.

Onderwerpen
Actieve filters: Wis alle filters
Loading...