Postfix: 送信 SMTP SASL 認証ユーザーをマルウェアおよびスパムスキャンする方法は?

Postfix: 送信 SMTP SASL 認証ユーザーをマルウェアおよびスパムスキャンする方法は?

私は見つけた 回答これについては、実際にどのように実装すればよいのかわかりませんし、少なくともそのうちの 1 つは質問に対する答えになっていません。そのため、共有できる経験をお持ちの方がいらっしゃいましたら、大変ありがたく思います。

私は Postfix を実行しているサーバー (Ubuntu 18.04) を持っています。私はすでに postfwd を使用して SASL 送信者のレートを制限しており、Amavis を使用してローカル マシン/ネットワーク (Web サーバーなど) からの送信メールをスキャンしています。すべて問題なく、main.cf では次のようになっています。

smtpd_sender_restrictions =
    check_client_access cidr:/etc/postfix/internal_clients_filter,
    permit_mynetworks, 
    reject_unknown_sender_domain

そしてmaster.cf

senderCheck  unix  -       n       n       -       15       spawn
  user=nobody argv=/opt/policyd/src/policyd.pl  max_idle=30 max_use=50 daemon_timeout=50

127.0.0.1:10025 inet    n    -    n    -    -    smtpd
    -o smtpd_recipient_restrictions=permit_mynetworks,reject
    -o smtpd_restriction_classes=
    -o smtpd_delay_reject=no
    -o smtpd_client_restrictions=
    -o smtpd_helo_restrictions=
    -o smtpd_sender_restrictions=
    -o mynetworks=127.0.0.0/8
    -o smtpd_data_restrictions=
    -o smtpd_end_of_data_restrictions=
    -o local_header_rewrite_clients=
    -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 smtpd_milters=
    -o local_recipient_maps=
    -o relay_recipient_maps=
    -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks,no_address_mappings

ローカル送信者の場合と同じように、SASL 送信者 (定義上はネットワーク上にいない) にスパムおよびマルウェア スキャンを実行するにはどうすればよいですか?

答え1

これに対する答えは、少々恥ずかしいことに、SASL認証ユーザーがだったフィルタリングされています。ただし、master.cf で smtpd リスナーを指定していなかったsyslog_nameため、ノイズの中でそれが機能しているという証拠は見つかりませんでした (SASL 認証の送信者は、ログ内のすべてのトラフィックの 1% 程度でしょう)。

そこで、償いとして、以下に、送信メール (ローカル ネットワーク上の Web アプリなど) と任意の外部ネットワークからメールを送信する SASL 認証アカウントの両方をメール サーバー経由で渡す、わずかに修正された構成の完全な説明を示します。

特に記載がない限り、Ubuntu 18.04 を標準パッケージで使用します。

まず、clamav ユーザーを amavis と同じグループに追加する必要がありました。

$ id clamav
uid=115(clamav) gid=115(clamav) groups=115(clamav),126(amavis)

/etc/amavis/conf.dファイルへの変更:

05-ドメインID

@local_domains_acl = ( ".$mydomain" );

# I've got multiple IP addresses on my machine and only want one to be used for mail:
@inet_acl = qw(127.0.0.1 [::1] 185.73.x.x [2001:ba8:0:x::x]); 

15-コンテンツフィルターモード: スパムとウイルス対策のチェックを有効にする

20-debian_defaults: 隔離ディレクトリ(amavisユーザー+グループが所有)を設定して作成しfinal_spam_destinyD_DISCARD

40-ポリシー_銀行:

$interface_policy{'10024'} = 'INTERNAL'; 
$policy_bank{'INTERNAL'} = {  # mail originating from clients in cidr:/etc/postfix/internal_clients_filter
  bypass_spam_checks_maps   => [0],  # spam-check outgoing mail 
  bypass_banned_checks_maps => [0],  # banned-check outgoing mail 
  bypass_header_checks_maps => [0],  # header-check outgoing mail  
  forward_method => 'smtp:[127.0.0.1]:10025', # relay to Postfix listener on port 10025
};

Postfix main.cf内:

smtpd_sender_restrictions =
    check_client_access cidr:/etc/postfix/internal_clients_filter,
    permit_mynetworks, 
    reject_unknown_sender_domain

/etc/postfix/内部クライアントフィルター:

0.0.0.0/0 FILTER smtp:127.0.0.1:10024
::/0 FILTER smtp:[::1]:10024

master.cf内

127.0.0.1:10025 inet    n    -    n    -    -    smtpd
    -o syslog_name=amavis-reentry
    -o smtpd_recipient_restrictions=permit_mynetworks,reject
    -o smtpd_restriction_classes=
    -o smtpd_delay_reject=no
    -o smtpd_client_restrictions=
    -o smtpd_helo_restrictions=
    -o smtpd_sender_restrictions=
    -o mynetworks=127.0.0.0/8
    -o smtpd_data_restrictions=
    -o smtpd_end_of_data_restrictions=
    -o local_header_rewrite_clients=
    -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 smtpd_milters=
    -o local_recipient_maps=
    -o relay_recipient_maps=
    -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks,no_address_mappings

新しい設定を取得するには、amavis と postfix をリロードします。ログで「amavis-reentry」を探すと、フィルタリングの結果が表示されます。

関連情報