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 ?