これは、Ubuntuメールサーバーのゼロからのチュートリアルシリーズのパート11です。この記事では、 Amavisの使用方法を紹介します。 およびClamAV 電子メールメッセージ内のウイルスをスキャンします。
アマビス (メールウイルススキャナー)は、 Postfix などのメッセージ転送エージェント(MTA)間の高性能インターフェースです。 およびコンテンツフィルター。コンテンツフィルタは、電子メールメッセージのヘッダーと本文をスキャンするプログラムであり、通常、検出された内容に基づいて何らかのアクションを実行します。最も一般的な例は、ClamAVウイルススキャナーです。 およびSpamAssassin 。
Amavisは標準のSMTPプロトコルを話し、Sendmailmilterインターフェースを使用することもできます。一般的に使用されます
- ClamAV(Clam AntiVirus)と統合することによるウイルススキャン
- SpamAssassinと統合することによるスパムチェック
- DKIMの署名と検証。 (実際、私はDKIMの署名と検証にOpenDKIMを使用することを好みます。)
前提条件
チュートリアルシリーズから、Ubuntuメールサーバーのパート1(Postfix SMTPサーバー)とパート2(Dovecot IMAPサーバー)を少なくとも完了している必要があります。 iRedMailまたはModoboaを使用してメールサーバーをセットアップした場合は、AmavisとClamAVがすでにインストールおよび構成されているため、このチュートリアルに従う必要はありません。
警告 :AmavisとClamAVにはかなりの量のRAMが必要です。 AmavisとClamAVをインストールする前に、サーバーに少なくとも1.3GBの空きRAMがあることを確認してください。メールサーバースタック全体(Postfix、Dovecot、Amavis、ClamAV、SpamAssassin、OpenDKIM、MySQL / MariaDB、PostfixAdmin、およびRoundcube Webmail)には、少なくとも 3 GBが必要です。 スムーズに動作するRAM。 RAMが不足すると、メールサーバーがオフラインになったり応答しなくなったりするなどの問題が発生します。
ステップ1:UbuntuにAmavisをインストールする
AmvisはデフォルトのUbuntuリポジトリから入手できるため、次のコマンドを実行してインストールします。
sudo apt install amavisd-new -y
インストールすると、自動的に起動します。次のコマンドでステータスを確認できます:
systemctl status amavis
出力:
●amavis.service-LSB:amavisdを開始します-新しいmailfilterロード済み:ロード済み(/etc/init.d/amavis;生成済み)アクティブ:アクティブ(実行中) 金曜日から2020-08-0715:43:40HKT; 1分1秒前ドキュメント:man:systemd-sysv-generator(8)タスク:3(制限:9451)メモリ:75.4M CGroup:/system.slice/amavis.service├─1794260/ usr / sbin / amavisd-new(master )├─1794263/ usr / sbin / amavisd-new(処女の子)└─1794264/ usr / sbin / amavisd-new(処女の子)
実行されていない場合は、次のコマンドで開始できます:
sudo systemctl start amavis
起動時に自動起動を有効にします。
sudo systemctl enable amavis
デフォルトでは、 127.0.0.1:10024でリッスンします。 、でわかるように:
sudo netstat -lnpt | grep amavis
そして、それはamavis
として実行されます ユーザー。バージョン番号を確認するには、
amavisd-new -V
サンプル出力:
amavisd-new-2.11.0(20160426)
Amavisのログを確認するには、次のコマンドを実行できます
sudo journalctl -eu amavis
ウイルスは通常、電子メールメッセージの添付ファイルとして拡散します。 Amavisに次のパッケージをインストールして、.7z
などの電子メールメッセージのアーカイブファイルを抽出およびスキャンします。 、.cab
、.doc
、.exe
、.iso
、.jar
、および.rar
ファイル。
sudo apt install arj bzip2 cabextract cpio rpm2cpio file gzip lhasa nomarch pax rar unrar p7zip-full unzip zip lrzip lzip liblz4-tool lzop unrar-free
Ubuntu 18.04を使用している場合は、ripole
もインストールしてください。 パッケージ。
sudo apt install ripole
サーバーがホスト名として完全修飾ドメイン名(FQDN)を使用していない場合、Amavisの起動に失敗する可能性があることに注意してください。また、OSのホスト名が変更される可能性があるため、有効なホスト名をAmavis構成ファイルに直接設定することをお勧めします。
sudo nano /etc/amavis/conf.d/05-node_id
次の行を見つけます。
#$ myhostname ="mail.example.com";
コメント文字(#)を削除し、mail.example.com
を変更します 実際のホスト名に。
$ myhostname ="mail.linuxbabe.com";
ファイルを保存して閉じます。変更を有効にするには、Amavisを再起動します。
sudo systemctl restart amavis
ステップ2:PostfixSMTPサーバーをAmavisと統合する
Amavisd-newはSMTPプロキシとして機能します。電子メールはSMTPを介してフィードされ、処理され、新しいSMTP接続を介してMTAにフィードバックされます。
Postfixのメイン設定ファイルを編集します。
sudo nano /etc/postfix/main.cf
ファイルの最後に次の行を追加します。これにより、Postfixは、すべての受信メールメッセージを 127.0.0.1:10024 でリッスンするAmavisに送信することにより、コンテンツフィルタリングをオンにするように指示されます。 。
content_filter =smtp-amavis:[127.0.0.1]:10024
また、次の行を追加します。
smtpd_proxy_options =speed_adjust
これにより、メールメッセージ全体が受信されるまでコンテンツフィルターへのPostfix接続が遅延し、コンテンツフィルターが低速のSMTPクライアントの時間とリソースを浪費するのを防ぐことができます。
ファイルを保存して閉じます。次に、master.cf
を編集します ファイル。
sudo nano /etc/postfix/master.cf
ファイルの最後に次の行を追加します。これにより、Postfixはsmtp-amavis
と呼ばれる特別なSMTPクライアントコンポーネントを使用するように指示されます。 Amavisに電子メールメッセージを配信します。各-o
の前に少なくとも1つの空白文字(タブまたはスペースバー)を許可してください 。後置構成では、前の空白文字は、この行が前の行の続きであることを意味します。
smtp-amavis unix --- n --2 smtp -o syslog_name =postfix / amavis -o smtp_data_done_timeout =1200 -o smtp_send_xforward_command =yes -o disable_dns_lookups =yes -o max_use =20 -o smtp_tls_security_level =none
次に、ファイルの最後に次の行を追加します。これにより、Postfixは 127.0.0.1:10025でリッスンする追加のsmtpdデーモンを実行するように指示されます。 Amavisからメールメッセージを受信します。
127.0.0.1:10025 inet n --n --- smtpd -o syslog_name =postfix / 10025 -o content_filter =-o mynetworks_style =host -o mynetworks =127.0.0.0/8 -o local_recipient_maps =-o relay_recipient_maps =-o strict_rfc821_envelopes =yesの-o smtp_tls_security_level =なし-o smtpd_tls_security_level =なし-o smtpd_restriction_classes =-o smtpd_delay_reject =なし-oはsmtpd_client_restrictions =permit_mynetworks、拒否-o smtpd_helo_restrictions =-o smtpd_sender_restrictions =-o smtpd_recipient_restrictions =permit_mynetworks、拒否-o smtpd_end_of_data_restrictions =-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_ファイルを保存して閉じます。変更を有効にするには、Postfixを再起動します。
sudo systemctl restart postfixステップ3:AmavisをClamAVと統合する
Postfixが受信メールをAmavisに渡すことができるようになったので、ClamAVウイルススキャナーをインストールしてAmavisと統合し、受信メールをClamAVでスキャンできるようにする必要があります。
UbuntuにClamAVをインストールします。
sudo apt install clamav clamav-daemonClamAVによってインストールされる2つのsystemdサービスがあります:
-
clamav-daemon.service
:ClamAntiVirusユーザースペースデーモン -
clamav-freshclam.service
:ClamAVウイルスデータベースアップデーター
まず、clamav-freshclam.service
のステータスを確認します 。
systemctl status clamav-freshclam
ご覧のとおり、アクティブ(実行中)で、メールサーバーで217.6MのRAMを使用しています。次に、ジャーナル/ログを確認します。
sudo journalctl -eu clamav-freshclam
出力:
ヒント:上記のコマンドがすぐに終了しない場合は、Qキーを押して終了します。
そのfreshclam
を見ることができます 3つのウイルスデータベースをダウンロードしました。 CVDはClamAVVirusDatabaseの略です。
- daily.cvd
- main.cvd
- bytecode.cvd
ただし、clamd
freshclamは/var/run/clamav/clamd.ctl
を介してclamdに接続できないため、通知されませんでした 。 clamav-daemon.service
のステータスを確認します 。
systemctl status clamav-daemon
出力:
ご覧のとおり、条件が満たされていないため、起動に失敗しました。 /lib/systemd/system/clamav-daemon.service
内 ファイルには、2つの条件があります:
ConditionPathExistsGlob =/ var / lib / clamav/main。{c[vl]d、inc} ConditionPathExistsGlob =/ var / lib / clamav/daily。{c[vl]d、inc}
clamav-daemon.service
main.cvdとdaily.cvdが起動時にまだダウンロードされていないため、起動に失敗しました。したがって、このサービスを再起動する必要があります。
sudo systemctl restart clamav-daemon
これで実行されているはずです。ちなみに、私のメールサーバーでは731.4MのRAMを使用しています。メールサーバーに十分なRAMが残っていない場合、サービスは失敗します。
systemctl status clamav-daemon.service
clamav-freshclam.service
ClamAVウイルスデータベースの更新を1時間に1回チェックします。
次に、Amavisでウイルスチェックをオンにする必要があります。
sudo nano /etc/amavis/conf.d/15-content_filter_mode
次の行のコメントを解除して、ウイルスチェックを有効にします。
#@ Bypass_virus_checks_maps =(#\%bypass_virus_checks、\ @bypass_virus_checks_acl、\ $ Bypass_virus_checks_re);
ファイルを保存して閉じます。 /etc/amavis/conf.d/15-av_scanners
には多くのウイルス対策スキャナーがあります ファイル。 ClamAVがデフォルトです。 Amavisは/var/run/clamav/clamd.ctl
を介してClamAVを呼び出します Unixソケット。ユーザーclamav
を追加する必要があります amavis
へ グループ。
sudo adduser clamav amavis
次に、変更を有効にするためにAmavisとClamAVデーモンを再起動します。
sudo systemctl restart amavis clamav-daemon
ログを確認してください。
sudo journalctl -eu amavis
AmavisがClamAVを使用してウイルスをスキャンしていることがわかります。
Aug 08 17:26:19 mail.linuxbabe.com amavis [1233432]:ClamAVのプライマリ内部AVスキャナーコードを使用-clamdAug 08 17:26:19 mail.linuxbabe.com amavis [1233432]:セカンダリAVスキャナーが見つかりましたClamAV-/ usr / bin / clamscanのclamscan
これで、Gmailなどの他のメールサーバーから自分のメールサーバーにメールを送信し、メールヘッダーを確認すると、このメールがAmavisによってスキャンされたことを示す次のような行が見つかります。
X-Virus-Scanned:Debian amavisd-new at linuxbabe.com
メールログ(/var/log/mail.log
)も確認する必要があります )エラーがあるかどうかを確認します。
ステップ4:電子メールの送信に専用ポートを使用する
ClamAVは、受信メールと送信メールの両方をスキャンできるようになりました。 Amavisは、ポート10024で着信および発信の両方の電子メールメッセージをリッスンします。ただし、認証されたユーザーからのメール送信には、10026などの別のポートを使用することをお勧めします。 Amavis構成ファイルを編集します。
sudo nano /etc/amavis/conf.d/50-user
use strict;
の間にカスタム設定を追加する必要があります および1;
ライン。デフォルトでは、Amavisはポート10024でのみリッスンします。次の行を追加して、ポート10026でもリッスンするようにします。
$ inet_socket_port =[10024,10026];
次に、ポート10026の「ORIGINATING」ポリシーを設定する次の行を追加します。
$ interface_policy {'10026'} ='ORIGINATING';
次に、「ORIGINATING」ポリシーを定義する次の行を追加します。
$ policy_bank {'ORIGINATING'} ={#発信元のユーザーから発信されたと思われるメール=> 1、#メールがSMTPクライアントから送信されたことを宣言allow_disclaimers => 1、#利用可能な場合は免責事項の挿入を有効にする#管理者にローカルに通知発信元のマルウェアvirus_admin_maps=>["virusalert \ @ $ mydomain"]、spam_admin_maps => ["virusalert \ @ $ mydomain"]、warnbadhsender => 1、#MTA変換を7ビットに強制します(たとえば、DKIM署名の前)smtpd_discard_ehlo_keywords => ['8BITMIME']、bypass_banned_checks_maps => [1]、#任意のファイル名とタイプの送信を許可terminate_dsn_on_notify_success => 0、#NOTIFY=SUCCESSオプションを削除しない};
ファイルを保存して閉じます。 Amavisを再起動します。
sudo systemctl restart amavis
ステータスをチェックして、再起動が成功したかどうかを確認します。
systemctl status amavis
次に、Postfixマスター設定ファイルを編集します。
sudo nano /etc/postfix/master.cf
次の行をsubmission
に追加します サービスであるため、認証されたSMTPクライアントからの電子メールはポート10026でリッスンしているAmavisに渡されます。この行はオーバーライドされます(-o
)content_filter
/etc/postfix/main.cf
のパラメータ 手順2で追加したファイル。
-o content_filter =smtp-amavis:[127.0.0.1]:10026
このように:
smtps
を有効にしている場合 Microsoft Outlookユーザー向けのサービスの場合は、この行をsmtps
にも追加する必要があります。 サービス。
ファイルを保存して閉じます。変更を有効にするには、Postfixを再起動します。
sudo systemctl restart postfix
ステータスをチェックして、再起動が成功したかどうかを確認します。
systemctl status postfix
Amavisでのスパムフィルタリング
注 :私のSpamAssassinチュートリアルに従っている場合は、Amavisでスパムチェックを有効にする必要はありません。有効にすると、各メールはSpamAssassinによって2回チェックされます。
Amavisでスパムチェックを有効にするには、SpamAssassinと関連パッケージをインストールします。
sudo apt install spamassassin libnet-dns-perl libmail-spf-perl pyzor razor
Amavis構成ファイルを編集します。
sudo nano /etc/amavis/conf.d/15-content_filter_mode
次の行のコメントを解除して、スパムチェックを有効にします。
#@ Bypass_spam_checks_maps =(#\%bypass_spam_checks、\ @bypass_spam_checks_acl、\ $ bytes_spam_checks_re);
ファイルを保存して閉じます。次に、Amavisを再起動します。
sudo systemctl restart amavis
AmavisのDKIM
LinuxでDKIMの署名と検証を実行できる2つの一般的なソフトウェアは、OpenDKIMとAmavisです。 OpenDMARCでうまく機能するため、OpenDKIMを使用することを好みます。そのため、AmavisでメールにDKIM署名する方法については説明しません。
デフォルトでは、Amavisは受信メールメッセージのDKIM署名を確認できます。メールサーバーでOpenDKIMを実行している場合は、AmavisでDKIM検証を無効にできます。
sudo nano /etc/amavis/conf.d/21-ubuntu_defaults
次の行を見つけて、1
を変更します 0
へ 、そのため、AmavisはDKIM署名を検証しません。
$ enable_dkim_verification =1;
ファイルを保存して閉じます。次に、Amavisを再起動します。
sudo systemctl restart amavis
受信メールを受信すると、Postfixはsendmail milterインターフェースを介してOpenDKIMを呼び出してDKIM署名を検証し、ウイルスチェックのためにメールをAmavisに渡します。送信メールを送信するとき、PostfixはOpenDKIMを呼び出してメールに署名し、ウイルスチェックのためにAmavisに渡します。
Amavisのパフォーマンスの向上
デフォルトでは、Amavisは2つのプロセスを実行します。メールログ(/var/log/mail.log
)に次の行が表示されている場合 )、それはAmavisが十分な速さでメールを処理できないことを意味します。
postfix / qmgr [1619188]:警告:[127.0.0.1]:10024のメールは4008のアクティブなキューエントリのうち4001を使い果たしていますpostfix / qmgr [1619188]:警告:smtp-amavisconnectとhelotimeoutspostfixを減らす必要があるかもしれません/ qmgr [1619188]:警告:Postfixが利用できないhostspostfix / qmgr [1619188]をすばやくスキップするように:警告:main.cfminimal_backoff_timeとmaximal_backoff_timepostfix / qmgr [1619188]を増やす必要があるかもしれません:警告:Postfixが配信不能なメールメールpostfix/qmgr [1619188]:警告:master.cfsmtp-amavisプロセスlimitmailpostfix / qmgr [1619188]を増やす必要があるかもしれません:警告:メールpostfix / qmgr [1619188]がある場合は、キュー全体をフラッシュしないでください。警告:多くの遅延メール、パフォーマンスに悪影響を及ぼします
パフォーマンスを向上させるには、Amavis構成ファイルを編集します。
sudo nano /etc/amavis/conf.d/50-user
ファイルのuse strict;
の間に次の行を追加します および1;
ライン。これにより、Amavisは4つのプロセスを実行します。 CPUコアが10個ある場合は、4個から10個に変更できます。10個を超えるAmavisプロセスを実行しても、パフォーマンスにはほとんど影響がないことに注意してください。
$ max_servers =4;
ファイルを保存して閉じます。次に、Postifxマスター構成ファイルを編集します。
sudo nano /etc/postfix/master.cf
smtp-amavis
を見つけます サービス定義、およびプロセス制限を2から4に変更します。
smtp-amavis unix --- n- 4 smtp -o syslog_name =postfix / amavis -o smtp_data_done_timeout =1200 -o smtp_send_xforward_command =yes -o disable_dns_lookups =yes -o max_use =20 -o smtp_tls_security_level =none
ファイルを保存して閉じます。次に、変更を有効にするためにAmavisとPostfixを再起動します。
sudo systemctl restart amavis postfix
次に、次のコマンドを実行します。現在、4つのAmavisプロセスがあることがわかります。
sudo amavisd-nanny
Ctrl+C
を押します amavisd-nannyを止めるために。
ウイルスをスキップ-ニュースレターをチェックする
メールサーバーを使用してニュースレターを送信し、AmavisとClamAVを有効にすると、ニュースレターをサブスクライバーに送信するときに、多くのCPUおよびRAMリソースがウイルスチェックに使用されます。メールサーバーが応答しなくなる可能性があります。以下の方法を使用して、ニュースレターのウイルスチェックをスキップできます。
Postfixマスター設定ファイルを編集します。
sudo nano /etc/postfix/master.cf
このファイルの先頭に次の行を追加します。これにより、smtpd
が有効になります ローカルホストのポート2525で、同じサーバーから開始されたクライアント接続を受け入れることができます。ポート2525でリッスンしている別のプロセスがある場合は、127.0.0.1:2525を127.0.0.1:2552などの他のプロセスに変更できます。 content_filter
に注意してください パラメータがnone
に設定されている 、つまり、メールはClamAVによってスキャンされません。
127.0.0.1:2525 inet n --- --1 smtpd -o syslog_name =postfix / 2525 -o postscreen_greet_action =ignore -o content_filter =
次に、このファイルの最後に次の行を追加します。 12.34.56.78をメールサーバーのパブリックIPアドレスに置き換えます。これにより、ポート10587でリッスンする別のPostfix送信デーモンが作成されます。これは別のサーバーからのクライアント接続用です。
12.34.56.78:10587 inet n --y --- smtpd -o syslog_name =postfix / 10587 -o smtpd_tls_security_level =encrypt -o smtpd_tls_wrappermode =no -o smtpd_sasl_auth_enable =yes -o smtpd_relay_restrictions =permit_sasl_authenticate、 permit_sasl_authenticated、reject -o smtpd_sasl_type =dovecot -o smtpd_sasl_path =private / auth -o content_filter =
ファイルを保存して閉じます。その後、postfixを再起動します。
sudo systemctl restart postfix
ニュースレターアプリケーションがメールサーバーで実行されている場合は、127.0.0.1:2525
を指定します SMTP認証なしのSMTPホストとして。ニュースレターアプリケーションが別のサーバーで実行されている場合は、12.34.56.78:10587
を指定します SMTPホストとして、SMTP認証を使用します。
トラブルシューティング
Postfix SMTPサーバーが送信メールを送信できず、メールログ(/var/log/mail.log
)に次のエラーメッセージが表示された場合 )、
relay =none、delay =239、delays =239 / 0.04 / 0/0、dsn =4.3.0、status =deferred(サーバーが利用できないかメールを受信できません)
amavisが実行されていない可能性があるため、ステータスを確認する必要があります:
sudo systemctl status amavis
次のコマンドで再起動できます:
sudo systemctl restart amavis
このエラーのもう1つの原因は、/etc/postfix/main.cf
で次の設定を使用して送信メールを送信するときに、PostfixにTLS接続を適用していることです。 ファイル。
smtp_tls_security_level=強制
PostfixはAmavisへのTLS接続を確立できないため、メールは延期されます。次の設定を使用する必要があります。
smtp_tls_security_level =may
次に、Postfixを再起動します。