Vandaag de 1/2 marathon van Amsterdam gelopen. Ondank maar liefst 2 sanitaire stops (waarvan 1 serieuze!) toch nog een tijd waar ik tevreden over ben: 1:36:45.
Dit weekend ben ik met collega’s Bert-Jan, Bob, Mark, Sander en Thijs naar Kopenhagen geweest, ik kan er helaas niet alles over vertellen wegens de standaard afspraak: “What happens in Kopenhagen, stays in Kopenhagen”. Tip voor reizigers (en voor Mark): plak een leuke sticker op je koffer, dan hoef je hem niet 5 x op de bagageband voorbij laten komen, voordat je hem herkent.
We kwamen vrijdagavond aan zijn naar de Vega geweest en sliepen in de hemel (mocht de hemel echt zo krap zijn, dan hoeft het voor mij niet zo).
Zaterdagavond zijn we naar eerst naar een authentieke Deense Pub geweest, nl. de Dubliner (zit ook in Stockholm, misschien iets voor het volgende uitje?) geweest, na overdag wat rondgelopen te hebben (o.a. in de vrijstaat Christiana). Na het sluiten (05:00 uur) gingen we terug, maar we onderweg hebben we nog even een party ge-crashed: erg gezellig verjaardagsfeestje in een vage woonkamer/bar, ergens hier. Als laatste bezoekers werden we op erg vriendelijke wijze gevraagd of we weg wilden gaan, toen was het 07:00 (o.i.d., hier de gevolgen van weinig slaap). Erg gastvrij die Denen! Bier is wel vrij duur, behalve op laatstgenoemde feestje. Foto’s en Films gemaakt door Bob en Thijs staan hier …
For Postmasters: easy way to read a mailbox from your XMail spool. If you have a CDB file (see this post), it is also capable of looking up aliases.
-
-
readmail real.user@domain.org
-
#or:
-
readmail an.alias@domain.org
-
#or if your RootDomain is domain.org:
-
readmail an.alias
-
-
#!/bin/bash
-
XMAILROOT="/var/lib/xmail"
-
CDB="/var/lib/qpsmtpd/rcptto/validrcptto.cdb"
-
-
RootDomain=$(grep RootDomain $XMAILROOT/server.tab | awk ‘{print $2}’|sed ‘s/"//g’)
-
aliaslookup=1
-
[ -f "$CDB" ] || {
-
echo "warning: CDB file not found, alias lookup disabled"
-
aliaslookup=0
-
}
-
spool="$XMAILROOT/domains/"
-
if [ -z "$1" ]; then echo usage: $0 user@domain; exit; fi
-
user=$(echo $1|cut -d@ -f1);
-
domain=$(echo $1|cut -d@ -f2)
-
[ "$domain" == "$user" ] && domain=$RootDomain
-
-
if [ ! -d "$spool/$domain" ]; then
-
echo "$domain: no such domain in $spool"
-
exit 8
-
fi
-
-
if [ ! -d "$spool/$domain/$user" ]; then
-
if [ $aliaslookup -eq 1 ]; then
-
echo -n "$user@$domain not found, looking for alias: "
-
real=$(cdb -qm $CDB $user@$domain)
-
if [ $real == "" ];then
-
echo "not found"
-
exit 8
-
else
-
echo "using $real"
-
user=$(echo $real|cut -d@ -f1)
-
fi
-
else
-
echo "$user: no such user in domain $domain"
-
exit 9
-
fi
-
fi
-
-
mutt -f $spool/$domain/$user/Maildir
This scripts creates a Constant DataBase file. We use this to interact with the qpsmtpd plugin check_validrcptto_cdb
.
-
-
#!/bin/bash
-
-
#this script creates a cdb file from xmail users and their aliases
-
-
OUTPUTFILE=/var/lib/qpsmtpd/rcptto/validrcptto.cdb
-
XMAILROOT=/etc/xmail
-
-
#no more settings beyond this point
-
-
TMPFILE=$(mktemp /tmp/email2cdb.XXXXXXXXXX)
-
-
[ -d "$(dirname $OUTPUTFILE)" ] || {
-
echo "directory for OUTPUTFILE $OUTPUTFILE does not exists"
-
exit 3
-
}
-
-
[ -f "$TMPFILE" ] && rm $TMPFILE
-
touch $TMPFILE || {
-
echo "can not create $TMPFILE"
-
exit 9
-
}
-
-
#paranoia strikes again:
-
#chmod og-r $TMPFILE
-
-
#list all email boxes:
-
cat $XMAILROOT/mailusers.tab \
-
| sed ‘s/"//g’ \
-
| awk ‘{print $2 "@" $1 "\t" $2 "@" $1}’ \
-
| sed ‘s/^*//’ \
-
| sed ‘s/*//’ >> $TMPFILE
-
-
#list aliases
-
cat $XMAILROOT/aliases.tab \
-
| sed ‘s/"//g’ \
-
| awk ‘{print $2 "@" $1 "\t" $3 "@" $1}’ \
-
| sed ‘s/^*//’ \
-
| sed ‘s/*//’ >> $TMPFILE
-
-
#create cdb file
-
cdb -cm $CDBOPTIONS $OUTPUTFILE $TMPFILE || {
-
echo "can not create cdb file $OUTPUTFILE FROM $TMPFILE"
-
echo "WARNING: I did not remove $TMPFILE for debug purposes"
-
exit 9
-
}
-
-
#cleanup:
-
rm $TMPFILE
-
exit 0
Here is a bash script that uses kdialog to present a password prompt and tries to mount a crypt device. It interacts with the (k)ubuntu “cryptsetup” package.
-
-
#!/bin/bash
-
if [ -r /lib/cryptsetup/cryptdisks.functions ]; then
-
. /lib/cryptsetup/cryptdisks.functions
-
else
-
kdialog –title $(basename $0) –error "/lib/cryptsetup/cryptdisks.functions not found"
-
exit 1
-
fi
-
-
crypt_create (){
-
DLG_TITLE="Cryptsetup Dialog"
-
mountpoint=$(grep $MAPPER/$1 /etc/fstab | awk ‘{FS=" "}{print $2}’)
-
sudo cryptsetup status $1 > /dev/null
-
if [ $? -ne 0 ]; then
-
pwd=$(kdialog –title "$DLG_TITLE" –password "mapping $1 to device <$2>
-
-
Enter passphrase:")
-
if [ $? -ne 0 ]; then return 3; fi
-
if [ "$pwd" == "" ]; then
-
kdialog –title "$DLG_TITLE" –warningyesno "empty password, try again?" && {
-
crypt_create $1 $2
-
return 2
-
}
-
fi
-
echo "$pwd" | sudo cryptsetup create $1 $2
-
mount $mountpoint 2&>/dev/null|| {
-
sudo cryptsetup remove $1
-
kdialog –title "$DLG_TITLE" –warningyesno "cryptsetup create <$1> <$2> failed, try again?" && {
-
crypt_create $1 $2
-
return 2
-
}
-
return 0
-
}
-
else
-
if [ -z $3 ]; then
-
kdialog –yesno "$MAPPER/$CRYPT_NAME is active, do you want to deactivate?" && {
-
umount $mountpoint
-
sudo cryptsetup remove $1
-
}
-
fi
-
fi
-
return 1 #cryptdevice already setup
-
}
-
-
if [ -r $TABFILE ]; then
-
grep -Ev "^#" $TABFILE | while read line; do
-
cryptname=$(echo $line | awk ‘{print $1}’)
-
cryptdevice=$(echo $line | awk ‘{print $2}’)
-
crypt_create $cryptname $cryptdevice $1
-
done
-
exit 0
-
else
-
kdialog –title $(basename $0) –error "$TABFILE not readable"
-
exit 2
-
fi
-