[Postfixbuch-users] DKIM mit Amavis und Postfix funktioniert nicht
Stefan Förster
cite+postfix-buch at incertum.net
Sa Aug 1 01:06:12 CEST 2009
Das schöne, wenn man auf solche uralten Mails antwortet ist, daß sie
keiner mehr liest und man sich ziemlich weit aus dem Fenster lehnen
kann.
Zur Erinnerung: Es ging darum, ohne Trennung verschiedener Ports etc.
in amavisd-new eine Policy zu laden, die $originating auf 1 setzt,
wenn der Client sich per SASL authentifiziert hat.
* Kai Fürstenberg <kai_postfix at fuerstenberg.ws> wrote:
> Peer Heinlein schrieb am 19.07.2009 12:09:
>> Warum soll das nicht gehen? Wo steht denn das? Ich habe das zumindest
>> noch nicht beobachten können, aber ich nutze aus verschiedenen Gründen
>> in der Tat auch eigene Policy-Banks.
[...]
>
> Mark hat auf jeden Fall auf der Amavis-Liste gesagt, dass MYUSERS erst
> dann geladen wird, wenn $originating explizit auf 1 gesetzt wird. Die
> andere Möglichkeit besteht darin, die IP-Adressen in @mynetworks
> einzutragen.
>
> Damit Amavis aber nun nicht den ganzen IPv4-Adressraum als lokal
> ansieht, bleibt nur noch, entweder den Port, oder die IP-Adresse des
> Mailservers für ausgehende Mails zu ändern, und diese dann auf einen
> separaten Amavis-Port weiterzuleiten wo dann in einer policy bank
> $originating=1 gesetzt wird.
Ja. Oder man hat ein Postfix, das RFC 3848 unterstützt (2.5+, glaube
ich).
Dann definiert man sich im amavisd-new:
$policy_bank{'MINI-SUBMISSION'} = {
originating => 1,
};
Jetzt kann man amavisd-new überreden, diese Policy nachzuladen, wenn
er vom eigenen Mailserver einen "Received:" header findet, der
ESMTP(S)A enthält - dazu muß man ihm nur ein "custom package"
unterschieben:
package Amavis::Custom;
use strict;
BEGIN {
import Amavis::Conf qw(:platform :confvars c cr ca $myhostname);
import Amavis::Util qw(do_log untaint safe_encode safe_decode);
import Amavis::rfc2821_2822_Tools;
import Amavis::Notify qw(build_mime_entity);
}
sub new {
my($class,$conn,$msginfo) = @_;
my($self) = bless {}, $class;
my $sasl_owned = 0;
foreach my $line (@{$msginfo->{'orig_header'}}) {
$line =~ s/\n\t/ /g;
$sasl_owned = 1 if $line =~ m/^Received:.*by mail.incertum.net.*with ESMTP(S)?A.*/i;
}
if ($sasl_owned) {
do_log(2, sprintf("Load SASL policy bank"));
Amavis::load_policy_bank('MINI-SUBMISSION')
}
return $self;
}
1; # insure a defined return
Hier dürfte jetzt klar werden, warum man in der obigen Policy-Bank
besser nicht allzuviele Settings aufweicht: So ein "Received:"-Header
lässt sich nämlich beliebig fälschen und ich habe mir nicht die Mühe
gemacht, darüber nachzudenken, ob man das mit Header/Body-Checks in
den Griff kriegen kann.
Den Code kann man mit ziemlicher Sicherheit, die RegExp mit absoluter
Sicherheit noch verbessern.
Ciao
Stefan
--
Stefan Förster http://www.incertum.net/ Public Key: 0xBBE2A9E9
FdI #269: C - Nomic als Programmiersprache. (Florian Weimer)
Mehr Informationen über die Mailingliste Postfixbuch-users