hi there,
it seems a recent upgrade broke my policyd-weight installation and googling the error lead me to this bug: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=752845
If I read that bug right, the problem should be solved with the latest version yet I still experience it.
**my system: **
Debian 8
root@alfred:/tmp# policyd-weight -v
policyd-weight version: 0.1.15 beta-2, CacheVer: 5
Perl version: 5.020002
Net::DNS version: 1.03
OS: Linux 4.2.3-2-pve
Error logs:
Dec 6 17:18:17 alfred postfix/policyd-weight[22324]: child: spawned
Dec 6 17:18:17 alfred postfix/policyd-weight[22324]: warning: child: err: Undefined subroutine &Net::DNS::Packet::dn_expand_PP called at /usr/sbin/policyd-weight line 3590, <gen7> line 26.#012
Dec 6 17:18:18 alfred postfix/policyd-weight[22218]: master: child 22324 exited
Dec 6 17:18:18 alfred postfix/policyd-weight[22326]: child: spawned
Dec 6 17:18:18 alfred postfix/policyd-weight[22326]: warning: child: err: Undefined subroutine &Net::DNS::Packet::dn_expand_PP called at /usr/sbin/policyd-weight line 3590, <gen9> line 26.#012
Dec 6 17:18:18 alfred postfix/smtpd[22319]: warning: problem talking to server 127.0.0.1:12525: Success
Dec 6 17:18:18 alfred postfix/smtpd[22319]: NOQUEUE: reject: RCPT from mail-wm0-f51.google.com[74.125.82.51]: 451 4.3.5 Server configuration problem; from=<my-gmail> to=<my-other> proto=ESMTP helo=<mail-wm0-f51.google.com></mail-wm0-f51.google.com></my-other></my-gmail></gen9></gen7>
I'd be happy to share more info if you require it and would be happy about a solution or at least a pointer towards the solution.
Hi, i got the bad solotion staing on the old net-dns perl lib.
Do not use 1.40.x
See: https://bugs.gentoo.org/show_bug.cgi?id=538902
Jörg, I'm totally lost. Can you explain a bit please?
reading the link you posted, I see you're all talking about older versions, I have
Net::DNS version: 1.03
Then I see you posted a patch:
diff -Nru policyd-weight-0.1.15.2/debian/changelog policyd-weight-0.1.15.2/debian/changelog
but how does my version: policyd-weight version: 0.1.15 beta-2, CacheVer: 5 fit in with those versions? I'm on a beta, can i use that patch?
Anythign else I'd need to do?
Anyone? This has been a really important part of my setup :-(
Fix to use Net-DNS-1.40.0.
This patch is from debian 1.5.2-11 :
https://sources.debian.net/src/policyd-weight/0.1.15.2-11/debian/patches/10_replace_net_dns_dn_expand.patch/
Thanks to James Cloos and Werner Detter.
Link to gentoo bugs:
https://bugs.gentoo.org/show_bug.cgi?id=538902
Jört würde es dir etwas ausmachen das genauer zu erklären? Der Patch zeigt Änderungen an die in meiner Version von policyd-weight so nicht stehen.
ich habe: # VERSION: 0.1.15 beta-2 (wenn ich mir /usr/sbin/policyd-weight anschaue)
Wo kriege ich die 1.5.2-11 die du erwähnst her?
Allerdings sagt apt-get was anderes:
Wenn ich mir aber die von dir empfohlene Version anschaue: https://sources.debian.net/src/policyd-weight/0.1.15.2-11/policyd-weight/ da steht im Source code aber auch:
VERSION: 0.1.15 beta-2dann steht da auch nichts drin von dem was im Patch erwähnt wird:
weder:
Wie soll ich denn einen PAtch auf was anwenden das ganz anders aussieht?
Das Problem ist, das es das "unstable ist", deswegen auch 11 und nicht 10!
Ich verwende Debain wegen solchem und weit aus schlimmeren Unfug nicht mehr.
Nun zur DoIt yourself Lösung:
Also in meiner Datei zum bauen des paketes unter gentoo steht folgendes drin:
unter gentoo ist das die: /usr/portage/mail-filter/policyd-weight/policyd-weight-0.1.15.2-r1.ebuild
SRC_URI="http://www.policyd-weight.org/releases/${P}.tar.gz"
Wenn man nun bei http://www.policyd-weight.org/releases/ das ${P} mit der Version ohne -r1 nimmt, kommt das dabei heraus:
wget http://www.policyd-weight.org/releases/policyd-weight-0.1.15.2.tar.gz
Damit hast du die Version, die ich habe.
Da es in gentoo keine patches zu geben scheint, hat man damit die plain Version von sourceforge.
Wohl nicht die 1.14 aber die 1.15!
Die Datei um die es hier geht ist wenn man das tar.gz ausgepack hat in policyd-weight-0.1.15.2/policyd-weight.
Diese wird in gentoo unter /usr/libexec/postfix/policyd-weight installiert.
Wo das bei dir ist, weiß ich nicht.
Heraus kommt bei mir dann als patch:
diff -Nur policyd-weight-0.1.15.2/policyd-weight /usr/libexec/postfix/policyd-weight > 10_replace_net_dns_dn_expand.patch
--- policyd-weight-0.1.15.2/policyd-weight 2011-09-03 15:55:02.000000000 +0200
+++ /usr/libexec/postfix/policyd-weight 2016-04-18 11:03:16.412378333 +0200
@@ -69,7 +69,6 @@
use Sys::Syslog qw(:DEFAULT setlogsock);
use Net::DNS;
use Net::IP;
-use Net::DNS::Packet qw(dn_expand);
use IO::Socket::INET;
use IO::Socket::UNIX;
use IO::Select;
@@ -3588,7 +3587,8 @@
my ($id, $bf, $qc, $anc, $nsc, $arc, $qb) =
unpack('n n n n n n a*', $buf);
Was jetzt aber noch ein Problem ist, ist das man den patch so nicht einspielen kann, weil die pfade falsch sind.
Die beiden ersten Zeilen müssen angepasst werden, ich nenne die immer in old und new um:
--- old/policyd-weight 2011-09-03 15:55:02.000000000 +0200
+++ new/policyd-weight 2016-04-18 11:03:16.412378333 +0200
@@ -69,7 +69,6 @@
use Sys::Syslog qw(:DEFAULT setlogsock);
use Net::DNS;
use Net::IP;
-use Net::DNS::Packet qw(dn_expand);
use IO::Socket::INET;
use IO::Socket::UNIX;
use IO::Select;
@@ -3588,7 +3587,8 @@
my ($id, $bf, $qc, $anc, $nsc, $arc, $qb) =
unpack('n n n n n n a*', $buf);
So, und nun kann man für die 1.15 diesen patch einspielen.
cd zum Verzeichniss, in dem sich das policyd-weight script befindet, und
patch -p1 < Verzeichniss, wo der patch ist mit patch
cd /usr/libexec/postfix/
patch -p1 < /home/user/10_replace_net_dns_dn_expand.patch
Wichtig Fix für Net-DNS-1.40.0 !!!
Generell kann man aber auch einfach die Zeile in der irgendwas wie "use Net::DNS::Packet" steht löschen und die "my ($dn, $offset)" durch die 2 neuen "my ($decoded, $offset) ... " und "my $dn = $decoded .... " Zeilen ersetzen.
Das ist für dieses Net-DNS schon alles.
Sollte auch mit der schon installierten Version gehen.
Gruß,
Joerg
Hier noch mal die patches ohne sourceforge Einrückung: