fredag 15 oktober 2010

Att ringa supporten

Återigen har min favoritserie xkcd prickat in en fullträff:
xkcd: tech support

torsdag 14 oktober 2010

Höstsegling

Höstens troligen sista segling idag, från Tyresö till Värmdö. Väldigt fint väder och en riktigt fin höstdag med varmt och sol. Vi såg tre havsörnar ovanför Baggensfjärden!
Det blåste ordentligt, Stavsnäs hade 11 m/s medelvind och 19 m/s i byarna (inklippt nedan). Skummet blåste av vågtopparna och det var fullt med vita gäss. Vi gjorde ungefär 6 knop när vi med nedtagna segel drev in mot hamnen.
Tyvärr hade vi ett litet motorhaveri, så vi fick låna en motor med kort rigg. Det finns en anledning till att man har extra lång rigg på utombordsmotorer, propellern gick i luften ganska ofta och det var svårt att komma mot vinden.
Segla är fantastiskt. Segla i skärgården är ännu bättre. Segla trimaran är ännu bättre!

2010-10-14 kl 17:00


Station: Stavsnäs
Vindriktning: Nordväst
Vindhastighet: 11 m/s
Byvindhastighet: 19 m/s
Lufttemperatur: 8.1 °C
Sikt: --- km
Stationshöjd: 16 m

måndag 11 oktober 2010

Rate limit a pipe

Something I often do while developing is replaying recorded network traffic.
Something along
$nc host port
to send data in the traffic.bin to host, via tcp. This will however dump the data as fast as possible, which makes it difficult to keep up with the data pace at the other end (which I try to study/debug).
A solution is to use pipe viewer which can do many things, one of them to rate limit data.
Running
$pv -L 100
gives 100 bytes per second rate. pipe viewer is installed by
$apt-get install pv
on Debian. I was just about to write a tool like this, but searched for an existing solution instead!

lördag 2 oktober 2010

Skicka krypterade filer för ickeavancerade användare

Jag använder sedan ett par år krypterad epost. Jättebra och ganska enkelt, men en stor sak är fel: att det är få som använder det. Nu har jag ibland behov av att skicka saker krypterat med användare som ibland inte är särskilt datorkunniga eller inte har tillräckliga rättigheter att bestämma över sin egen dator.

När en sådan användare ska skicka något hemligt till mig kan jag be personen att komprimera filen med 7-zip lösenordsskyddat och välja något lösenord som meddelas mig på något annat sätt. Problemet är att användaren då behöver komma över tröskeln att installera och/eller använda 7zip. Samt något annat jobbigt och potentiellt svårt: att meddela lösenordet. Och inte minst, att komma på ett tillräckligt varierat lösenord som dessutom inte missuppfattas över en raspig mobilanslutning.

En lösning skulle vara att jag sätter upp en säker (https) sida för filuppladdning på min webserver som i sin tur får kryptera och maila mig, med pgp och min publika nyckel. Nackdelen är att https är tungt för servern, samt att servern får jobba hårt för att kryptera ytterligare en gång. Fördelen är att användaren inte behöver veta något annat än adressen till min sida.

En väldigt bra ide är att låta användaren stå för datorkraften själv, genom att låta krypteringen ske hos användaren. Den krypterade filen kan sedan skickas över nätet utan några speciella åtgärder. Som med andra lösningar löser det inte problemet med autentisering (att jag kan vara säker på vem som skickat det) på samma sätt som "riktig" krypterad epost gör.

Såhär skulle det kunna se ut:
  • jag sätter upp en sida som användaren går in på, https-skyddad för att hindra man in the middle-attack på java-scripten. Typ "https://www.pauldreik.se/laddauppfiler.php" eller något sådant. Här finns javascripen inbäddade som senare sköter krypteringen. Den lilla trafik som måste krypteras är själva htmlkoden för sidan samt scripten, enbart några kb.
  • jag sätter även upp en normal (http) sida med ett php-script eller vad som helst, t ex "http://www.pauldreik.se/mottagare.php" som accepterar indata i form av uppladdade filer. användaren ser ej denna, så denna kan vara vad som helst.
  • användaren väljer en fil ifrån en vanlig htmlform, som de flesta användare använt väldigt många andra ställen, t ex när man laddar upp en bilaga till webmail. Filen läses sedan lokalt på användarens dator, krypteras lokalt med javascript och min publika nyckel, och postas sedan till "http://www.pauldreik.se/mottagare.php" i krypterad form över vanlig http. 
  • på webservern skickas den mottagna filen i ett mail till mig.  Eftersom bara jag har den privata nyckeln är det bara jag som kan läsa filen. Kringdetaljer som datum och ev namn och så som användaren skrivit in samt avsändande ipadress följer med. Dessa går naturligtvis att mixtra med på samma sätt som vem som helst kan skicka mig en fil och hävda att de heter något annat.Detta problem löses genom signering, som finns stöd för i "riktig" krypterad epost.
På detta sätt behöver användaren inte ha några rättigheter, inte installera något, och kan skicka mig filer utan yttre insyn. Jag behöver inte ha en kraftig server eftersom den inte gör någon kryptering.

Byggstenar kommer från hanewin.net (se länk i texten ovan), pgp och standard html samt javascript.

fredag 24 september 2010

Mailserver i egen regi

Något jag länge funderat på är nu klart - jag kör min egen mailserver. Jag har haft två epostleverantörer - en för inkommande och en för utgående.
Den inkommande spamfiltrerade så hårt att fullt legitima mail inte kom igenom. En oförstående support gjorde inte saken bättre.
Den utgående mailleverantören hade även annan verksamhet på sina servrar som skickade spam, till den grad att servern klassades som skräpserver och blev blockerad av andra mailservrar.
Därtill var imapservern väldigt seg, och kontostorleken var för liten.
Det som fick mig att till slut få tummen ur var dock att avtalet skulle löpa ut.

Varför valde jag att köra eposten själv och inte ta en extern leverantör?
  • jag vill inte råka ut för för hård spamfiltrering som tar bort legitima mail
  • jag vill inte riskera att klassifiseras som en dålig server pga. andra användare
  • jag vill ha så stora mailboxar jag själv känner för
  • jag vill inte att min mail passerar sveriges gränser i onödan
  • jag vill kunna backupa mailen i mitt normala backupsystem
  • det är skoj att kunna!
Jag försökte hitta en leverantör som kunde erbjuda ett par imap-konton med rimlig storlek (>=500 MB) och inget annat. Det var svårt! Det närmaste jag kom skulle kosta över 100 kr i månaden. För den pengen kan jag lägga ner ganska mycket tid själv för att räkna hem det på lång tid. Och epost är långsiktig.

Nu kör jag postfix (för smtp) och dovecot (för imap) bakom NAT och dynamisk DNS och det fungerar mycket väl. Detta på en mycket klen server.
Det var inte helt lätt att förstå konfigurationen av postfix - det är mycket som kan konfigureras i en mailserver. Att få igång postfix med ett enstaka konto är inte särskilt svårt, däremot flera domäner, virtuella mailboxar, autentisering utan pam, kryptering, förhindra open relay, spf-verifiering och greylisting tog lite tid. Dovecot gick fortare att konfigurera - det mesta är klart från start. Den medföljande konfigurationsfilen på över 1000 rader förklarar det mesta.

Jag följde dokumentationen på postfix hemsida, samt diverse howtos. Här finns ett exempel på en howto som ger en god översikt.

I huvudsak går det ut på följande. Om man gör det i ordning så är det inte skarpt förrän sista punkten, när DNS-en ändras (MX-recorden). Här är arbetsgången i huvudsak. För mig tog det ca 30 timmar att få det att fungera, men då visste jag i princip ingenting om smtp, postfix eller dovecot.
  • konfigurera DNS så att din server kan nås via namn
  • sätt upp filstruktur för virtuella mailboxar
  • skapa lösenordsdatabas för eposten
  • konfigurera dovecot så att den når dina mailboxar och autentiserar mot lösenordsdatabasen
  • konfigurera dovecot till att använda kryptering (TLS/SSL)
  • konfigurera postfix så att den kan skicka mail ut
  • konfigurera postfix så att den inte är en open relay
  • konfigurera postfix till att autentisera genom dovecot
  • konfigurera postfix till att levera mail till dina mailboxar
  • konfigurera postfix med alla dina maildomäner, vidarebefodringar och alias
  • konfigurera postfix till att använda kryptering (TLS)
  • vidarebefodra portar smtp 25 och 587 i din router
  • vidarebefodra port 993 i din router för dovecot
  • peka om MX-recorden för din domän (det är nu extern epost faktiskt dirigeras in till servern, till dess kan du härja runt fritt för att prova att det fungerar!)
  • lägg till greylisting och spf till postfix
  • ordna backup av mailboxarna

Det som återstår att göra är att fixa självsignerade certifikat så att jag slipper bekräfta varningarna i mitt epostprogram. Samt möjligtvis spam-filtrering...
Och kanske webmail, men det är en annan historia.

Nu så här en vecka efter att allt gått i drift måste jag säga att det fungerar riktigt bra. Responstiden är makalöst kort - precis som det ska vara.

Jag använder Debian, en helt fantastisk linuxdistribution. Tack, alla debianutvecklare och ni som skrivit alla program jag använder!

onsdag 8 september 2010

Bränsleåtgång för flygplan

Ett flygplan förbrukar väldigt mycket bränsle vid start, något mindre vid stigning upp till flyghöjd och förhållandevis lite vid flygning på konstant höjd. Här finns en sida som ger några intressanta siffror: http://fluglaerm.de/hamburg/klima.htm
Jag har tänkt på det här när jag läst flygbolagens redovisning som brukar finnas med i ombordtidningen - där specificeras bränsleåtgången men ej vid vilken flyglängd som avses.

Bränsleförbrukning per person (räknat på 300 personer, verkar vara något lågt) blir
50 mils flygning - 148 g CO2/km (kort resa för flygplanstypen)
200 mils flygning - 102 g CO2/km
5000 mils flygning - 93 g CO2/km

Av detta är 3133 g/person för starten , 213 g/person och km för stigningen  och sedan dalar det mot 87g per person och km för flygning på konstant höjd.

Ganska stor variation!



Fotnot: det är bränsleåtgång och ej co2 som anges på nedersta raden i tabellen på länken, trots texten.

onsdag 4 augusti 2010

Lättlästa nyheter om linuxkärnan

Att versionsnumren tickar framåt på linuxkärnan är lätt att se (www.kernel.org). Commitloggen är inte lätt att förstå, och det är svårt att se skogen för alla träden. Det behövs tolkningshjälp. 

Jag har tidigare läst den bra sammanställningen på kernel newbies.
Här finns en annan bra förklaring: h-online.com