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. relaylock 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! make setup check darf nicht (!!!) ausgeführt werden. Auch ./config und make install sollte man vermeiden.

Typischer Fehler:

undefined references to `errno'

Wird gelöst indem man die error.h 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 xinetd beendet werden, damit die Dateien frei zum überspielen sind.
    Typischer Fehler hierbei: qmail-smtpd läßt sich nicht überspielen weil textfile busy. Entweder mit killall qmail-smtpd 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 /var/qmail/bin/. Im Falle des qmailqueue-Patch sind dies:
condredirect, forward, qmail-inject, qmail-local, qmail-qmqpd, qmail-qmtpd, qmail-send, qmail-smtpd, qreceipt.

Zum Installieren muß Qmail als auch xinetd gestoppt werden.

SMTP-Logging:

Das SMTP-Programm qmail-smtpd 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 qmail-smtpd.c 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 make kopiert man dann die neue qmail-smtpd nach /var/qmail/bin/.
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