Nieuwe VPS, nieuwe kansen part #1

Door WHiZZi op donderdag 19 mei 2011 10:54 - Reacties (19)
Categorie: Linux, Views: 4.867

Al enkele jaren ben ik tevreden gebruiker van een VPS platform welke ik bij een klein, maar fijne partij heb uit Eindhoven. De host zelf stond bij WideXS zover ik weet. Het OS wat er op draaide was uiteraard Debian. Naast het afhandelen van de e-mail (met Qmail icm vpopmail en courier-imap voor de .. imap.. en DSPAM als spamfilter) stonden hier ook een aantal websites op voor zowel privé doeleinden als voor "klanten". Gewoon een straightforward Apache2 met mod_php en een MySQL. Verder draait er ook Bind op als resolver voor de genoemde domeinen.

Een van de kleine nadeeltjes van het VPS platform was toch het ontbreken van IPv6 support. Verder zijn we bij het bedrijf waar ik werk overgestapt van een OpenVZ VPS platform naar een KVM platform en de voordelen die KVM biedt tegenover OpenVZ waren voor mij voldoende redenen om mijn jarenlange relatie met het kleine bedrijfje uit Eindhoven te gaan afbreken en de grote overstap te gaan doen. Verder scheelt het ook in kosten (werknemerskorting hè ;) ).

Kortom, ik ben een gloedjenieuwe VPS gaan bouwen. Het mooie er aan is dat ik dus ook enkele keuzes uit het verleden kan heroverwegen en dus ook anders kan opbouwen.

In deze blog beschrijf ik de keuzes die ik heb gemaakt en waarom. Uiteraard mogen in de comments eventueel nog aanvullingen gegeven worden. Wat ik niet ter discussie wil stellen is de keuze voor OS. Ik ga de laatste Debian gebruiken. Ook de mailsoftware wordt Postfix. De reden hiervoor is omdat ik ook vanuit mijn werk veel met Postfix werk. Bovendien heeft het goede support voor IPv6. Qmail is voor mij altijd geweldig geweest maar is nu achterhaald. Er is onder andere geen out-the-box IPv6 support en ik wil zo minimaal mogelijk gebruik maken van niet standaard Debian packages. Qmail valt dus sowieso af. Exim heb ik te weinig ervaring mee en sendmail.. we leven in 2011 toch?

Eisen
Als eerste zijn er een aantal eisen die ik heb opgesteld wat de VPS moet kunnen.
- IPv6 support
- Via webinterface beheren van E-mail zodat mijn klanten zelf mailboxen kunnen aanmaken
- Goede en veilige scheiding van php-processen
- (Virtuele) email via imaps
- SSH toegang
- Webserver met PHP5.3 en MySQL server
- Authoritive DNS

Gebaseerd op gebruik van websites heb ik een VPS aangemaakt met 1 publiek IPv4 adres en een /64 op IPv6. De VPS heeft een HD gekregen van 30GB, 2GB RAM en 2 virtual CPU's.

De oplossing die ik heb bedacht
Na een cleane install van Debian 6.0.1 heb ik eens bedacht wat ik allemaal ga installeren om 11 websites te hosten (waarvan er 1 (alleen een phpBB) al goed is voor een +/- 30GB aan traffic per maand), voor deze 11 domeinen ook de email af te handelen (en spam tegen te gaan) en uiteraard ook DNS server te wezen. Voor zowel de mail als DNS is de fallback mijn eigen op UPC aangesloten server die via een tunnel ook een /48 IPv6 heeft. Fallback mail is postfix en fallback DNS is Bind.

De IPv6 support wordt, behalve door Qmail, gewoon door de meeste software gedaan. Dus hier hoef ik weinig over na te denken. De webserver op zichzelf is eigenlijk ook logisch, dat wordt Apache. Lighthttpd heb ik simpelweg te weinig ervaring mee en Apache kan ik dromen ;). Verder zijn er natuurlijk talloos van plugins voor Apache die ik kan en wil gebruiken.

Uiteraard is PHP ook een eis, maar ik wil toch wel heel graag een goede scheiding van processen hebben. Voor het bedrijf waar ik werk bieden wij dit ook aan en wordt PHP gestart via een fastcgi-wrapper. Dit leek mij dus ook wel erg mooi om op mijn VPS te gebruiken. Mijn keus is dus gevallen op Apache2 als worker (snelheid!), fast-cgi erin en deze de PHP laten runnen via Suexec. Het is niet helemaal standaard, maar werkt wel enorm veilig. In een volgende blog kom ik nog terug op de howto en hoe ik, ondanks ruime ervaring, toch even tegen Debian only probleempjes aanliep in deze (op mijn werk wordt CentOS gebruikt).

SSH is natuurlijk ook logisch. Dat is default. Zijn er überhaupt alternatieven SSH daemons dan OpenSSH :?

Nou, dan de spannende, de mailafhandeling. Qmail heb ik al afgezworen en de keus was gevallen op Postfix. Voor het spamfilteren wilde ik toch wel iets speciaals doen. DSPAM heeft altijd fantastisch gewerkt op mijn oude omgeving maar heeft wel zijn beperkingen (en er is een train-periode). Spamassassin/Clamav icm Amavisd is de koning maar hierin mis ik wel overzicht. Ik wil namelijk niks zien van de spam, maar mocht het nodig zijn wil ik simpel kunnen zoeken of een mailtje is "gekilled". In DSPAM heb/had je een fantastische webinterface waar we prachtig kunt zien wat de status is van een mailtje en eventueel dit uit de quarantine halen. Per mailbox is dan een account. Met amavisd/spamassassin heb ik zoiets nog niet gevonden. De ideale combinatie zou dus zijn:
Email -> amavisd -> clamav -> spamassassin -> dspam --> if spam -> Quarantine else -> Delivery
Waarbij Spamassassin dus niet quarantine doet (clamav mag dat wel doen). Leuk idee en ja, ik heb dit inmiddels op de bovenstaande manier werkend gekregen.

Om Postfix in te richten heb ik gekozen om dit op de backend via SQL te doen (ik vind het zo 1999 om in files te gaan vervelen om 1 mailbox aan te maken). Ik wilde ook erg graag een web-frontend bieden aan de klant die out-of-the-box goed in te stellen is. Ik ben op Postfix Admin gestuit die wel geschikt lijkt te zijn.

Voor de imap(s) en pop3(s) gebruik ik natuurlijk Courier. Ook omdat hier de configuratie relatief simpel is en het zo lekker fijn werkt met CACerts ;)

Als laatste moet er nog een mooie webmail komen. Niet dat ik deze heel veel gebruik, maar mijn klanten hebben deze wens wel. Squirrelmail is nou niet moeders mooiste (ook niet qua configuratie), maar ik zie mooie Roundcube in de omgeving, dus ik denk dat het deze gaat worden.

Voor DNS vond ik het ook zo 1999 om nog in bestanden te gaan werken en ik had de wens om dit ook in MySQL te gooien. Ik heb naar alternatieven gezocht en ben op PowerDNS gestuit. Een DNS server met MySQL in de backend. Ook hier is een "mooie" webinterface voor met de naam PowerAdmin.

Dit is een beetje mijn plan en voor een gedeelte al zo uitgevoerd. Mocht er nou interesse zijn, wil ik ook nog gaan beschrijven hoe ik alles zo werkend heb gekregen voor wellicht mensen die eenzelfde situatie hebben of naar een dusdanige situatie willen gaan.

Reacties? Verzoeken? Opmerkingen? Ze zijn welkom. Flamewars en niet-onderbouwde kritiek negeer ik en/of verwijder ik.

http://codecaster.nl/got/rmb/star1.gifhttp://codecaster.nl/got/rmb/star2.gifhttp://codecaster.nl/got/rmb/star3.gifhttp://codecaster.nl/got/rmb/star4.gifhttp://codecaster.nl/got/rmb/star5.gifhttp://codecaster.nl/got/rmb/stats.gif