You are hereLinux / Debian

Debian


mu - maildir utils

Ik zag deze tweet passeren van @DriesBultynck:
zoekt nog steeds een manier om een reeks mails uit gmail te exporteren naar excel (incl. date + content). Niemand?

Volgens @haploc zou dat wel moeten lukken met Perl, Email::Simple en Spreadsheet::SimpleExcel. Aangezien ik niet zo vlot ben met Perl, heb ik een andere oplossing gezocht en gevonden: mu (kort voor Maildir Utils).

Helaas heeft mu geen kant-en-klaar pakket voor Debian dus moet het van source geïnstalleerd worden.

cd download
wget http://mu0.googlecode.com/files/mu-0.9.7.tar.gz
tar -xvf mu-0.9.7.tar.gz
cd mu-0.9.7

Op mijn systeem ontbraken nog een paar dependencies, met een paar keer ./configure te draaien heb ik ze kunnen achterhalen:

sudo apt-get install build-essential libglib2.0-dev libgmime-2.4-dev libxapian-dev xdg-utils guile-1.8-dev libgtk2.0-dev

Daarna mu configureren:

./configure

Als alles goed gegaan is, dan krijg je op het einde ongeveer zo'n output:

mu configuration is complete.
-----------------------------
Xapian version                       : xapian-config - xapian-core 1.2.3
GLib version                         : 2.24.2
GMime version                        : 2.4.14
GTK+ version                         : 2.20.1
GIO version                          : 2.24.2
Guile version                        : 1.8.7

Build unit tests (glib >= 2.22)      : yes
Build 'mug' toy-ui (requires GTK+)   : yes
McCabe's Cyclomatic Complexity tool  : yes
xdg-open                             : /usr/bin/xdg-open

Have direntry->d_ino                 : yes
Have direntry->d_type                : yes
-----------------------------

Daarna builden en installeren:

make
sudo make install
cd

Klaar? Bijna. mu werkt door een maildir te indexeren als een database, waar je dan queries op kan loslaten. Voor het indexeren gaat mu uit van een aantal zinnige defaults dus het is niet meer dan:

mu index

Afhankelijk van de grootte van de maildir kan dit even duren. Alhoewel. Bij mij viel het nog best mee:

time mu index
mu: indexing messages under /home/amedee/Maildir [/home/amedee/.mu/xapian]
/ processing mail; processed: 69736; updated/new: 69736, cleaned-up: 0
mu: elapsed: 210 second(s), ~ 332 msg/s
mu: cleaning up messages [/home/amedee/.mu/xapian]                                                                                                              
\ processing mail; processed: 69736; updated/new: 0, cleaned-up: 0
mu: elapsed: 2 second(s), ~ 34868 msg/s

real    3m32.500s
user    1m21.021s
sys     0m7.692s

Als je mu regelmatig gebruikt, dan is misschien geen slecht idee om mu index toe te voegen als cron job.

Nu mu geïnstalleerd is, kan je queries draaien zoals

mu find "iText" --format=xml > mu-iText.xml

Dit geeft bij mij als output:

<?xml version="1.0" encoding="UTF-8" ?>
<messages>
        <message>
                <from>1T3XT BVBA &lt;info [at] 1t3xt [dot] info&gt;</from>
                <to>Post all your questions about iText here &lt;itext-questions [at] lists [dot] sourceforge [dot] net&gt;</to>
                <subject>Re: [iText-questions] Adding watermark in front of the page    background color</subject>
                <date>1323524095</date>
                <size>7149</size>
                <msgid>4EE35FFF [dot] 6070006 [at] 1t3xt [dot] info</msgid>
                <path>/home/amedee/Maildir/.mailinglijst.itext-questions/cur/1323524308.25506_3.intrepid:2,</path>
                <maildir>/.mailinglijst.itext-questions</maildir>
        </message>
        <message>
                <from>Balder VC &lt;lists [at] redlab [dot] be&gt;</from>
                <to>itext-questions [at] lists [dot] sourceforge [dot] net</to>
                <subject>Re: [iText-questions] XMLWorker &amp; RTL</subject>
                <date>1323524276</date>
                <size>7769</size>
                <msgid>4EE360B4 [dot] 8040008 [at] redlab [dot] be</msgid>
                <path>/home/amedee/Maildir/.mailinglijst.itext-questions/cur/1323524480.9255_3.intrepid:2,</path>
                <maildir>/.mailinglijst.itext-questions</maildir>
        </message>
        <message>
                <from>Balder VC &lt;lists [at] redlab [dot] be&gt;</from>
                <to>Post all your questions about iText here &lt;itext-questions [at] lists [dot] sourceforge [dot] net&gt;</to>
                <subject>[iText-questions] Fwd: Re:  XMLWorker &amp; RTL</subject>
                <date>1323525006</date>
                <size>19787</size>
                <msgid>4EE3638E [dot] 7020708 [at] redlab [dot] be</msgid>
                <path>/home/amedee/Maildir/.mailinglijst.itext-questions/cur/1323525223.17054_3.intrepid:2,</path>
                <maildir>/.mailinglijst.itext-questions</maildir>
        </message>
</messages>

Meer voorbeelden van queries zijn te vinden op de mu cheatsheet.

Nu is het gewoon nog een kwestie van:

  1. Een lokale IMAP-server installeren die Gmail binnentrekt (zelf ben ik nogal fan van Dovecot)
  2. De gepaste query verzinnen, met XML output.
  3. De XML-file binnentrekken in een spreadsheetprogramma.

Voila, dit is één mogelijke oplossing.

Welke QNAP NAS zou ik kopen?

Ik zou me een NAS willen kopen. Het doel is file storage, in hoofdzaak media (oa foto's van de madam). Ik heb mijn zinnen al gezet op het merk QNAP, omwille van deze héél duidelijke Debian HOWTOs: http://www.cyrius.com/debian/kirkwood/qnap/
Inderdaad, de meegeleverde firmware kan me niet schelen. Er komt Debian op zodat ik mijn goesting kan doen. Onder meer om er CrashPlan op te zetten: http://www.pchilton.co.uk/2011/01/29/crashplan-online-backup-on-qnap-ts-...

Zelf zou ik de prijs wat willen drukken en voor een model met 2 schijven gaan zoals de TS-210 (http://www.qnap.com/pro_detail_feature.asp?p_id=135) of TS-212 (http://www.qnap.com/pro_detail_feature.asp?p_id=192), maar ons madam zegt dat ik voor een NAS met 4 schijven moet gaan. Oh well... Wink Nose

Dat wil dan zeggen dat het 1 van deze wordt:

Prijsvergelijking bij Coolblue: http://bit.ly/nXa1uq

Als ik de reviews er op nalees, dan is de TS-410 het zuinigst in energieverbruik, maar tegelijk ook redelijk traag. Langs de andere kant vraag ik me af of de snellere cpu, meer memory en een LCD de 106€ meerprijs van de TS-419P+ t.o.v. de TS-412 wel waard is.

Help! Ik kan niet kiezen! Nose Smile

Wuala

Ondertussen heeft iedereen al lang een Dropbox account. Indien niet: hier is een referral link, 2 GB storage in de cloud voor u en 250 MB extra voor mij: http://db.tt/AdWPVma.

De laatste tijd is er een en ander te doen over Dropbox, dat het by design niet zo veilig zou zijn, en dat Dropbox werknemers toegang hebben tot je bestanden. Ik wil al de argumenten voor en tegen hier niet oprakelen, maar omdat het sowieso geen goed idee is om alle eieren in één mandje te leggen, ben ik eens gaan rondkijken naar alternatieven.

Het Zwitserse Wuala, van hardeschijvenfabrikant LaCie, is zo'n alternatief. Er zijn nog *tig andere storage-in-the-cloud oplossingen zoals Sparkleshare (git-based, draait op uw eigen server(s)), Sugarsync (geen Linux support),... en de djoef van de week gaat naar de eerste commentator die er nog een paar andere opsomt. Nose Smile

Voor mij zijn dit de belangrijkste gelijkenissen en verschilpunten tussen Wuala en Dropbox:

  • Wuala claimt dat je bestanden versleuteld worden vóór ze naar hun systeem gaan. Bijgevolg kan het personeel van Wuala jouw bestanden nooit lezen. Dit in tegenstelling tot Dropbox, waar alleen de verbinding versleuteld is.
  • Beiden starten ze met een beperkte gratis ruimte (Dropbox 2GB, Wuala 1GB) die je kan uitbreiden door te betalen of via referrals. Bij deze geef ik mijn referral link voor Wuala:
    http://www.wuala.com/referral/BH73565NBBPN6CJCJF5M
  • Daarnaast kun je bij Wuala extra storage verdienen door te ruilen met andere Wuala-users, in een Wuala-cloud. Daarover later meer.
    Je kan het een beetje vergelijken met het uitwisselen van backupruimte met Crashplan.
    Je pc moet dan wel minstens 4 uur per dag aan staan en goed bereikbaar zijn. Een correcte router- en proxy-configuratie zijn dan noodzakelijk.
  • LaCie is het moederbedrijf van Wuala, dus als je een LaCie harde schijf koopt, dan zit daar tegenwoordig een code bij voor extra Wuala-storage.
  • Aangezien Dropbox zogezegd minder secure is dan Wuala, zou je de twee voor verschillende zaken kunnen gebruiken. Ik ga bijvoorbeeld mijn ebooks in Dropbox steken en mijn timesheets in Wuala. Mijn portable apps blijven voorlopig ook nog in Dropbox, zie blogpost: http://amedee.be/dropbox-portableapps-cloud-computing-ftw
  • Dropbox en Wuala werken allebei op Windows, Mac, Linux, headless Linux (servers yay!), Android.
    EDIT: Hans van Gent maakte er mij attent op dat Wuala ook compatibel is met iOS. Blijkbaar is iOS iets anders dan Mac. Tongue

De extra storage die je kan verdienen, wordt in principe berekend op basis van de gedeelde ruimte en hoe lang de pc online is. Bijvoorbeeld als je 10 GB aan de Wuala-cloud schenkt, en je pc staat 8 uur per dag aan, dan heb je 10 GB * 33% = 3,3 GB extra. De storage die je ter beschikking stelt, moet niet noodzakelijk allemaal op één pc zijn: de gedeelde storage wordt opgeteld. Bijvoorbeeld 10 GB 40% online en 20 GB 50% online geeft samen 14 GB extra. Wanneer je meer dan 20 GB deelt, wordt er ook rekening gehouden met hoeveel storage je effectief verbruikt.
Stel dat je een onderbenutte server hebt ergens in een datacenter, dan kan Wuala daar 24/7 op draaien. Als dat een Debian server is, dan vind je hier de installatie en een init script:

Post-Debian upgrade

Te fixen probleempjes na een Debian upgrade, voornamelijk als bookmark voor mezelf.

  • Restanten van MySQL 5.0 verwijderen + phpMyAdmin deed wat raar:
    sudo apt-get remove mysql-server-5.0
    sudo apt-get purge phpmyadmin
    sudo apt-get install phpmyadmin
  • SpamBayes spuwde een lelijke error:
    Traceback (most recent call last):
      File "/usr/bin/sb_filter.py", line 4, in <module>
        import pkg_resources
      File "/usr/lib/python2.6/dist-packages/pkg_resources.py", line 2671, in
    <module>
        working_set.require(__requires__)
      File "/usr/lib/python2.6/dist-packages/pkg_resources.py", line 654, in
    require
        needed = self.resolve(parse_requirements(requirements))
      File "/usr/lib/python2.6/dist-packages/pkg_resources.py", line 552, in
    resolve
        raise DistributionNotFound(req)
    pkg_resources.DistributionNotFound: spambayes==1.1a6

    De oorzaak was een versiesprong van Python. Debian Lenny had 2.4, Debian Squeeze heeft 2.6.6.
    Oplossing: Spambayes 1.1a6 opnieuw downloaden van SourceForge, uitpakken, en installeren met:
    sudo python setup.py install

    Todo: blijkbaar is er al een versie 1.1b1 van SpamBayes
  • Ik had backup2l gepatcht, deze patchen waren weg door de upgrade. Door wat creatiever om te springen met find, zijn de patchen zelfs niet meer nodig.
    Dit is nu mijn nieuwe /etc/backup2l.conf (commentaren en lege lijnen weggelaten):
    FOR_VERSION=1.5
    VOLNAME="all"
    SRCLIST=(/bin /etc /home /lib /opt /root /sbin /srv /usr /var
                  -path '/home/amedee/download'    -prune
               -o -path '/home/backup/crashplan'   -prune
               -o -path '/home/backup/intrepid'    -prune
               -o -path '/home/*/Maildir'          -prune
               -o -path '*/home/*/Maildir/*.Trash' -prune
               -o -path '/lib/modules'             -prune
               -o -path '*lost+found'              -prune
               -o -path '*.nobackup*'              -prune
               -o -path '/usr/include'             -prune
               -o -path '/usr/share/zoneinfo'      -prune
               -o -path '/var/cache'               -prune
               -o -path '/var/lib/apt'             -prune
               -o -path '/var/lib/dpkg'            -prune
               -o -path '/var/lib/mysql'           -prune
               -o -path '/var/lock'                -prune
               -o -path '/var/log/apache2'         -prune
               -o -path '/var/mail'                -prune
               -o -path '/var/tmp'                 -prune
               -o -path '/var/run'                 -prune
               -o -path '/var/spool'               -prune
               -o -path '/var/www/squirrelmail'    -prune
               -o -path '/var/www/squid-reports'   -prune
               -o -path '*/.git'                   -prune
            )
    SKIPCOND=(
                  -type s
               -o -name "*~"
               -o -name "*.bak"
               -o -name "*.o"
               -o -name "*.old"
               -o -name "Thumbs.db"
               -o -wholename "*/home/*/Maildir/*dovecot*"
               -o -wholename "/var/log/mail*"
               -o -wholename "/var/www/sites/*/files/js/js_*.js"
             )
    BACKUP_DIR="/home/backup/intrepid"
    MAX_LEVEL=2
    MAX_PER_LEVEL=9
    MAX_FULL=8
    GENERATIONS=2
    CREATE_CHECK_FILE=1
    PRE_BACKUP ()
    {
            for script in /root/bin/hotcopy-*.sh
            do
                "$script" &
            done
            wait
    }
    POST_BACKUP ()
    {
            nice --adjustment=19 /usr/local/bin/timeout -t 3600 /usr/local/bin/hardlink.py -t /home > /dev/null
            /root/bin/clearswap.sh
            php /home/amedee/twitter/backup.php
    }
    AUTORUN=1
    SIZE_UNITS=""
    CREATE_DRIVER="DRIVER_MY_TAR_LZ"

    Mijn tar.lz-driver staat hier.
    TODO: sockets niet meenemen in de backup.
  • Drupal gebruikte geen Clean URLs meer.
    Oplossing: AllowOverride All aanzetten in /etc/apache2/sites-enabled/000-default, Apache herstarten en Clean URLs terug aanzetten in Drupal.
  • TODO: Apache status is niet meer bereikbaar op localhost/server-status (voor Munin).
  • Shorewall startte niet wegens iptables probleem wegens modules niet geladen. Opgelost met
    sudo apt-get purge linux-modules-2.6.26-2-xen-amd64
    sudo apt-get install linux-modules-2.6.32-5-xen-amd64

    Probleem en oplossing gevonden via
  • php5-imagick en php5-curl herinstalleren (deden een beetje lastig):
    sudo apt-get purge php5-imagick php5-curl
    sudo apt-get install php5-imagick php5-curl

Todo-lijstje

Ik maak voor mezelf eventjes een lijstje van dingen die ik eens zou moeten doen.

To be continued...

/etc versiebeheer met git

Sinds ik dit jaar begonnen ben met programmeren (Java), ben ik ook in aanraking gekomen met versiebeheer. Meer bepaald gebruik ik nu git voor al mijn programmeeropdrachten van de avondschool.

Vandaag bedacht ik net dat git niet alleen gebruikt kan worden voor software development, maar ook voor versiebeheer van configuratiebestanden in /etc. Blijkbaar ben ik niet de eerste die daar aan denkt, want er bestaat zoiets als etckeeper. Met etckeeper worden de bestanden in /etc bijgehouden in een git, mercurial, darcs, of bzr repository.

Volgende stappen moeten als root uitgevoerd worden:

  • Git en etckeeper installeren:
    aptitude install git-core etckeeper
    git config --global user.name "Amedee Van Gasse"
    git config --global user.email amedee@vangasse.eu
  • /etc initialiseren als git repository:
    cd /etc
    git init
  • Enkele bestanden negeren:
    cat > .gitignore
    *~
    *.dpkg-new
    *.dpkg-old
  • Pas /etc/etckeeper/etckeeper.conf aan om ervoor te zorgen dat git gebruikt wordt:
    # The VCS to use.
    # VCS="hg"
    VCS="git"
    # VCS="bzr"

    Dit is alleen nodig op Ubuntu omdat die standaard mercurial gebruikt in plaats van git.
    De rest van de configuratie laat je zoals ze is.

  • De huidige versie van /etc in de git repository steken:
    git add .
    git commit -am "Initial commit"

Da's alles. Wanneer er vanaf nu via apt een wijziging gebeurt in /etc, dan wordt etckeeper automatisch aangeroepen om een nieuwe commit te doen.
Na manuele wijzigingen in /etc moet je juist nog het volgende doen:

cd /etc && sudo git commit -am "Beschrijving van de wijziging."

Onmisbare console software

In een vorige blogpost heb ik geschreven over software die ik van mijn netbook gesmeten heb, om plaats te besparen.

Anderzijds zijn er enkele commandline tools die ik absoluut niet kan missen, en die ik altijd als eerste installeer op iedere Ubuntu- of Debian-installatie:

$ sudo aptitude install curl di elinks htop less mc nano ncdu nmap patch rsync screen ssh telnet
Welke console software is voor jou onmisbaar, en wordt standaard niet geïnstalleerd door jouw Linux distributie? Laat het weten in de comments!

Intrepid²: logging en monitoring

htop

Installatie:
sudo aptitude install htop
Gebruik:
sudo htop

 

vnstat

Installatie:
sudo aptitude install vnstat
Database aanmaken:
sudo vnstat -u -i eth0
Gebruik:
watch vnstat

 

apachetop

Installatie:
sudo aptitude install apachetop
Gebruik:
sudo apachetop -f /var/log/apache2/access.log

 

mailtail.sh

Zelf geschreven scriptje:
#! /bin/bash
LOGFILE=/var/log/mail.log
SKIP='(dovecot|imap-login|fetchmail|postfix/anvil|qmgr.*removed|postgrey.*cleaning|timeout.after|lost.connection.after|policy-spf)'
tail -F --lines=100 --max-unchanged-stats=5 $LOGFILE | egrep -v $SKIP
Uitvoerbaar maken:
sudo chmod u+x /root/bin/mailtail.sh
Gebruik:
sudo /root/bin/mailtail.sh

 

apticron

Om dagelijks een mailtje te krijgen van beschikbare updates.
Installatie:
sudo aptitude install apticron
Da's alles! Apticron installeert zelf een cronjob en mailt naar root. Da's ok voor mij want /etc/aliases is al aangepast.

 

munin

Luc is zo vriendelijk om munin te draaien op zijn bakje. Ik moet alleen maar munin-node installeren:
sudo aptitude install munin-node
Luc z'n IP-adres toelaten in /etc/munin/munin-node.conf:
allow xxx.xxx.xxx.xxx
Tenslotte munin-node herstarten.
sudo /etc/init.d/munin-node restart
Enkele minuten later zijn er grafiekjes.

 

intrepid²: mailserver

http://holl.co.at/howto-email/
http://www.debianadmin.com/debian-mail-server-setup-with-postfix-dovecot...
http://www.linuxmail.info/postfix-smtp-auth-dovecot-sasl/
sudo aptitude install dovecot-imapd postfix postgrey policyd-weight procmail squirrelmail
sudo ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf
sudo /etc/init.d/apache2 reload
rsync -crtzhP -e ssh intrepid.warp.be:"~/Maildir" .
/etc/aliases is aangepast + sudo newaliases

intrepid²: ssh zonder wachtwoord

Voor wie nog geen RSA keypair heeft, lees eerst dit artikel: Password-less logins with OpenSSH.

Ik heb wel al een RSA keypair, dus voor mij is het gemakkelijk:

amedee@saruman { ~ }$ ssh-copy-id -i ~/.ssh/id_rsa.pub amedee@migration.amedee.be
amedee@migration.amedee.be's password:
Now try logging into the machine, with "ssh 'amedee@migration.amedee.be'", and check in:

  .ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.
gevolgd door:
amedee@saruman { ~ }$ ssh amedee@migration.amedee.be
Linux intrepid 2.6.26-2-xen-amd64 #1 SMP Fri May 29 00:30:34 UTC 2009 x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
amedee@intrepid:~$
Bijna klaar. Nu alleen nog voor de security even password enabled root logins afzetten in /etc/ssh/sshd_config:
PermitRootLogin no
gevolgd door herstarten van de OpenSSH service:
/etc/init.d/ssh restart
Ziezo, weeral een klusje dat van de lijst geschrapt kan worden.

Reclame... ;-)

Met dank aan
  • Jasmina
  • Celine
  • Pieter
  • Jeff
  • Hans
  • Jurgen
  • Jurgen
  • Marijke
  • Amedee
  • Erik
  • Danny
  • Sofie
  • Lars
  • Christophe
  • Peter
  • Jeroen
  • Jurgen
om mij een gratis herlading twv €15 te bezorgen!

Waar ben ik?