Current time: 12-23-2024, 10:14 PM Hello There, Guest! (LoginRegister)


Thread Closed 
 
Thread Rating:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[vielleicht gelöst] Autoresponderfehler (arpl-msgr, Command died with status 255)
Author Message
STBaf Offline
Junior Member
*

Posts: 23
Joined: Jul 2007
Reputation: 0
Post: #11
RE: Autoresponderfehler ( ispcp-arpl-msgr, Command died with status 255)
Ah ok - das auch ne Info ;-) Ich verfolge/versuche das mal weiter da bestimmt andere auch noch das Problem haben mit dem Amavis, aber ich habe für mich erstmal gerade eine Teillösung ausgearbeitet, die wie folgt aussieht (maybe für einige interessant, daher im folgenden beschrieben).

Und zwar benutze ich in diesem Fall ISPCP in einer Kombi mit der OpenSource Software Egroupware. Mein Ziel war es für die EGroupware, welche keine Serververwaltung mitbringt, eine Möglichkeit zu schaffen für neuangelegte Egroupwarebenutzer gleich Mailkonten anzulegen auf die man dann auch über das Egroupware-Standardmailprofil über die Webmailoberfläche draufkommt.
Daher ISPCP auf das System und einfach Egroupware dahingehend umgeschrieben das es an passenden Stellen die entsprechenden Einträge in den ISPCP Datenbanken vornimmt und den ispcp-daemon anstößt die Mailkonten zu erzeugen.
Resultierend aus dieser Konstellation habe ich daher auch einen begrenzten und statischen Pool von Domains (genaugenommen 3 Stück) die damit arbeiten müssen. Ich habe eine Verwaltungsmöglichkeit gefunden die ich zwar per Hand verwalten muss, da aber die Domains recht statisch wie gesagt sind ist es in meinem Fall kein Problem, aber ich denke Leute die ISPCP an der Stelle zum "richtigen" Mehrkundenverwalten verwenden werden damit nicht glücklich werden.

Und zwar folgendes:

Man lege in /etc/postfix eine Datei namens filter_recipient_domains an.
Diese fülle man mit den Domains die man gefiltert haben möchte per Amavis, und zwar wie folgt:
domain1.de FILTER amavis:[127.0.0.1]:10024
domain2.de FILTER amavis:[127.0.0.1]:10024
domain3.com FILTER amavis:[127.0.0.1]:10024

anschließend entferne man in der main.cf von Postfix den generellen Eintrag
content_filter = amavis:[127.0.0.1]:10024 bzw. kommentiere ihn wieder aus und füge folgenden Eintrag (ebenfalls in der main.cf) hinzu bzw. erweitere den wahrscheinlich bereits vorhandenen:
smtpd_recipient_restrictions = check_recipient_access hash:/etc/postfix/filter_recipient_domains

Anschließend muss man noch bevor man Postfix neu läd ein
postmap check_recipient_access hash:/etc/postfix/filter_recipient_domains
machen um aus der Textdatei eine Hash-DB zu erzeugen.

Anschließend Postfix per /etc/init.d/postfix reload oder restart neu laden lassen.

Damit erreicht man das Amavis nur noch auf die ursprünglichen Domains angewendet wird.

Der Autoreplyer erzeugt sein Autoreply indem er in der alias Zuordnung vom Postfix eine Kopie der Mail an die eigentlich Mailadresse (empfaenger@domain) und an eine Autoreply Adresse (empfaenger@ispc-arpl.domain) schickt. ispcp-arl.domain ist per transport-Datei auf das Postfix Modul ispcp-arpl in der master.cf von Postfix gelenkt. Mit meiner Modifikation wird für diese ispcp-arpl Zustellung nicht mehr amavis-gefiltert.

Ich nehme mal an wenn amavis an der Mail rumgefuscht hat kommt das Perl Skript ispcp-arpl-msgr ins Schleudern da irgendetwas in der Mail steht womit er nicht klarkommt.

Wie gesagt bei mir funktioniert das nun brauchbar da meine Zahl Domains quasi statisch ist. Ich glaube für Leute die mehrere Kunden per ISPCP verwalten wollen ist die Lösung eher suboptimal. Aber ich schau mal ob ich das generelle Problem näher lokalisieren kann ;-).

Andre
(This post was last modified: 11-23-2007 09:16 PM by STBaf.)
11-23-2007 09:14 PM
Find all posts by this user
STBaf Offline
Junior Member
*

Posts: 23
Joined: Jul 2007
Reputation: 0
Post: #12
RE: Autoresponderfehler ( ispcp-arpl-msgr, Command died with status 255)
okay meine vorangegangene Lösung funktioniert auch nicht so wirklicht gut. Dabei werden andere Content-Filter wie z.B. ein Spamassassin übergangen :-(

Bleibt also das alte Problem das der Autoresponder eine Fehlermail des Postfix wegen eines verstorbenen Scriptes provoziert obwohl das Autoreply ankommt.

Ich habe mal aldiweil den Debug Output aktiviert und bekomme in der ispcp-arpl-msgr.stderr folgende Meldung:

Use of uninitialized value in string ne at /var/www/ispcp/engine/messager/ispcp-arpl-msgr line 794.
can't build entity: no body, and not multipart

das wäre dann das hier (+/- die paar Zeilen davor). Wo es da wirklich schiefgeht sehe ich im Moment nicht:

Code:
$sql = "select mail_auto_respond from mail_users LEFT JOIN subdomain ON mail_users.sub_id=subdomain.subdomain_id LEFT JOIN domain ON subdomain.domain_id=domain.domain_id where mail_acc = '$user' and (CONCAT(subdomain_name,'.',domain_name) = '$edmn');";

                       }

                        push_el(\@main::el, 'arpl_msgr_engine()', "sql: |".$sql."|");

                    ($rs, $ref) = doSQL($sql);

                        return $rs if ($rs != 0);


                        $ref = @$ref[0]; my $auto_message = @$ref[0];

                                if($auto_message ne '_no_') {

                                        if($name) { $mail_to = "\"".$name."\" "."<".$to_ma->address.">"; }

                                        else{ $mail_to = $to_ma->address; }


                                my $out = new MIME::Entity;

Die Zeile 794 ist davon diese:

Code:
if($auto_message ne '_no_') {

Irgendjemand vielleicht eine Idee ? ;-)
11-26-2007 09:51 PM
Find all posts by this user
joximu Offline
helper
*****
Moderators

Posts: 7,024
Joined: Jan 2007
Reputation: 92
Post: #13
RE: Autoresponderfehler ( ispcp-arpl-msgr, Command died with status 255)
ich vermute $auto_message is leer (Null oder '') - versuche mal das so zu schreiben (bin kein perlie...)

if('$auto_message' ne '_no_') {
oder
if("$auto_message" ne '_no_') {

oder halt eine Meldung eintragen...

Hoffe, das ist's
Gruss J
11-26-2007 10:04 PM
Visit this user's website Find all posts by this user
STBaf Offline
Junior Member
*

Posts: 23
Joined: Jul 2007
Reputation: 0
Post: #14
RE: Autoresponderfehler ( ispcp-arpl-msgr, Command died with status 255)
joximu Wrote:ich vermute $auto_message is leer (Null oder '') - versuche mal das so zu schreiben (bin kein perlie...)

if('$auto_message' ne '_no_') {
oder
if("$auto_message" ne '_no_') {

oder halt eine Meldung eintragen...

Hoffe, das ist's
Gruss J

Nein das bringt gar nichts. Obwohl ich es mir schon dachte habe ich trotzdem mal beides einfach ausprobiert, geändert hat es nichts. Wäre aber auch nicht sinnig gewesen das ich eine Variable in String-Kennzeichnungen setzen muss damit sie geht, zumal es woanders tut ;-)

Generell scheint aber das auch nicht wirklich das Problem zu sein. Ich habe die Zeile 794 einmal auskommentiert (also das if($auto_message ne '_no_') { ) sowie die entsprechende dazugehörige Logik weil es ja eine If-Abfrage ist (also Zeile 832 die geschlossene geschweifte Klammer die die If Abfrage abschließt).

Soweit ich das beurteilen kann hat das auch keine logischen Auswirkungen - die Überprüfung ob in dem SQL Feld mit den Mailaccounts ein _no_ steht ist sowieso über da ein Transport an den arpl-msgr von ISPCP Daemon nur eingerichtet wird wenn man die Autoreply-Nachricht aktiviert und das Feld sowieso ungleich _no_ ist (daher ist die Abfrage sinnlos, es ist sowieso immer if ( .. ne '_no_') .. also not equal '_no_' dann.

Das ganze mal ausprobiert funktioniert dann auch ohne diese if-Abfrage, der Fehler bleibt allerdings (also die Autoreply-Nachricht + die Meldung das das Script mit 255 verstorben ist).

Allerdings reduziert sich die Fehlermeldung in der Stderr-Log vom ISPC dann entsprechend auf folgende Meldung einzelne Meldung

"can't build entity: no body, and not multipart"

Ich habe deswegen jetzt eher die Folgezeilen 800-831 in Verdacht, die wie folgt lauten:

Code:
                    my $out = new MIME::Entity;

                    $mail_to=~s/\@ispcp-arpl./\@/;

                    $out -> build(
                                  From => $mail_to,
                                  To => $head -> get('From'),
                                  Subject => "[Autoreply] ".$head -> get('Subject'),
                                  Type => "multipart/mixed",
                                  'X-Autoresponse-From' => $mail_to,
                                  'X-Mailer' => "ISPCP $main::cfg{'VersionH'} Autoreply Manager"
                                );


                    $out -> attach(
                                  Type => "text/plain",
                                  Encoding => "7bit",
                                  Description => "Mail User Autoreply Message",
                                  Data => $auto_message
                                );

                    $out -> attach(
                                  Type => "message/rfc822",
                                  Description => "Original Message",
                                  Data => $msg
                                );

                    open MAIL, "| /usr/sbin/sendmail -t -oi";

                    $out -> print(\*MAIL);

                    close MAIL;

Sieht da jemand was ? Da ich genauso nicht als das absolute Perl-Genie bezeichnen würde (man wurschtelt sich so durch bei Perl) werd ich den wahrscheinlich eh übersehen.

Wie gesagt das Problem taucht auf wenn die Mails im AMAVIS waren, ohne AMAVIS gehts - was könnte AMAVIS hier ändern was zu Problemen mit dem Skript führt (so als Denkanstoss ;-) ) ?

Vielen Dank für jegliche Hilfe

Andre
11-27-2007 01:34 AM
Find all posts by this user
STBaf Offline
Junior Member
*

Posts: 23
Joined: Jul 2007
Reputation: 0
Post: #15
RE: Autoresponderfehler ( ispcp-arpl-msgr, Command died with status 255)
Inzwischen habe ich ein wenig Zeit gefunden und mich mal auf die Suche nach dem wirklichen Problem im Autoresponder Skript vom ISPCP gemacht und mir angesehen möglicherweise wirklich passiert wenn man Amavis in den Postfix einbindet. Da die ganze Erklärung etwas lang geworden ist, poste ich die hier jetzt nicht, sondern verweise einfach mal an eine andere Stelle an der ich Problem & Lösung beschrieben habe. Das ganze findet man hier:

http://www.stblog.de/2007/12/13/ispcp-ar...nd-amavis/

(sollte ich recht haben wäre das vielleicht auch ein Ansatz zur Lösung des Ticket #725).
12-13-2007 11:03 PM
Find all posts by this user
joximu Offline
helper
*****
Moderators

Posts: 7,024
Joined: Jan 2007
Reputation: 92
Post: #16
RE: [vielleicht gelöst] Autoresponderfehler (arpl-msgr, Command died with status 255)
Das ist OpenSource! - auch wenn man nicht Profi ist, kann man mit etwas Aufwand ein spezifisches Problem mitlösen!
Vielen dank - ich schau das gerne mal durch und hoffe, dass wir so einen Schritt weiterkommen!
12-14-2007 05:27 AM
Visit this user's website Find all posts by this user
STBaf Offline
Junior Member
*

Posts: 23
Joined: Jul 2007
Reputation: 0
Post: #17
Smile RE: [vielleicht gelöst] Autoresponderfehler (arpl-msgr, Command died with status 255)
Stimmt das ist wirklich ein gravierender Vorteil bei OpenSource. Programmierkenntnisse vorausgesetzt hat man wenigstens bei einem Fehler Chancen selbst auf die Jadg zu gehen wenn man auf die offizielle Problemlösung nicht warten will oder warten kann :-)
12-14-2007 07:02 PM
Find all posts by this user
tamer Offline


Posts: 1
Joined: Jul 2008
Reputation: 0
Post: #18
RE: [vielleicht gelöst] Autoresponderfehler (arpl-msgr, Command died with status 255)
Bei mir kann die Zeilennummern mit dem Original Datei von ispcp-arpl-msgr nicht uebereinstimmen. Alle Programmcode hier ist von der Datei /var/www/ispcp/engine/messager/ispcp-arpl-msgr.
Eigentlich das Problem liegt bei dem Variable $edmn.
Der Codeabschnitt ist wie folgt.
Code:
729                         #$edmn = $edmn[1];
    730
    731                         $edmn = $2;
    732                         if($edmn =~ /ispcp-arpl\.(.+)/i) { $edmn = "$1"; }
    733
    734                         $sql = "select count(domain_id) as cnt from domain where domain_name = '$edmn'";
    735
    736                         ($rs, $ref) = doSQL($sql);
    737
    738                 return $rs if ($rs != 0);
    739
    740                         $ref = @$ref[0];
    741
    742                         if (@$ref[0] == 1) {
    743
    744                         $pt = 1;
    745
    746                         } else {
    747
    748                         $sql = "select count(alias_id) as cnt from domain_aliasses where alias_name = '$edmn'";
    749
    750                         ($rs, $ref) = doSQL($sql);
    751
    752                 return $rs if ($rs != 0);
    753
    754                         $ref = @$ref[0];
    755
    756                         if (@$ref[0] == 1) {
    757
    758                         $pt = 2;
    759
    760                         }
    761                         else {
    762
    763                         $pt = 3;
    764
    765                         }
    766
    767                         }
Ich habe nach dem $edmn = $2; in Zeile 731, die Zeile 732 eingefuegt. Weil in $edmn 'ispcp-arpl' steht. Man muss 'ispcp-arpl' von $edmn loeschen, sonst landet man in der Zeile 763. Das heisst $pt =3; Und dann wird die folgende sql Abfrage ausgefuehrt, und der liefert keine Ergebnisse. Da in $edmn 'ispcp-arpl' steht.
Code:
780                        elsif ($pt == 3) {
    781
    782                                         $sql = "select mail_auto_respond from mail_users LEFT JOIN subdomain ON mail_users.sub_id=subdomain.subdomain_id LEFT JOIN domain ON subdomain.domain_id=domain.domain_id where mail_acc = '$user' and mail_auto_respond != '_no_' and (CONCAT(subdomain_name,'.',domain_name) = '$edmn');";
    783
    784                        }

Noch muss man $auto_message = '_no_'; standard _no_definieren, weil unsere abfrage liefert dies mal richtige Ergebnisse. Dann ist die if in Zeile 797 jetzt Sinnvoll.
Code:
792
    793                         $ref = @$ref[0];
    794                         my $auto_message = '_no_';
    795                         $auto_message = @$ref[0];
    796
    797                                 if ($auto_message ne '_no_' && length($auto_message) > 0) {

Kurze Zusammenfassung:
  • Nach $edmn = $2; in Zeile 731, Zeile 732 einfuegen.
  • Zeilen 793, 794, 795 und 797 wie oben anpassen.
Dann sollte erledigt sein.
Wenn nicht dann in der Datei ispcp-arpl-msgr, $main::engine_debug = '_on_'; einschatlten. Und die logs Dateien schauen. Die logs sind unter:
/var/log/ispcp/ispcp-arpl-msgr/
07-31-2008 08:29 PM
Find all posts by this user
ole Offline


Posts: 3
Joined: May 2007
Reputation: 0
Post: #19
RE: [vielleicht gelöst] Autoresponderfehler (arpl-msgr, Command died with status 255)
bei mir hat der obige Hotfix nicht funktioniert und ich fand ihn auch nicht besonders schön.

Wie dem auch sei, ich habe das Problem jetzt so gelöst, dass das Autoresponder Script einfach Email-Adressen, die nur für die Weiterleitung benutzt werden (ispcp-arpl) ignoriert.

Dazu muss Zeile 704 in /var/www/ispcp/engine/messager/ispcp-arpl-msgr wie folgt geändert werden

Code:
if($to_ma->address =~ m/@/i && $to_ma->address !~ m/"/g && $to_ma->address !~ m/\@ispcp-arpl/i) {

Gruß

Olaf
(This post was last modified: 08-20-2008 01:50 AM by ole.)
08-20-2008 01:32 AM
Find all posts by this user
Belzebob Offline
Newbie
*

Posts: 8
Joined: Jul 2008
Reputation: 0
Post: #20
RE: [vielleicht gelöst] Autoresponderfehler (arpl-msgr, Command died with status 255)
Hatte das gleiche Problem, mit den beiden Tipps von trame und ole, ging es dann bei mir.
(This post was last modified: 08-27-2008 03:26 AM by Belzebob.)
08-27-2008 03:10 AM
Visit this user's website Find all posts by this user
Thread Closed 


Forum Jump:


User(s) browsing this thread: 1 Guest(s)