Plesk 8.2 auf Debian 4.0 und Greylisting

eddy

Registered User
Hallo,

ich versuche nach der Anleitung von huschi.net mein Plesk 8.2 mit Greylisting auszustatten. Ich erhalte aber folgende Fehlermeldung, was die Fehlermeldung sagt ist mir klar, allerdings weiß ich nicht wie ich den Fehler beheben soll... :(

Code:
In file included from qmail-pw2u.c:21:
/usr/include/unistd.h:312: error: conflicting types for 'read'
readwrite.h:4: error: previous declaration of 'read' was here
/usr/include/unistd.h:318: error: conflicting types for 'write'
readwrite.h:5: error: previous declaration of 'write' was here
make: *** [qmail-pw2u.o] Error 1

Wer kann mir sagen was ich tun muss?

Danke schon mal im voraus,
Eddy
 
Last edited by a moderator:
Der C-Code von qmail ist entweder uralt und/oder die Patches sind grottig programmiert. (Ich meine ... welcher Programmierer kommt schon auf die Idee, die Standardfunktion "log2" (log2, log2f, log2l - base-2 logarithmic function), für seine eigene Logging-Funktion umzuprogrammieren?)

Ich habe mir mal die Zeit genommen, alle Warnungen und gravierenden Fehler des Tarballs zu bereinigen.

Der "qmail-pw2u.c" fehlten zum Beispiel folgende INCLUDES:

Code:
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>

Bitte lade meinen neuen Tarball herunter und versuche nach meiner
Installation von Greylisting für qmail auf Plesk 8.x
vorzugehen.

Solltest Du Debian haben, wird die von mir erstellte "install.sh" wahrscheinlich nicht funktionieren, weil der Befehl "rpm" nicht bekannt sein wird.

Für Debian-User: Nutze anstatt "install.sh" einfach nur "make".

Die Installation sollte funktionieren mit:
- SuSE 10.x
- Fedora Core 5
und mit Plesk 8.x. Ich habe es schon mit Plesk 8.0 und Plesk 8.1 zum Laufen gebracht.

Gruß
Claus
 
Last edited by a moderator:
Hallo und willkommen an Board!

Die Idee der Fehlerbereinigung hatte ich auch schon mal. Aber die Qmail-Lizenz hat mich bisher davon abgehalten.

Umso überraschter bin ich, daß man beim Download Deiner Version folgenden Text akzeptieren muß:
Unless otherwise specified, these documents or files are for your personal and non-commercial use. © 2007 Claus van Beek. All rights reserved.

huschi.
 
Umso überraschter bin ich, daß man beim Download Deiner Version folgenden Text akzeptieren muß.

Du hast völlig recht, das ändere ich. Die Lizenz ist eigentlich für andere Sachen. Ich habe eine ordentliche Lizenz vergessen.

Ich war am Anfang geneigt, alle Änderungen zu dokumentieren, aber ca. 120 Warnings zu dokumentieren und zu bereinigen ist für so manchen "root" eine Überforderung (leider).

Da Brent den Source-Code veröffentlicht hat und IMHO qmail zwar läuft, aber es nicht an die Gegebenheiten des Jahres 2007 angepasst wurde ("void main ...", etc.). Brent hat auf meine Mails nicht reagiert, einen neuen Tarball online zu stellen.

Ich halte mich auch an das, was der Autor von qmail sagt:
Note that, since it's not copyright infringement for you to apply a patch, it's also not copyright infringement for someone to give you a patch.
(Quelle: http://cr.yp.to/softwarelaw.html)

Im Gegensatz dazu steht:
What does all this mean for the free software world? Once you've legally downloaded a program, you can compile it. You can run it. You can modify it. You can distribute your patches for other people to use. If you think you need a license from the copyright holder, you've been bamboozled by Microsoft. As long as you're not distributing the software, you have nothing to worry about.
(Quelle: http://cr.yp.to/softwarelaw.html)

Man kann sicherlich argumentieren, dass ich nicht nur Bugs beseitigt und den Patch von Brent verbessert habe, sondern, dass ich die ganze Software ausliefere (distribute), aber vielleicht ist auch Verkauf gemeint. Letztendlich tausche ich nur zwei Dateien aus und lasse die restliche Distribution in Ruhe. Was ist mit Strato, hosteurope, Qmailrocks.org - Tarball oder rpmseek.com?

Trotzdem ... Ich mache mich sofort dran, auch in der Lizenz alle Quellen zu nennen und die genannten Hinweise zu übernehmen, da es ja keine Lizenz für qmail gibt.

Nur weil es nicht GPL ist, schreckt mich das nicht ab, eine modifizierte Version online zu stellen, wenn damit jemandem geholfen werden kann. Auch die Benutzer meiner Greylisting-Installation haben am Anfang vergessen die DEVEL-Pakete zu installieren und wundern sich, warum der "make" nicht läuft.

Imperia (CMS) ist zwar Open-Source (Quellcode offen), aber alles andere als frei erhältlich. Dafür gibt es auch dokumentierte Hacks und AddOns.

Danke für Deinen Hinweis, ich gebe Dir/Euch noch Rückmeldung, wenn das geändert ist.

Gruß
Claus
 
Hallo ClausVB, ich habs nun auch mal mit Deinem neuen Tarball probiert (Suse 10.1 / 64er/ Plesk 8.20), er steigt mir leider mit dem Error:

Code:
In file included from qmail-pw2u.c:21:

/usr/include/unistd.h:325: error: conflicting types for âreadâ
readwrite.h:4: error: previous declaration of âreadâ was here
/usr/include/unistd.h:331: error: conflicting types for âwriteâ
readwrite.h:5: error: previous declaration of âwriteâ was here
make: *** [qmail-pw2u.o] Error 1

aus, seufz. hast Du eine Idee ?

Und Dein install.sh liefert mir ein:

Code:
openssl-devel-0.9.8a-18.13
mysql-devel-5.0.18-16
./compile qmail-pw2u.c
In file included from qmail-pw2u.c:21:
/usr/include/unistd.h:325: error: conflicting types for âreadâ
readwrite.h:4: error: previous declaration of âreadâ was here
/usr/include/unistd.h:331: error: conflicting types for âwriteâ
readwrite.h:5: error: previous declaration of âwriteâ was here
make: *** [qmail-pw2u.o] Error 1
#############################################################
#### 'make' finished. Please check for critical errors!  ####
#############################################################
 
Last edited by a moderator:
Greylisting

Hallo zusammen,

ich habe genau das gleiche Problem beim kompilieren wie Bierteufel.
Beim Ausführen des Codes bekomme ich anstatt der 85 eine 30.
Bitte dringend um Hilfe.

Gruß

Joerg
 
- Das aktuelle 1.05 Tarball vom ClausVB - Homepage von Claus van Beek nehmen.
- Nach seiner Anleitung bis install.sh vorgehen.
- Dann beim fehler mit der unistd.h die Zeilen 325 und 331 auskommentieren
- install.sh durchlaufen lassen
- Dann in der unistd.h die Zeilen wieder reinnehmen
- Dann nach Huschi.net seiner Anleitung weiter machen
 
Last edited by a moderator:
Sorry, dass ich erst jetzt antworte, ich bin über Deinen Post nicht per Mail informiert worden. Ich check mal mein CP wegen der Benachrichtigung.


Hallo ClausVB, ich habs nun auch mal mit Deinem neuen Tarball probiert (Suse 10.1 / 64er/ Plesk 8.20), (...)
Habt Ihr die Änderungen für das 64bit-Syste gemacht, die auf meiner Webseite stehen.

Hyperlink zu den Erklärungen 64-bit.

Ansonsten könnte man auch mal versuchen die Zeile 21
Code:
#include <unistd.h>
zu löschen, denn diese habe ich nur wegen einer der ursprünglichen 120 Warnings mit reingenommen.

Läuft das ohne diese Zeile?

Gruß
Claus
 
Empfehlung: Hermes Greylisting-Daemon

Hi,

ich kann mit Plesk (auch Debian) Hermes Antispam Proxy :: Home empfehlen. Ich habe es aus Sourcen kompiliert und mit checkinstall als DEB im System installiert, ich komme von RedHat, ich habe mich noch nicht mit Debian pakaging beschäftigt :)

Hermes bietet als eigenständiger Daemon einen transparnten SMTP-Proxy (mit AUTH und START-TLS, also Userauth und SSL über SMTP), der eine Sqlite3 DB für Greylisting und externe DNS-RBLS benutzt, dazu noch Features wie TCP connection throttling und optionale zusätzliche SMTP-Header. Hermes sendet korrekte SMTP 4xx codes beim Erstkontakt, mit Angabe des Grundes greylisting, und 5xx codes wenn DNS RBL'ed.
Wer mag, kann Stats (auch Anonym) an den Entwickler senden, die werden dann nett auf deren Webseite aufbereitet. Der Entwickler ist ein mittlerer ISP, der die Software wohl seit einigen Jahren einsetzt und quasi erst Version 1.0 freigegeben hat. Die Stats auf der Websseite suggerieren eine Nutzung bei einem ISP, schwere Bugs sollte es nicht mehr geben.

Damit man in Plesk/Qmail nichts ändern muss, lege ich Hermes auf Port 125 und leite per DNAT alle externen Anfragen für Port 25 auf 125 um. Lokale Scripte/MTA's gehen so an Hermes vorbei, und Plesk "bemerkt" nichts von Hermes. Als RBL DNS Liste kann ich Spamcop empfeheln, die Liste hat fast 100% Qualität und ist noch nie richtig negativ aufgefallen.

Wenn Interesse besteht, poste ich gerne mein Startscript und ein paar Zeilen für das Plesk-Watchdog Modul, damit wird Hermes auch überwacht (keine Stats). Ich filtere so 2500 "SPAM Kandidaten" pro Tag.


Gruß MeMeD
 
Damit man in Plesk/Qmail nichts ändern muss, lege ich Hermes auf Port 125 und leite per DNAT alle externen Anfragen für Port 25 auf 125 um. Lokale Scripte/MTA's gehen so an Hermes vorbei, und Plesk "bemerkt" nichts von Hermes. Als RBL DNS Liste kann ich Spamcop empfeheln, die Liste hat fast 100% Qualität und ist noch nie richtig negativ aufgefallen.

Hört sich nicht schlecht an, kommt aber für mich erst in Frage, wenn Greylisting nicht mehr ausreicht. Über das Verfahren mit Spam-Adressen plus Greylisting bekomme ich keinen Spam mehr. Spam-Reduktion ist bei mir mittlerweile 100%.

Trotzdem eine Fage dazu:

hermes-project.com said:
If you are going to install from source, you first need to have sqlite3 installed with it's corresponding development package (usually sqlite3-devel or sqlite3-dev). If you want to install hermes with SSL support, you also need openssl with it's development headers (usually openssl-devel or openssl-dev).
(Quelle: Hermes Antispam Proxy :: Home)

Stimmt das? Muss man echt noch SQLite installieren?

Muss man bei der hier genannten Greylisting-Lösung nämlich nicht. Die läuft mit MySQL.

Gruß
Claus
 
Last edited by a moderator:
Ich hatte es auch ohne die unstd.h probiert, nein da ging es nicht.
Ich kann hier nichts uploaden, sonst hätte ich das Original von Brent mal hochgeladen.

Funktioniert es, wenn Du den Header der "qmail-pw2u.c" wie folgt abänderst

Code:
#include <sys/types.h>
#include <sys/stat.h>
#include "substdio.h"
#include "readwrite.h"
#include "subfd.h"
#include "sgetopt.h"
#include "control.h"
#include "constmap.h"
#include "stralloc.h"
#include "fmt.h"
#include "str.h"
#include "scan.h"
#include "open.h"
#include "error.h"
#include "getln.h"
#include "auto_break.h"
#include "auto_qmail.h"
#include "auto_usera.h"

void die_chdir()
{
  substdio_putsflush(subfderr,"qmail-pw2u: fatal: unable to chdir\n");
  _exit(111);
}

Funktioniert das? Dann mache ich die Änderungen nämlich evtl. rückgängig und lebe mit den Warnings, die dann dadurch erzeugt werden.

Danke schon mal für Deine Hilfe, Bierteufel!

Gruß
Claus
 
Stimmt das? Muss man echt noch SQLite installieren?

Muss man bei der hier genannten Greylisting-Lösung nämlich nicht. Die läuft mit MySQL.

Gruß
Claus

Ja, die libs braucht man, aber SQlite ist sehr diskorientiert, man muss nichts einrichten, der Hermes user muss nur den in Hermes konfigurierbaren Datenpfad lesen und schreiben können. Technisch also nur eine lib Abhängigkeit (bzw. devel-package wenn man kompiliert).

Gruß MeMeD
 
Hallo ClausVB, ich habs nun auch mal mit Deinem neuen Tarball probiert (Suse 10.1 / 64er/ Plesk 8.20), er steigt mir leider mit dem Error:
Code:
In file included from qmail-pw2u.c:21:
/usr/include/unistd.h:325: error: conflicting types for âreadâ
readwrite.h:4: error: previous declaration of âreadâ was here
/usr/include/unistd.h:331: error: conflicting types for âwriteâ
readwrite.h:5: error: previous declaration of âwriteâ was here
make: *** [qmail-pw2u.o] Error 1

Das Problem sollte jetzt "richtig" gelöst sein. Folgenden Source-Code musste ich überarbeiten (Datei: "readwrite.h"):

Code:
#ifndef READWRITE_H
#define READWRITE_H

// CVB 2007-09-22: Refactoring, Error with SuSE 10.1

// extern int read();
// extern int write();
// => delivers the following error (SuSE 10.1):

/*
./compile qmail-pw2u.c
In file included from qmail-pw2u.c:21:
/usr/include/unistd.h:325: error: conflicting types for âreadâ
readwrite.h:4: error: previous declaration of âreadâ was here
/usr/include/unistd.h:331: error: conflicting types for âwriteâ
readwrite.h:5: error: previous declaration of âwriteâ was here
make: *** [qmail-pw2u.o] Error 1
*/

// using OS functions instead:

#include <unistd.h>

#endif

Bei mir kompiliert es jetzt problemlos durch.

Ich wäre Euch sehr dankbar, wenn Ihr das auf einer 10.1 oder 10.2 mal testen könntet.

Danke und Gruß
Claus

PS: Der neue Tarball ist bereits released.
 
Last edited by a moderator:
Hallo Leute,

ich habe Debian "Sarge" auf meinem Server laufen und Plesk 8.2.0 installiert. Jetzt wollte ich Greylisting installieren um das Aufkommen des SPAMs zu reduzieren.
Ich habe nach der Anleitung von ClausVB versucht das zu installieren komme aber nur bis zum kompilieren. Dort kommen dann zig Fehlermeldungen und ich komme nicht weiter.
Code:
#:/usr/src/qmail-1.05# make
./compile qmail-local.c
qmail-local.c:1:20: string.h: No such file or directory
qmail-local.c:2:19: stdio.h: No such file or directory
qmail-local.c:3:23: sys/types.h: No such file or directory
qmail-local.c:4:22: sys/stat.h: No such file or directory
qmail-local.c:5:20: dirent.h: No such file or directory
qmail-local.c:6:18: time.h: No such file or directory
In file included from qmail-local.c:24:
error.h:4:19: errno.h: No such file or directory
qmail-local.c: In function `temp_fork':
qmail-local.c:50: error: `errno' undeclared (first use in this function)
qmail-local.c:50: error: (Each undeclared identifier is reported only once
qmail-local.c:50: error: for each function it appears in.)
qmail-local.c: In function `temp_read':
qmail-local.c:51: error: `errno' undeclared (first use in this function)
qmail-local.c: In function `temp_qmail':
qmail-local.c:55: error: `errno' undeclared (first use in this function)
qmail-local.c: At top level:
qmail-local.c:64: error: `NULL' undeclared here (not in a function)
qmail-local.c:64: error: initializer element is not constant
qmail-local.c:64: error: (near initialization for `dir_names[2]')
qmail-local.c: In function `get_dir_size':
qmail-local.c:103: error: storage size of `st' isn't known
qmail-local.c:104: error: `DIR' undeclared (first use in this function)
qmail-local.c:104: error: `dirs' undeclared (first use in this function)
qmail-local.c:111: error: `NULL' undeclared (first use in this function)
qmail-local.c:117: warning: assignment makes pointer from integer without a cast
qmail-local.c:126: error: dereferencing pointer to incomplete type
qmail-local.c:128: error: `S_IFMT' undeclared (first use in this function)
qmail-local.c:129: error: `S_IFREG' undeclared (first use in this function)
qmail-local.c:134: error: `S_IFDIR' undeclared (first use in this function)
qmail-local.c:136: error: dereferencing pointer to incomplete type
qmail-local.c:136: error: dereferencing pointer to incomplete type
qmail-local.c: In function `get_mbox_size':
qmail-local.c:165: error: `NULL' undeclared (first use in this function)
qmail-local.c: In function `get_mbox_quota':
qmail-local.c:180: error: `FILE' undeclared (first use in this function)
qmail-local.c:180: error: `f' undeclared (first use in this function)
qmail-local.c:181: error: storage size of `st' isn't known
qmail-local.c:205: error: `NULL' undeclared (first use in this function)
qmail-local.c: In function `form_mail_filename':
qmail-local.c:272: error: storage size of `st' isn't known
qmail-local.c:285: error: `errno' undeclared (first use in this function)
qmail-local.c: At top level:
qmail-local.c:293: error: syntax error before '*' token
qmail-local.c: In function `tzoffset':
qmail-local.c:296: error: storage size of `gmt' isn't known
qmail-local.c:300: error: invalid type argument of `unary *'
qmail-local.c:301: warning: assignment makes pointer from integer without a cast
qmail-local.c:303: error: dereferencing pointer to incomplete type
qmail-local.c:303: error: dereferencing pointer to incomplete type
qmail-local.c:305: error: dereferencing pointer to incomplete type
qmail-local.c:307: error: dereferencing pointer to incomplete type
qmail-local.c:309: error: dereferencing pointer to incomplete type
qmail-local.c:311: error: dereferencing pointer to incomplete type
qmail-local.c: In function `maildir_child':
qmail-local.c:336: error: `time_t' undeclared (first use in this function)
qmail-local.c:336: error: syntax error before "qw_timestamp"
qmail-local.c:340: error: `errno' undeclared (first use in this function)
qmail-local.c:383: error: `qw_timestamp' undeclared (first use in this function)
qmail-local.c:383: error: `NULL' undeclared (first use in this function)
qmail-local.c:384: warning: assignment makes pointer from integer without a cast
qmail-local.c:387: error: dereferencing pointer to incomplete type
qmail-local.c:387: error: dereferencing pointer to incomplete type
qmail-local.c:387: error: dereferencing pointer to incomplete type
qmail-local.c:388: error: dereferencing pointer to incomplete type
qmail-local.c:388: error: dereferencing pointer to incomplete type
qmail-local.c:388: error: dereferencing pointer to incomplete type
qmail-local.c:388: error: dereferencing pointer to incomplete type
qmail-local.c: In function `mailfile':
qmail-local.c:488: error: `errno' undeclared (first use in this function)
qmail-local.c: In function `mailprogram':
qmail-local.c:557: error: `errno' undeclared (first use in this function)
qmail-local.c: In function `checkhome':
qmail-local.c:623: error: storage size of `st' isn't known
qmail-local.c:626: error: `errno' undeclared (first use in this function)
qmail-local.c: In function `qmeox':
qmail-local.c:639: error: storage size of `st' isn't known
qmail-local.c:648: error: `errno' undeclared (first use in this function)
qmail-local.c: In function `qmeexists':
qmail-local.c:658: error: storage size of `st' isn't known
qmail-local.c:664: error: `errno' undeclared (first use in this function)
qmail-local.c:671: error: `S_IFMT' undeclared (first use in this function)
qmail-local.c:671: error: `S_IFREG' undeclared (first use in this function)
qmail-local.c: In function `main':
qmail-local.c:801: error: `errno' undeclared (first use in this function)
qmail-local.c:760: warning: return type of `main' is not `int'
make: *** [qmail-local.o] Error 1
Habt ihr vielleicht eine Idee??
 
Back
Top