GNU/Linux >> Linux の 問題 >  >> Ubuntu

UbuntuメールサーバーでのAmavisとClamAVのセットアップ

これは、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-daemon 

ClamAVによってインストールされる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に渡されます。この行はオーバーライドされます(-ocontent_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を再起動します。


Ubuntu
  1. UbuntuサーバーにDKIMをインストールする方法

  2. Ubuntu 14サーバーとXrdp?

  3. Ubuntuにvncサーバーとクライアントをインストールします

  1. CentosとUbuntuでのNTPの設定

  2. Ubuntu20.04へのPhpとNginxのインストールとセットアップ

  3. Ubuntu Webサーバーをセットアップしますか?

  1. Ubuntu20.04にNFSサーバーをインストールして構成する方法

  2. Ubuntu20.04にVNCをインストールして構成する方法

  3. UbuntuまたはDebianにPostfixメールサーバーとDovecotをインストールします