Roligt med mail, at och cron

I en kommande serie i åtminstone åtta delar har jag tänkt beskriva hur min eposthantering ser ut. Det dröjer dock litet. Visserligen vore det en lika hastig som smal sak att bara rapa upp programnamn och konfigurationsfiler, men det vore att ha för låga ambitioner. I stället siktar jag på något den fantastiske författaren Michael W. Lucas skrivit om:

One of the old cliches about writing is that you should “write what you know.” In tech writing this is not only wrong, but actively harmful. … Instead, I recommend writing about something you want to know about.

Det är därför det tar litet tid. Tomrummet som uppstår i väntan på de där inläggen går dock att fylla med små finurligheter som inte egentligen uppfyller några sådana krav. Här kommer ett par av det slaget.

Om du har sendmail eller motsvarande i ordning på din maskin så kan du skicka epost med programmet mail.

Till exempel så här:

$ mail jesper
Subject: Lokalpost
Any fool can paint a picture, but it takes a wise person to be able to
sell it.
EOT

EOT var resultatet av att jag tryckte ^D (vilket betyder CTRL-D). Det här mejlet levereras omedelbart till den lokala användaren jesper, vilket ju är jag själv. Det går förstås även att skicka till en riktig epostadress:

$ mail jesper@example.org
Subject: Globalpost
Pig, n.:
        An animal (Porcus omnivorous) closely allied to the human race
        by the splendor and vivacity of its appetite, which, however, is
        inferior in scope, for it balks at pig.
                -- Ambrose Bierce, "The Devil's Dictionary"
EOT

Men med min konfiguration levereras aldrig det senare mejlet!

En del av förklaringen till detta är att sendmail på min maskin använder en "SMART_HOST", alltså en extern STMP-server som relay, och den servern accepterar inte de här epost-meddelandenas avsändaradress.

Om inget annat anges, så får epost skickade med mail nämligen avsändaren användare@maskin, till exempel "jesper@kaja.mydomain", och relay-servern förkastar mejl från sådana ogiltiga avsändare.

Detta är dock lätt att lösa. Om man matar mail med flaggor efter mottagaradressen, så skickas de vidare till sendmail i stället för att tolkas av mail. För att skicka ett mejl till jesper@example.org med en bestämd avsändaradress gör jag alltså så här:

$ mail jesper@example.org -f fortune@example.org
Subject: Fortune
Top scientists agree that with the present rate of consumption, the
earth's supply of gravity will be exhausted before the 24th century.
As man struggles to discover cheaper alternatives, we need your help.
Please...

                        CONSERVE GRAVITY

Follow these simple suggestions:

(1)  Walk with a light step.  Carry helium balloons if possible.
(2)  Use tape, magnets, or glue instead of paperweights.
(3)  Give up skiing and skydiving for more horizontal sports like
     curling.
(4)  Avoid showers ... take baths instead.
(5)  Don't hang all your clothes in the closet ... Keep them in one big
     pile.
(6)  Stop flipping pancakes
EOT

Förutsatt att avsändaradressen fortune@example.org är giltig kommer det här mejlet levereras.

Och nu börjar det roliga, eller rättare: Nu gör vi oss av med det tråkiga.

Först och främst är jag trött på att varje gång jag vill skicka mejl som de här behöva köra fortune, kopiera och till sist klistra in det i mina mejl. Samma resultat går ju att uppnå på det här viset:

$ fortune -a | mail -s "Kakan säger" jesper@example.org -f fortune@example.org

Observera hur flaggan -s, som bestämmer Subject, ligger före mottagaradressen och därmed tolkas av mail i stället för att skickas vidare till sendmail.

Nästa grej jag är trött på är att skicka de här mejlen manuellt, för att sedan få dem levererade några sekunder senare. Därför skickar jag dem i stället med hjälp av programmet at, vars poäng helt enkelt är att köra ett eller flera kommandon vid en annan tidpunkt än omedelbart:

$ at 07:45
fortune -a | mail -s "Kakan säger" jesper@example.org -f fortune@example.org
^D

Med detta schemaläggs skickandet till klockan kvart i åtta på morgonen, nästa gång hon är så mycket. at förstår även mer avancerade tidsangivelser, exempelvis teatime september 7 som inträffar kl. 16.00 nästkommande 7/9. (Ett tråkigare sätt att uttrycka samma tidpunkt är annars 201209071600).

Men så här roligt vill jag inte bara ha någon gång ibland och på eget initiativ, utan varje dag. Att mejla en fortune till sig själv passar mycket bättre i cron, som finns till för att köra kommandon vid upprepade tillfällen.

Det finns massor av sätt att konfigurera körningar i cron, som något visst datum varje månad, en viss minut varannan timme, varje söndag och så vidare. Jag är dock bara intresserad av klockslaget kvart i åtta varje morgon. För att fixa detta gör jag crontab -e och pular in den här raden:

Att 45 är en minut och 7 en timme är lätt att inse. De tre asteriskerna i sin tur, står i tur och ordning för datum, månad och veckodag.

Det går även att mata in kommaterade listor eller spännvidder. Här är en variant som skickar det där mejlet varje vardagsmorgon klockan kvart i åtta, förutom i juli:

Visserligen är det svårt att tänka sig något roligare innehåll för automatiska mejl än fortune, men det är nog bäst om jag täcker något praktiskt användningsområde också.

urlwatch.sh

För det här avsnittet var jag först inne på att jag skulle reproducera Richard Stallmans oerhört praktiska webbläsare, men kom som tur var på bättre tankar.

Det blir dock något liknande, nämligen en webbövervakningstjänst. För att åstadkomma denna tar jag hjälp av ett gammalt skript som nyligen fick sig en omgång och kom online: urlwatch.sh.

Med en default-konfiguration läser urlwatch.sh in ett godtyckligt antal whitespace-separerade url:er ur filen ~/.urlwatch/urls, drar ned dem med curl, tolkar om dem till plaintext med lynx och sparar resultatet i en cache. Andra gången skriptet körs hämtar det samma sidor igen, skriver ut en diff mellan den föregående och nuvarande versionen av sidorna och uppdaterar sedan cache-kopian.

Det här skriptet vill jag köra från cron ett par gånger om dagen, bland annat för att få en ping via epost när SVT Play slänger upp nya program på vissa adresser, exempelvis http://www.svtplay.se/agenda. De övergav ju RSS när de bytte till ny sajt i somras.

För att åstadkomma detta installerar jag först skriptet:

$ curl -o bin/urlwatch.sh \
https://raw.github.com/simio/scripts/4f1d265852529fab701f1ce817a15611839047a8/urlwatch.sh
$ mkdir ~/.urlwatch
$ echo "http://www.svtplay.se/agenda" > ~/.urlwatch/urls

(Byt hashen i adressen till master för att hämta den senaste versionen.)

Sedan lägger jag till det i min crontab (med crontab -e, igen):

Observera att det där inte ska vara flera rader, utan bara en. När den här crontabben är sparad kommer skriptet köras klockan 06.00, 12.00 och 18.00 varje dag, och utmatningen mejlas till jesper@example.org vare sig den är tom eller inte.

Flaggan -f till urlwatch.sh gör att skriptet rapporterar diffar i ett format som passar bättre i mejl.

Mejlprogram som försöker vara listiga kan förresten sabba det här genom att sortera bort epost med samma avsändare som mottagare. GMail är en sådan skurk. Du behöver i så fall ange en annan avsändaradress.

Det är dock inte som ovan jag egentligen använder skriptet i min crontab. Eftersom jag använder min lokala mailspool ser jag för det första till att rapporterna aldrig lämnar datorn, genom att skicka dem till mitt användarnamn i stället för min epostadress.

Sedan vill jag inte heller ha rapporter när ingenting hänt, vilket blir resultatet om man använder skriptet som ovan. I stället låter jag skriptet själv sköta mejlandet. Som en bonus blir allting därmed mycket mindre komplicerat i crontabben.:

Timangivelsen */2 betyder varannan timme.

Flaggan -m säger åt urlwatch.sh att skicka rapporten som epost i stället. Mottagare kan bestämmas med flaggan -r, men eftersom defaultvärdet är den användare som kör skriptet behöver jag inte använda den.

Default-värdet för avsändaradress är daemon@localhost, men vill du ändra det så ska du lägga till den här raden i filen ~/.urlwatch/config:

Nu är det slut på det roliga.

Att tröttna på reklamen

För någon vecka sedan blev jag varse att någon meningslös rackare anmält en obefintlig epostadress på en av mina domäner till ett företags nyhetsbrev.

Jag gillar såklart inte skräppost, och därför har jag ett bra och enkelt spamfilter (bmf) integrerat via procmail.

Filtret tränar jag dock enbart på sådan skräppost som inte har någon tydlig avsändare. När något spårbart företag däremot skickar ut sina (vanligtvis legitima) nyhetsbrev, så vill jag inte att de ska fastna i filtret. Därför lägger jag ned en del tid på att bli av med sådana utskick, istället för att bara träna filtret på dem.

Men hur blir jag av med dem då? Vanligtvis läxar jag helt enkelt upp avsändaren genom att berätta på vilket eller vilka sätt deras utskick bryter mot lagen:

Huvudregeln är att det är förbjudet att skicka e-postreklam till konsumenter och enskilda firmor. Företag får bara skicka e-postreklam om mottagaren i förväg har tackat ja till att få reklam från företaget. Tidigare var det tillåtet att skicka e-postreklam om mottagaren inte hade tackat nej.

Om det finns ett "etablerat kundförhållande" mellan företag och konsument, till exempel om du har köpt något från företaget, får företaget skicka e-postreklam – men bara om följande förutsättningar är uppfyllda:

  • Du får inte ha tackat nej till att din e-postadress används i marknadsföringssyfte.
  • Marknadsföringen måste gälla företagets egna likartade produkter som den du har köpt förut.
  • Du måste få möjlighet att kostnadsfritt och enkelt förhindra att e-postadressen används i marknadsföringssyfte.

I e-postreklamen ska det alltid finnas en giltig adress dit du kan skicka en begäran om att marknadsföringen ska upphöra.

Detta är oerhört effektivt. Nio av tio företag svarar, ber om ursäkt och rättar till det hela.

Men ibland orkar jag inte vara instruktiv och trevlig, och senast så skedde var nyss. För någon vecka sedan anmäldes som sagt en (icke existerande) epostadress på en av mina domäner till ett företags utskickslista. Följaktligen började jag få deras nyhetsbrev på min catch-all.

Det vill jag absolut inte ha! Som tur var så fungerade avprenumerationslänken.

Ändå damp snart nya utskick ned. Det visar sig att adressen hade anmälts till väldigt många av deras nyhetsbrev, och att varje utskickslista krävde en egen avprenumeration. Detta riskerade att bli väldigt irriterande eftersom det finns jättemånga utskickslistor – en per större stad i Sverige. Dessutom verkar adressen ha hamnat på listor som hör till städer även utanför Sverige. Kanske över hundra listor sammanlagt!

Så många orkar jag absolut inte göra mig av med, men jag provade att avprenumera ett par av de nya listorna. Det fungerade inte. Således var utskicken olagliga. Nå, den här gången orkade jag faktiskt inte bråka om den saken.

Istället ville jag ha litet mellandagsroligt, och gjorde så här:

  1. Jag satte upp en forward från den ogiltiga adressen som fick utskicken, så att de hädanefter skickas vidare till företagets support.
  2. Sedan skickade jag ett epostmeddelande till deras support, från den adress jag nyss forwardat, där jag förklarar vad jag gjorde, varför jag gjorde det, och avslutade med uppmaningen att de ska »observera att det inte går att svara på detta meddelande :-)«.
  3. Till sist log jag i mjugg.

Om det i praktiken drabbar dem på något otrevligt vis är förstås osäkert, och det enda jag kan vara säker på är att jag hade kul. Deras skräppostfilter kanske sorterar bort deras egna nyhetsbrev? I sådana fall borde alla vara nöjda och skräppostfria alldeles omedelbart.

Men det kan förstås vara annorlunda också. I värsta fall, insåg jag tyvärr först senare, så har de ett ticket-system, som skickar ut bekräftelser på att ens supportärende emottagits. Dessa bekräftelser levereras ju i sådana fall till min numera forwardade adress, och därifrån vidare tillbaka till deras support.

Och om personen som kodat ticket-systemet är en klant, vilket inte är det minsta osannolikt, så har han eller hon knappast förutsett att ticket-systemet kan råka få en ticket-bekräftelse. Då kommer bekräftelsemeddelandet att föranleda ytterligare ett bekräftelsemeddelande, som denna gång levereras direkt till deras support-adress. Detta kommer i sin tur att föranleda ett likadant bekräftelsemeddelande, och så vidare.

En DoS-attack var ju inte riktigt vad jag hade tänkt mig. Men lika förhoppningsvis som antagligen så blev det inte någon sådan av det hela. Men visst hade det varit litet roligt även då? :-)

Epostfälla avslöjade intrång på Svenska Spel?

Alldeles nyss lade jag på luren efter att ha pratat med en projektchef för Spelkortet (tror jag det var) på Svenska Spel, som faktiskt lät lite uppskakad av min fråga. Kanske borde jag tacka min trevliga telefonröst och min förmåga att låta seriös för att han inte bara avfärdade mig, eftersom det faktiskt verkar som att de utsatts för oegentligheter.

Det rör sig antingen om ett dataintrång där åtminstone epostadresser stulits, eller också om att någon inom organisationen läckt samma information – kanske mot »betalning«? Det kan också vara så att det handlar om en osannolik slump, så glöm för guds skull inte bort att läsa frågetecknet i rubriken.

Händelsen måste även ha ägt rum tidigare än september, då de upptäckte en trojan på sitt interna nätverk.

Men hur sjutton kan jag veta det?

Att gillra en epostfälla

Sedan flera år tillbaka lämnar jag aldrig ut min egentliga epostadress till andra än mina närmaste. Istället använder jag en ny i varje nytt sammanhang, och när jag registrerar mig på någon sajt blir det med en unik för den sajten.

Eftersom jag äger mina egna domäner har jag valet att ta emot all epost som skickats till icke existerande mottagare. När ett företag kontaktar mig, gör de det på en adress som bara de har.

Inte ens på min egen dator eller min epostserver finns adressen lagrad. Den är icke-existerande.

(Samma trick går förresten att utföra med många (men inte alla) mejltjänster, bland annat GMail, genom att man ger dem en plusadress – istället för att ge dem adressen till.mig@example.com, ge dem till.mig+derasnamn@example.com, så kommer deras utskick ändå att levereras till din egen adress.)

Men några plusadresser är det inte tal om i det här fallet, utan det handlar verkligen om adresser som inte finns.

Fällan slår igen

Så döm om min förvåning när det i april i år trillade in reklam för rakebacklovers.com på den adress jag givit till Svenska Spel och bara till dem. Jag epostade deras kundtjänst och frågade vad det kom sig, men fick inget svar.

Utöver några ytterligare reklammeddelanden under april, så vet jag inte om jag fick något mera förrän i augusti, eftersom jag kan ha raderat dem utan att reflektera över att mottagaradressen var Svenska Spels.

Men i augusti kom alltså fler. Denna gång från onlinehunters.net.

Jag kontaktade dem igen via epost, men utan svar.

Idag ringde jag dem istället. Efter att ha fått höra av en trevlig supporttjej att vad jag berättade om stred mot deras policy några gånger, erbjöd hon sig att slussa mig vidare till någon med bättre koll.

Snart pratade jag med den där projektchefen, bifogade en kopia av ett av reklamutskicken till honom, och fick höra ytterligare tio gånger att det stred mot deras policy.

Epostfällan hade slagit igen (igen, det har hänt förr)!

Pinsamt!?

Nja, egentligen inte särskilt.

Här är ett avsnitt ur deras aktuella medlemsvillkor:

Svenska Spel skall behandla information rörande de uppgifter som registrerats om Spelaren, inklusive spelkontotransaktioner, konfidentiellt. Endast behörig myndighet kan erhålla sådana uppgifter enligt svensk lag eller regeringsbeslut.

Man måste ha klart för sig att de knappast fattat beslut om att sälja sitt epostregister till ryska online-kasinon. Vad som däremot skulle kunna vara pinsamt är att de inte svarat på mina mejl.

Räknar man in att jag kan vara precis vem som helst (och det är jag ju) så hade jag förstått om de skickat något tråkigt och avfärdande svar. Nu svarade de inte alls istället, och med tanke på vad Svenska Spel faktiskt är för slags bolag, är det ändå lite anmärkningsvärt att eventuella säkerhetsfrågor kastas i papperskorgen.

Särskilt som den första människan jag pratade med faktiskt föreslog att någon kanske ringt och låtsats vara mig, och på så vis fått tag på min epostadress. I det här fallet är det någonting oerhört osannolikt, eftersom adressen faktiskt innehåller »svenskaspel«. Vem är så dum egentligen?

Läckor är omöjliga att förhindra helt

Att de råkat ut för en registerläcka är en helt annan sak. Det är dåligt, ska undvikas, men det går inte att göra det omöjligt att komma åt uppgifterna. Åtminstone inte i praktiken.

Allt man kan göra är att minska sannolikheten att det sker.

I det här fallet kan man i första hand misstänka ett insider-jobb eller ett dataintrång. Båda är omöjliga att helt förhindra.

Någon måste ha tillgång till epostregistren, annars finns ingen som kan göra utskick eller ändra adress om det blivit fel. Några av de datorer som epostadresserna lagras på måste i sin tur vara kopplade till internet för att kunna göra utskicken.

Man kan göra det svårt att bryta sig in i datorer, liksom man kan göra det krångligt att få med sig data ut ur organisationens lokaler, men det går aldrig att förhindra helt.

Att jag bara fått reklam från diverse nätkasinon antyder dessutom att de som skaffat epostadresserna varit på jakt specifikt efter just Svenska Spels register.

Inga tvivel

Det råder för mig ingen tvekan om att det är på deras sida läckaget skett. Den aktuella epostadressen finns, förutom i deras register, endast i det fåtal reklamutskick jag har sparade i min knädator – epost från Svenska Spel har jag aldrig sparat efter att jag läst dem – och när jag väl fick reklamutskicken hade ju adressen bevisligen redan kommit ut.

Tillika intressant är att jag valt att avstå alla former av utskick ifrån Svenska Spel. Min epostadress hanteras rimligtvis inte av deras system över huvud taget, förutom när det gäller databasunderhåll.

De illegala utskick jag fått innehåller inte mitt namn heller, utan är adresserade som om jag hette detsamma som den första delen av min epostadress. Även om detta antyder att någon kommit åt en utskickslista, istället för något komplett medlemsregister, så ska jag egentligen inte finnas på några utskickslistor eftersom jag avböjt alla utskick. Vad för register som läckt, om något läckt, det vågar jag alltså inte gissa.

Så till sist, frånsett alla indicier på att det är Svenska Spels register som läckt, hur stor är den isolerade sannolikheten att någon ändå kunnat få tag på adressen genom att ta sig in i min lilla knädator kristina?

Den är så otroligt försvinnande liten, att det är meningslöst att ens tänka tanken.

Min användarprofil kan inte beskrivas mera träffande än med ordet paranoid. Epostadressen kan ha funnits i något mejl åt gången på min hårddisk, kanske sammanlagt motsvarande ett par dygn sedan jag registrerade mig hos dem för flera år sedan. Bortsett då från de här reklamutskicken, som jag sparat på.

För att säga det så att en geek förstår: Jag är paranoid och kör uteslutande OpenBSD. Firefox och Pidgin går under en annan användare utan tillgång till mina filer, eftersom jag är lite oroligt lagd. Mitt radionätverk är WPA-PSK, men jag tunnlar genom IPSec ändå. För att komma åt adressen måste man ge sig på mig specifikt – det finns säkert flera som skulle klara av det, inte minst genom att helt enkelt bryta sig in i min lägenhet – men varför ett sådant hästjobb för att bara sälja min adress till två sketna nätkasinon?

Jag säger det otroligt sällan, men den här gången är jag faktiskt helt säker. Läckan var hos Svenska Spel, kanske via någon anställd eller dataintrång, och det är med all sannolikhet inte bara just min adress som läckt. Kanske handlar det om samtliga epostadresser de hade registrerade i våras. Kanske handlar det till och med om mera än bara epostadresser.

Det blir spännande att se vad som händer!