Mail-Server » Qmail

ID #1237 Plesk/Qmail: Qmail selber kompilieren

Problem:

Aus gewissen Gründen möchte man evtl. seinen Qmail selber kompilieren. Nur hat SWsoft den Qmail für Plesk ein bischen verändert/erweitert/verbessert.

Lösung:

Im Grunde braucht man die Original Qmail-Sourcen und folgenden Patch aus der swsoft knowledgebase. Achtet auf Eure Plesk-Version! (Patch für Plesk 7.4 reloaded) verfügbar und es sind nur die Qmail-Patches. Erweiterungen wie z.B. <code>relaylockcode> finden sich nicht als Sourcecode.

#download
cd /usr/local/src
wget http://www.qmail.org/qmail-1.03.tar.gz

#hier die Patches für Plesk 8.2:
wget http://kb.swsoft.com/attachments/1161/plesk82_qmail_patches.tgz
#oder die Patches für Plesk 8.3:
wget http://kb.swsoft.com/attachments/1161/plesk83_qmail_patches.tgz

#auspacken:
tar xzf qmail-1.03.tar.gz
tar xzf qmail_patches.tar.gz

#patchen cd qmail-1.03
for p in ../qmail_patches/patch-* ; do patch -p0 < $p ; done
patch -p0 < ../qmail_patches/fr49-quota-patch

Theoretisch kann man nun seine Änderungen machen und dann kompilieren. Aber...
Achtung! <code>make setup checkcode> darf nicht (!!!) ausgeführt werden. Auch <code>./configcode> und <code>make installcode> sollte man vermeiden.

Typischer Fehler:

undefined references to `errno'

Wird gelöst indem man die <code>error.hcode> entsprechend ändert:

//extern int errno;
#include <errno.h>

Installation:

Je nachdem was man austauschen will muß vorher der entsprechende Dienst runter gefahren werden:

  • Nur Dateien für den Mail-Empfang:
    Hier muß lediglich <code>xinetdcode> beendet werden, damit die Dateien frei zum überspielen sind.
    Typischer Fehler hierbei: <code>qmail-smtpdcode> läßt sich nicht überspielen weil <code>textfile busycode>. Entweder mit <code>killall qmail-smtpdcode> komplett beenden oder einfach etwas (bis zu 5 Minuten) warten.
  • Dateien für den Mail-Versand und lokaler Zustellung:
    Für diese Dateien sollte der Qmail beendet werden.

Beispiele:

Zwei klassische Beispiele:

qmail-queue-Patch

Wir nehmen den qmail-queue-Patch mit hinzu:

wget http://www.qmail.org/qmailqueue-patch
patch -p1 < qmailqueue-patch
#Kompilieren: make WITH_QMAILQUEUE_PATCH=yes

Nach dem Compilieren kopiert man dann nur die wirklich veränderten Programme nach <code>/var/qmail/bin/code>. Im Falle des qmailqueue-Patch sind dies:
<code>condredirectcode>, <code>forwardcode>, <code>qmail-injectcode>, <code>qmail-localcode>, <code>qmail-qmqpdcode>, <code>qmail-qmtpdcode>, <code>qmail-sendcode>, <code>qmail-smtpdcode>, <code>qreceiptcode>.

Zum Installieren muß Qmail als auch xinetd gestoppt werden.

SMTP-Logging:

Das SMTP-Programm <code>qmail-smtpdcode> ist sehr stumm beim Empfang von Emails. Daher wollen wir anhand von SMTP-Auth etwas mehr Leben ins Logfile bringen.
Dazu bearbeiten wir die Datei <code>qmail-smtpd.ccode> und ergänzen nur die Fett gedruckten Zeilen an der entsprechenden Stelle:

...
#include "wait.h"
#include "fd.h"
#include <syslog.h> /* huschi */
...
static void smtpauth_authenticate(void)
{
...
close(fds[1]);
wait_pid(&st, pid);
openlog("qmail-smtpd", 0, LOG_MAIL); /* huschi */
if (wait_exitcode(st) == 0) {
out("235 go ahead\r\n");
flush();
syslog(LOG_INFO, "smtp-auth[%i] ok for login: %s", getpid(), smtpauthlogin); /* huschi */
relayclient="";
authenticated=1;
return;
}
sleep(2);
out("535 auth failure\r\n");
flush();
syslog(LOG_DEBUG, "smtp-auth[%i] fail for login: %s", getpid(), smtpauthlogin); /* huschi */
return;
}

Nach einem <code>makecode> kopiert man dann die neue <code>qmail-smtpdcode> nach <code>/var/qmail/bin/code>.
Zum Installieren sollte kurz xinetd beendet werden.
Den Erfolg kann man dann im Maillog verfolgen:

tail -f /usr/local/psa/var/log/maillog | grep smtpd

 

sozial Bookmarking
Bookmarken bei YIGG Bookmarken bei Mister-Wong Bookmarken bei Icio Bookmarken bei del.icio.us Bookmarken bei Technorati Bookmarken bei Furl Bookmarken bei Spurl Bookmarken bei Yahoo Bookmarken bei Google

vom 2007-05-18 13:17, zuletzt 2008-02-19 13:43     Artikel ausdrucken Artikel weiterempfehlen Als PDF-Datei anzeigen

Dieser Inhalt ist unter der Creative-Commons Lizenz lizensiert.

Probleme bitte im Server-Support-Forum diskutieren.

überflüssig 1 2 3 4 5 wertvoll  
Durchschnittliche Bewertung:   5 von 5 (1 Bewertungen)

Artikel kommentieren