Howto Qmail met vpopmail, qmailadmin, imapcourier, squirrelmail + vele extra's
Piethein Strengholt
versie 1.02
Laatste update: 20 juni 2003

In deze Nederlandse Howto leg ik uit hoe je een complete Mailserver met Qmail op kan zetten onder Linux. Wat documentatie is geleend van oa Matt Simerson's FreeBSD Mail Toaster Howto. Na het lezen en daadwerkelijk uitvoeren van deze howto heb een complete mailserver op je systeem draaien. Webbased kunnen gebruikers en domeinen onderhouden worden en gebruikers kunnen webbased hun mail uit lezen. Deze Howto gaat niet al te diep op de materie in. Ik hou er van lekker te kunnen copy/pasten en op die manier snel en gemakkelijk een doel te bereiken. De commando's zijn daarom met rood aangegeven. Als je echt diep op de materie wilt in gaan raad ik je aan Life met Qmail eens te lezen of gewoon het Qmail handboek te kopen.

Verder wil ik even opmerken dat indien er echt met dit mail systeem gewerkt gaat worden, dit op 2 manieren kan:

1) Intern: een interne mailserver kan worden opgezet. Hiervoor dient wel een dns-server te draaien anders zullen de mailtjes nooit aankomen.
2) Extern: Het is mogelijk een externe mailserver te draaien. Wel moeten de mailtjes met behulp van bv bsmtp worden doorgestuurd. In mijn geval maak ik gebruik van demon internet. Zij bieden de mogelijkheid alles onder een bepaald subdomein door te laten sturen. Vraag dan wel vanaf welke server die doorsturen gebeurd en maak een rule in je firewall script (bv iptables -A INPUT -p tcp --dport 25 -s 194.159.73.0/24 -j ACCEPT ) ter voorkoming dat iedereen gebruik kan maken van je smtp systeem (tegen spamming)

Om te testen of mails worden doorgestuurd zou je met 'tcpdump dst port 25' kunnen kijken of er servers reageren op mail die geadresseerd is op je subdomein.

Voorbereiding. Het is raadzaam dat de laatste versie van openssl op je systeem is geinstalleerd. Heb je dit nog niet gedaan volg dan de instructies beneden. Draait een recente versie van OpenSSL al op het systeem ga dan door naar stap2.

1. Installatie OpenSSL
In deze howto ga ik uit van de installatie directory /var/src/tar. Maak deze directory aan en download, configure en compile de laatste versie van openssl (0.96g in dit voorbeeld) Ik raad ieder aan de laatste versie van openssl te gebruiken om zo een veilig systeem te waarborgen!

mkdir -p /var/src/tar
cd /var/src/tar
wget http://www.openssl.org/source/openssl-0.9.6g.tar.gz
tar zxvf openssl-0.9.6g.tar.gz
cd openssl-0.9.6g
./config --prefix=/usr/local --openssldir=/usr/local/openssl
make
make install
ln /usr/local/bin/openssl /usr/bin/openssl

Nu staat de laatste versie van openssl op het systeem geinstalleerd.

2. Downloaden installatie bestanden & Voorbereiding
Zoals ik bij stap1 al uitlegde ga ik uit van de installatie directory /var/src/tar. Download met wget alle bestanden die nodig zijn voor deze installatie.

mkdir -p /var/src/tar
cd /var/src/tar

wget http://iie.gamepoint.net/daemontools-0.76.tar.gz
wget http://iie.gamepoint.net/ucspi-tcp-0.88.tar.gz
wget http://iie.gamepoint.net/qmail-1.03.tar.gz
wget http://iie.gamepoint.net/qmail-toaster-0.4.2.patch
wget http://iie.gamepoint.net/vpopmail-5.2.1.tar.gz
wget http://iie.gamepoint.net/autorespond-2.0.2.tar.gz
wget http://iie.gamepoint.net/qmailadmin-1.0.6.tar.gz
wget http://iie.gamepoint.net/ezmlm-0.53.tar.gz
wget http://iie.gamepoint.net/idx.shupp.patch.gz
wget http://iie.gamepoint.net/courier-imap-1.7.3.tar
wget http://iie.gamepoint.net/sqwebmail-3.3.4.tar.gz
wget http://iie.gamepoint.net/apache_1.3.24.tar.gz
wget http://iie.gamepoint.net/toaster-scripts.tar.gz

Zo alle bestanden zijn gedownload en er kan nu verder worden gegaan met de echte installatie

Het volgende dat moet gebeuren is dat we sendmail gaan uitschakelen. Controleer of sendmail draait met het volgende commando:

ps -A | grep sendmail

Sendmail draait nog als er iets verschijnt wat lijkt op het volgende:

root@server:~# ps -A | grep sendmail
88 ? 00:00:00 sendmail
92 ? 00:00:00 sendmail


Kill de processen van sendmail, in dit voorbeeld 88 en 92 (kill 88)

Verder moet we er voor zorgen dat sendmail niet meer wordt mee gestart tijdens het booten. Verwijder alle koppelingen van sendmail uit de /etc/rc.d directory.

3. Installatie van Deamontools
Daemontools is een verzameling van tooltjes voor het beheren en het managen van *unix/bsd. Deze gaan we ook gebruiken voor de installatie van Qmail onder Linux. Hieronder volgt de installatie procedure:

mkdir -p /package
chmod 1755 /package
cd /package
tar -xpzf /var/src/tar/daemontools-0.76.tar.gz
cd admin/daemontools-0.76
package/install

4. Installatie van Ucspi-tcp
tcpserver en tcpclient hebben we nodig voor het opzetten van verbindngen binnen het systeem. tcpserver regelt bv de maximale aantal verbindingen die met het systeem gemaakt zouden kunnen worden, in dit geval de mailserver. Onder volgt de installatie procedure:

cd /var/src/
tar -xzf tar/ucspi-tcp-0.88.tar.gz
cd ucspi-tcp-0.88
make
make setup check

5. Qmail
Qmail is het gene waar het allemaal om draait. Qmail maakt Sendmail compleet overbodig. Het is snel en maakt geen gebruik van Inetd. Zelfs MS kan niet zonder Qmail. Het hele smtp-hotmail gebeuren draait op Qmail ;) Onder volgt de procedure die moet worden afgelegd om Qmail goed op het systeem te installeren. Gebruikers (oa voor vpop) en groepen waar Qmail onder gaat draaien worden aangemaakt.

In het eerste gedeelte maken we de groepen en gebruikers aan waar qmail onder gaat draaien. Ook maken we de juiste directory's aan.

mkdir /var/qmail
groupadd nofiles
useradd -g nofiles -d /var/qmail/alias alias
useradd -g nofiles -d /var/qmail qmaild
useradd -g nofiles -d /var/qmail qmaill
useradd -g nofiles -d /var/qmail qmailp
groupadd qmail
useradd -g qmail -d /var/qmail qmailq
useradd -g qmail -d /var/qmail qmailr
useradd -g qmail -d /var/qmail qmails
groupadd vchkpw
useradd -g vchkpw vpopmail
cd /var/src

Zo de juiste gebruikers en groepen zijn aangemaakt en Qmail is klaar om gecompiled en gepatched te worden. Qmail laten we draaien onder aparte gebruikers. In get volgende gedeelte gaan we qmail compilen en klaar maken voor het systeem. Tevens maken we gebruik van de toaster patch, hier zitten wat verbeteringen in zoals een mail in de queue te zetten voordat het werkelijk in de inbox terecht komt.

tar -xzf tar/qmail-1.03.tar.gz
tar -xzf tar/toaster-scripts.tar.gz
cd qmail-1.03
patch -p0 < ../tar/qmail-toaster-0.4.2.patch
make
make setup check
cd ~alias; touch .qmail-postmaster .qmail-mailer-daemon .qmail-root
cd /var/src/qmail-1.03
chmod 644 ~alias/.qmail*

Het volgende commando moet er even worden opgelet. Hier dient de juiste domain-name te worden opgegeven. Ik draai mijn server intern en heb daarom gekozen voor server.local.home. Ieder moet hier zelf uitzoeken wat bij zijn of haar situatie van toepassing is. Het voorbeeld gaat uit van 'erhnam.demon.nl'

./config-fast erhnam.demon.nl

root@server:/var/src/qmail-1.03# ./config-fast erhnam.demon.nl
Your fully qualified host name is erhnam.demon.nl.
Putting erhnam.demon.nl into control/me...
Putting demon.nl into control/defaultdomain...
Putting demon.nl into control/plusdomain...
Putting erhnam.demon.nl into control/locals...
Putting erhnam.demon.nl into control/rcpthosts...
Now qmail will refuse to accept SMTP messages except to erhnam.demon.nl.


make cert

Na het geven van dit commando worden er een aantal vragen gesteld mbt tot bedrijfsinformatie etc. Vul deze allemaal in en vervolg de installatie. In het volgende gedeelte worden de juiste directories en script aangemaakt die Qmail nodig heeft om goed te funtioneren. De juiste rechten waar aan de files toegekend en een aantal koppelingen worden aangemaakt.

cd /var/qmail/control
rm clientcert.pem
cp servercert.pem clientcert.pem
chown qmaild.qmail clientcert.pem
cd /var/src
cp toaster-scripts/rc /var/qmail/rc
chmod 755 /var/qmail/rc
mkdir /var/log/qmail
echo ./Maildir/ >/var/qmail/control/defaultdelivery
cp toaster-scripts/qmailctl /var/qmail/bin/

In het volgende gedeelte maken we sendmail compleet overbodig. We maken een koppeling van sendmail naar qmail. Programma's die gebruik maken van sendmail gaan dus nu voortaan gebruik maken van qmail:

mv /usr/lib/sendmail /usr/lib/sendmail.old # ignore errors
mv /usr/sbin/sendmail /usr/sbin/sendmail.old # ignore errors
chmod 0 /usr/lib/sendmail.old /usr/sbin/sendmail.old # ignore errors
chmod 755 /var/qmail/bin/qmailctl
ln -s /var/qmail/bin/qmailctl /usr/bin
ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
ln -s /var/qmail/bin/sendmail /usr/lib/sendmail

De volgende commando's hebben allemaal betrekking op de rechten en het logging systeem van qmail. Verder voeren we we een aantal toaster-scripten door, al we eerder qmail met toaster hadden gepatched.

mkdir -p /var/qmail/supervise/qmail-send/log
mkdir -p /var/qmail/supervise/qmail-smtpd/log
mkdir -p /var/qmail/supervise/qmail-pop3d/log
mkdir -p /var/qmail/supervise/qmail-pop3ds/log
chmod +t /var/qmail/supervise/qmail-send
chmod +t /var/qmail/supervise/qmail-smtpd
chmod +t /var/qmail/supervise/qmail-pop3d/log
chmod +t /var/qmail/supervise/qmail-pop3ds/log
cp /var/src/toaster-scripts/send.run /var/qmail/supervise/qmail-send/run
cp /var/src/toaster-scripts/send.log.run /var/qmail/supervise/qmail-send/log/run
cp /var/src/toaster-scripts/smtpd.run /var/qmail/supervise/qmail-smtpd/run
cp /var/src/toaster-scripts/smtpd.log.run /var/qmail/supervise/qmail-smtpd/log/run
cp /var/src/toaster-scripts/pop3d.run /var/qmail/supervise/qmail-pop3d/run
cp /var/src/toaster-scripts/pop3d.log.run /var/qmail/supervise/qmail-pop3d/log/run
cp /var/src/toaster-scripts/pop3ds.run /var/qmail/supervise/qmail-pop3ds/run
cp /var/src/toaster-scripts/pop3ds.log.run /var/qmail/supervise/qmail-pop3ds/log/run
echo 20 > /var/qmail/control/concurrencyincoming
chmod 644 /var/qmail/control/concurrencyincoming
chmod 755 /var/qmail/supervise/qmail-send/run
chmod 755 /var/qmail/supervise/qmail-send/log/run
chmod 755 /var/qmail/supervise/qmail-smtpd/run
chmod 755 /var/qmail/supervise/qmail-smtpd/log/run
chmod 755 /var/qmail/supervise/qmail-pop3d/run
chmod 755 /var/qmail/supervise/qmail-pop3d/log/run
chmod 755 /var/qmail/supervise/qmail-pop3ds/run
chmod 755 /var/qmail/supervise/qmail-pop3ds/log/run
mkdir -p /var/log/qmail/smtpd
mkdir -p /var/log/qmail/pop3d
mkdir -p /var/log/qmail/pop3ds
chown qmaill /var/log/qmail /var/log/qmail/smtpd
chown qmaill /var/log/qmail/pop3d /var/log/qmail/pop3ds

ln -s /var/qmail/supervise/qmail-send /var/qmail/supervise/qmail-smtpd /service

qmailctl stat

Na het geven van het laatste commando moet er iets uit komen rollen wat lijkt op:

root@server:/var/src/tar# qmailctl stat
/service/qmail-send: up (pid 255) 173351 seconds
/service/qmail-send/log: up (pid 251) 173351 seconds
/service/qmail-smtpd: up (pid 256) 173351 seconds
/service/qmail-smtpd/log: up (pid 252) 173351 seconds
messages in queue: 7
messages in queue but not yet preprocessed: 0
root@server:/var/src/tar#

Als laatste moet het bestand '/home/vpopmail/etc/tcp.smtp' nog verder worden aangepast. In dit bestand komen de hostnames en ip-adressen te staan, die toegang hebben tot het smtp systeem van qmail. Neem ook je localhost in dit bestand op. Voeg de volgende regels tenminste toe:

194.159.73.:allow,RELAYCLIENT=""
127.0.0.:allow,RELAYCLIENT=""



Als je tot hier bent gekomen is alles goed gegaan en kan je verder gaan met deze Howto!

6. Installatie van Vpopmail
Nu het smtp gedeelte werkt moeten de mailtjes ook bezorgt worden. Pop en IMAP lenen zich hiervoor. Ik heb in deze howto gekozen voor vpopmail. Met vpopmail (pop, de naam zegt het al) is het mogelijk om meerdere domeinen te gebruiken op 1 Ip-adres. Handig voor mensen die willen gaan hosten en erbij mail willen aanbieden. Verder herbergt het een aantal tools om users te beheren en aan te maken op de mailserver. Onder volgt de installatie van vpopmail.

cd /var/src
tar -xzf tar/vpopmail-5.2.1.tar.gz
cd vpopmail-5.2.1

./configure --enable-roaming-users=y --enable-logging=v

Mocht je 1 default domain hebben kan je ook compilen met:

./configure --enable-roaming-users=y --enable-logging=v --enable-default-domain=erhnam.demon.nl
make
make install-strip

echo '127.:allow,RELAYCLIENT=""' >/home/vpopmail/etc/tcp.smtp
echo '194.159.73.:allow,RELAYCLIENT=""' >/home/vpopmail/etc/tcp.smtp

qmailctl cdb

Nu moet er aan de crontab de volgende regel worden toegevoegd. Open de crontab met 'crontab -e'

9-59,10 * * * * /home/vpopmail/bin/clearopensmtp 2>&1 > /dev/null

Ga verder met de installatie...

cp ../toaster-scripts/vpopmailctl /var/qmail/bin/vpopmailctl
chmod 755 /var/qmail/bin/vpopmailctl
ln -s /var/qmail/bin/vpopmailctl /usr/bin
ln -s /var/qmail/supervise/qmail-pop3d /var/qmail/supervise/qmail-pop3ds /service
vpopmailctl stat

7. Installatie IMAP (Courier)
Met Courier-IMAP is het mogelijk naast POP ook IMAP te ondersteunen. IMAP is een apart protocol waar je ook je mail mee op kan halen. Outlook of Outlook Express kunnen gebruik maken van IMAP maar ook squirrelmail maakt gebruik van IMAP. Onder volgt de installatie-procedure:

cd /var/src/tar
tar -xzf courier-imap-1.7.3.tar
cd courier-imap-1.7.3

echo "-I/home/vpopmail/include" > /home/vpopmail/etc/inc_deps
echo "-L/home/vpopmail/lib -lvpopmail" > /home/vpopmail/etc/lib_deps


./configure --disable-root-check --without-authdaemon --with-authvchkpw \
--enable-workarounds-for-imap-client-bugs

make
make install-strip
make install-configure

Nu moeten de volgende regels worden aangepast in de imap-deamon. Edit /usr/lib/courier-imap/etc/imapd met bv pico.

pico /usr/lib/courier-imap/etc/imapd

( Verander 'AUTHMODULES="..."' naar 'AUTHMODULES="authvchkpw"' )
Verander 'IMAPDSTART=NO' naar 'IMAPDSTART=YES'

Aan het begin van de howto hebben we openssl geinstalleerd. We kiezen er daarom ook voor IMAP met SSL te laten werken (wel zo veilig) Daarom dient /usr/lib/courier-imap/etc/imapd-ssl aan te worden gepast. Open /usr/lib/courier-imap/etc/imapd-ssl met bv pico.

pico /usr/lib/courier-imap/etc/imapd-ssl

Verander 'IMAPDSSLSTART=NO' naar 'IMAPDSSLSTART=YES'

In de bestanden /usr/lib/courier-imap/libexec/imapd.rc en /usr/lib/courier-imap/libexec/imapd-ssl.rc moeten de volgende regels worden aangepast:

pico /usr/lib/courier-imap/libexec/imapd.rc
pico /usr/lib/courier-imap/libexec/imapd-ssl.rc


Verander
/usr/lib/courier-imap/libexec/couriertcpd -address=$ADDRESS \

/usr/lib/courier-imap/libexec/imapd.rc veranderen in:
/usr/lib/courier-imap/libexec/couriertcpd -address=$ADDRESS \
-user=vpopmail -group=vchkpw \

/usr/lib/courier-imap/libexec/imapd-ssl.rc veranderen in:
/usr/lib/courier-imap/libexec/couriertcpd -address=$SSLADDRESS \
-user=vpopmail -group=vchkpw \

Courier-Imap kan je als het goed is nu starten met het volgende commando:

/usr/lib/courier-imap/libexec/imapd.rc start
/usr/lib/courier-imap/libexec/imapd-ssl.rc start


Zorg er als laatste nog even voor dat de gebruiker vpopmail ook volledig recht heeft tot het imapd certificaat:

chown vpopmail.vchkpw /usr/lib/courier-imap/share/imapd.pem

8. Installatie Apache-Webserver en PHP
Apache kennen we natuurlijk allemaal. De webserver als je je bestanden via http wilt offeren ;) Ik raad je aan om de laatste versie van apache te plukken. PHP is de scripttaal die we gebruiken.
Apache en PHP gaan we gebruiken voor het webbased beheer en webbased mailen op onze server. Heb je hier geen behoefte aan dan kan je deze stappen altijd overslaan.
Hieronder volgt de installatie:

Haal de laatste versie van apache van http://www.apache.org

tar -zxvf apache_1.3.26.tar.gz
cd apache_1.3.26

./configure \
--prefix=/usr/local/apache \
--enable-module=so

make && make install

Installeren van PHP:

Haal de laatste versie van PHP van http://www.php.net

Voer nu de volgende commando's uit:

tar -zxvf php-*.tar.gz
cd php-dir

./configure \
--with-xml \
--enable-track-vars \
--enable-ftp \
--with-apxs=/usr/local/apache/bin/apxs

evt met --with-mysql=/usr/local/mysql \ erbij als je ook mysql gebruikt

make && make install


Ga terug naar waar je php gecompiled hebt en kopieer het volgende:

cp php.ini-dist /usr/local/lib/php.ini

In /usr/local/apache/conf/httpd.conf moet het volgende staan om met php bestanden op de juiste manier om te gaan:

pico /usr/local/apache/conf/httpd.conf

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
AddType application/x-httpd-php .phtml
AddType application/x-httpd-php .php3

cd /usr/local/apache/bin
./apachectl configtest
# Syntax OK
./apachectl start
./apachectl start: httpd started

Apache draait nu en je zou nu kunnen connecten met je browser naar je server of bak

9. Installatie van Squirelmail
Met squirelmail is het mogelijk webbased je mail op te halen. Xs4all gebruikt geloof ik precies hetzelfde systeem. Squirelmail is makkelijk op te zetten en flexibel aan te passen.

Ga in de apache htdocs directory staan of als je die hebt geweizigd in de www-directory en download squirelmail en pak deze uit.

tar zxvf squirelmail*.tar.gz
cd squirelmail

Kopieer de config/config_default.php naar config/config.php en edit deze. Als het goed is kan je nu squirel bekijken op de volgende lokatie:
http://www.mijndomain.com/squirrelmail

Ik moest tevens de gebruiker nobody rechten toekennen aan de data directory van squirrelmail:

chown -R nobody data


Hier een voorbeeld van het inlog scherm.

Squirrelmail gaf bij mij problemen met php versie 4.3. Zet de volgende regels in je php.ini om dit probleem op te lossen:
session.bug_compat_42 = 0
session.bug_compat_warn = 0

10. Installatie van Qmailadmin
Qmailadmin is een cgi-script waarmee het mogelijk is gebruikers te beheren toe te voegen en te deleten binnen een domein. Zeer handig, hoef je niet steeds met de commandline te pielen en naar je bak te connecten. De installatie volgt hier onder:

cd /var/src
tar -xzf tar/autorespond-2.0.2.tar.gz
cd autorespond-2.0.2
make
make install

cd /var/src
tar -xzf tar/ezmlm-0.53.tar.gz
cd ezmlm-0.53
gunzip -cd ../tar/idx.shupp.patch.gz | patch -p0
make
make setup


cd /var/src
tar -xzf tar/qmailadmin-1.0.6.tar.gz
cd qmailadmin-1.0.6
./configure --enable-cgibindir=/usr/local/apache/cgi-bin/ --enable-htmldir=/usr/local/apache/htdocs \
--with-htmllibdir=/usr/local/apache/htdocs \
--enable-vpopmaildir=/home/vpopmail/

make
make install-strip

Gefeliciteerd! Als het goed is moet nu alles draaien. Met het volgende commando's kunnen we een domein aan maken en daarna gaan we testen of alles werkt. mijndomein.nl is het domein wat je wilt aanmaken (pas dat aan in jouw situatie en **** is het wachtwoord dat je daar voor wilt gebruiken) Wel wil ik even opmerken voordat je echt aan de slag gaat met je mailsysteem, dat je er voor moet zorgen dat intern je een werkend dns systeem hebt of de boel op orde hebt. Extern bsmtp hebt aangevraagt of er zeker van bent dat extern mails kunnen worden afgehandeld.

/home/vpopmail/bin/vadddomain erhnam.demon.nl *****
/home/vpopmail/bin/vadduser user@erhnam.demon.nl *****

Als je het volgende commando geeft kan je testen of de gebruiker goed is aangemaakt:

/home/vpopmail/bin/vuserinfo user@erhnam.demon.nl

Er verschijnt dan iets wat lijkt op het volgende:

root@server:/home/vpopmail/bin# /home/vpopmail/bin/vuserinfo erhnam@erhnam.demon.nl
name: erhnam
passwd: $1$AYViw$5Ttfz.60faKfkyWYIkoLV1
clear passwd: *****
uid: 1
gid: 0
all services available
dir: /home/vpopmail/domains/erhnam.demon.nl/erhnam
quota: NOQUOTA
usage: NOQUOTA
account created: Tue Jan 28 12:41:33 2003
last auth: Never logged in
root@server:/home/vpopmail/bin#

root@server:/home/vpopmail/bin# ./vdominfo
domain: erhnam.demon.nl
uid: 1010
gid: 104
dir: /home/vpopmail/domains/erhnam.demon.nl
users: 2
root@server:/home/vpopmail/bin#




Hier een voorbeeld hoe qmailadmin er uit zou moeten zien.
Gebruikers kunnen op een gemakkelijke manier worden toegevoegd!

Je zou nu kunnen inloggen op http://mijnservername.mijndomein.nl/cgi-bin/qmailadmin/ en gebruikers kunnen toevoegen.

Laatste tip die ik je wil meegeven is dat je er voor moet zorgen dat de volgende commando's worden uitgevoerd tijdens start, anders draait imap niet:

/usr/lib/courier-imap/libexec/imapd.rc start
/usr/lib/courier-imap/libexec/imapd-ssl.rc start


11. Installatie Fetchmail (extra)
Met fetchmail is het mogelijk email binnen te halen van verschillende acounts en deze te laten bezorgen op andere email addressen.

Wat je eerst moet doen is de fetchmail site bezoeken: http://freshmeat.net/projects/fetchmail/ en daar de laatste versie van fetchmail downloaden

In dit voorbeeld doe ik het met fetchmail-6.1.2.tar.gz

Nadat het bestand is gedownload dient het uitgepakt te worden, te geconfigureerd en te worden gecompiled met de volgende commando's:

wget http://freshmeat.net/redir/fetchmail/2635/url_tgz/fetchmail-6.2.3.tar.gz
tar zxvf fetchmail-6.2.3.tar.gz
cd fetchmail-6.2.3
./configure
make && make install

Nu heb je een werkende fetchmail installatie op het systeem staan. Hierna moet de fetchmail config file worden aangepast. In dit bestand zetten we de emailadressen en bijbehorende wachtwoorden en server-instellingen. Open de fetchmail config file met het volgende commando:

pico /etc/fetchmailrc

Soort gelijke regels als hier onder dienen te worden ingevoerd in het config bestand. In dit voorbeeld heb ik 2 acounts geconfigureerd en deze worden bezorgt in de inbox voor de gebruiker@voorbeeld.nl. Natuurlijk dien je dit aan te passen aan je eigen situatie. De quotes moet je laten staan en de *** vervang je door je eigen password. Aan te raden is het bestand met 600 te modden zodat het niet gelezen kan worden door andere gebruikers.

poll pop.server.nl with proto POP3 user "gebruikersnaam", with password "****" is gebruiker@voorbeeld.nl here
poll pop.server2.nl with proto POP3 user "gebruikersnaam2", with password "****" is gebruiker@voorbeeld.nl here

Vervolgens start je fetchmail met het volgende commando:

fetchmail --fetchmailrc /etc/fetchmailrc

Als het goed is zie je dat er van de verschillende acountjes email wordt opgehaald of gechecked en deze worden bezorgt op het desbetreffend ingestelde acount. Handiger is om fetchmail als een deamon te draaien die iedere x aantal minuten de mail ophaalt en bezorgt. Start fetchmail op de volgende manier als je wilt dat er iedere 15 minuten naar email wordt gekeken:

fetchmail --fetchmailrc /etc/fetchmailrc -d 900

Het is mogelijk verschillende acountjes op te nemen en deze ook over verschillende inboxen te verspreiden. Als je meer wilt weten over wat je allemaal nog meer met fetchmail kan raad ik je aan om de fetchmail howto grondig door te lezen.

Extra toevoeging anti-spam en anti-virus
Er kan nu worden verder gegaan met de extra mogelijkheid anti-spam en anti-virus support aan qmail toe te voegen. Ik neem aan dat qmail goed werkt en goed is uitgetest. Zo nee, dan raadt ik je aan alles nog een keer goed door te lopen en te testen.

1. Perl Installatie-check:

Voordat we daadwerkelijk verder gaan met de anti spam en virus support is het een noodzaak dat perl goed op het systeem staat geconfigureerd. Mocht perl er nog niet op staan dan dan kan je beginnen bij stap1. Staat er een recente versie van perl op het systeem geinstalleerd dan kunnen we verder gaan naar stap2, het compleet maken van extra modules van perl.

Stap1:

tar zxvf perl-5.8.0.tar.gz
cd perl-5.8.0

rm -f config.sh Policy.sh
sh Configure -de

mv config.sh config.sh.nosuid ; sed "s/^d_dosuid='undef'$/d_dosuid='define'/" < config.sh.nosuid > config.sh
make test
make install

Stap2:

In deze stap gaan we perl uitbreiden met extra modules. Veel programma's die nodig zijn voor de anti spam en virus setup maken gebruik van deze modules. Start daarom de perl-shell met het volgende commando, het kan zijn dat de instellingen en download-server nog niet juist zijn ingesteld, er komen dan een aantal vragen. Loop deze door en vervolg de installatie:

perl -MCPAN -e shell

Nu zitten we in de shell van perl. Met de volgende commando's downloaden we extra's modules en voegen we deze toe aan perl:

o conf prerequisites_policy ask
install Bundle::CPAN
install ExtUtils::MakeMaker
install File::Spec
install Pod::Usage
install HTML::Parser
install MD5
install Net::Server
install IO::Wrap
install Unix::Syslog
install Mail::Address
install MIME::Parser
install Convert::TNEF
install Convert::UUlib
install Compress::Zlib
install Archive::Tar
install Archive::Zip
install Net::SMTP
install Time::HiRes
install IO::Socket::INET
install IO::Socket::UNIX
install Digest::Nilsimsa


Zo dat zit er op. Als het goed is hebben we perl op de juiste manier uitgebreid met een hele optie extra modules. Sommige waren zoals je gemerkt had al reeds aanwezig. We kunnen nu verder gaan met de installatie van Razor.


2. Installatie Razor Netwerk client & SDK:

De antispam die we gaan gebruiken maken gebruik van een Peer2Peer netwerk. Gebruikers kunnen als een mailtje binnenkomt deze markeren als spam, andere gebruikers die hetzelfde mailtje binnen krijgen zullen dit mailtje gemarkeerd zien als spam en kunnen er voor kiezen om deze te verwijderen of te markeren. We beginnen de installatie met het downloaden van de sdk en de client van het razor netwerk:

wget http://unc.dl.sourceforge.net/sourceforge/razor/razor-agents-2.22.tar.gz

tar zxvf razor-agents-sdk-2.22.tar.gz
cd razor-agents-sdk-2.22

perl Makefile.PL
make && make test && make install

In plaats van de razor sdk te installen kan je ook de volgende perl modules installeren:

perl -e 'use CPAN; install Net::Ping'
perl -e 'use CPAN; install Net::DNS'
perl -e 'use CPAN; install Time::HiRes'
perl -e 'use CPAN; install Digest::SHA1'
perl -e 'use CPAN; install Getopt::Long'
perl -e 'use CPAN; install File::Copy'
perl -e 'use CPAN; install Time::HiRes'
perl -e 'use CPAN; install Unix::Syslog'
perl -e 'use CPAN; install DB'
perl -e 'use CPAN; install Net::DNS'

Bij mij wilde de Net::DNS niet goed geinstalleerd worden. Om die reden heb ik deze module even apart gedownload. Mocht die bij jou wel goed geinstalleerd zijn dan kun je deze stap overslaan.

wget http://www.cpan.org/modules/by-module/Net/Net-DNS-0.33.tar.gz
tar zxvf Net-DNS-0.33.tar.gz
cd Net-DNS-0.33
perl Makefile.PL
make
make install

Nu gaan we verder met de agent. De 'client' van het razor-netwerk. Met deze tool is het mogelijk spam te detecteren en te reporten. De installtie volgt hier onder:

wget http://heanet.dl.sourceforge.net/sourceforge/razor/razor-agents-2.34.tar.gz
tar zxvf razor-agents-2.34.tar.gz
cd razor-agents-2.34

perl Makefile.PL
make && make test && make install


om alle symlinks aan te maken moet je razor-client eerst een keer runnen met het volgende commando:
razor-client

razor moet geregistreerd worden op het netwerk doe dit met het volgende commando:

razor-admin -register -user=erhnam -pass=*****

Register successful. Identity stored in /root/.razor/identity-erhnam
root@server:~/amavisd-new-20021227#

Je zou nu al met razor aan de slag kunnen door in je .qmail file de volgende regel toe te voegen, wil je verder gaan dan kun je deze stap over slaan.

|bouncesaying "No spam, thank you. (#5.0.0)" /usr/local/bin/razor-check

(pico /home/vpopmail/domains/local.home/.qmail-default)



3. Installatie DCC (Distributed Checksum Clearinghouse) & Pyzor
(is een systeem wat lijkt op dat van Razor.
Het ondersteunt 'fuzzy checksums' en pakt soms meer spam dan het netwerk van Razor)

Installatie DCC:

wget http://www.rhyolite.com/anti-spam/dcc/source/dcc-dccproc.tar.Z
tar xfvz dcc-dccproc.tar.Z
cd dcc-dccproc-X.X.X

./configure && make && make install

cdcc 'info'

dcc.rhyolite.com,- RTT+0 ms anon

Installatie Pyzor:

wget http://keihanna.dl.sourceforge.net/sourceforge/pyzor/pyzor-0.4.0.tar.bz2
tar xvjf pyzor-0.4.0.tar.bz2
cd pyzor-0.4.0
python setup.py build
python setup.py install

chmod -R a+rX /usr/share/doc/pyzor \
/usr/lib/python2.2/site-packages/pyzor \
/usr/bin/pyzor /usr/bin/pyzord

python -c 'import gdbm' && echo 'gdbm found'


4. Installation SpamAssassin

Spamassassin is de tool die we gaan gebruiken voor het 'markeren' van spam. Voordat de mailtjes belanden in de inboxen van de gebruikers en worden doorgestuurd worden ze eerst langs spamassassin gehaald. Spamassassin haalt er een aantal een aantal rulez over heen. Hij kijkt bv of de afzender wel een geldige naam heeft of email-adres zou kunnen bestaan en of het mailtje staat aan gemaild bij bv het netwerk van razor. Vervolgens wordt er een optelsom gemaakt van de verschillende waardes. Overscheidt het bericht een bepaalde waarde dan wordt het gemarkeerd waarna het met behulp van een rule in bv outlook express in 1 keer in een spam map verdwijnt.

De installatie van spamassasin gaat als volgt:

wget http://www.spamassassin.org/released/Mail-SpamAssassin-2.60.tar.gz
tar zxvf Mail-SpamAssassin-2.60.tar.gz
cd Mail-SpamAssassin-2.60

SpamAssasin is uitgepakt en klaar om gecompiled te worden met de volgende commando's: (Als je RH8.0 hebt eerst even het volgende commando geven: 'LANG=en_US; export LANG' )

perl Makefile.PL
make && make install

Als het goed is staat spamassassin er goed op en kunnen we kijken of het goed werkt, geef het volgende commando eens:
spamassassin -t < sample-spam.txt > spam.out

Er is nu een voorbeeld mailtje (spam) getest en de output is te vinden in het bestandje spam.out:

X-Spam-Status: Yes, hits=14.7 required=5.0
tests=ALL_CAPS_HEADER,CALL_FREE,DATE_IN_PAST_24_48,
DRASTIC_REDUCED,FROM_HAS_MIXED_NUMS,HOME_EMPLOYMENT,
INVALID_DATE,INVALID_MSGID,LINES_OF_YELLING,
MSGID_HAS_NO_AT,NO_REAL_NAME,ONCE_IN_LIFETIME,REMOVE_SUBJ,
SMTPD_IN_RCVD,SPAM_PHRASE_21_34,UNDISC_RECIPS
version=2.43
X-Spam-Flag: YES
X-Spam-Level: **************
X-Spam-Checker-Version: SpamAssassin 2.43 (1.115.2.20-2002-10-15-exp)


Verder hebben we het config bestand van spamassassin. Open deze en geef de volgende opties op (voor meer opties bezoek de spamassassin website):

pico /etc/mail/spamassassin/local.cf

vervang in het script alles door de volgende regels:

subject_tag *****SPAM*****
skip_rbl_checks 1
required_hits 6.0
rewrite_subject 1
report_header 1
#use_terse_report 1
defang_mime 1
dns_available yes
dcc_add_header 1
use_razor2 1
use_pyzor 1

start spamd demon, met vpopmail- en nouser-config (ook handig om deze op te nemen in je bootscript als je bij het opstarten spamassassin automatisch wilt laden)

spamd --daemonize -v -d --auto-whitelist

De auto-whitelist is een lijst die wordt bijgehouden wat de gemiddelde score is van een 'spammer'. Aan de hand van deze waarde kan een bericht afgerond worden. Een email adres waarvan veel spam vandaan komt krijgt dus een hogere waarde en heeft meer kans op 'gepakt' te worden.

Het laatste dat er gebeuren moet is de er voor zorgen dat voordat de mailtjes door qmail worden afgehandeld het eerst 'bekeken' wordt door spamassassin. Een optie is om een dit door procmail te laten verlopen en deze te configureren voor spamassassin, maar het kan ook met qmail. De onderstaande beschrijving geeft weer hoe het geheel in qmail wordt opgenomen, Mocht je voorkeur om wat voor een reden uitgaan naar procmail dan raad ik het je aan om het daar mee te doen.

De eerste stap die we zetten is een kopie te maken van het qmail-queue bestand. Dit doen we met de volgende regel:

cp /var/qmail/bin/qmail-queue /var/qmail/bin/qmail-queue.orig

Mocht er wat fout gaan dan kan het bestand altijd weer terug geplaatst worden met de volgende regel:

cp /var/qmail/bin/qmail-queue.orig /var/qmail/bin/qmail-queue

Zorg ook meteen even er voor dat de rechten goed staan van de bestanden:

chown -R qmailq:qmail /var/qmail/bin/qmail-queue
chown -R qmailq:qmail /var/qmail/bin/qmail-queue.orig

chmod u+s /var/qmail/bin/qmail-queue.orig
chmod o+r /var/qmail/bin/qmail-queue.orig
/var/qmail/bin/qmail-queue

mkdir /home/vpopmail/.spamassassin
chmod 777 /home/vpopmail/.spamassassin

chown -R qmailq:qmail
/home/vpopmail/.spamassassin
chmod u=rwx,g=rx,o= /home/vpopmail/.spamassassin



Nu maken we de oude qmail-queue file leeg en gaan we deze aanpassen, het leeg maken gaat als volgt:

echo > /var/qmail/bin/qmail-queue

pico /var/qmail/bin/qmail-queue

Nu open we de file en geven we de volgende opties:

#!/bin/sh
/usr/bin/spamc | /var/qmail/bin/qmail-queue.orig

Voordat een mailtje nu dus in de qmail-queue wordt geplaatst wordt het eerst langs spamassasin gehaalt. Verder willen we ook de defaultdelivery aanpassen. Dit bestand staat in de control directory van qmail. Open het bestand:

pico /var/qmail/control/defaultdelivery

en zorg er voor dat de inhoud er als volgt uitziet:

| spamassassin | ./Maildir/

De laatst stap die genomen moet worden is dat er soms problemen ontstaan tijdens dit proces omdat spamassassin teveel geheugen opsnoept. Meer dan door qmail is toegestaan. Daarom geven we spamassassin iets meer ruimte door de volgende file aan te passen:

pico /service/qmail-smtpd/run

Zorg er voor dat de inhoud (of in ieder geval de softlimit waarde er als volgt uitziet):

#!/bin/sh
QMAILDUID=`id -u vpopmail`
NOFILESGID=`id -g vpopmail`
MAXSMTPD=`cat /var/qmail/control/concurrencyincoming`
exec /usr/local/bin/softlimit -m 66000000 \
/usr/local/bin/tcpserver -H -R -l 0 \
-x /home/vpopmail/etc/tcp.smtp.cdb -c "$MAXSMTPD" \
-u "$QMAILDUID" -g "$NOFILESGID" 0 smtp \
/var/qmail/bin/qmail-smtpd domain.com \
/home/vpopmail/bin/vchkpw /bin/true 2>&1

De mail is goed gedetecteerd. Bovenin staat vermeld hoe spamassassin tot dit besluit is gekomen.

5. Installation Virusscanner
We gaan in deze setup ook gebruik maken van een virusscanner: namelijk Clam Antivirus. Deze opensource virusscanner is gratis en maakt ook gebruik van signatures die regelmatig worden bijgewerkt en via internet automatisch te downloaden zijn. Maak voor clamav de volgende gebruiker aan met het volgende commando:

/usr/sbin/groupadd -g 105 clamav
/usr/sbin/useradd -u 105 -g clamav -d /usr/local/share/clamav -m -k /dev/null -c "Clam Antivirus" clamav

Nu gaan we verder met de scanner te downloaden. Je kan altijd kijken op de website van clamav op http://clamav.elektrapro.com/ voor een nieuwere versie. Hieronder volgt de installatie procedure:

wget http://clamav.elektrapro.com/stable/clamav-0.54.tar.gz

Uitpakken en installeren met:

tar zxvf clamav-0.54.tar.gz
cd clamav-0.54/

./configure
make && make install

Als het goed is staat clamav er nu op. We gaan een testje uitvoeren kijken of clamav goed werkt, met het volgende commando:

clamscan -r -l scan.txt clamav-0.*
(moet nu als het goed iets reporten)

Verder gaan we de laatste signatures downloaden met het volgende commando:

freshclam


Verder maken we een logfile aan in de var/log directory en geven we de gebruiker clamav rechten tot dit bestand:

touch /var/log/clam-update.log
chown -R clamav /var/log/clam-update.log

voeg deze regel toe aan je rc.local om hem automatisch te laten updaten:

echo "Starting FreshClam ClamAV daemon"
su - clamav -c "/usr/local/bin/freshclam -d -c 2 -l /var/log/clam-update.log"

FAQ:

- qmailadmin wil soms niet altijd goed gecompiled worden (lib_deps en inc_deps error's)

Hans Grootveld gaf mij de volgende oplossing:
Na de installatie van vpopmail (punt 6):
Als de bestanden /home/vpopmail/etc/inc_deps en /home/vpopmail/etc/lib_deps niet bestaan, voer dan onderstaande commando´s uit:

echo "-I/home/vpopmail/include" > /home/vpopmail/etc/inc_deps
echo "-L/home/vpopmail/lib -lvpopmail" > /home/vpopmail/etc/lib_deps


Todo:
- meer uitleg comments bij iedere stap
- nieuwere versies doorwerken
- bezorgen (blijven soms in queue staan)
- dns voor lokale-setup?
- Amavisd-new / met virus ?