Om te zorgen dat e-mails, verzonden vanaf je HPW server(s), als betrouwbaar worden aangemerkt bij een ontvangende mailserver kun je DKIM gebruiken. Met DKIM wordt elke uitgaande e-mail ondertekend met een unieke handtekening. De handtekening is uiteraard niet zichtbaar, deze zal aan de mailheaders worden toegevoegd. Een ontvangende mailserver kan deze controleren en weet dan of deze e-mail echt afkomstig is van je of dat iemand anders een e-mail loopt te versturen namens jou (bijvoorbeeld phishing e-mails). In deze handleiding leggen we je uit hoe je zelf DKIM kan instellen via onze Portal.

DKIM mailheaders
DKIM mailheaders zoals te zien in e-mails

Wij hebben getracht om het toevoegen van DKIM zo simpel mogelijk te houden. De techniek is echter redelijk complex en enige basiskennis is wel nodig. Bij het incorrect instellen van DKIM kan het tegenovergestelde namelijk ook gebeuren, namelijk dat e-mail wordt geweigerd omdat deze niet te valideren is.

Benodigdheden

Voordat je DKIM gaat instellen gaan we er vanuit dat je de volgende zaken op orde en bij de hand hebt:

  • Gegevens om in te loggen op onze Portal en op je DNS beheer paneel; Mijn LinQhost. Indien je geen gebruik maakt van LinQhost nameservers zul je in moeten loggen bij de partij die deze voor je beheert.
  • Je weet voor welk domein je DKIM wilt gaan gebruiken. Dit gaat om de domeinnaam van je afzender adres gedeelte van je e-mailadres. In ons voorbeeld gebruiken we “linqhost.nl” als domeinnaam.
  • Het SPF record is correct is voor het domeinnaam waar je DKIM voor gaat instellen. Dit is een harde vereiste en DKIM zal niet correct gaan werken indien de SPF configuratie niet correct is.
  • Een unieke omschrijving van je DKIM configuratie. Deze omschrijving heet ook wel de “selector” en in dit voorbeeld gebruiken wij “dkimTutorial”. Wanneer je op meerdere plekken DKIM instelt (bijvoorbeeld op de mailserver op kantoor en op de server bij LinQhost omdat de gehoste applicatie ook mails namens de zelfde domeinnaam verstuurt), dan kun je deze selector gebruiken om de applicatie te identificeren.

Instellen en het beheren van DKIM via de LinQhost Portal

Overzicht

Om te beginnen dien je in te loggen op onze Portal. DKIM instellingen kun je vinden onder het kopje “Servers” bij “Mijn diensten”. Wanneer je op de actie “Server details” klikt, heb bovenin een viertal tabbladen. Één van deze tabbladen is “DKIM”.

DKIM overzicht
DKIM overzicht

Toevoegen

Met de knop “DKIM toevoegen” kan je de benodigde informatie voor het toevoegen van nieuw DKIM record aan de DNS genereren. In deze stap wordt gevraagd om je selector en je domeinnaam op te geven. Als we uit gaan van ons voorbeeld dan gebruik je hier respectievelijk “dkimTutorial” en “linqhost.nl“. Na de eerste stap zullen er een aantal handelingen op je server plaats vinden en krijg je een scherm met de benodigde informatie gepresenteerd. Deze informatie voeg je toe aan de DNS.

DKIM stap 2
DKIM stap 2

Activeren

Eenmaal toegevoegd kan je met de activeren knop in de kolom “actie” DKIM daadwerkelijk activeren. Vanaf dit moment zullen alle e-mails die eindigen op “@linqhost.nl” én vanaf de server worden verzonden, ondertekend worden. Je kunt een DKIM enkel activeren als de DNS goed is ingesteld. De Portal voert hier een controle op uit.

DKIM activeren
DKIM activeren

Tijdelijk uitschakelen

Indien je tijdelijk geen gebruik wilt maken van DKIM dan kun je dit doen door op de desbetreffende knop in het overzicht te drukken. Wanneer je dit doet blijven alle gegevens intact maar zal het ondertekenen van e-mail gepauzeerd worden.

DKIM pauzeren
DKIM pauzeren

Verwijderen

Met de verwijderknop is het mogelijk om een DKIM sleutel definitief van je server te verwijderen. Dit kan niet ongedaan gemaakt worden. Het is uiteraard wel mogelijk om de DKIM sleutel opnieuw te genereren. Ook dien je er rekening mee te houden dat hiermee het DNS record niet verwijderd wordt, deze zul je apart moeten verwijderen.

DKIM verwijderen
DKIM verwijderen

DNS beheer

Wij zullen hier kort uitleggen hoe je via Mijn LinQhost een DKIM record aan kunt maken. Wanneer je DNS-beheer elders hebt ondergebracht dan kan er verschil zitten in hoe je het record aan dient te maken. Volg in dat geval de handleiding van je DNS-provider.

DKIM record toevoegen

Wanneer je bent ingelogd op Mijn LinQhost dan volg je het pad naar het overzicht met je domeinen (Producten -> Overzicht -> Domeinen) en zoek je de domeinnaam op waarvoor je DKIM in wilt stellen. Klik vervolgens op “Maak uw keuze” en kies “DNS beheer”. Hier kun je met het “plus” icoon bij “Meer optie’s” een nieuw record aanmaken. Vul hier de gegevens uit de portal in die in stap 2 gepresenteerd worden. Het betreft een aantal velden die je over dient te nemen;

  • Type (TXT)
  • Naam (in ons voorbeeld dkimTutorial._domainkey)
  • Record (de gegenereerde sleutel)

Wanneer je op de knop “Opslaan” klikt zal het record toegevoegd worden. Mijn LinQhost zorgt er zelf voor dat aanhalingstekens aan het TXT record worden toegevoegd. Deze zijn uiteindelijk wel nodig voor een goede werking wanneer er gebruik wordt gemaakt van de LinQhost nameservers.

Overzicht DNS DKIM record
Overzicht DNS DKIM record

Voordat u aanpassingen gaat maken in uw webapplicatie, is het altijd raadzaam om een database backup te maken. Mochten zaken anders lopen dan gepland, kunt u namelijk altijd terug naar de originele situatie. Een backup maken van een database is gelukkig erg simpel. Wel dient u de gebruiker, wachtwoord en database bij de hand te hebben.

Backup

Als het om een kleine database gaat kunt u ook via PHPMyAdmin een backup (dump) maken, maar hier loopt u al snel tegen limieten aan. Wij adviseren dan ook om een backup te maken via de shell (SSH):

mysqldump -u <gebruiker> -h localhost -p <database> | gzip -9 > <bestandsnaam>.sql.gz

Met bovenstaande voorbeeld wordt een backup weggeschreven naar een .sql.gz bestand. Doordat dit bestand gecomprimeerd is, zal het bestand een stuk kleiner zijn dan wanneer u een reguliere backup zou maken.

Aandachtspunten:

  • plaats backups altijd buiten de webroot van de website
  • bij een grote database kan een backup enige tijd duren.
  • zorg dat er voldoende vrij diskruimte aanwezig is om de backup te kunnen maken

Restore

Mocht het nodig zijn dat u de bovenstaande backup dient terug te zetten; er zijn verschillende manieren om deze terug te zetten. In alle gevallen dient u goed bewust te zijn van de eventuele risico’s! Wij kiezen ervoor om de bestaande database te verwijderen (met: DROP DATABASE ;) en dan de backup in zijn geheel terug te plaatsen:

zcat <bestandsnaam>.sql.gz | mysql -u <gebruiker> -h localhost -p <database>

Het importeren van een database kan erg lang duren (langer dan een backup maken!). Het kan soms lijken dat er geen vooruitgang is, maar geduld is een schone zaak in dit geval!

Cronjobs zijn taken die periodiek worden uitgevoerd en ingesteld kunnen worden via het commando crontab. Het is een eenvoudige manier om taken automatisch uit te voeren. De basis uitleg over cronjobs kunt u terugvinden in een eerdere blog post op onze website.

Een cronjob kan echter ook een groot probleem voor de server opleveren wanneer een zelfde taak meerdere keren en op het zelfde moment actief is. Een veel voorkomend probleem is, dat een nieuwe taak wordt gestart terwijl de oude nog niet volledig afgerond is.

Als u bijvoorbeeld een cronjob heeft ingesteld die elke 5 minuten een taak uitvoert en die taak eigenlijk 7 minuten nodig heeft om te voltooien, dan zal op minuut 5 de zelfde taak nog een keer gestart worden. Dit heeft als gevolg dat er op dat moment twee de zelfde taken lopen. Het kan zelfs zodanig uit de hand lopen dat bij verkeerde instellingen een taak meer dan 10 – of meer – keer gelijktijdig kan draaien. U kunt zich voorstellen dat dit niet wenselijk is. Zo kan het mogelijk de volgende gevolgen hebben:

  • Datacorruptie; omdat de zelfde taak meerdere keren wordt uitgevoerd kan dat tot vreemde veranderingen leiden in uw (database-)gegevens.
  • Een trage website; omdat alle resources (systeembronnen) van uw server worden aangeroepen. Immers elke draaiende cronjob heeft deze nodig en zal ze reserveren.

Uiteraard kan het zijn dat, het script wat wordt uitgevoerd, zelf al een mechanisme gebruikt om simultaan draaiende processen te voorkomen. In dat geval hoeft u Flock niet te gebruiken. Voor scripts die geen dergelijk mechanisme hebben, is er de volgende oplossen:

Flock

Onze HPW servers zijn standaard uitgerust met de “flock” tool. Deze tool zorgt er voor dat de zelfde cronjob niet meerdere keren gestart kan worden. Dit doet flock door een tijdelijk “lock-” bestand aan te maken. Zo lang dit bestand aanwezig is zal er geen nieuwe taak gestart worden. Wanneer het commando (de cronjob) is uitgevoerd zal flock het tijdelijke bestand verwijderen waardoor er weer een nieuwe taak gestart kan worden. Het gebruik is eenvoudig. Onderstaand een voorbeeld waarbij de standaard Magento cronjob wordt uitgevoerd met behulp van flock:

 */5 * * * * flock -xn "${TMP}cron.php.lock" php -q /var/hpwsites/<user>/website/html/webroot/cron.php >/dev/null 2>&1

Met de “-xn” parameter geeft u aan welk lock bestand er aangemaakt dient te worden. Deze moet verschillen per actieve cronjob. In bovenstaand voorbeeld gebruiken we een systeem variabele ($TMP) in combinatie met de omschrijving “cron.php.lock” wat resulteert in het aanmaken van het volgende lock-bestand “/var/hpwsites/tmp/cron.php.lock”.

Mocht u meer over flock willen weten dan kunt u, wanneer u bent ingelogd op uw HPW server, het volgende commando gebruiken om de handleiding te openen.

man flock

Om makkelijk, snel en efficiënt bestanden te kopiëren van de ene server naar de andere server hebben wij een handige tool voor u beschikbaar, namelijk rsync. Rsync kunt u veilig verschillende keren achter elkaar uitvoeren omdat deze alleen nieuwe en gewijzigde bestanden zal kopiëren.

Pull

Als u alle bestanden en directory’s vanaf de andere server (bijvoorbeeld een ontwikkel-server) wilt downloaden naar uw HPW server, kunt u rsync op deze manier gebruiken:

rsync -avz webmaster@ontwikkel-server.ext:/var/www/html* /var/hpwsites/<gebruiker>/website/html/webroot/

Bovenstaand voorbeeld gaat er vanuit dat:

  • webmaster het account is op de andere server waar u mee bij uw website bestanden kunt komen
  • ontwikkel-server.ext de hostname is van de andere server
  • alle website bestanden staan in in de directory /var/www/html
  • en u <gebruiker> vervang door de gebruikersnaam van uw HPW server

Bovenstaande waarden dient u aan te passen naar de voor u correcte waarden.

Push

Het kan ook voorkomen u bestanden vanaf een andere server wilt uploaden naar een HPW server. Ook hiervoor kunt u rsync gebruiken. Wel zal rsync op de andere server geïnstalleerd moeten zijn en moet er een uitzondering in de firewall van uw HPW server staan.

Om alle bestanden en directory’s vanuit de huidige directory te kopiëren naar de webroot kan je het volgende uitvoeren op de andere server (niet de HPW server):

rsync -avz ./* -e "ssh -p 22622" <gebruiker>@d-xxxxxxx.host-ed.eu:/var/hpwsites/<gebruiker>/website/html/webroot/

Op Linux/Unix systemen wordt gebruik maakt van crontab, een programma welke op gezette tijden processen kan starten. Een cronjob wordt ook wel een “geplande taak” genoemd binnen Windows systemen. Sommige pakketten vereisen het instellen van cronjobs voor een goede werking. Het instellen van cronjobs op een HPW server kunt u zelf doen. Hieronder enkele voorbeelden.

Crontab

crontab -l

Dit commando wordt uitgevoerd met de kleine letter L als argument en toont de door u zelf ingestelde cronjobs. Er zijn ook cronjobs die uitgevoerd worden door de systeemgebruiker. Deze ziet u niet in dit overzicht terug. Het commando doet verder niets anders dan de regels op het scherm tonen.

crontab -e

Wijzig de crontab. Hoewel het instellen relatief eenvoudig is, zijn er wel een aantal zaken waarmee u rekening dient te houden. De mogelijkheden van een cronjob zijn vrij uitgebreid. De opbouw van een cronjob ziet er als volgt uit:

* * * * * /pad/naar/script
| | | | |-- Dag van de week (0-6 waarbij de 0 voor de zondag staat)
| | | |---- Maand (1-12)
| | |------ Dag van de maand (1-31)
| |-------- Uur (0-23)
|---------- Minuut (0-59)

Met een forward-slash ( / ) kun u een interval definiëren (elke 5 minuten, bijvoorbeeld). De komma (,) gebruikt u om verschillende momenten op te geven.

De toevoeging “>/dev/null 2>&1” onderdrukt elke vorm van output (bijvoorbeeld foutmeldingen). Voor cronjobs is dit wenselijk omdat er niets met de output gedaan kan worden.

Voorbeelden

Voer elke dag om 19:00 het script “cron.php” uit:

 0 19 * * * php -q /var/hpwsites/u_gebruiker/website/html/webroot/cron.php >/dev/null 2>&1

Voer het script “cron.php” elke dinsdag en vrijdag om middernacht uit:

0 0 * * 2,5 php -q /var/hpwsites/u_gebruiker/website/html/webroot/cron.php >/dev/null 2>&1

Voer elke 15 minuten het script “cron.php” uit:

*/15 * * * * php -q /var/hpwsites/u_gebruiker/website/html/webroot/cron.php >/dev/null 2>&1

Voer elke twee even maanden, elke werkdag op de even uren het script “cron.php” uit:

* 1-23/2 * */2 1-5 php -q /var/hpwsites/u_gebruiker/website/html/webroot/cron.php >/dev/null 2>&1

Wanneer u het lastig vindt om de taak op de bovenste manier uit te werken, dan kan deze tool u daar wellicht bij helpen: http://www.crontab-generator.org/

De cron editor

Op ons HPW platform wordt het programma “vim” gebruikt om de crontab te wijzigen. Dit is een editor zonder grafische mogelijkheden. Het gebruik is dan ook even wennen. Er zijn een aantal basiscommando’s die u nodig bent.

Nadat u met “crontab -e” de editor heeft geopend, dan kunt u middels het intoetsen van “i” het wijzigen van de crontab starten. U ziet dan rechts onderin “–INSERT–” staan.

Crontab VI voorbeeld

Wanneer u klaar bent met wijzigen drukt u op de “ESC” toets op uw toetsenbord om het wijzigen te stoppen. Vervolgens toetst u een dubbelepunt (:) gevolgd door de letter “x” in. Druk op de “enter” toets om het bestand te sluiten en de wijzigingen op te slaan.

Indien u bang bent dat u een fout heeft gemaakt, kunt u het bestand het beste sluiten door eerst weer uit de wijzigen modes te gaan met de “ESC” toets, dan een dubbelepunt (:) in te voeren gevolgd door de letter q en een uitroepteken (“q!”). Met de “enter” toets sluit u dan het bestand zonder de wijzigingen op te slaan.

Tot slot

Sommige cronjobs worden centraal uitgerold door ons beheersysteem. Deze zullen automatisch worden hersteld als u wijzigingen in de desbetreffende cronjobs maakt. Indien een door ons ingestelde cronjob aangepast dient te worden, neem dan contact met ons op.