Wie installiere ich MIMEDefang auf Debian?

0

Ich versuche, MIMEDefang auf meinem Debian Stretch zu installieren, aber es funktioniert nicht sofort und ich kann keine Anleitungen finden, die funktionieren.

Nachdem apt install mimedefangich folgendes hinzugefügt habe /etc/postfix/main.cf:

smtpd_milters = unix:/var/spool/MIMEDefang/mimedefang.sock
milter_default_action = accept

Postfix neu geladen und service mimedefang statussagt, es ist aktiv und läuft .

Auch versucht , das Kopieren /etc/mimedefang-filterzu /etc/mail/mimedefang-filterund es ausführbar gemacht ...

Aber ich verstehe das immer noch /var/log/mail.log:

postfix/smtpd[29832]: warning: connect to Milter service unix:/var/spool/MIMEDefang/mimedefang.sock: No such file or directory

Die Datei /var/spool/MIMEDefang/mimedefang.sockexistiert jedoch.

sendmail ist schon von vorher installiert.

Wie installiere und aktiviere ich dieses Ding?

TheStoryCoder
quelle
Bitte erweitern Sie Ihre Frage, um zu erklären, wie mimedefang ausgeführt wird und was Sie getan haben, um es zum Laufen zu bringen. Fehlerprotokolle?
Rui F Ribeiro
Ich habe das Gefühl, dass ich das schon getan habe?
TheStoryCoder

Antworten:

0

Mit der freundlichen Hilfe von Benoît Panizzon auf der MIMEDefang-Mailingliste habe ich herausgefunden, dass ich inetstattdessen unixden Listening-Socket verwenden muss, damit er den TCP-Port auf dem angegebenen lokalen oder Remote-Host überwacht . Das Setup-Verfahren für MIMEDefang unter Debian / Ubuntu ist also:

  1. Installieren Sie MIMEDefang: apt install mimedefang
  2. Im /etc/default/mimedefangSet (benutze einen anderen Port wenn du willst):SOCKET=inet:33333
  3. Hinzufügen zu /etc/postfic/main.cf: smtpd_milters = inet:localhost:33333 milter_default_action = accept
  4. Kopieren Sie sie /etc/mimedefang-filternach /etc/mail/mimedefang-filterund ändern Sie sie entsprechend Ihren Anforderungen (Sie müssen sie nicht ausführbar machen).
  5. Postfix- und MIMEDefang-Dienste neu laden: sudo systemctl reload postfix mimedefang

MIMEDefang muss bei jedem Wechsel neu geladen werden mimedefang-filter.


Übrigens vermittelt diese Präsentation ein gutes Verständnis von MIMEDefang: https://www.mimedefang.org/static/mimedefang-lisa04.pdf

Das aktuell ausgeführte Perl-Skript befindet sich in /usr/bin/mimedefang.pldem dann auch enthalten ist mimedefang-filter.


Ich wollte auch in der Lage sein, meine Filterlogik in PHP anstelle von Perl zu schreiben , deshalb kam ich auf die folgende Lösung. Fügen Sie dies zum Ende von z. die filter_beginFunktion in mimedefang-filter:

%passToPhp = ("Sender", $Sender, "Recipients", \@Recipients, "Subject", $Subject, "RelayAddr", $RelayAddr, "RelayHostname", $RelayHostname, "Helo", $Helo, "QueueID", $QueueID, "MessageID", $MessageID);

my $cmd = "/path/to/your/email-filter.php";
$cmd .= " " . encode_base64(encode_json(\%passToPhp), '');
my $phpOutput = `$cmd`;

md_syslog('info', "PHP filter output: $phpOutput");  #causes entry in /var/log/mail.log
if ($phpOutput eq "bounce") {
    action_bounce("We dont want this particular message.");
} elsif ($phpOutput eq "discard") {
    action_discard();
}

Verwenden Sie dann den folgenden Code, email-filter.phpum loszulegen:

#!/usr/bin/php
<?php
// runs as user "defang". This file must have execute permissions.

// Get variables from mimedefang that we passed along, headers, raw message, and extra information from mimedefang
$arguments = ($argv[1] ? base64_decode($argv[1]) : null);
if ($arguments) $arguments = json_decode($arguments, true);
$headers = file_get_contents('HEADERS');
$raw_message = file_get_contents('INPUTMSG');
$commands = file_get_contents('COMMANDS');

// Get all the MIME parts into an array
$mimeparts = [];
chdir('./Work');
foreach (glob('*') as $mimepart_file) {
    if (is_dir($file)) continue;
    $mimeparts[$mimepart_file] = file_get_contents($mimepart_file);
}

// Do all your logic here...

if ($someLogic == 'spam') {
    echo 'discard';
    // echo 'bounce';  //use this line if you want to have a bounce message sent back to sender (but you probably don't want that for spam)
}

Überwachen Sie, /var/log/mail.logob alles ordnungsgemäß funktioniert.

TheStoryCoder
quelle