Bash script to read XMail boxes with Mutt
1 oktober 2007
Reacties uit
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