web-dev-qa-db-ja.com

Amavisで送信者をホワイトリストに登録する際の問題-新規

私はCentOS6サーバーとAmavis 2.9.1+Postfix 2.6.6+ clamav 0.99として使用しますメールリレー(別名メールゲートウェイ)、ネットワークは次のように設定されます:eth0(10.10.132.104)as external inteface eth1(10.10.133.104)as internalインターフェイス(内部ユーザーにメールを配信する場所、または送信メールの送信元)

次のmaster.cfを使用して接尾辞をインストールしました(リレバントパーツのみを貼り付けます):

#smtp   inet    n       -       y       -       -       smtpd
10.10.133.104:smtp      inet    n       -       y       -       -       smtpd
  -o smtpd_client_restrictions=permit_mynetworks,reject
  -o cleanup_service_name=no-headerchecks
  -o content_filter=
127.0.0.1:smtp  inet    n       -       y       -       -       smtpd
   -o smtpd_client_restrictions=permit_mynetworks,reject
   -o cleanup_service_name=no-headerchecks
   -o content_filter=
10.10.132.104:smtp      inet    n       -       y       -       -       smtpd

127.0.0.1:10025 inet n    -       y       -       -     smtpd
   -o content_filter=
   -o smtpd_delay_reject=no
   -o smtpd_client_restrictions=permit_mynetworks,reject
   -o smtpd_helo_restrictions=
   -o smtpd_sender_restrictions=
   -o smtpd_recipient_restrictions=permit_mynetworks,reject
   -o smtpd_data_restrictions=reject_unauth_pipelining
   -o smtpd_end_of_data_restrictions=
   -o smtpd_restriction_classes=
   -o mynetworks=127.0.0.0/8,10.0.0.0/8
   -o smtpd_error_sleep_time=0
   -o smtpd_soft_error_limit=1001
   -o smtpd_hard_error_limit=1000
   -o smtpd_client_connection_count_limit=0
   -o smtpd_client_connection_rate_limit=0
   -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks,no_milters,no_address_mappings
   -o local_header_rewrite_clients=
   -o smtpd_milters=
   -o local_recipient_maps=
   -o relay_recipient_maps=
….
….
amavisfeed unix    -       -       n        -      2     lmtp
   -o lmtp_data_done_timeout=1200
   -o lmtp_send_xforward_command=yes
   -o disable_dns_lookups=yes
   -o max_use=20

一方、現時点では、amavisは外部ネットワークから着信するメールでのみ機能します。 main.cfでは、amavisfeedがフィルターのデフォルトとして指定されています。

...
content_filter=amavisfeed:[127.0.0.1]:10024
...

私の主な目的は、amavisで、(ウイルス、不正なヘッダーなどに加えて)すべてをブロックすることです禁止されたファイル。Zipおよび。rarしかし一部の送信者の例外。

そのため、amavis.confで、$ Banned_filename_reを変更し、次のように行を追加しました。

  qr'^\.(Zip|rar)$'i,                            # block Zip and rar type 

一部の送信者からメールが受信されたときにブロックを回避するために「bypass_」フィルターを使用するまで、ブロックは正常に機能します。次のポリシーバンクを使用する(たとえば、my domain is“ test.mydomain.com”):

read_hash(\%whitelist_sender, '/etc/amavisd/whitelist');
@whitelist_sender_maps = (\%whitelist_sender);

$interface_policy{'10024'} = 'EXTERNAL';

# regular incoming mail, originating from anywhere (usually from outside)
$policy_bank{'EXTERNAL'} = {
  # # just use global settings, no special overrides
  log_level => 4,
  auth_required_release => 0,  # do not require secret_id for amavisd-release
   bypass_banned_checks_maps => [[qw( [email protected] [email protected] [email protected] )]],
};

ここで、外部ユーザー[email protected]”が私の内部ユーザーにメールを送信するとします。 =“[email protected]”と.Zip添付ファイル。正常に通過しますが、RECIPIENT IS MATCHED(and not SENDER)..:ログから:

….
Mar 16 14:58:57 test-mailgw amavis[10230]: (10230-01) dkim: public key s=s2014 d=libero.it k=rsa, 2048-bit key
Mar 16 14:58:57 test-mailgw amavis[10230]: (10230-01) dkim: VALID Author+Sender+MailFrom signature by d=libero.it, From:
<[email protected]>, a=rsa-sha256, c=relaxed/relaxed, s=s2014, [email protected]
Mar 16 14:58:57 test-mailgw amavis[10230]: (10230-01) Original mail size: 5472196; quota set to: 524288000 bytes (fmin=5,
fmax=500, qmin=102400, qmax=524288000)
Mar 16 14:58:57 test-mailgw amavis[10230]: (10230-01) Checking: xeO-t6yJ68dS EXTERNAL [212.48.25.196] <[email protected]>-> <[email protected]>
Mar 16 14:58:57 test-mailgw amavis[10230]: (10230-01) 2822.From: <[email protected]>
Mar 16 14:58:57 test-mailgw amavis[10230]: (10230-01) lookup_acl([email protected]) matches key ".test.mydomain.com", result=1
Mar 16 14:58:57 test-mailgw amavis[10230]: (10230-01) lookup [local_domains] => true,  "[email protected]" matches, result="1", matching_key=".test.mydomain.com"
Mar 16 14:58:57 test-mailgw amavis[10230]: (10230-01) lookup [bypass_virus_checks] => undef, "[email protected]" does not match
Mar 16 14:58:57 test-mailgw amavis[10230]: (10230-01) lookup_acl([email protected]) matches key "[email protected]", result=1
Mar 16 14:58:57 test-mailgw amavis[10230]: (10230-01) lookup => true,  "[email protected]" matches, result="1", matching_key="[email protected]"
Mar 16 14:58:57 test-mailgw amavis[10230]: (10230-01) lookup [bypass_spam_checks] => undef, "[email protected]" does not match
Mar 16 14:58:57 test-mailgw amavis[10230]: (10230-01) Extracting mime components from a file

実際、bypass_banned_checks_maps行を変更すると、次のようになります。

   bypass_banned_checks_maps => [[qw( [email protected] [email protected] )]],

同じメールを再送信します。送信者ホワイトリストに登録されていません、メールはブロック(禁止およびバウンス)され、隔離されます。

…...
Mar 16 15:14:57 test-mailgw amavis[10611]: (10611-01) Checking: lCsEqup1nnwy EXTERNAL [212.48.25.196] <[email protected]> 
-> <[email protected]>
Mar 16 15:14:57 test-mailgw amavis[10611]: (10611-01) 2822.From: <[email protected]>
Mar 16 15:14:57 test-mailgw amavis[10611]: (10611-01) lookup_acl([email protected]) matches key ".test.mydomain.com", result=1
Mar 16 15:14:57 test-mailgw amavis[10611]: (10611-01) lookup [local_domains] => true, "[email protected]" matches, result="1", matching_key=".test.mydomain.com"
Mar 16 15:14:57 test-mailgw amavis[10611]: (10611-01) lookup [bypass_virus_checks] => undef, "[email protected]" does not match
Mar 16 15:14:57 test-mailgw amavis[10611]: (10611-01) lookup_acl([email protected]), no match
Mar 16 15:14:57 test-mailgw amavis[10611]: (10611-01) lookup => undef, "[email protected]" does not match
Mar 16 15:14:57 test-mailgw amavis[10611]: (10611-01) lookup [bypass_spam_checks] => undef, "[email protected]" does not match
…...
Mar 16 15:14:58 test-mailgw postfix/lmtp[10620]: 64B778287E: to=<[email protected]>, relay=127.0.0.1[127.0.0.1]:10024, delay=2.1, delays=0.63/0.01/0.01/1.4, dsn=2.5.0, status=sent (250 2.5.0 Ok <[email protected]>, DSN was sent (554 5.7.0 Bounce, id=10611-01 - BANNED: .pdf,joomla_15_quickstart.pdf))
Mar 16 15:14:58 test-mailgw postfix/qmgr[631]: 64B778287E: removed
…….

なぜなら、実質的には、送信者のメールアドレスではなく、受信者のメールアドレスをチェックし続けるからです…。

そして今、もう一つの奇妙で奇妙な行動! EXTERNAL policy_bankを変更する場合、ホワイトリストのインクルードファイルからread_hashを使用して、1行にアドレスを書き込むと、次のようになります。

  • 私の/ etc/amavisd/whitelist次のように読み取るファイル:

    [email protected] externaldomain2.tld

  • そして私のamavisd.conf ’s policy bank次のように:

    …... read_hash(\%whitelist_sender、 '/ etc/amavisd/whitelist'); @whitelist_sender_maps =(\%whitelist_sender);

    $ interface_policy {'10024'} = 'EXTERNAL';

    $ policy_bank {'EXTERNAL'} = {log_level => 5、auth_required_release => 0、#amavisd-releaseのsecret_idは必要ありませんbypass_banned_checks_maps => ['@whitelist_sender_maps']、
    }; …。

そして、前の例と同じメール(外部の「[email protected]」を内部の「user」に送信します@ test.mydomain.com”)、次のようになります。

…...
Mar 16 15:36:32 test-mailgw amavis[11088]: (11088-01) Checking: S6fD-MRTCySL EXTERNAL [212.48.25.196] <[email protected]> -> <[email protected]>
Mar 16 15:36:32 test-mailgw amavis[11088]: (11088-01) 2822.From: <[email protected]>
Mar 16 15:36:32 test-mailgw amavis[11088]: (11088-01) lookup_acl([email protected]) matches key ".test.mydomain.com", result=1
Mar 16 15:36:32 test-mailgw amavis[11088]: (11088-01) lookup [local_domains] => true,  "[email protected]" matches, result="1",matching_key=".test.mydomain.com"
Mar 16 15:36:32 test-mailgw amavis[11088]: (11088-01) lookup [bypass_virus_checks] => undef, "[email protected]" does not match
Mar 16 15:36:32 test-mailgw amavis[11088]: (11088-01) lookup: (scalar) matches, result="@whitelist_sender_maps"
Mar 16 15:36:32 test-mailgw amavis[11088]: (11088-01) lookup => true, "[email protected]" matches, result="@whitelist_sender_maps", matching_key="(constant:@whitelist_sender_maps)"
Mar 16 15:36:32 test-mailgw amavis[11088]: (11088-01) lookup [bypass_spam_checks] => undef, "[email protected]" does not match
…..

…メールはCleanとして渡され、宛先に到着します。 (さらに、なぜ「result =」@ whitelist_sender_maps」なのですか?)

誰かが私を助けてくれて、どこで、なぜ私が間違っているのか教えてくれませんか?

助けてくれてありがとう。ガボ

3
gabolander

Amavisだけではこれを行うことはできないようです。別の方法は、禁止されたファイル名のチェックが無効になっている別のポリシーバンクを使用し、Postfixがホワイトリストに登録された送信者アドレスからそのポリシーバンクに電子メールを転送できるようにすることです。

基本的な実装は次のように行うことができます。

以下をamavisd.confに追加します。

$interface_policy{'10026'} = 'NOBANNED';

$policy_bank{'NOBANNED'} = {
  # # just use global settings, no special overrides
  log_level => 4,
  auth_required_release => 0,
  bypass_banned_checks_maps => [1],
};

次のような内容のファイル/etc/postfix/whitelist_filterを作成します。

[email protected]  FILTER smtp:[127.0.0.1]:10026

このファイルのハッシュファイルを作成します。

postmap hash:/etc/postfix/whitelist_filter

そして、行を追加します

check_client_access hash:/etc/postfix/whitelist_filter

smtpd_recipient_restrictions/etc/postfix/main.cfのどこかにあります。

2
roelvanmeer