Problem mit DKIM-Signierung unter amavisd-new

Thilo Engelbracht mailinglists at engelbracht.de
Di Jun 7 23:37:00 CEST 2016


Hallo zusammen,

auf meinem Mailserver (postfix, dovecot, amavisd-new) werden eingehende
E-Mails per smtpd_proxy_filter an amavisd-new übergeben. AMaViS lauscht
auf Port 9820.

Nun möchte ich amavisd-new auch dazu verwenden, dass ausgehende E-Mails
mit DKIM signiert werden. Da die User ihre E-Mails auf den submission-
Port einliefern müssen, habe ich mir überlegt, amavisd-new auf einem
zusätzlichen Port lauschen zu lassen und mit Interface policies und
policy_banks dies zu steuern.

Meine master.cf habe ich entsprechend angepasst:

[ ... ]

smtp        inet  n     -     n     -     1     postscreen

smtpd       pass  -     -     n     -     -     smtpd
  -o content_filter=
  # AMaViS lauscht auf Port 9820
  -o smtpd_proxy_filter=11.22.33.44:9820

submission  inet  n     -     -     -     -     smtpd
  -o cleanup_service_name=subcleanup
  -o smtpd_tls_security_level=encrypt
  -o smtpd_tls_received_header=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  # AMaVis lauscht zusaetzlich auf Port 9880
  -o smtpd_proxy_filter=11.22.33.44:9880
  -o milter_macro_daemon_name=ORIGINATING

subcleanup  unix  n     -     -     -     0     cleanup
  -o header_checks=pcre:/etc/postfix-engelbracht.com/header-checks


tlsproxy    unix  -     -     n     -     0     tlsproxy

dnsblog     unix  -     -     n     -     0     dnsblog

# AMaViS sendet die E-Mails auf diesen Port zurueck:
9821        inet  n     -     -     -     -     smtpd
  -o content_filter=
  -o smtpd_proxy_filter=
  -o smtpd_authorized_xforward_hosts=11.22.33.44/32

# Die "submission" user senden die E-Mails auf diesen Port zurueck:
9881        inet  n     -     -     -     -     smtpd
  -o content_filter=
  -o smtpd_proxy_filter=
  #-o smtpd_authorized_xforward_hosts=11.22.33.44/32

[ ... ]


Die Konfiguration von amavisd-new:

#Auf diesen IP-Adressen/Ports lauscht AMaViS:
@listen_sockets = (
   '11.22.33.44:9820',
   '11.22.33.44:9880',
);


$interface_policy{'9820'} = 'engelbracht';
$interface_policy{'9880'} = 'engelbracht_SUBMISSION';


$policy_bank{'engelbracht'} = {
   inet_acl => [qw( 11.22.33.44/32 )],
   myhostname => 'mail.engelbracht.tld',
   localhost_name => 'mail.engelbracht.tld',
   X_HEADER_LINE => 'amavisd-new at mail.engelbracht.tld',
   local_domains_maps => '.engelbracht.tld',
   enable_dkim_verification => 1
};
$policy_bank{'engelbracht_SUBMISSION'} = {
   originating => 1,
   bypass_spam_checks_maps => [1],
   bypass_banned_checks_maps => [1],
   final_bad_header_destiny => D_PASS,
   terminate_dsn_on_notify_success => 0,
   warnbadhsender => 1,
   smtpd_discard_ehlo_keywords => ['8BITMIME'],
   enable_dkim_signing => 1
};

$signed_header_fields{'received'} = 0;

dkim_key('engelbracht.tld', 'dkim', '/etc/amavis/engelbracht.tld.pem');
@dkim_signature_options_bysender_maps = (
    { '.' =>
        {
            ttl => 21*24*3600,
            c => 'relaxed/simple'
        }
    }
);

# Alle E-Mails an den Host zuruecksenden, von dem sie
# urspruenglich kam, auf Port +1
$forward_method = 'smtp:*:*';
$notify_method = 'smtp:*:*';

@mynetworks => qw( 11.22.33.44/32 22.33.44.55/32 33.44.55.66/32 );


Wenn ich nun eine Testmail versende, dann taucht in der Logdatei
folgende Fehlermeldung auf:

Jun  7 22:14:27 mail amavis[2576]: (!)DENIED ACCESS from IP 11.22.33.44, policy bank 'engelbracht_SUBMISSION'

Die policy bank 'engelbracht_SUBMISSION' hat ja funktioniert, aber die
E-Mail wird trotzdem nicht gesendet.
In der E-Mail an den postmaster ist zu lesen:
 

 Out: 220 mail.engelbracht.tld ESMTP
 In:  EHLO [192.168.0.41]
 Out: 250-mail.engelbracht.tld
 Out: 250-PIPELINING
 Out: 250-SIZE 51200000
 Out: 250-VRFY
 Out: 250-ETRN
 Out: 250-STARTTLS
 Out: 250-ENHANCEDSTATUSCODES
 Out: 250-8BITMIME
 Out: 250 DSN
 In:  STARTTLS
 Out: 220 2.0.0 Ready to start TLS
 In:  EHLO [192.168.0.41]
 Out: 250-mail.engelbracht.tld
 Out: 250-PIPELINING
 Out: 250-SIZE 51200000
 Out: 250-VRFY
 Out: 250-ETRN
 Out: 250-AUTH PLAIN
 Out: 250-AUTH=PLAIN
 Out: 250-ENHANCEDSTATUSCODES
 Out: 250-8BITMIME
 Out: 250 DSN
 In:  AUTH PLAIN 47110815==
 Out: 235 2.7.0 Authentication successful
 In:  MAIL FROM:<user at engelbracht.tld> BODY=8BITMIME
 Out: 250 2.1.0 Ok
 In:  RCPT TO:<mustermann at web.de>
 Out: 451 4.3.0 Error: queue file write error.
 In:  QUIT
 Out: 221 2.0.0 Bye


Mir stellt sich jetzt die Frage:
EINGEHENDE E-Mails werden ja problemlos an amavisd-new übergeben, auf
Viren geprüft etc. Anschließend werden diese E-Mails ja wieder zurück
an postfix übergeben.
Muss man bei AUSGEHENDEN E-Mails eine andere Konfiguration verwenden?

Vielen Dank im Voraus!


Liebe Grüße

Thilo




Mehr Informationen über die Mailingliste Postfixbuch-users