qmail-remote mittels smtproutes

mcpoldy

New Member
Hallo, ich versuche grade verzweifelt, meine Mails von einem Server auf den anderen weiterleiten zu lassen.

Ich habe nun bei huschi gelesen, das ich nur die /var/qmail/control/smtroutes füllen muss und den qmail Dienst neu zu starten habe. Das habe ich gemacht, nur passiert nichts, die Mails kommen weiter rein und werden ganz normal behandelt. Auch in der Log Datei ist nicht von qmail-remote zu lesen, was mich dann auch gewundert hat. Nun habe ich das mal per Hand ausprobiert:
Code:
/var/qmail/bin/qmail-remote [82.155.23.47] [email protected] [email protected]
TEXT TEXT

Das ganze dann mit STRG+D beendet und das flutscht so durch. Dann habe ich mir gedacht, man kann ja auch die .qmail Datei missbrauchen, die sieht nun bei mir so aus, und es klappt auch:

Code:
| true
| /var/qmail/bin/qmail-remote [82.155.23.47] [email protected] [email protected]
| /usr/bin/deliverquota ./Maildir

Aber das kann es doch irgendwie nicht sein, muss ich da noch irgendwas ändern, das es mit der smtproutes Datei geht, da ich sonst die qmail Datei immer anpassen müsste, wo ich nicht wirklich Lust zu habe.
 
Hi,

die Domäne muss in die smtproutes rein (domain.tld:123.123.123.123) und die Domäne selbst muss aus virtualdomains raus. Im Plesk muss E-Mail aktiviert sein.

Wenn nun an der Domäne innerhalb von Plesk was konfiguriert wird, dann kann es vorkommen, das die Domäne wieder in virtualdomains reingeschrieben wird.

Ich habe hier ein kleine Skript geschrieben, welches die Domänen, die in smtproutes stehen aus virtualdomains rausnimmt und einem eine E-Mail schickt:
Code:
#!/bin/zsh

#    22.10.2007    um    0.1.0    release
#                0.1.1    add log-file
#                0.1.2    change some vars
#    15.05.2008    um    0.2.0    change paths, change log
#    21.01.2009    um    0.3.0    change variables, add mail

_lck=/root/`basename $0`.lck
[email protected]
_msg=/root/`basename $0`.msg
_path=/var/qmail/control
_log=/var/log/`basename $0`
touch $_log

if [ -e $_lck ]
then
    echo -en "Prozess gesperrt...\r"
    echo ""|mail -s "Check SMTP Routes - Prozess gesperrt..." -R $_mailto
fi
while [ -e $_lck ]
do
    :
done
touch $_lck
echo -en "                   \r"

if [ -e $_path/virtualdomains.new ]
then
    rm $_path/virtualdomains.new
fi
touch $_path/virtualdomains.new

for _domain in `cat $_path/smtproutes`
do
    if ( grep -q "`echo $_domain|awk '{ print substr( $1, 1, match( $1, ":" ) - 1 ) }'`" $_path/virtualdomains )
    then
        echo -e `date +%d.%m.%Y`" - "`date +%H:%M:%S`" - remove "`echo $_domain|awk '{ print substr( $1, 1, index( $1, ":" ) - 1 ) }'`
        echo    `date +%d.%m.%Y`" - "`date +%H:%M:%S`" - remove "`echo $_domain|awk '{ print substr( $1, 1, index( $1, ":" ) - 1 ) }'` >> $_log
        echo    `date +%d.%m.%Y`" - "`date +%H:%M:%S`" - remove "`echo $_domain|awk '{ print substr( $1, 1, index( $1, ":" ) - 1 ) }'` >> $_msg
        grep -v "`echo $_domain|awk '{ print substr( $1, 1, match( $1, ":" ) - 1 ) }'`" $_path/virtualdomains > $_path/virtualdomains.new
        mv $_path/virtualdomains.new $_path/virtualdomains
        chmod a+r $_path/virtualdomains
#        /etc/init.d/qmail restart
    fi
done

if [ -e $_msg ]
then
    echo ""        >> $_msg
    echo "Done"    >> $_msg
    mail -s "Check SMTP Routes" -R $_mailto < $_msg
    rm $_msg
fi

if [ -e $_lck ]
then
    rm $_lck
fi
Dazu mit crontab -e folgendes eintragen:
Code:
*    *    *    *    *    /root/chksmtproutes >/dev/null
Wenn man wieder die Postfächer von Plesk nutzen möchte, dann muss man nur die Domäne aus smtproutes entfernen und E-Mail im Plesk deaktivieren und wieder aktivieren.

Was jetzt noch fehlt ist eine kleine Erweiterung von Plesk, damit der Domänenbenutzer die SMTP Route selber anlegen kann.

Hilft Dir das weiter?

Grüße,
Ulrich
 
Back
Top