Menu

#7 Status of: Net::DNS::Packet::dn_expand_PP problem?

v1.0_(example)
open
nobody
None
5
2016-04-18
2015-12-06
ovizii
No

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.

Discussion

  • Joerg Neikes

    Joerg Neikes - 2015-12-30

    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

     
    • ovizii

      ovizii - 2015-12-30

      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?

       
  • ovizii

    ovizii - 2016-03-01

    Anyone? This has been a really important part of my setup :-(

     
  • Joerg Neikes

    Joerg Neikes - 2016-04-18

    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

     
    • ovizii

      ovizii - 2016-04-18

      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:

      apt-cache policy policyd-weight
      policyd-weight:
      Installed: 0.1.15.2-10
      Candidate: 0.1.15.2-10

      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-2

      dann steht da auch nichts drin von dem was im Patch erwähnt wird:
      weder:

      my ($dn, $offset) = dn_expand(\$qb, 0);
      noch
      use Net::DNS::Packet qw(dn_expand);

      Wie soll ich denn einen PAtch auf was anwenden das ganz anders aussieht?

       
      • Joerg Neikes

        Joerg Neikes - 2016-04-18

        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);

        • my ($dn, $offset) = dn_expand(\$qb, 0);
        • my ($decoded, $offset) = decode Net::DNS::DomainName(\$qb);
        • my $dn = $decoded->name;
               if(($id && $anc) && ($id == $oid) && ($query eq $dn))
               {
          

        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);

        • my ($dn, $offset) = dn_expand(\$qb, 0);
        • my ($decoded, $offset) = decode Net::DNS::DomainName(\$qb);
        • my $dn = $decoded->name;
               if(($id && $anc) && ($id == $oid) && ($query eq $dn))
               {
          

        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

         
  • Joerg Neikes

    Joerg Neikes - 2016-04-18

    Hier noch mal die patches ohne sourceforge Einrückung:

     

Log in to post a comment.

MongoDB Logo MongoDB