私は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」なのですか?)
誰かが私を助けてくれて、どこで、なぜ私が間違っているのか教えてくれませんか?
助けてくれてありがとう。ガボ
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
のどこかにあります。