Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

Problem mit "make" bei Postfix - [Linux Magazin Ho

Alles rund um das Internet, Internet-Anwendungen (E-Mail, Surfen, Cloud usw.) und das Einrichten von Netzwerken einschl. VPN unter Linux

Moderator: Moderatoren

Gesperrt
rhe
Newbie
Newbie
Beiträge: 7
Registriert: 17. Jan 2005, 14:18

Problem mit "make" bei Postfix - [Linux Magazin Ho

Beitrag von rhe »

Hallo,

ich habe ein problem mit dem make befehl bei Postfix 2.0.19.

Unter SuSE 9.1 Prof habe ich das SRC RPM von Postfix 2.0.19 vom SuSE FTP Server installiert. Ich habe dann das Postfix SRC .tar.gz ausgepackt und

"make makefiles 'CCARGS=-DHAS_MYSQL -I/usr/include/mysql -DUSE_SASL_AUTH -I/usr/include/sasl' \
'AUXLIBS=-L/usr/lib/mysql-lmysqlclient -lz -lm -lsasl2'"

ausgeführt. Dies hat ohne Probleme funktioniert. Danach habe ich make ausgeführt. Hier hab es ein paar Probleme, aber durch die Installation der Quell RPMs konnte ich diese umgehen. Bei einem Problem hänge ich jetzt aber.

##########################################
gcc -Wmissing-prototypes -Wformat -DHAS_MYSQL -I/usr/include/mysql -DUSE_SASL_AUTH -I/usr/include/sasl -DSNAPSHOT -g -O -I. -I../../include -DLINUX2 -o error error.o ../../lib/libmaster.a ../../lib/libglobal.a ../../lib/libutil.a -L/usr/lib/mysql-lmysqlclient -lz -lm -lsasl2 -ldb -lnsl -lresolv
../../lib/libglobal.a(dict_mysql.o)(.text+0x76): In function `dict_mysql_lookup':
/usr/src/packages/SOURCES/postfix/postfix-2.0.19-20040312/src/global/dict_mysql.c:219: undefined reference to `mysql_escape_string'
../../lib/libglobal.a(dict_mysql.o)(.text+0x12b):/usr/src/packages/SOURCES/postfix/postfix-2.0.19-20040312/src/global/dict_mysql.c:240: undefined reference to `mysql_num_rows'
../../lib/libglobal.a(dict_mysql.o)(.text+0x1a2):/usr/src/packages/SOURCES/postfix/postfix-2.0.19-20040312/src/global/dict_mysql.c:251: undefined reference to `mysql_fetch_row'
../../lib/libglobal.a(dict_mysql.o)(.text+0x1f9):/usr/src/packages/SOURCES/postfix/postfix-2.0.19-20040312/src/global/dict_mysql.c:258: undefined reference to `mysql_free_result'
../../lib/libglobal.a(dict_mysql.o)(.text+0x258):/usr/src/packages/SOURCES/postfix/postfix-2.0.19-20040312/src/global/dict_mysql.c:254: undefined reference to `mysql_num_fields'
../../lib/libglobal.a(dict_mysql.o)(.text+0x27b):/usr/src/packages/SOURCES/postfix/postfix-2.0.19-20040312/src/global/dict_mysql.c:268: undefined reference to `mysql_free_result'
../../lib/libglobal.a(dict_mysql.o)(.text+0x3a6): In function `plmysql_query':
/usr/src/packages/SOURCES/postfix/postfix-2.0.19-20040312/src/global/dict_mysql.c:326: undefined reference to `mysql_query'
../../lib/libglobal.a(dict_mysql.o)(.text+0x3b7):/usr/src/packages/SOURCES/postfix/postfix-2.0.19-20040312/src/global/dict_mysql.c:327: undefined reference to `mysql_store_result'
../../lib/libglobal.a(dict_mysql.o)(.text+0x3e5):/usr/src/packages/SOURCES/postfix/postfix-2.0.19-20040312/src/global/dict_mysql.c:335: undefined reference to `mysql_error'
../../lib/libglobal.a(dict_mysql.o)(.text+0x4ba): In function `plmysql_connect_single':
/usr/src/packages/SOURCES/postfix/postfix-2.0.19-20040312/src/global/dict_mysql.c:370: undefined reference to `mysql_init'
../../lib/libglobal.a(dict_mysql.o)(.text+0x4d9):/usr/src/packages/SOURCES/postfix/postfix-2.0.19-20040312/src/global/dict_mysql.c:371: undefined reference to `mysql_real_connect'
../../lib/libglobal.a(dict_mysql.o)(.text+0x518):/usr/src/packages/SOURCES/postfix/postfix-2.0.19-20040312/src/global/dict_mysql.c:377: undefined reference to `mysql_error'
../../lib/libglobal.a(dict_mysql.o)(.text+0x567): In function `plmysql_close_host':
/usr/src/packages/SOURCES/postfix/postfix-2.0.19-20040312/src/global/dict_mysql.c:388: undefined reference to `mysql_close'
../../lib/libglobal.a(dict_mysql.o)(.text+0x58a): In function `plmysql_down_host':
/usr/src/packages/SOURCES/postfix/postfix-2.0.19-20040312/src/global/dict_mysql.c:399: undefined reference to `mysql_close'
../../lib/libglobal.a(dict_mysql.o)(.text+0x9cd): In function `plmysql_dealloc':
/usr/src/packages/SOURCES/postfix/postfix-2.0.19-20040312/src/global/dict_mysql.c:565: undefined reference to `mysql_close'
collect2: ld returned 1 exit status
make: *** [error] Error 1
make: *** [update] Error 1
##########################################

Das MYSQL PAM Modul habe ich vorher erfolgreich kompiliert und installiert.

Danke für die Hilfe :)
Benutzeravatar
oc2pus
Ultimate Guru
Ultimate Guru
Beiträge: 6506
Registriert: 21. Jun 2004, 13:01

Beitrag von oc2pus »

zum kompilieren brauchst du die mySQL-devel Pakete!!
tell people what you want to do, and they'll probably help you to do it.
PackMan
LinWiki : Das Wiki für Linux User
rhe
Newbie
Newbie
Beiträge: 7
Registriert: 17. Jan 2005, 14:18

Beitrag von rhe »

Die mysql-devel pakete sind installiert.
Desti
Member
Member
Beiträge: 85
Registriert: 11. Jan 2005, 14:40
Wohnort: Duisburg

Beitrag von Desti »

Dann scheinen sie aber nicht korrekt installiert zu sein.

Wieso benutzt du nicht das fertig kompillierte Paket ?
Benutzeravatar
oc2pus
Ultimate Guru
Ultimate Guru
Beiträge: 6506
Registriert: 21. Jun 2004, 13:01

Beitrag von oc2pus »

gcc -Wmissing-prototypes -Wformat -DHAS_MYSQL -I/usr/include/mysql -DUSE_SASL_AUTH -I/usr/include/sasl -DSNAPSHOT -g -O -I. -I../../include -DLINUX2 -o error error.o ../../lib/libmaster.a ../../lib/libglobal.a ../../lib/libutil.a -L/usr/lib/mysql-lmysqlclient -lz -lm -lsasl2 -ldb -lnsl -lresolv
../../lib/libglobal.a(dict_mysql.o)(.text+0x76): In function `dict_mysql_lookup':
/usr/src/packages/SOURCES/postfix/postfix-2.0.19-20040312/src/global/dict_mysql.c:219: undefined reference to `mysql_escape_string'
der Linker findet nicht die richtigen Bibliotheken und hat deshalb undefined references ..
==> also fehlen dir linklibs
==> es fehlen noch weitere devel Pakete

ODER:
du hast zwar alle linklibs, aber die passen nicht zu der Version welche du da kompilieren willst.

Warum verwendest du das src.rpm ?
Welche Postfix Version willst du haben ?
Welche SuSE Version ?

Vielleicht hilft dir dieses Vorgehen:
Variante 1:
/usr/lib/rpmb --rebuild postfix-xxx-y.src.rpm

Varianate 2:
rpm -i postfix-xxx-y.src.rpm
cd /usr/src/packages
cd SOURCES
hier das neue tar.gz hinkopieren
cd ..
cd SPECS
postfix.spec anpassen (Version anpassen, neue Compile-Optionen setzen ..)
cd ..
/usr/lib/rpm/rpmb -bb SPECS/postfix.spec

In beiden Varianten steht das Ergebnis in /usr/src/packages/i[3456]86 als RPM
tell people what you want to do, and they'll probably help you to do it.
PackMan
LinWiki : Das Wiki für Linux User
rhe
Newbie
Newbie
Beiträge: 7
Registriert: 17. Jan 2005, 14:18

Beitrag von rhe »

ich werd das Paket mal mit YAST deinstallieren und wieder installieren. Ich brauche ein Postfix mit MYSQL support. Deshalb die neukompilierung. Gibt es hier auch einen anderen weg?
rhe
Newbie
Newbie
Beiträge: 7
Registriert: 17. Jan 2005, 14:18

Fragen

Beitrag von rhe »

>Warum verwendest du das src.rpm ?

Ich habe im Linux Magazin 12/04 gelesen, dass ich Postfix neukompilieren muss um MYSQL support zu erhalten.

>Welche Postfix Version willst du haben ?

eine Postfix Version mit MYSQL support.

>Welche SuSE Version ?

Ich verwende SuSE 9.1 Prof.
Desti
Member
Member
Beiträge: 85
Registriert: 11. Jan 2005, 14:40
Wohnort: Duisburg

Beitrag von Desti »

rhe
Newbie
Newbie
Beiträge: 7
Registriert: 17. Jan 2005, 14:18

Beitrag von rhe »

ich habe jetzt das Problem mit dem Postfix kompilieren so gelöst, dass ich mir ein fertiges RPM mit MYSQL Unterstützung für SuSE 9.1 von http://www.norrbring.biz/SuSE/ geholt habe.

Die Variante 2 von oc2pus habe ich ausprobiert. Allerdings mit dem gleichen Fehler bein ausführen von "/usr/lib/rpm/rpmb -bb SPECS/postfix.spec".

Ich habe jetzt ein neues Problem. Wenn ich in /etc/init.d cyrus starte scheint dieser zu starten. Im Ereignissprotokoll steht dann folgendes:

Jan 18 15:08:45 mail master[3900]: setrlimit: Unable to set file descriptors limit to -1: Operation not permitted
Jan 18 15:08:45 mail master[3900]: retrying with 1024 (current max)


ein "cyrus status" verrät mir, dass cyrus nicht läuft. Hier meine /etc/cyrus.conf:

START {
# do not delete this entry!
recover cmd="ctl_cyrusdb -r"
}
# UNIX sockets start with a slash and are put into /var/lib/imap/socket
SERVICES {
# add or remove based on preferences
imap cmd="imapd" listen="213.252.150.136:imap" prefork=0
imaplocal cmd="imapd -C /etc/imapd-local.conf" listen="127.0.0.1:imap"
prefork=0
imaps cmd="imapd -s" listen="213.252.150.136:imaps" prefork=0
imapslocal cmd="imapd -C /etc/imapd-local.conf" listen="127.0.0.1:imaps"
prefork=0
pop3 cmd="pop3d" listen="pop3" prefork=0
pop3s cmd="pop3d -s" listen="pop3s" prefork=0
sieve cmd="timsieved" listen="213.252.150.136:sieve" prefork=0
sievelocal cmd="timsieved -C /etc/imapd-local.conf listen="127.0.0.1:sieve"
prefork=0
# at least one LMTP is required for delivery
lmtpunix cmd="lmtpd" listen="/usr/lib/cyrus/bin/lmtpd" prefork=0
}
EVENTS {
# this is required
checkpoint cmd="ctl_cyrusdb -c" period=30
# this is only necessary if using duplicate delivery suppression
delprune cmd="ctl_deliver -E 3" period=1440
# this is only necessary if caching TLS sessions
tlsprune cmd="tls_prune" period=1440
}

Bei dem System handelt es sich um ein SuSE 9.1. , Postfix 2.1.4.

Ein "cyradm --user cyrus --server localhost --auth plain" schlägt mit einem cyradm: cannot connect to server fehl.


Danke .....
Benutzeravatar
oc2pus
Ultimate Guru
Ultimate Guru
Beiträge: 6506
Registriert: 21. Jun 2004, 13:01

Beitrag von oc2pus »

das ist keine Fehlermeldung, sondern ein Hinweis.

dein Problem liegt hier:

Code: Alles auswählen

  lmtpunix      cmd="lmtpd" listen="/var/spool/postfix/public/lmtp" prefork=1
Vergleiche diesen Eintrag mit deinem .... wichtig ist das prefork=1 und der korrekte Pfad zu dem lmtpd das ist ein "Socket" KEIN Programm :)


zum compile-Problem:
hat das rpmb -bb keine weiteren RPMs angefordert ?
tell people what you want to do, and they'll probably help you to do it.
PackMan
LinWiki : Das Wiki für Linux User
rhe
Newbie
Newbie
Beiträge: 7
Registriert: 17. Jan 2005, 14:18

Beitrag von rhe »

ich habe in cyrus.conf den code wie folgt angepasst:

"lmtpunix cmd="lmtpd" listen="/usr/lib/cyrus/bin/lmtpd" prefork=1"

Ein "find / | grep lmtpd" sagt mir, dass lmtpd den folgenden Pfad hat: "/usr/lib/cyrus/bin/lmtpd". Das müsste stimmen.

Wenn ich jetzt cyrus startet, sieht alles nach einem erfolgreichen programmstart aus ("done"). Ein cyrus stop status gibt aber immernoch "dead" als status zurück. Und "cyradm --user cyrus --server localhost --auth plain" nach einem "cyrus start" kann sich trotzdem nicht mit dem server verbinden.

Nachdem ich Cyrus gestartet habe erhalte ich folgenden message Eintrag:

Jan 18 15:51:11 mail master[2548]: setrlimit: Unable to set file descriptors limit to -1: Operation not permitted
Jan 18 15:51:11 mail master[2548]: retrying with 1024 (current max)
Jan 18 15:51:11 mail master[2548]: process started
Jan 18 15:51:11 mail master[2549]: about to exec /usr/lib/cyrus/bin/ctl_cyrusdb
Jan 18 15:51:12 mail ctl_cyrusdb[2549]: recovering cyrus databases
Jan 18 15:51:12 mail ctl_cyrusdb[2549]: skiplist: recovered /var/lib/imap/mailboxes.db (0 records, 144 bytes) in 0 seconds
Jan 18 15:51:12 mail ctl_cyrusdb[2549]: done recovering cyrus databases


Nochmal zum compile-Problem:
rpmb -bb wollte etliche RPMs installiert bekommen. Diese habe ich dann über YAST installiert. Nachdem anscheinend alle benötigten RPMs da waren, habe ich mit dem Rebuild begonnen. Dieser brach aber nach einer ganzen Weile ab. Den genauen Fehlertexte habe ich leider nicht mehr.
Benutzeravatar
oc2pus
Ultimate Guru
Ultimate Guru
Beiträge: 6506
Registriert: 21. Jun 2004, 13:01

Beitrag von oc2pus »

rhe hat geschrieben:ich habe in cyrus.conf den code wie folgt angepasst:

"lmtpunix cmd="lmtpd" listen="/usr/lib/cyrus/bin/lmtpd" prefork=1"

Ein "find / | grep lmtpd" sagt mir, dass lmtpd den folgenden Pfad hat: "/usr/lib/cyrus/bin/lmtpd". Das müsste stimmen.
FALSCH
nicht das lmtpd Programm steht dort, sondern der Socket unter welchem cyrus mit anderen Programmen Daten austauscht!

Der korrespondierende Eintrag dazu findet sich in der /etc/postfix/main.cf unter dem Key: mailbox_transport=
d.h. der postfix versucht über diesen Socket seine mails an den cyrus zu übergeben ...
und i.d.R. steht dieser socket im Verzeichnis: /var/spool/postfix/public/
(lmtp = linux-mail-transfer-protokoll)

rhe hat geschrieben:Nochmal zum compile-Problem:
rpmb -bb wollte etliche RPMs installiert bekommen. Diese habe ich dann über YAST installiert. Nachdem anscheinend alle benötigten RPMs da waren, habe ich mit dem Rebuild begonnen. Dieser brach aber nach einer ganzen Weile ab. Den genauen Fehlertexte habe ich leider nicht mehr.
ok, meine Hoffnung war, das durch das spec-file alle fehlenden Bibliotheken und Pakete installiert würden ... abr ohen die Fehlermeldung ist es jetzt hypothetisch darüber zu diskutieren ;)

kleine Anmerkung am Rande:
Und wir werden jetzt Off-Topic .. es geht jetzt um die Kommunikation postfix - cyrus :(
aber wie immer, keine Disziplin bei den Fragenden ... ich hoffe du hast schon mal hier im Forum gesucht und stundenlang ellenlange mega-threads gelesen ... und nix gefunden. Warum, das so ist .. du gibst dir selbst ein gutes Beispiel ...
tell people what you want to do, and they'll probably help you to do it.
PackMan
LinWiki : Das Wiki für Linux User
Gesperrt