This happens with exim especially when moving from one server to another via Directadmin.
To verify this solution, first check your paniclog:
tail /var/log/exim/paniclog
If you get something like this:
2012-06-08 18:53:01 1SczTF-0002Cj-B8 Failed to find user “” from expanded string “${lookup{$domain}lsearch{/etc/virtual/domainowners}{$value}}” for the domain_filter router
then you probably have an issue with your domainowners file. as you can see, the perl script can’t parse the username, hence the error “unknown user” when receiving email.
The solution is to rebuild the /etc/virtual directory
Get a backup
cd /etc
cp -Rp virtual virtual.backup
Verify its existance
mkdir -p /etc/virtual
chmod 755 /etc/virtual
chown mail:mail /etc/virtual
Create this script and save it somewhere, let’s say /root/fix_virtual.sh
#!/bin/sh
echo -n '' > /etc/virtual/domains
echo -n '' > /etc/virtual/domainowners
mkdir -p /etc/virtual/`hostname`
chown mail:mail /etc/virtual/`hostname`
chmod 711 /etc/virtual/`hostname`
echo `hostname` >> /etc/virtual/domains
for u in `ls /usr/local/directadmin/data/users`; do
{
for d in `cat /usr/local/directadmin/data/users/$u/domains.list`; do
{
echo "$d: $u" >> /etc/virtual/domainowners
echo "$d" >> /etc/virtual/domains
DMN=/etc/virtual/$d
mkdir -p $DMN
chmod 711 $DMN
chown mail:mail $DMN
touch $DMN/aliases
if [ ! -s $DMN/aliases ]; then
echo "$u: $u" > $DMN/aliases
fi
touch $DMN/autoresponder.conf
touch $DMN/filter
touch $DMN/filter.conf
touch $DMN/passwd
touch $DMN/quota
touch $DMN/vacation.conf
chown mail:mail $DMN/*
mkdir -p $DMN/majordomo
chmod 751 $DMN/majordomo
chown majordomo:daemon $DMN/majordomo
mkdir -p $DMN/reply
chmod 700 $DMN/reply
chown mail:mail $DMN/reply
for p in `cat /usr/local/directadmin/data/users/$u/domains/$d.pointers 2>/dev/null`; do
{
echo "$p: $u" >> /etc/virtual/domainowners
echo "$p" >> /etc/virtual/domains
ln -s $d /etc/virtual/$p
};
done;
}
done;
}
done;
chown mail:mail /etc/virtual/domains
chown mail:mail /etc/virtual/domainowners
chmod 644 /etc/virtual/domainowners
chmod 644 /etc/virtual/domains
Make it exacutable and run.
chmod 755 /root/fix_virtual.sh
/root/fix_virtual.sh
Restart exim services
service exim restart
Your problem should be fixed.