Etikettarkiv: vps

Så tar du emot och hanterar E-post i PHP

Bild CC flickr.com/photos/9009139@N08/2959912279När jag byggde Bloggy för några år sedan så byggde jag även in en funktion för att ta emot bilder och text från E-post samt MMS-meddelanden till PHP.

Det som sedan händer är att PHP-koden parsar meddelandet och hämtar ut olika delar såsom rubrik (subject), meddelande och eventuella bilder som är bifogade.

Men först lite beroenden, denna guide fungerar enbart om du har en VPS eller egen server med Sendmail, PHP och pear-paketet Mail_mimeDecode. Pear-paketet kan installeras på följande sätt:

# pear install Mail_mimeDecode

Först måste vi konfigurera Sendmail att ta emot brev för vissa adresser. Detta förfarande har jag automatiserat genom att generera en virtusertable-fil i /etc/mail-katalogen. Du kan behöva uppdatera din sendmail.mc med nedan och generera en ny sendmail.cf:

FEATURE(`virtusertable’,`hash -o /etc/mail/virtusertable’)dnl

Alternativt så kan du direkt via /etc/aliases sätta upp följande snutt som gör så att inkommande E-post hamnar hos PHP:

mms:  ”| /usr/bin/php /var/www/bloggy.se/docs/newmail.php”

Det som händer då är att allt som går till [email protected] alternativt det som routas via virtusertable till [email protected] på följande sätt:

[email protected] [email protected]

Hamnar i PHP hos newmail.php och kommer in som stdin. Obs, om du ändrar i aliases, virtusertable eller .mc-filen så måste du generera nya filer (med kommandot newaliases eller makemap hash exempelvis). Följande kod använder jag sedan för att parsa mailet:

  define("DOMAIN", "bloggy.se");

  include_once('Mail/mimeDecode.php');

  $input = file_get_contents("php://stdin");
  $from = "unknown";

  @file_put_contents("/tmp/maillog.txt", $input."\n--- new mail --\n", FILE_APPEND);

  $params['include_bodies'] = true;
  $params['decode_bodies'] = true;
  $params['decode_headers'] = true;
  $params['input'] = $input;

  $structure = Mail_mimeDecode::decode($params);

  $to = $structure->headers['to'];
  $from = $structure->headers['from'];

  #mailme('<pre>'.print_r($header, true).'</pre>'); // For debugging
  $header = imap_rfc822_parse_headers($input);

  foreach($header as $foo => $bar) {
    if($foo == 'to' || $foo == 'cc') {
        foreach($bar as $k) {
            if($k->host == DOMAIN) {
                $dste = $k->mailbox;
            }
        }
    }
  }

  foreach ($structure->parts as $part) {
    // Save text
    if (isset($part->ctype_primary) && $part->ctype_primary == "text") {
        if(strlen($part->body) > 2 && !preg_match("/iPhone$/", $part->body))
            $text = $part->body;
    }
  }
  if(!$text)
    $text = $header->headers['subject'];

  if(!$text)
    $text = $structure->headers['subject'];

Och slutligen så hamnar antingen innehållet i mailet eller rubriken i $text om vi har tur.

VPS/Dedikerad server pris vs. prestanda

Eftersom jag har innehar ett antal VPS:er och dedikerade servrar så tänkte jag att testa hur prestandan förhåller sig till priset på dessa. Som vanligt så har jag inte tagit support i beaktning, inte heller så har jag vägt in ram-minne eller överföringsmängd i detta test.

Till skillnad från DNS-testet så testar jag nu även de leverantörer jag anlitar från andra länder än Sverige: Amazon EC2, GleSYS samt Rackspace.

Resultatet blev enligt följande, desto lägre värde desto bättre vilket indikerar bäst prestanda för pengarna:

Du kan själv genomföra samma test genom att ladda hem http://acelnmp.googlecode.com/files/unixbench-4.1.0-wht.tar.gz och starta testet på följande sätt:

$ wget http://acelnmp.googlecode.com/files/unixbench-4.1.0-wht.tar.gz

$ tar xvfz unixbench-4.1.0-wht.tar.gz

$ cd unixbench-4.1.0-wht-2/

$ ./Run

Vänta sedan medan testet utförs vilket tar mellan 5 och 10 minuter, den sammanlagda summan av alla deltester står längst ner under rubriken FINAL SCORE.

Om du får ett felmeddelande om att time saknas så kan du installera det via: sudo apt-get install time under Ubuntu. Kan även vara bra att kontrollera så att du inte har något som går på servern som redan slukar resurser under tiden då du kör testet.

När du kört testet så kan du rapportera in prestandan i detta Google Docs-formulär så gör jag en sammanställning och publicerar sedan här på bloggen. Fortsätt läsa VPS/Dedikerad server pris vs. prestanda

Stödjer du IPv6?

Med tillstånd från Kurt-Erik Lindqvist så återpublicerar jag hans brev till ISOC-SE mailinglistan:

Som kanske all vet är tiden vi har kvar innan IANA får slut på IPv4 adresser (vilket inte är det samma som att det är slut på IPv4 adresser – om någon inte förstår skilnanden men är intresserade kan vi ta det off-list) ngn gång mellan nu och våren 2011. Det betyder att vi inom en nära framtid har ett teknik skifte framför oss – att gå över till IPv6. ISOC internationellt har ju jobbat en del med detta, även om det kanske till viss del är perifert till vad ISOC gör, då undeliggande teknik egentligen inte är något slutanvändare skall behöva känna till.

Även om himlen inte faller (the sky is falling) eller att vi står inför ett Y2K problem, så är det ändå ganska hög tid att faktiskt göra något för att IPv6 skall användas. Efter en vecka på IETF börjar det bli väldigt klart att de som har förberett sig och jobbat med IPv6 har en klar fördel affärsmässigt framför de som inte har gjort det och nu desperat försöker komma i kapp (jag kan prata mer om affärsmodeller om ngn är intresserad privat). Nåväl, jag tyckte det vore dags att samla lite information om IPv6 i Sverige, vad görs, vad kan jag som slutanvändare göra, etc så jag satte upp Wikin http://www.ipv6wiki.nu. Gör gärna stegen för att få tillgång till IPv6, fråga om det från er ISP, fråga er interna IT avdelning, testa, lek, labba, lär – men framförallt, dela med er!

Kom ihåg, IPv6 is 96 more bits, no magic.

Och jag kan ju inte vara sämre själv, så sakta men säkert så stödjer fler och fler av mina tjänster IPv6 och först ut är Bloggy.

Nyårslöften

Dags att försöka att sätta upp lite löften och mål som inte bör vara omöjliga att uppnå under 2010:

  • Avveckla alla fysiska servrar till förmån för molntjänster såsom VPS:er och CDN
  • Dubblera intäkterna genom att testa och undersöka olika affiliate-program som passar mina verksamheter
  • Utveckla minst tre nya tjänster. Har några kandidater
  • Fokusera mer på internationell utveckling samt tillhörande marknadsföring
  • Köp in utveckling av minst en tjänst via exempelvis Freelancer eller Elance
  • Sälja av minst tre av mina tjänster. Först på tur är TweetValue, som nu ligger uppe på Flippa.com

Och på det personliga planet så blir det några klassiker:

  • Åka Vasaloppet. Öppet spår eller motsvarande
  • Träna mer, försöka komma upp till tre pass i veckan igen

Såja, nu är det bara dags att börja jobba för att nå dessa mål.

Test av SliceHost

Fick några minuter över i dag så testade den amerikanska VPS-tjänsten SliceHost som Rackspace äger. Det tog enbart 5 minter för mig att vara i gång och konfigurera den Ubuntu-version som jag valt. Ser lovande ut än så länge och avser att flytta download11.com dit inom en snar framtid då majoriteten av besökarna är från andra sidan atlanten (download11 använder sig av SimpleCDN sedan tidigare).

Jag återkommer med en utförligare rapport med eventuellt för och nackdelar.

Prissättningen ser ut enligt följande:

slicehost

Såg även att svenska Crystone startat en ny VPS-tjänst på Server.se